From e8d40d4f07fccca2aad1ea7d594f83f6c63ef0f1 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Wed, 22 Jun 2022 18:18:23 -0500 Subject: [PATCH 001/162] Build BalloonDisplay with Maven. --- .../SIM_balloon/models/graphics/Makefile | 6 + .../SIM_balloon/models/graphics/pom.xml | 121 ++++++++++++++++++ .../trick/ballonDisplay}/BalloonDisplay.java | 0 3 files changed, 127 insertions(+) create mode 100755 trick_sims/SIM_balloon/models/graphics/Makefile create mode 100644 trick_sims/SIM_balloon/models/graphics/pom.xml rename trick_sims/SIM_balloon/models/graphics/src/{ => main/java/trick/ballonDisplay}/BalloonDisplay.java (100%) diff --git a/trick_sims/SIM_balloon/models/graphics/Makefile b/trick_sims/SIM_balloon/models/graphics/Makefile new file mode 100755 index 00000000..d3e0cbc0 --- /dev/null +++ b/trick_sims/SIM_balloon/models/graphics/Makefile @@ -0,0 +1,6 @@ + +all: + mvn package + +clean: + rm -rf build diff --git a/trick_sims/SIM_balloon/models/graphics/pom.xml b/trick_sims/SIM_balloon/models/graphics/pom.xml new file mode 100644 index 00000000..dbde0edf --- /dev/null +++ b/trick_sims/SIM_balloon/models/graphics/pom.xml @@ -0,0 +1,121 @@ + + + + 4.0.0 + + trick-java + trick-java + 23.0.0-beta + + trick-java + + https://github.com/nasa/trick + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.13.1 + test + + + + + + BalloonDisplay + + build + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.1.1 + + ${java.home}/bin/javadoc + ../../share/doc/trick/java + + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + + maven-resources-plugin + 3.0.2 + + + + maven-compiler-plugin + 3.8.0 + + + -g + -Xlint:unchecked + -Xlint:deprecation + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.0 + + + + true + lib/ + trick.CMDisplay + + + + + + + maven-surefire-plugin + 2.22.1 + + + + maven-install-plugin + 2.5.2 + + + + maven-deploy-plugin + 2.8.2 + + + + + maven-site-plugin + 3.7.1 + + + + + + + + diff --git a/trick_sims/SIM_balloon/models/graphics/src/BalloonDisplay.java b/trick_sims/SIM_balloon/models/graphics/src/main/java/trick/ballonDisplay/BalloonDisplay.java similarity index 100% rename from trick_sims/SIM_balloon/models/graphics/src/BalloonDisplay.java rename to trick_sims/SIM_balloon/models/graphics/src/main/java/trick/ballonDisplay/BalloonDisplay.java From b962f692ef168bba8090c34c64c655663ba4d83d Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Thu, 23 Jun 2022 15:45:36 -0500 Subject: [PATCH 002/162] fix BalloonDisplay pom file, and SIM_balloon input file. --- trick_sims/SIM_balloon/RUN_test/input.py | 4 ++-- trick_sims/SIM_balloon/models/graphics/pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/trick_sims/SIM_balloon/RUN_test/input.py b/trick_sims/SIM_balloon/RUN_test/input.py index b186984d..d70f7b86 100644 --- a/trick_sims/SIM_balloon/RUN_test/input.py +++ b/trick_sims/SIM_balloon/RUN_test/input.py @@ -11,7 +11,7 @@ dyn.balloon.wind_speed = 0.0 # Start the Satellite Graphics Client # ========================================== varServerPort = trick.var_server_get_port(); -BalloonDisplay_path = "models/graphics/dist/BalloonDisplay.jar" +BalloonDisplay_path = "models/graphics/build/BalloonDisplay.jar" if (os.path.isfile(BalloonDisplay_path)) : BalloonDisplay_cmd = "java -jar " \ @@ -21,5 +21,5 @@ if (os.path.isfile(BalloonDisplay_path)) : os.system( BalloonDisplay_cmd); else : print('==================================================================================') - print('BalloonDisplay needs to be built. Please \"cd\" into ../models/graphics and type \"make\".') + print('BalloonDisplay needs to be built. Please \"cd\" into ../models/graphics and type \"mvn package\".') print('==================================================================================') diff --git a/trick_sims/SIM_balloon/models/graphics/pom.xml b/trick_sims/SIM_balloon/models/graphics/pom.xml index dbde0edf..e1173567 100644 --- a/trick_sims/SIM_balloon/models/graphics/pom.xml +++ b/trick_sims/SIM_balloon/models/graphics/pom.xml @@ -81,7 +81,7 @@ true lib/ - trick.CMDisplay + BalloonDisplay From 2b5735328f80ed258a6c42d1d4262ce3668ca98e Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Thu, 23 Jun 2022 16:36:34 -0500 Subject: [PATCH 003/162] Add gitignore to stop ignoring makefiles. --- .../SIM_splashdown/models/CrewModuleGraphics/.gitignore | 1 + .../SIM_splashdown/models/CrewModuleGraphics/Makefile | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 trick_sims/SIM_splashdown/models/CrewModuleGraphics/.gitignore create mode 100644 trick_sims/SIM_splashdown/models/CrewModuleGraphics/Makefile diff --git a/trick_sims/SIM_splashdown/models/CrewModuleGraphics/.gitignore b/trick_sims/SIM_splashdown/models/CrewModuleGraphics/.gitignore new file mode 100644 index 00000000..0a76dd93 --- /dev/null +++ b/trick_sims/SIM_splashdown/models/CrewModuleGraphics/.gitignore @@ -0,0 +1 @@ +!\makefile diff --git a/trick_sims/SIM_splashdown/models/CrewModuleGraphics/Makefile b/trick_sims/SIM_splashdown/models/CrewModuleGraphics/Makefile new file mode 100644 index 00000000..4a3318f5 --- /dev/null +++ b/trick_sims/SIM_splashdown/models/CrewModuleGraphics/Makefile @@ -0,0 +1,7 @@ + + +all: + mvn package + +clean: + rm -rf build From 54b86cfb74e187681c9aa1685c89335b695ecf0c Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Thu, 23 Jun 2022 16:48:10 -0500 Subject: [PATCH 004/162] Stop ignoring makefile inside SIM_balloon/models/graphics directory. --- trick_sims/SIM_balloon/models/graphics/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 trick_sims/SIM_balloon/models/graphics/.gitignore diff --git a/trick_sims/SIM_balloon/models/graphics/.gitignore b/trick_sims/SIM_balloon/models/graphics/.gitignore new file mode 100644 index 00000000..0a76dd93 --- /dev/null +++ b/trick_sims/SIM_balloon/models/graphics/.gitignore @@ -0,0 +1 @@ +!\makefile From 10acc84e197be5806e57707a202bbb2d0ea0d18e Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Fri, 24 Jun 2022 13:37:47 -0500 Subject: [PATCH 005/162] Update Documentation-Home.md --- docs/documentation/Documentation-Home.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/Documentation-Home.md b/docs/documentation/Documentation-Home.md index 2b80b6ed..871c95b4 100644 --- a/docs/documentation/Documentation-Home.md +++ b/docs/documentation/Documentation-Home.md @@ -51,7 +51,7 @@ The user guide contains information pertinent to Trick users. These pages will h 01. [Standard Template Library Checkpointing](simulation_capabilities/STL-Checkpointing) 01. [Threads](simulation_capabilities/Threads) -01. [Web Server](web) +01. Web Server 01. [Adding a Web Server to Your Sim](web/Adding_a_Web_Server_to_Your_Sim) 01. Web Server APIs 01. [HTTP-API_alloc_info](web/HTTP-API_alloc_info) From cad38de0d63759bbb8ae48e8780243974321ae35 Mon Sep 17 00:00:00 2001 From: Deans Date: Mon, 27 Jun 2022 16:17:48 -0500 Subject: [PATCH 006/162] Fix typo in ProductVar.java --- .../java/trick/dataproducts/trickqp/utils/ProductVar.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trick_source/java/src/main/java/trick/dataproducts/trickqp/utils/ProductVar.java b/trick_source/java/src/main/java/trick/dataproducts/trickqp/utils/ProductVar.java index b1829faa..da9f2a40 100644 --- a/trick_source/java/src/main/java/trick/dataproducts/trickqp/utils/ProductVar.java +++ b/trick_source/java/src/main/java/trick/dataproducts/trickqp/utils/ProductVar.java @@ -149,7 +149,7 @@ public class ProductVar { return 4.0; } }, - SYMBOL_MEDIEUM("Medieum") { + SYMBOL_MEDIUM("Medium") { @Override public double getDouble() { return 6.0; @@ -744,7 +744,7 @@ public class ProductVar { } } - double size = SymbolSize.SYMBOL_MEDIEUM.getDouble(); + double size = SymbolSize.SYMBOL_MEDIUM.getDouble(); if (symbolSize != null) { size = symbolSize.getDouble(); } From 866c21d5a53c6466b011de75e1c4ef9855000243 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Tue, 28 Jun 2022 17:20:50 -0500 Subject: [PATCH 007/162] include freeze time tics in calculation for websocket data intervals (#1296) --- trick_sims/Cannon/SIM_cannon_numeric/S_define | 1 - trick_source/web/CivetServer/src/VariableServerSession.cpp | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/trick_sims/Cannon/SIM_cannon_numeric/S_define b/trick_sims/Cannon/SIM_cannon_numeric/S_define index ef7d6480..c7e6f501 100644 --- a/trick_sims/Cannon/SIM_cannon_numeric/S_define +++ b/trick_sims/Cannon/SIM_cannon_numeric/S_define @@ -16,7 +16,6 @@ class CannonSimObject : public Trick::SimObject { public: CANNON cannon ; - int foo; CannonSimObject() { ("default_data") cannon_default_data( &cannon ) ; ("initialization") cannon_init( &cannon ) ; diff --git a/trick_source/web/CivetServer/src/VariableServerSession.cpp b/trick_source/web/CivetServer/src/VariableServerSession.cpp index 7608abe8..458c6c2e 100644 --- a/trick_source/web/CivetServer/src/VariableServerSession.cpp +++ b/trick_source/web/CivetServer/src/VariableServerSession.cpp @@ -41,7 +41,7 @@ VariableServerSession::~VariableServerSession() { (The specified period between messages). */ void VariableServerSession::marshallData() { - long long simulation_time_tics = exec_get_time_tics(); + long long simulation_time_tics = exec_get_time_tics() + exec_get_freeze_time_tics(); if ( cyclicSendEnabled && ( simulation_time_tics >= nextTime )) { stageValues(); nextTime = (simulation_time_tics - (simulation_time_tics % intervalTimeTics) + intervalTimeTics); @@ -170,7 +170,7 @@ void VariableServerSession::addVariable(char* vname){ } void VariableServerSession::stageValues() { - stageTime = (double)exec_get_time_tics() / exec_get_time_tic_value(); + stageTime = (double)(exec_get_time_tics() + exec_get_freeze_time_tics()) / exec_get_time_tic_value(); std::vector::iterator it; for (it = sessionVariables.begin(); it != sessionVariables.end(); it++ ) { (*it)->stageValue(); From 284ea8521a1f2737f0c54b75494fcc6bafd27528 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 29 Jun 2022 13:52:15 -0500 Subject: [PATCH 008/162] 1297 civet enum (#1298) * include freeze time tics in calculation for websocket data intervals * add enum type to web server types closes #1297 --- trick_source/web/CivetServer/src/VariableServerVariable.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/trick_source/web/CivetServer/src/VariableServerVariable.cpp b/trick_source/web/CivetServer/src/VariableServerVariable.cpp index ed8f4818..85b7badc 100644 --- a/trick_source/web/CivetServer/src/VariableServerVariable.cpp +++ b/trick_source/web/CivetServer/src/VariableServerVariable.cpp @@ -119,6 +119,9 @@ void VariableServerVariable::writeValue( std::ostream& outs ) { case TRICK_UNSIGNED_SHORT: outs << std::dec << *(unsigned short*)stageBuffer; break; + case TRICK_ENUMERATED: + outs << std::dec << *(int*)stageBuffer; + break; case TRICK_INTEGER: outs << std::dec << *(int*)stageBuffer; break; From ed95f22ecf21c33ec333f8e2aa466b25a54eff3b Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 29 Jun 2022 14:49:55 -0500 Subject: [PATCH 009/162] revert changing stageTime in VariableServerSession --- trick_source/web/CivetServer/src/VariableServerSession.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_source/web/CivetServer/src/VariableServerSession.cpp b/trick_source/web/CivetServer/src/VariableServerSession.cpp index 458c6c2e..c42d5694 100644 --- a/trick_source/web/CivetServer/src/VariableServerSession.cpp +++ b/trick_source/web/CivetServer/src/VariableServerSession.cpp @@ -170,7 +170,7 @@ void VariableServerSession::addVariable(char* vname){ } void VariableServerSession::stageValues() { - stageTime = (double)(exec_get_time_tics() + exec_get_freeze_time_tics()) / exec_get_time_tic_value(); + stageTime = (double)(exec_get_time_tics()) / exec_get_time_tic_value(); std::vector::iterator it; for (it = sessionVariables.begin(); it != sessionVariables.end(); it++ ) { (*it)->stageValue(); From b869f851f5a3e670ccb5389412b0588cc3757824 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 1 Jul 2022 09:40:37 -0500 Subject: [PATCH 010/162] Add progress on SIM_pool --- trick_sims/SIM_pool/Modified_data/realtime.py | 10 + trick_sims/SIM_pool/RUN_test/input.py | 30 ++ trick_sims/SIM_pool/S_define | 24 ++ trick_sims/SIM_pool/S_overrides.mk | 2 + .../models/graphics/src/PoolTableDisplay.java | 333 ++++++++++++++++++ .../models/pool_table/include/ball.hh | 46 +++ .../models/pool_table/include/bumper.hh | 46 +++ .../models/pool_table/include/pool_table.hh | 58 +++ .../SIM_pool/models/pool_table/src/ball.cpp | 35 ++ .../SIM_pool/models/pool_table/src/bumper.cpp | 9 + .../models/pool_table/src/pool_table.cpp | 284 +++++++++++++++ 11 files changed, 877 insertions(+) create mode 100644 trick_sims/SIM_pool/Modified_data/realtime.py create mode 100644 trick_sims/SIM_pool/RUN_test/input.py create mode 100644 trick_sims/SIM_pool/S_define create mode 100644 trick_sims/SIM_pool/S_overrides.mk create mode 100644 trick_sims/SIM_pool/models/graphics/src/PoolTableDisplay.java create mode 100644 trick_sims/SIM_pool/models/pool_table/include/ball.hh create mode 100644 trick_sims/SIM_pool/models/pool_table/include/bumper.hh create mode 100644 trick_sims/SIM_pool/models/pool_table/include/pool_table.hh create mode 100644 trick_sims/SIM_pool/models/pool_table/src/ball.cpp create mode 100644 trick_sims/SIM_pool/models/pool_table/src/bumper.cpp create mode 100644 trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp diff --git a/trick_sims/SIM_pool/Modified_data/realtime.py b/trick_sims/SIM_pool/Modified_data/realtime.py new file mode 100644 index 00000000..acf31873 --- /dev/null +++ b/trick_sims/SIM_pool/Modified_data/realtime.py @@ -0,0 +1,10 @@ + +trick.real_time_enable() +trick.exec_set_software_frame(0.1) +trick.itimer_enable() + +trick.exec_set_enable_freeze(True) +trick.exec_set_freeze_command(True) + +simControlPanel = trick.SimControlPanel() +trick.add_external_application(simControlPanel) diff --git a/trick_sims/SIM_pool/RUN_test/input.py b/trick_sims/SIM_pool/RUN_test/input.py new file mode 100644 index 00000000..cee34baa --- /dev/null +++ b/trick_sims/SIM_pool/RUN_test/input.py @@ -0,0 +1,30 @@ + + +exec(open("./Modified_data/realtime.py").read()) + +dyn.table.numBalls = 2 +dyn.table.balls = trick.TMM_declare_var_1d("Ball*", dyn.table.numBalls) + +id1 = dyn.table.addBall(-2, .5, 1, 1, False); +id2 = dyn.table.addBall(1, .5, 1, 1, False); + +dyn.table.setBallVel(id1, 0.5, 0); + +dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) + +#========================================== +# Start the Graphics Client +#========================================== +varServerPort = trick.var_server_get_port(); +PoolTableDisplay_path = "models/graphics/dist/PoolTableDisplay.jar" + +if (os.path.isfile(PoolTableDisplay_path)) : + PoolTableDisplay_cmd = "java -jar " \ + + PoolTableDisplay_path \ + + " " + str(varServerPort) + " &" ; + print(PoolTableDisplay_cmd) + os.system( PoolTableDisplay_cmd); +else : + print('============================================================================================') + print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics and type \"make\".') + print('============================================================================================') diff --git a/trick_sims/SIM_pool/S_define b/trick_sims/SIM_pool/S_define new file mode 100644 index 00000000..a7548bda --- /dev/null +++ b/trick_sims/SIM_pool/S_define @@ -0,0 +1,24 @@ +/************************************************************ +PURPOSE: + ( Simulation of Pool Table. ) +LIBRARY DEPENDENCIES: + ((pool_table/src/pool_table.cpp)) +*************************************************************/ +#include "sim_objects/default_trick_sys.sm" +##include "pool_table/include/pool_table.hh" + +class PoolTableSimObject : public Trick::SimObject { + public: + PoolTable table; + + PoolTableSimObject() { + ("default_data") table.default_data() ; + ("initialization") table.state_init() ; + ("derivative") table.state_deriv() ; + ("integration") trick_ret = table.state_integ() ; + ("dynamic_event") table.collision() ; + } +}; + +PoolTableSimObject dyn; +IntegLoop dyn_integloop(0.1) dyn; diff --git a/trick_sims/SIM_pool/S_overrides.mk b/trick_sims/SIM_pool/S_overrides.mk new file mode 100644 index 00000000..4fea3c64 --- /dev/null +++ b/trick_sims/SIM_pool/S_overrides.mk @@ -0,0 +1,2 @@ +TRICK_CFLAGS += -Imodels -I/usr/local/include/eigen3/ +TRICK_CXXFLAGS += -Imodels -I/usr/local/include/eigen3/ \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/graphics/src/PoolTableDisplay.java b/trick_sims/SIM_pool/models/graphics/src/PoolTableDisplay.java new file mode 100644 index 00000000..573ffe7d --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/src/PoolTableDisplay.java @@ -0,0 +1,333 @@ +/* + * Trick + * 2020 (c) National Aeronautics and Space Administration (NASA) + * + */ + +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Graphics; +import java.awt.RenderingHints; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.Socket; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; + + + +class Ball { + static int numColors = 9; + static Color[] colorList = { + Color.WHITE, + Color.YELLOW, + Color.BLUE, + Color.RED, + Color.MAGENTA, + Color.GREEN, + Color.MAGENTA, + Color.BLACK + }; + + public Color color; + public double x; + public double y; + public double radius; + public int identity; + public Ball (int id) { + identity = id; + x = 0.0; + y = 0.0; + radius = 0.5; + color = colorList[id % numColors]; + } +} + +class ControlPanel extends JPanel implements ActionListener { + + private RangeView rangeView; + private JButton zoomOutButton, zoomInButton; + + public ControlPanel(RangeView view) { + + rangeView = view; + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + + zoomOutButton = new JButton("Zoom Out"); + zoomOutButton.addActionListener(this); + zoomOutButton.setActionCommand("zoomout"); + zoomOutButton.setToolTipText("Zoom Out"); + add(zoomOutButton); + + zoomInButton = new JButton("Zoom In"); + zoomInButton.addActionListener(this); + zoomInButton.setActionCommand("zoomin"); + zoomInButton.setToolTipText("Zoom In"); + add(zoomInButton); + } + + public void actionPerformed(ActionEvent e) { + String s = e.getActionCommand(); + switch (s) { + case "zoomout": + rangeView.setScale( rangeView.getScale() / 2 ); + break; + case "zoomin": + rangeView.setScale( rangeView.getScale() * 2 ); + break; + default: + System.out.println("Unknown Action Command:" + s); + break; + } + } +} // class ControlPanel + +class RangeView extends JPanel { + + private int scale; + private Color backGroundColor; + + // Origin of world coordinates in jpanel coordinates. + private int worldOriginX; + private int worldOriginY; + + public Ball[] balls; + + /** + * Class constructor. + */ + public RangeView( int mapScale, int numberOfBalls) { + setScale(mapScale); + backGroundColor = new Color(0.2f, 0.6f, 0.2f); + balls = new Ball[numberOfBalls]; + for (int ii=0 ; ii 128) { + scale = 128; + } else { + scale = mapScale; + } + repaint(); + } + + public int getScale() { + return scale; + } + + public void drawCenteredCircle(Graphics2D g, int x, int y, int d) { + x = x-(d/2); + y = y-(d/2); + g.fillOval(x,y,d,d); + } + + private void doDrawing(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + RenderingHints rh = new RenderingHints( + RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + + rh.put(RenderingHints.KEY_RENDERING, + RenderingHints.VALUE_RENDER_QUALITY); + + int width = getWidth(); + int height = getHeight(); + + worldOriginX = (width/2); + worldOriginY = (height/2); + + // Draw Background + g2d.setPaint(backGroundColor); + g2d.fillRect(0, 0, width, height); + + // Draw balls + for (int ii = 0; ii < balls.length ; ii++) { + g2d.setPaint(balls[ii].color); + int bx = (int)(worldOriginX + scale * balls[ii].x); + int by = (int)(worldOriginY - scale * balls[ii].y); + drawCenteredCircle(g2d, bx, by, (int)(scale * 2 * balls[ii].radius)); + g2d.setPaint(Color.BLACK); + g2d.drawString ( String.format("%d",ii), bx,by); + } + + g2d.drawString ( String.format("SCALE: %d pixels/meter",scale), 20,20); + + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + doDrawing(g); + } +} + +public class PoolTableDisplay extends JFrame { + + private RangeView rangeView; + private BufferedReader in; + private DataOutputStream out; + + public PoolTableDisplay() { + + rangeView = null; + setTitle("Ball Arena"); + setSize(800, 500); + setLocationRelativeTo(null); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setFocusable(true); + } + + public void connectToServer(String host, int port ) throws IOException { + Socket socket = new Socket(host, port); + in = new BufferedReader( new InputStreamReader( socket.getInputStream())); + out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); + } + + public void createGUI( int mapScale, int numberOfBalls ) { + + rangeView = new RangeView(mapScale, numberOfBalls); + JPanel panel1 = new JPanel(); + panel1.setLayout(new BoxLayout(panel1, BoxLayout.X_AXIS)); + panel1.add(rangeView); + + ControlPanel controlPanel = new ControlPanel(rangeView); + JPanel panel0 = new JPanel(); + panel0.setLayout(new BoxLayout(panel0, BoxLayout.Y_AXIS)); + panel0.add(panel1); + panel0.add(controlPanel); + add(panel0); + setVisible(true); + } + + private static void printHelpText() { + System.out.println( + "----------------------------------------------------------------------\n" + + "usage: java jar PoolTableDisplay.jar \n" + + "----------------------------------------------------------------------\n" + ); + } + + public static void main(String[] args) throws IOException, InterruptedException { + + String host = "localHost"; + int port = 0; + boolean boom = false; + + // Handle program arguments. + int ii = 0; + while (ii < args.length) { + switch (args[ii]) { + case "-help" : + case "--help" : { + printHelpText(); + System.exit(0); + } break; + default : { + port = (Integer.parseInt(args[ii])); + } break; + } + ++ii; + } + + boolean go = true; + double dt = 0.100; // Time between updates (seconds). + int mapScale = 32 ; // pixels per meter. + int nballs = 7; + + if (port == 0) { + System.out.println("No variable server port specified."); + printHelpText(); + System.exit(0); + } + + PoolTableDisplay poolTableDisplay = new PoolTableDisplay(); + + // Connect to the Trick simulation's variable server. + System.out.println("Connecting to: " + host + ":" + port); + poolTableDisplay.connectToServer(host, port); + poolTableDisplay.out.writeBytes("trick.var_set_client_tag(\"PoolTableDisplay\") \n"); + poolTableDisplay.out.flush(); + + // Get the number of balls. + poolTableDisplay.out.writeBytes( + "trick.var_add(\"dyn.table.numBalls\")\n" + + "trick.var_send() \n" + + "trick.var_clear() \n"); + poolTableDisplay.out.flush(); + try { + String line; + String field[]; + line = poolTableDisplay.in.readLine(); + field = line.split("\t"); + nballs = Integer.parseInt( field[1]); + } catch (IOException | NullPointerException e ) { + go = false; + } + + poolTableDisplay.createGUI(mapScale, nballs); + + // Get the Radii of the balls. + for ( ii = 0; ii < nballs; ii ++) { + poolTableDisplay.out.writeBytes( String.format("trick.var_add(\"dyn.table.balls[%d][0].radius\")\n", ii)); + } + poolTableDisplay.out.flush(); + poolTableDisplay.out.writeBytes( + "trick.var_send() \n" + + "trick.var_clear() \n"); + poolTableDisplay.out.flush(); + try { + String line; + String field[]; + line = poolTableDisplay.in.readLine(); + field = line.split("\t"); + for ( ii=0; ii < nballs; ii++) { + // poolTableDisplay.rangeView.balls[ii].radius = Double.parseDouble( field[ii+1]); + } + } catch (IOException | NullPointerException e ) { + go = false; + } + + // Get the Positions of the balls, and update the display, periodically. + poolTableDisplay.out.writeBytes( "trick.var_pause() \n"); + for ( ii = 0; ii < nballs; ii ++) { + poolTableDisplay.out.writeBytes( + String.format("trick.var_add(\"dyn.table.balls[%d][0].pos[0]\")\n", ii) + + String.format("trick.var_add(\"dyn.table.balls[%d][0].pos[1]\")\n", ii) + ); + } + poolTableDisplay.out.writeBytes("trick.var_ascii() \n" + + String.format("trick.var_cycle(%.3f)\n", dt) + + "trick.var_unpause() \n" ); + poolTableDisplay.out.flush(); + while (go) { + try { + String line; + String field[]; + line = poolTableDisplay.in.readLine(); + // System.out.println("Sim->Client:" + line); + field = line.split("\t"); + for ( ii=0; ii < nballs; ii++) { + poolTableDisplay.rangeView.balls[ii].x = Double.parseDouble( field[2*ii+1]); + poolTableDisplay.rangeView.balls[ii].y = Double.parseDouble( field[2*ii+2]); + } + } catch (IOException | NullPointerException e ) { + go = false; + } + // Update the scene. + poolTableDisplay.rangeView.repaint(); + } // while + } // main +} // class diff --git a/trick_sims/SIM_pool/models/pool_table/include/ball.hh b/trick_sims/SIM_pool/models/pool_table/include/ball.hh new file mode 100644 index 00000000..55f99791 --- /dev/null +++ b/trick_sims/SIM_pool/models/pool_table/include/ball.hh @@ -0,0 +1,46 @@ +/********************************* TRICK HEADER ******************************* +PURPOSE: ( Simulate pool balls. ) +LIBRARY DEPENDENCY: + ((ball.o)) +*******************************************************************************/ +#ifndef _ball_hh_ +#define _ball_hh_ + +// #include + +// monotonically increasing ID +static int id = 0; + +class Ball { + + public: + + Ball(double x, double y, double mass, double radius, bool isFixed, int id); + Ball () {} + + // Z component should always be 0, unless someone tries to add jumps in the future + double pos[3]; + double prevPos[3]; + double vel[3]; + // Used to store derivatives between deriv and integration steps + double accel[3]; + + // Relating to angular velocity + double relativeVel[3]; + double w[3]; + double angular_accel[3]; + + double color[3]; + + double mass; + double radius; + bool fixed; + bool isCue; + int sliding; + + unsigned int id; +}; + +// Ball* CreateBall(double x, double y, double mass, double radius, bool isFixed); + +#endif \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/include/bumper.hh b/trick_sims/SIM_pool/models/pool_table/include/bumper.hh new file mode 100644 index 00000000..f90eb7ab --- /dev/null +++ b/trick_sims/SIM_pool/models/pool_table/include/bumper.hh @@ -0,0 +1,46 @@ +/********************************* TRICK HEADER ******************************* +PURPOSE: ( Pool bumper class. ) +LIBRARY DEPENDENCY: + ((bumper.o)) +*******************************************************************************/ +#ifndef _bumper_hh_ +#define _bumper_hh_ + +#include + +// this should definitely go somewhere else +// maybe make a geometry libary +class Point { + public: + double x; + double y; + + Point(double x, double y) : x(x), y(y) {} + Point() {} +}; + +class Line { + public: + Point p1; + Point p2; + + Line (Point p1, Point p2) : p1(p1), p2(p2) {} + Line () {} +}; + +class Bumper { + public: + void AddPointToRender(double x, double y); + void AddBorder (double x1, double y1, double x2, double y2); + + private: + // Actual line that can be collided with + Line border; + + // Shape that should be rendered + // Size should be dynamic + std::vector renderedShape; + +}; + +#endif \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh b/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh new file mode 100644 index 00000000..5a0b79d0 --- /dev/null +++ b/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh @@ -0,0 +1,58 @@ +/************************************************************************ +PURPOSE: (Simulate a pool table.) +LIBRARY DEPENDENCIES: + ((pool_table/src/pool_table.o)) +**************************************************************************/ + +#ifndef _POOL_TABLE_H_ +#define _POOL_TABLE_H_ +#include "trick/regula_falsi.h" +#include "ball.hh" +#include "bumper.hh" +#include + + +class PoolTable { + + public: + PoolTable () : numBalls(0), numAssociations(0) {} + + int addBall (double x, double y, double mass, double radius, bool fixed); + int addBumper (double x1, double y1, double x2, double y2); + + int setBallPos(int id, double x, double y); + int setBallVel(int id, double v_x, double v_y); + + // Ball ** balls; + // Bumper ** bumpers; + Ball** balls; + Bumper** bumpers; + + // Ball-ball collisions + int nextBallSlot = 0; + unsigned int numBalls; + unsigned int numAssociations; + REGULA_FALSI* ballAssociations; + + // Ball-bumper collisions + unsigned int numBumpers; + unsigned int numCombos; + REGULA_FALSI* bumperAssociations; + + //void ballCollision(Ball &b1, Ball &b2); + + int default_data(); + int state_init(); + int state_deriv(); + int state_integ(); + double collision(); + + // Sim constants that should be user-controllable + double frictionRolling = 0.05; + double frictionSliding = 0.25; + double frictionScale = 1; + double frictionTolerance = 0.0005; + double coefficientOfElasticity = 0.99; + +}; +#endif \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/src/ball.cpp b/trick_sims/SIM_pool/models/pool_table/src/ball.cpp new file mode 100644 index 00000000..3d6b3665 --- /dev/null +++ b/trick_sims/SIM_pool/models/pool_table/src/ball.cpp @@ -0,0 +1,35 @@ +/********************************* TRICK HEADER ******************************* +PURPOSE: ( Simulate balls contacting boundaries. ) +LIBRARY DEPENDENCY: + ((ball.o)) +*******************************************************************************/ +#include "../include/ball.hh" +// #include "trick/memorymanager_c_intf.h" + +#include "trick/MemoryManager.hh" +extern Trick::MemoryManager* trick_MM; + +#include + +Ball::Ball(double x, double y, double mass, double radius, bool isFixed, int id) : + mass(mass), + fixed(isFixed), + id(id) +{ + pos[0] = x; + pos[1] = y; + pos[2] = 0; +} + +// Ball* CreateBall(double x, double y, double mass, double radius, bool isFixed) { +// // Ball* b = (Ball*)TMM_declare_var_s("Ball"); +// Ball *b = new Ball(x, y, mass, radius, isFixed, 0); +// trick_MM->declare_extern_var ( b, "Ball"); +// // Ball *b = (Ball*)trick_MM->declare_var("Ball"); + +// // return (new (b) Ball(x, y, mass, radius, isFixed, 0)); +// return b; +// } + + + diff --git a/trick_sims/SIM_pool/models/pool_table/src/bumper.cpp b/trick_sims/SIM_pool/models/pool_table/src/bumper.cpp new file mode 100644 index 00000000..d2927cf3 --- /dev/null +++ b/trick_sims/SIM_pool/models/pool_table/src/bumper.cpp @@ -0,0 +1,9 @@ +#include "bumper.hh" + +void Bumper::AddPointToRender(double x, double y) { + +} + +void Bumper::AddBorder (double x1, double y1, double x2, double y2) { + +} \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp b/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp new file mode 100644 index 00000000..0ee9da8a --- /dev/null +++ b/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp @@ -0,0 +1,284 @@ +/********************************* TRICK HEADER ******************************* +PURPOSE: (Simulate a pool table.) +LIBRARY DEPENDENCY: + ((pool_table.o) + (ball.o)) +*******************************************************************************/ +#include +#include +#include "trick/integrator_c_intf.h" +#include "trick/memorymanager_c_intf.h" +#include "../include/pool_table.hh" +#include "trick/trick_math_proto.h" + +double dot( /* Return: Scalar dot or inner product */ + double vec1[], /* In: Vector 1 */ + double vec2[], /* In: Vector 2 */ + int dim) +{ + double dot = 0; + for (int i = 0; i < dim; i++) { + dot += vec1[i] * vec2[i]; + } + return dot; +} + +void scaleInPlace (double vec[], double scale, int dim) { + for (int i = 0; i < dim; i++) { + vec[i] *= scale; + } +} + + + + +int PoolTable::default_data() { + // balls.clear(); + // bumpers.clear(); + + + // Dev Testing only - should be deleted + // int id1 = addBall(0.5, 0.5, 1, 1, false); + // int id2 = addBall(0.75, 0.5, 1, 1, false); + + // setBallVel(id1, 0.1, 0); + /////////////////////////////////////////// + + numBalls = 0; + numBumpers = 0; + return 0; +} + +// Input stage runs before this, which populates balls and bumpers +int PoolTable::state_init() { + + // Do regula falsi setup here + + // Vars for ball/ball collisions + double now ; + numAssociations = (numBalls*(numBalls-1))/2; + ballAssociations = (REGULA_FALSI*)TMM_declare_var_1d("REGULA_FALSI", numAssociations); + unsigned int ii,jj; + for (ii=1; ii A = M^-1 * F + + // Will have to account for rolling vs sliding here + // For now, just rolling + + for (int i = 0; i < numBalls; i++) { + // Frictional force a constant applied in the opposing direction of velocity. + // Magnitude of velocity is irrelevant + + // std::cout << "ActuaVelocity: " << balls[i]->vel[0] << " " << balls[i]->vel[1] << std::endl; + // std::cout << "Velocity Norm: " << velocityNorm[0] << " " << velocityNorm[1] << std::endl; + + // balls[i]->accel[0] = 0; + // balls[i]->accel[1] = 0; + + // Has weird behavior when velocity is very small, so only apply friction if velocity is greater than a tolerance + if (abs(dv_mag(balls[i]->vel)) > frictionTolerance) { + double velocityNorm[3]; + dv_norm(velocityNorm, balls[i]->vel); + + balls[i]->accel[0] = - (frictionScale * frictionRolling * velocityNorm[0]); + balls[i]->accel[1] = - (frictionScale * frictionRolling * velocityNorm[1]); + balls[i]->accel[2] = 0; + } else { + balls[i]->vel[0] = 0; + balls[i]->vel[1] = 0; + balls[i]->vel[2] = 0; + + balls[i]->accel[0] = 0; + balls[i]->accel[1] = 0; + balls[i]->accel[2] = 0; + + } + + + } + + return 0; +} + +int PoolTable::state_integ() { + // Apply the acceleration by changing the velocity by the appropriate amount over the time step + + // How many state variables are needed for each ball + int n = 6; + + for (int i = 0; i < numBalls; i++) { + // State - Need to load 4 values for each ball, but will have to have more when we add angular stuff + // pos[0] pos[1] vel[0] vel[1] + int inner_index = 0; + load_indexed_state(n*i + inner_index++, balls[i]->pos[0]); + load_indexed_state(n*i + inner_index++, balls[i]->pos[1]); + load_indexed_state(n*i + inner_index++, balls[i]->pos[2]); + + load_indexed_state(n*i + inner_index++, balls[i]->vel[0]); + load_indexed_state(n*i + inner_index++, balls[i]->vel[1]); + load_indexed_state(n*i + inner_index++, balls[i]->vel[2]); + + // Derivatives of all of this junk + // vel[0] vel[1] accel[0] accel[1] + + inner_index = 0; + load_indexed_deriv(n*i + inner_index++, balls[i]->vel[0]); + load_indexed_deriv(n*i + inner_index++, balls[i]->vel[1]); + load_indexed_deriv(n*i + inner_index++, balls[i]->vel[2]); + + load_indexed_deriv(n*i + inner_index++, balls[i]->accel[0]); // Needs to be accel[0] + load_indexed_deriv(n*i + inner_index++, balls[i]->accel[1]); // Needs to be accel[1] + load_indexed_deriv(n*i + inner_index++, balls[i]->accel[2]); // Needs to be accel[2] + + } + + int integration_step = integrate(); + + for (int i = 0; i < numBalls; i++) { + // pos[0] pos[1] vel[0] vel[1] + int inner_index = 0; + balls[i]->pos[0] = unload_indexed_state(n*i + inner_index++); + balls[i]->pos[1] = unload_indexed_state(n*i + inner_index++); + balls[i]->pos[2] = unload_indexed_state(n*i + inner_index++); + + balls[i]->vel[0] = unload_indexed_state(n*i + inner_index++); + balls[i]->vel[1] = unload_indexed_state(n*i + inner_index++); + balls[i]->vel[2] = unload_indexed_state(n*i + inner_index++); + } + + return 0; +} + +// Maybe need a separate scheduled job to handle pockets? +// And the cue? +// Maybe see if there's some "callback" that can handle user input +// There must be, since other sims have control panels too + +double PoolTable::collision() { + // Handle when the balls collide with others or with a bumper + + double now ; /* current integration time. */ + unsigned int first, second; + + unsigned int association_index; + double event_tgo; + unsigned int ii,jj; + + now = get_integ_time() ; + event_tgo = BIG_TGO; + + std::vector collisionsToProcess; + + for (ii=1; iipos, balls[jj]->pos); + double distanceBetweenBalls = dv_mag(diff); + unsigned int associationIndex = ii*(ii-1)/2+jj; + + // boundary is distance between balls - radiuses of balls + ballAssociations[associationIndex].error = distanceBetweenBalls - (balls[ii]->radius + balls[jj]->radius); + double this_tgo = regula_falsi( now, &(ballAssociations[associationIndex])) ; + + if (this_tgo < event_tgo) { + event_tgo = this_tgo; + } + + if (this_tgo == 0) { + // Add this collision to a list of collisions to process + collisionsToProcess.push_back(ii); + collisionsToProcess.push_back(jj); + } + } + } + + // Handle collisions + for (int i = 0; i < collisionsToProcess.size(); i+=2) { + int index1 = collisionsToProcess[i]; + int index2 = collisionsToProcess[i+1]; + + double *q1 = balls[index1]->pos; + double *q2 = balls[index2]->pos; + + + // dg = (q1 - q2) / (|q1 - q2|) + double diff[3]; + dv_sub(diff, q1, q2); + double dg[3]; + dv_norm(dg, diff); + + // Have to stuff both velocities and dg values into 4d vector to do the calculation + // Otherwise I have to do more math + double dg4[4] = {dg[0], dg[1], -dg[0], -dg[1]}; + double vel4[4] = {balls[index1]->vel[0], balls[index1]->vel[1], balls[index2]->vel[0], balls[index2]->vel[1]}; + + // Calculate the impulse + // J = ((-(1 + c) * dg * v) / (dg * M^-1 * dg^T) ) dg + // For now let's just pretend all the masses are 1 + double impulse = ((1.0 + coefficientOfElasticity) * dot(dg4, vel4, 4)) / (dot(dg4, dg4, 4)); + scaleInPlace(dg, impulse, 4); + + + + } + + return event_tgo; +} + +// Add a ball to the table and return the ID +int PoolTable::addBall (double x, double y, double mass, double radius, bool fixed) { + int id = nextBallSlot++; + if (id < numBalls) { + Ball * ball = (Ball*) TMM_declare_var_s("Ball"); + balls[id] = (new (ball) Ball(x,y,mass,radius, fixed, id)); + return id; + } + return -1; +} + +// Add a bumper to the table and return the ID +// Only takes in the actual effective line, need to add something else for the rendered shape +int PoolTable::addBumper (double x1, double y1, double x2, double y2) { + // bumpers.push_back(bumper); + return -1; +} + +int PoolTable::setBallPos(int id, double x, double y) { + if (id < numBalls && balls[id] != NULL) { + balls[id]->pos[0] = x; + balls[id]->pos[1] = y; + return 1; + } + + return -1; +} + +int PoolTable::setBallVel(int id, double v_x, double v_y) { + if (id < numBalls && balls[id] != NULL) { + balls[id]->vel[0] = v_x; + balls[id]->vel[1] = v_y; + return 1; + } + return -1; +} + + + From c988052f851ba6ddc4ff5cd1a79016ef045df856 Mon Sep 17 00:00:00 2001 From: jmpenn Date: Wed, 6 Jul 2022 12:12:53 -0500 Subject: [PATCH 011/162] Update FAQ.md --- docs/faq/FAQ.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/faq/FAQ.md b/docs/faq/FAQ.md index 3def87d8..9eadd110 100644 --- a/docs/faq/FAQ.md +++ b/docs/faq/FAQ.md @@ -175,4 +175,7 @@ var = trick.var_get("my_sim_object.b.a[1].t") ## Is Trick gluten-free, grass-fed, organic, non-GMO, environmentally conservative, free-range, vegan, and dolphin safe? -Yes. + +Trick is composed entirely of information. It contains no matter, organic or otherwise. Therefore Trick contains no gluten, +GMOs, nor is it fed by grass, vegetables, or meat. Trick could be described as environmentally conservative in that it runs on numerous POSIX (Unix-like) operating systems. Trick is of course free-range! It's Opensource!, and freely available to anyone, even dolphins with internet access. + From 8fcd83e5e1414c48f6ca0f7f91e8870e22d7137c Mon Sep 17 00:00:00 2001 From: Derek Bankieris Date: Fri, 8 Jul 2022 12:32:43 -0500 Subject: [PATCH 012/162] Omit cv_convert_double for trivial conversions Refs #982 --- .../VariableServer/vs_format_ascii.cpp | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/trick_source/sim_services/VariableServer/vs_format_ascii.cpp b/trick_source/sim_services/VariableServer/vs_format_ascii.cpp index 729d1098..8c4d7559 100644 --- a/trick_source/sim_services/VariableServer/vs_format_ascii.cpp +++ b/trick_source/sim_services/VariableServer/vs_format_ascii.cpp @@ -129,13 +129,23 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { sprintf(value, "%s%u", value, (unsigned int)cv_convert_double(var->conversion_factor,*(unsigned int *)buf_ptr)); break; - case TRICK_LONG: - sprintf(value, "%s%ld", value, (long)cv_convert_double(var->conversion_factor,*(long *)buf_ptr)); + case TRICK_LONG: { + long l = *(long *)buf_ptr; + if (var->conversion_factor != cv_get_trivial()) { + l = (long)cv_convert_double(var->conversion_factor, l); + } + sprintf(value, "%s%ld", value, l); break; + } - case TRICK_UNSIGNED_LONG: - sprintf(value, "%s%lu", value, (unsigned long)cv_convert_double(var->conversion_factor,*(unsigned long *)buf_ptr)); + case TRICK_UNSIGNED_LONG: { + unsigned long ul = *(unsigned long *)buf_ptr; + if (var->conversion_factor != cv_get_trivial()) { + ul = (unsigned long)cv_convert_double(var->conversion_factor, ul); + } + sprintf(value, "%s%lu", value, ul); break; + } case TRICK_FLOAT: sprintf(value, "%s%.8g", value, cv_convert_float(var->conversion_factor,*(float *)buf_ptr)); @@ -145,21 +155,23 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { sprintf(value, "%s%.16g", value, cv_convert_double(var->conversion_factor,*(double *)buf_ptr)); break; - case TRICK_LONG_LONG: - // This is a work-round for when terminate_time is not defined and is requested through variable server. - // When sim terminate time is not defined, the related variable is the max of the type. - // The unit conversion calculation will throw floating point exception. - // For trick_sys.sched.terminate_time, there is no need to perform such conversion. - if (!var_name.compare("trick_sys.sched.terminate_time")) { - sprintf(value, "%s%lld", value, *(long long *)buf_ptr); - } else { - sprintf(value, "%s%lld", value, (long long)cv_convert_double(var->conversion_factor,*(long long *)buf_ptr)); + case TRICK_LONG_LONG: { + long long ll = *(long long *)buf_ptr; + if (var->conversion_factor != cv_get_trivial()) { + ll = (long long)cv_convert_double(var->conversion_factor, ll); } + sprintf(value, "%s%lld", value, ll); break; + } - case TRICK_UNSIGNED_LONG_LONG: - sprintf(value, "%s%llu", value,(unsigned long long)cv_convert_double(var->conversion_factor,*(unsigned long long *)buf_ptr)); + case TRICK_UNSIGNED_LONG_LONG: { + unsigned long long ull = *(unsigned long long *)buf_ptr; + if (var->conversion_factor != cv_get_trivial()) { + ull = (unsigned long long)cv_convert_double(var->conversion_factor, ull); + } + sprintf(value, "%s%llu", value, ull); break; + } case TRICK_NUMBER_OF_TYPES: sprintf(value, "BAD_REF" ); From 8537601ccbbee1f862c3793d006097f8d37e400d Mon Sep 17 00:00:00 2001 From: Deans Date: Thu, 14 Jul 2022 09:17:00 -0500 Subject: [PATCH 013/162] Saving working state --- trick_sims/SIM_pool/Modified_data/realtime.py | 2 +- trick_sims/SIM_pool/RUN_break/input.py | 159 +++++++ trick_sims/SIM_pool/RUN_hexagon/input.py | 119 +++++ trick_sims/SIM_pool/RUN_test/input.py | 145 +++++- trick_sims/SIM_pool/S_define | 3 +- .../SIM_pool/models/graphics/java/Makefile | 36 ++ .../graphics/java/dist/PoolTableDisplay.jar | Bin 0 -> 6493 bytes .../SIM_pool/models/graphics/java/manifest | 1 + .../{ => java}/src/PoolTableDisplay.java | 10 +- .../models/graphics/libigl-example-project | 1 + .../models/pool_table/include/ball.hh | 54 ++- .../models/pool_table/include/bumper.hh | 38 +- .../pool_table/include/common_geometry.hh | 77 ++++ .../models/pool_table/include/pocket.hh | 24 + .../models/pool_table/include/pool_table.hh | 87 +++- .../SIM_pool/models/pool_table/src/ball.cpp | 53 ++- .../SIM_pool/models/pool_table/src/bumper.cpp | 20 +- .../SIM_pool/models/pool_table/src/pocket.cpp | 0 .../models/pool_table/src/pool_table.cpp | 429 ++++++++++++++++-- 19 files changed, 1130 insertions(+), 128 deletions(-) create mode 100644 trick_sims/SIM_pool/RUN_break/input.py create mode 100644 trick_sims/SIM_pool/RUN_hexagon/input.py create mode 100644 trick_sims/SIM_pool/models/graphics/java/Makefile create mode 100644 trick_sims/SIM_pool/models/graphics/java/dist/PoolTableDisplay.jar create mode 100644 trick_sims/SIM_pool/models/graphics/java/manifest rename trick_sims/SIM_pool/models/graphics/{ => java}/src/PoolTableDisplay.java (97%) create mode 160000 trick_sims/SIM_pool/models/graphics/libigl-example-project create mode 100644 trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh create mode 100644 trick_sims/SIM_pool/models/pool_table/include/pocket.hh create mode 100644 trick_sims/SIM_pool/models/pool_table/src/pocket.cpp diff --git a/trick_sims/SIM_pool/Modified_data/realtime.py b/trick_sims/SIM_pool/Modified_data/realtime.py index acf31873..31546eb5 100644 --- a/trick_sims/SIM_pool/Modified_data/realtime.py +++ b/trick_sims/SIM_pool/Modified_data/realtime.py @@ -1,6 +1,6 @@ trick.real_time_enable() -trick.exec_set_software_frame(0.1) +trick.exec_set_software_frame(0.01) trick.itimer_enable() trick.exec_set_enable_freeze(True) diff --git a/trick_sims/SIM_pool/RUN_break/input.py b/trick_sims/SIM_pool/RUN_break/input.py new file mode 100644 index 00000000..6624fb96 --- /dev/null +++ b/trick_sims/SIM_pool/RUN_break/input.py @@ -0,0 +1,159 @@ +import math + +exec(open("./Modified_data/realtime.py").read()) + +dyn.table.numBalls = 16 +dyn.table.balls = trick.TMM_declare_var_1d("Ball*", dyn.table.numBalls) + +ballRadius = 0.02 +ballMass = 1 + +unit_pos = [math.sqrt(3)/2, 0.5] +unit_neg = [unit_pos[0], -unit_pos[1]] +center_x = 0.2; +center_y = 0; +tol = 1e-4; + +dyn.table.addBall(-.3, 0, ballMass, ballRadius, False) + +dyn.table.addBall(center_x, center_y, ballMass, ballRadius, False) + +dyn.table.addBall(center_x+unit_neg[0]*2*(ballRadius+tol), center_y+unit_neg[1]*2*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*2*(ballRadius+tol), center_y+unit_pos[1]*2*(ballRadius+tol), ballMass, ballRadius, False) + +dyn.table.addBall(center_x+unit_neg[0]*4*(ballRadius+tol), center_y+unit_neg[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*4*(ballRadius+tol), center_y+unit_pos[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*4*(ballRadius+tol), center_y, ballMass, ballRadius, False) + +dyn.table.addBall(center_x+unit_neg[0]*6*(ballRadius+tol), center_y+unit_neg[1]*6*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]*6*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_neg[0]*6*(ballRadius+tol), center_y+unit_neg[1]*2*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]*2*(ballRadius+tol), ballMass, ballRadius, False) + +dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*8*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*8*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y, ballMass, ballRadius, False) + +corners = [-.5, -.25, .5, .25] + + + +# Make a normal pool table +pocketRadius = 0.04 +bumperWidth = 0.03 + + +dyn.table.numTablePoints = 2 +dyn.table.tableShape = trick.TMM_declare_var_1d("Point*", dyn.table.numTablePoints) +dyn.table.tableShapeType = 3 # rectangle +dyn.table.addPointToTable(corners[0], corners[1]) +dyn.table.addPointToTable(corners[2], corners[3]) + +# Pockets +dyn.table.numPockets = 6 +dyn.table.pockets = trick.TMM_declare_var_1d("Pocket*", dyn.table.numPockets) +pocketCenters = [[0, corners[1]], + [0, corners[3]], + [corners[0],corners[1]], + [corners[0],corners[3]], + [corners[2],corners[1]], + [corners[2],corners[3]] ] + +for coord in pocketCenters: + dyn.table.addPocket(coord[0], coord[1], pocketRadius) + + +bumperBorders =[[corners[0]+pocketRadius+bumperWidth, corners[1]+bumperWidth, 0.0-pocketRadius-bumperWidth,corners[1]+bumperWidth], # Bottom left + [0.0+pocketRadius+bumperWidth, corners[1]+bumperWidth, corners[2]-pocketRadius-bumperWidth,corners[1]+bumperWidth], # Bottom Right + [corners[0]+pocketRadius+bumperWidth, corners[3]-bumperWidth, 0.0-pocketRadius-bumperWidth,corners[3]-bumperWidth], # Top left + [0.0+pocketRadius+bumperWidth, corners[3]-bumperWidth, corners[2]-pocketRadius-bumperWidth,corners[3]-bumperWidth], # Top right + [corners[0]+bumperWidth, corners[1]+pocketRadius+bumperWidth, corners[0]+bumperWidth, corners[3]-pocketRadius-bumperWidth], # Left + [corners[2]-bumperWidth, corners[1]+pocketRadius+bumperWidth, corners[2]-bumperWidth, corners[3]-pocketRadius-bumperWidth]] # Right + +# triangles +bumperBorders.extend([[bumperBorders[0][0]-bumperWidth, bumperBorders[0][1]-bumperWidth, bumperBorders[0][0], bumperBorders[0][1]], # Bottom left + [bumperBorders[0][2], bumperBorders[0][1], bumperBorders[0][2]+bumperWidth, bumperBorders[0][1]-bumperWidth], + [bumperBorders[1][0]-bumperWidth, bumperBorders[1][1]-bumperWidth, bumperBorders[1][0], bumperBorders[1][1]], # Bottom Right + [bumperBorders[1][2], bumperBorders[1][1], bumperBorders[1][2]+bumperWidth, bumperBorders[1][1]-bumperWidth], + [bumperBorders[2][0]-bumperWidth, bumperBorders[2][1]+bumperWidth, bumperBorders[2][0], bumperBorders[2][1]], # Top left + [bumperBorders[2][2], bumperBorders[2][1], bumperBorders[2][2]+bumperWidth, bumperBorders[2][1]+bumperWidth], + [bumperBorders[3][0]-bumperWidth, bumperBorders[3][1]+bumperWidth, bumperBorders[3][0], bumperBorders[3][1]], # Top right + [bumperBorders[3][2], bumperBorders[3][1], bumperBorders[3][2]+bumperWidth, bumperBorders[3][1]+bumperWidth], + [bumperBorders[4][0], bumperBorders[4][1], bumperBorders[4][2]-bumperWidth, bumperBorders[4][1]-bumperWidth], # Left + [bumperBorders[4][0]-bumperWidth, bumperBorders[4][3]+bumperWidth, bumperBorders[4][2], bumperBorders[4][3]], + [bumperBorders[5][0], bumperBorders[5][1], bumperBorders[5][2]+bumperWidth, bumperBorders[5][1]-bumperWidth], # Left + [bumperBorders[5][0]+bumperWidth, bumperBorders[5][3]+bumperWidth, bumperBorders[5][2], bumperBorders[5][3]], + ]) + + + +bumperShapes = [ [bumperBorders[0][0], bumperBorders[0][1]-bumperWidth, bumperBorders[0][2], bumperBorders[0][3]], + [bumperBorders[1][0], bumperBorders[1][1]-bumperWidth, bumperBorders[1][2], bumperBorders[1][3]], + [bumperBorders[2][0], bumperBorders[2][1]+bumperWidth, bumperBorders[2][2], bumperBorders[2][3]], + [bumperBorders[3][0], bumperBorders[3][1]+bumperWidth, bumperBorders[3][2], bumperBorders[3][3]], + [bumperBorders[4][0], bumperBorders[4][1], bumperBorders[4][2]-bumperWidth, bumperBorders[4][3],], + [bumperBorders[5][0]+bumperWidth, bumperBorders[5][1], bumperBorders[5][2], bumperBorders[5][3],], + [bumperBorders[6][0], bumperBorders[6][1], bumperBorders[6][2], bumperBorders[6][3], bumperBorders[6][2], bumperBorders[6][1]], + [bumperBorders[7][0], bumperBorders[7][1], bumperBorders[7][2], bumperBorders[7][3], bumperBorders[7][0], bumperBorders[7][3]], + [bumperBorders[8][0], bumperBorders[8][1], bumperBorders[8][2], bumperBorders[8][3], bumperBorders[8][2], bumperBorders[8][1]], + [bumperBorders[9][0], bumperBorders[9][1], bumperBorders[9][2], bumperBorders[9][3], bumperBorders[9][0], bumperBorders[9][3]], + [bumperBorders[10][0], bumperBorders[10][1], bumperBorders[10][2], bumperBorders[10][3], bumperBorders[10][2], bumperBorders[10][1]], + [bumperBorders[11][0], bumperBorders[11][1], bumperBorders[11][2], bumperBorders[11][3], bumperBorders[11][0], bumperBorders[11][3]], + [bumperBorders[12][0], bumperBorders[12][1], bumperBorders[12][2], bumperBorders[12][3], bumperBorders[12][2], bumperBorders[12][1]], + [bumperBorders[13][0], bumperBorders[13][1], bumperBorders[13][2], bumperBorders[13][3], bumperBorders[13][0], bumperBorders[13][3]], + [bumperBorders[14][0], bumperBorders[14][1], bumperBorders[14][2], bumperBorders[14][3], bumperBorders[14][2], bumperBorders[14][1]], + [bumperBorders[15][0], bumperBorders[15][1], bumperBorders[15][2], bumperBorders[15][3], bumperBorders[15][0], bumperBorders[15][3]], + [bumperBorders[16][0], bumperBorders[16][1], bumperBorders[16][2], bumperBorders[16][3], bumperBorders[16][2], bumperBorders[16][1]], + [bumperBorders[17][0], bumperBorders[17][1], bumperBorders[17][2], bumperBorders[17][3], bumperBorders[17][0], bumperBorders[17][3]]] + +bumperShapeTypes = [3, 3, 3, 3, 3, 3, 2, 2,2,2,2, 2, 2, 2,2,2, 2, 2] + +dyn.table.numBumpers = len(bumperBorders) +dyn.table.bumpers = trick.TMM_declare_var_1d("Bumper*", dyn.table.numBumpers) + +for i in range(len(bumperBorders)): + id = dyn.table.addBumper(len(bumperShapes[i])/2, bumperBorders[i][0], bumperBorders[i][1], bumperBorders[i][2],bumperBorders[i][3]) + dyn.table.bumpers[id][0].numPoints = len(bumperShapes[i])/2 + dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Point*", dyn.table.bumpers[id].numPoints) + + dyn.table.bumpers[id][0].shapeType = bumperShapeTypes[i] + for j in range(0, len(bumperShapes[i]), 2): + dyn.table.addPointToBumper(id, bumperShapes[i][j],bumperShapes[i][j+1]) + + +dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) + +#========================================== +# Start the Graphics Client +#========================================== +varServerPort = trick.var_server_get_port(); + +# This will definitely change to something else +PoolTableDisplay_path = "models/graphics/libigl-example-project/build/example" + + +if (os.path.isfile(PoolTableDisplay_path)) : + PoolTableDisplay_cmd = PoolTableDisplay_path \ + + " " + str(varServerPort) + " &" ; + print(PoolTableDisplay_cmd) + os.system( PoolTableDisplay_cmd); +else : + print('=================================================================================================') + print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') + print('=================================================================================================') + + +# PoolTableDisplay_path = "models/graphics/java/dist/PoolTableDisplay.jar" + +# if (os.path.isfile(PoolTableDisplay_path)) : +# PoolTableDisplay_cmd = "java -jar " \ +# + PoolTableDisplay_path \ +# + " " + str(varServerPort) + " &" ; +# print(PoolTableDisplay_cmd) +# os.system( PoolTableDisplay_cmd); +# else : +# print('=================================================================================================') +# print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') +# print('=================================================================================================') diff --git a/trick_sims/SIM_pool/RUN_hexagon/input.py b/trick_sims/SIM_pool/RUN_hexagon/input.py new file mode 100644 index 00000000..2f2e0789 --- /dev/null +++ b/trick_sims/SIM_pool/RUN_hexagon/input.py @@ -0,0 +1,119 @@ +import math + +exec(open("./Modified_data/realtime.py").read()) + +dyn.table.numBalls = 4 +dyn.table.balls = trick.TMM_declare_var_1d("Ball*", dyn.table.numBalls) + +ballRadius = 0.02 +ballMass = 1 + +unit_pos = [math.sqrt(3)/2, 0.5] +unit_neg = [unit_pos[0], -unit_pos[1]] +center_x = 0.2; +center_y = 0; +tol = 1e-4; + +dyn.table.addBall(-.3, 0, ballMass, ballRadius, False) + +dyn.table.addBall(center_x, center_y, ballMass, ballRadius, False) + +dyn.table.addBall(center_x+unit_neg[0]*2*(ballRadius+tol), center_y+unit_neg[1]*2*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*2*(ballRadius+tol), center_y+unit_pos[1]*2*(ballRadius+tol), ballMass, ballRadius, False) + +# dyn.table.addBall(center_x+unit_neg[0]*4*(ballRadius+tol), center_y+unit_neg[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*4*(ballRadius+tol), center_y+unit_pos[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*4*(ballRadius+tol), center_y, ballMass, ballRadius, False) + +# dyn.table.addBall(center_x+unit_neg[0]*6*(ballRadius+tol), center_y+unit_neg[1]*6*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]*6*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_neg[0]*6*(ballRadius+tol), center_y+unit_neg[1]*2*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]*2*(ballRadius+tol), ballMass, ballRadius, False) + + + + + + +# Make a Hexagonal table +corners = [ [1, 0], + [1/2, math.sqrt(3)/2], + [-1/2, math.sqrt(3)/2], + [-1, 0], + [-1/2, -math.sqrt(3)/2], + [1/2, -math.sqrt(3)/2]] + +scale = 0.5 + +for i in range(len(corners)): + corners[i][0] *= scale + corners[i][1] *= scale + +pocketRadius = 0.04 +bumperWidth = 0.03 + + +dyn.table.numTablePoints = 6 +dyn.table.tableShape = trick.TMM_declare_var_1d("Point*", dyn.table.numTablePoints) +dyn.table.tableShapeType = 0 # generic +for corner in corners: + dyn.table.addPointToTable(corner[0], corner[1]) + +# Pockets - Just put 1 in the center +dyn.table.numPockets = 1 +dyn.table.pockets = trick.TMM_declare_var_1d("Pocket*", dyn.table.numPockets) +dyn.table.addPocket(0, 0, pocketRadius) +# for coord in corners: +# dyn.table.addPocket(coord[0], coord[1], pocketRadius) + +# dyn.table.numBumpers = 0 +dyn.table.numBumpers = len(corners) +dyn.table.bumpers = trick.TMM_declare_var_1d("Bumper*", dyn.table.numBumpers) + +# Put bumpers along each edge +for i in range(len(corners)): + p1 = [corners[i][0], corners[i][1]] + p2 = [corners[(i+1) % 6][0], corners[(i+1) % 6][1]] + id = dyn.table.addBumper(3, p1[0], p1[1], p2[0], p2[1]) + dyn.table.bumpers[id][0].shapeType = 2 # Triangle i guess? + dyn.table.bumpers[id][0].numPoints = 3 + dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Point*", dyn.table.bumpers[id].numPoints) + dyn.table.addPointToBumper(id, p1[0], p1[1]) + dyn.table.addPointToBumper(id, p2[0], p2[1]) + p3 = [(p1[0] + p2[0])/2,(p1[1] + p2[1])/2] + dyn.table.addPointToBumper(id, p3[0], p3[1]) + +dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) + +#========================================== +# Start the Graphics Client +#========================================== +varServerPort = trick.var_server_get_port(); + +# This will definitely change to something else +PoolTableDisplay_path = "models/graphics/libigl-example-project/build/example" + + +if (os.path.isfile(PoolTableDisplay_path)) : + PoolTableDisplay_cmd = PoolTableDisplay_path \ + + " " + str(varServerPort) + " &" ; + print(PoolTableDisplay_cmd) + os.system( PoolTableDisplay_cmd); +else : + print('=================================================================================================') + print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') + print('=================================================================================================') + + +# PoolTableDisplay_path = "models/graphics/java/dist/PoolTableDisplay.jar" + +# if (os.path.isfile(PoolTableDisplay_path)) : +# PoolTableDisplay_cmd = "java -jar " \ +# + PoolTableDisplay_path \ +# + " " + str(varServerPort) + " &" ; +# print(PoolTableDisplay_cmd) +# os.system( PoolTableDisplay_cmd); +# else : +# print('=================================================================================================') +# print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') +# print('=================================================================================================') diff --git a/trick_sims/SIM_pool/RUN_test/input.py b/trick_sims/SIM_pool/RUN_test/input.py index cee34baa..65911c38 100644 --- a/trick_sims/SIM_pool/RUN_test/input.py +++ b/trick_sims/SIM_pool/RUN_test/input.py @@ -1,14 +1,123 @@ - +import math exec(open("./Modified_data/realtime.py").read()) dyn.table.numBalls = 2 dyn.table.balls = trick.TMM_declare_var_1d("Ball*", dyn.table.numBalls) -id1 = dyn.table.addBall(-2, .5, 1, 1, False); -id2 = dyn.table.addBall(1, .5, 1, 1, False); +ballRadius = 0.02 +ballMass = 1 + +unit_pos = [math.sqrt(3)/2, 0.5] +unit_neg = [unit_pos[0], -unit_pos[1]] +center_x = 0.2; +center_y = 0; +tol = 1e-4; + +dyn.table.defaultCueBallX = -0.05; +dyn.table.defaultCueBallY = 0.1; +dyn.table.addBall(-0.05, 0.1, ballMass, ballRadius, False) + +dyn.table.addBall(-0.055, 0.15, ballMass, ballRadius, False) + +# dyn.table.addBall(center_x+unit_neg[0]*2*(ballRadius+tol), center_y+unit_neg[1]*2*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*2*(ballRadius+tol), center_y+unit_pos[1]*2*(ballRadius+tol), ballMass, ballRadius, False) + +# dyn.table.addBall(center_x+unit_neg[0]*4*(ballRadius+tol), center_y+unit_neg[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*4*(ballRadius+tol), center_y+unit_pos[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*4*(ballRadius+tol), center_y, ballMass, ballRadius, False) + +# dyn.table.addBall(center_x+unit_neg[0]*6*(ballRadius+tol), center_y+unit_neg[1]*6*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]*6*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_neg[0]*6*(ballRadius+tol), center_y+unit_neg[1]*2*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]*2*(ballRadius+tol), ballMass, ballRadius, False) + +corners = [-.5, -.25, .5, .25] + + + +# Make a normal pool table +pocketRadius = 0.04 +bumperWidth = 0.03 + + +dyn.table.numTablePoints = 2 +dyn.table.tableShape = trick.TMM_declare_var_1d("Point*", dyn.table.numTablePoints) +dyn.table.tableShapeType = 3 # rectangle +dyn.table.addPointToTable(corners[0], corners[1]) +dyn.table.addPointToTable(corners[2], corners[3]) + +# Pockets +dyn.table.numPockets = 6 +dyn.table.pockets = trick.TMM_declare_var_1d("Pocket*", dyn.table.numPockets) +pocketCenters = [[0, corners[1]], + [0, corners[3]], + [corners[0],corners[1]], + [corners[0],corners[3]], + [corners[2],corners[1]], + [corners[2],corners[3]] ] + +for coord in pocketCenters: + dyn.table.addPocket(coord[0], coord[1], pocketRadius) + + +bumperBorders =[[corners[0]+pocketRadius+bumperWidth, corners[1]+bumperWidth, 0.0-pocketRadius-bumperWidth,corners[1]+bumperWidth], # Bottom left + [0.0+pocketRadius+bumperWidth, corners[1]+bumperWidth, corners[2]-pocketRadius-bumperWidth,corners[1]+bumperWidth], # Bottom Right + [corners[0]+pocketRadius+bumperWidth, corners[3]-bumperWidth, 0.0-pocketRadius-bumperWidth,corners[3]-bumperWidth], # Top left + [0.0+pocketRadius+bumperWidth, corners[3]-bumperWidth, corners[2]-pocketRadius-bumperWidth,corners[3]-bumperWidth], # Top right + [corners[0]+bumperWidth, corners[1]+pocketRadius+bumperWidth, corners[0]+bumperWidth, corners[3]-pocketRadius-bumperWidth], # Left + [corners[2]-bumperWidth, corners[1]+pocketRadius+bumperWidth, corners[2]-bumperWidth, corners[3]-pocketRadius-bumperWidth]] # Right + +# triangles +bumperBorders.extend([[bumperBorders[0][0]-bumperWidth, bumperBorders[0][1]-bumperWidth, bumperBorders[0][0], bumperBorders[0][1]], # Bottom left + [bumperBorders[0][2], bumperBorders[0][1], bumperBorders[0][2]+bumperWidth, bumperBorders[0][1]-bumperWidth], + [bumperBorders[1][0]-bumperWidth, bumperBorders[1][1]-bumperWidth, bumperBorders[1][0], bumperBorders[1][1]], # Bottom Right + [bumperBorders[1][2], bumperBorders[1][1], bumperBorders[1][2]+bumperWidth, bumperBorders[1][1]-bumperWidth], + [bumperBorders[2][0]-bumperWidth, bumperBorders[2][1]+bumperWidth, bumperBorders[2][0], bumperBorders[2][1]], # Top left + [bumperBorders[2][2], bumperBorders[2][1], bumperBorders[2][2]+bumperWidth, bumperBorders[2][1]+bumperWidth], + [bumperBorders[3][0]-bumperWidth, bumperBorders[3][1]+bumperWidth, bumperBorders[3][0], bumperBorders[3][1]], # Top right + [bumperBorders[3][2], bumperBorders[3][1], bumperBorders[3][2]+bumperWidth, bumperBorders[3][1]+bumperWidth], + [bumperBorders[4][0], bumperBorders[4][1], bumperBorders[4][2]-bumperWidth, bumperBorders[4][1]-bumperWidth], # Left + [bumperBorders[4][0]-bumperWidth, bumperBorders[4][3]+bumperWidth, bumperBorders[4][2], bumperBorders[4][3]], + [bumperBorders[5][0], bumperBorders[5][1], bumperBorders[5][2]+bumperWidth, bumperBorders[5][1]-bumperWidth], # Left + [bumperBorders[5][0]+bumperWidth, bumperBorders[5][3]+bumperWidth, bumperBorders[5][2], bumperBorders[5][3]], + ]) + + + +bumperShapes = [ [bumperBorders[0][0], bumperBorders[0][1]-bumperWidth, bumperBorders[0][2], bumperBorders[0][3]], + [bumperBorders[1][0], bumperBorders[1][1]-bumperWidth, bumperBorders[1][2], bumperBorders[1][3]], + [bumperBorders[2][0], bumperBorders[2][1]+bumperWidth, bumperBorders[2][2], bumperBorders[2][3]], + [bumperBorders[3][0], bumperBorders[3][1]+bumperWidth, bumperBorders[3][2], bumperBorders[3][3]], + [bumperBorders[4][0], bumperBorders[4][1], bumperBorders[4][2]-bumperWidth, bumperBorders[4][3],], + [bumperBorders[5][0]+bumperWidth, bumperBorders[5][1], bumperBorders[5][2], bumperBorders[5][3],], + [bumperBorders[6][0], bumperBorders[6][1], bumperBorders[6][2], bumperBorders[6][3], bumperBorders[6][2], bumperBorders[6][1]], + [bumperBorders[7][0], bumperBorders[7][1], bumperBorders[7][2], bumperBorders[7][3], bumperBorders[7][0], bumperBorders[7][3]], + [bumperBorders[8][0], bumperBorders[8][1], bumperBorders[8][2], bumperBorders[8][3], bumperBorders[8][2], bumperBorders[8][1]], + [bumperBorders[9][0], bumperBorders[9][1], bumperBorders[9][2], bumperBorders[9][3], bumperBorders[9][0], bumperBorders[9][3]], + [bumperBorders[10][0], bumperBorders[10][1], bumperBorders[10][2], bumperBorders[10][3], bumperBorders[10][2], bumperBorders[10][1]], + [bumperBorders[11][0], bumperBorders[11][1], bumperBorders[11][2], bumperBorders[11][3], bumperBorders[11][0], bumperBorders[11][3]], + [bumperBorders[12][0], bumperBorders[12][1], bumperBorders[12][2], bumperBorders[12][3], bumperBorders[12][2], bumperBorders[12][1]], + [bumperBorders[13][0], bumperBorders[13][1], bumperBorders[13][2], bumperBorders[13][3], bumperBorders[13][0], bumperBorders[13][3]], + [bumperBorders[14][0], bumperBorders[14][1], bumperBorders[14][2], bumperBorders[14][3], bumperBorders[14][2], bumperBorders[14][1]], + [bumperBorders[15][0], bumperBorders[15][1], bumperBorders[15][2], bumperBorders[15][3], bumperBorders[15][0], bumperBorders[15][3]], + [bumperBorders[16][0], bumperBorders[16][1], bumperBorders[16][2], bumperBorders[16][3], bumperBorders[16][2], bumperBorders[16][1]], + [bumperBorders[17][0], bumperBorders[17][1], bumperBorders[17][2], bumperBorders[17][3], bumperBorders[17][0], bumperBorders[17][3]]] + +bumperShapeTypes = [3, 3, 3, 3, 3, 3, 2, 2,2,2,2, 2, 2, 2,2,2, 2, 2] + +dyn.table.numBumpers = len(bumperBorders) +dyn.table.bumpers = trick.TMM_declare_var_1d("Bumper*", dyn.table.numBumpers) + +for i in range(len(bumperBorders)): + id = dyn.table.addBumper(len(bumperShapes[i])/2, bumperBorders[i][0], bumperBorders[i][1], bumperBorders[i][2],bumperBorders[i][3]) + dyn.table.bumpers[id][0].numPoints = len(bumperShapes[i])/2 + dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Point*", dyn.table.bumpers[id].numPoints) + + dyn.table.bumpers[id][0].shapeType = bumperShapeTypes[i] + for j in range(0, len(bumperShapes[i]), 2): + dyn.table.addPointToBumper(id, bumperShapes[i][j],bumperShapes[i][j+1]) -dyn.table.setBallVel(id1, 0.5, 0); dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) @@ -16,15 +125,31 @@ dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) # Start the Graphics Client #========================================== varServerPort = trick.var_server_get_port(); -PoolTableDisplay_path = "models/graphics/dist/PoolTableDisplay.jar" + +# This will definitely change to something else +PoolTableDisplay_path = "models/graphics/libigl-example-project/build/example" + if (os.path.isfile(PoolTableDisplay_path)) : - PoolTableDisplay_cmd = "java -jar " \ - + PoolTableDisplay_path \ + PoolTableDisplay_cmd = PoolTableDisplay_path \ + " " + str(varServerPort) + " &" ; print(PoolTableDisplay_cmd) os.system( PoolTableDisplay_cmd); else : - print('============================================================================================') - print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics and type \"make\".') - print('============================================================================================') + print('=================================================================================================') + print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') + print('=================================================================================================') + + +# PoolTableDisplay_path = "models/graphics/java/dist/PoolTableDisplay.jar" + +# if (os.path.isfile(PoolTableDisplay_path)) : +# PoolTableDisplay_cmd = "java -jar " \ +# + PoolTableDisplay_path \ +# + " " + str(varServerPort) + " &" ; +# print(PoolTableDisplay_cmd) +# os.system( PoolTableDisplay_cmd); +# else : +# print('=================================================================================================') +# print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') +# print('=================================================================================================') diff --git a/trick_sims/SIM_pool/S_define b/trick_sims/SIM_pool/S_define index a7548bda..ea1d0f55 100644 --- a/trick_sims/SIM_pool/S_define +++ b/trick_sims/SIM_pool/S_define @@ -17,8 +17,9 @@ class PoolTableSimObject : public Trick::SimObject { ("derivative") table.state_deriv() ; ("integration") trick_ret = table.state_integ() ; ("dynamic_event") table.collision() ; + // ("dynamic_event") table.bumperCollision() ; } }; PoolTableSimObject dyn; -IntegLoop dyn_integloop(0.1) dyn; +IntegLoop dyn_integloop(0.001) dyn; diff --git a/trick_sims/SIM_pool/models/graphics/java/Makefile b/trick_sims/SIM_pool/models/graphics/java/Makefile new file mode 100644 index 00000000..55e5e663 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/java/Makefile @@ -0,0 +1,36 @@ +SHELL = /bin/sh + +PROJECT_NAME = PoolTableDisplay +SRC_DIR = src +BUILD_DIR = build +CLASSES_DIR = $(BUILD_DIR)/classes +JAR_DIR = dist +MAIN_CLASS = PoolTableDisplay + +all: jar + +clean: + rm -rf $(BUILD_DIR) + rm -f manifest + +spotless: clean + rm -rf dist + +$(CLASSES_DIR): + @ mkdir -p $(CLASSES_DIR) + +compile: | $(CLASSES_DIR) + javac -sourcepath $(SRC_DIR) -d $(CLASSES_DIR) $(SRC_DIR)/PoolTableDisplay.java + +manifest: + @ echo "Main-Class: $(MAIN_CLASS)" > $@ + +$(JAR_DIR): + @ mkdir -p $(JAR_DIR) + +jar: compile manifest | $(JAR_DIR) + jar cvfm $(JAR_DIR)/$(PROJECT_NAME).jar manifest -C $(CLASSES_DIR) . + @ echo "-------------------------------------------------------------------------------" + @ echo " BUILD COMPLETE" + @ echo "The Java jar file (the Java Executable) is located at: $(JAR_DIR)/$(PROJECT_NAME).jar" + @ echo "-------------------------------------------------------------------------------" diff --git a/trick_sims/SIM_pool/models/graphics/java/dist/PoolTableDisplay.jar b/trick_sims/SIM_pool/models/graphics/java/dist/PoolTableDisplay.jar new file mode 100644 index 0000000000000000000000000000000000000000..9de0aeaa35fddc5f4ed8ba97f4cca20db4ffc6e3 GIT binary patch literal 6493 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_pool/models/graphics/java/manifest b/trick_sims/SIM_pool/models/graphics/java/manifest new file mode 100644 index 00000000..5c286ff4 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/java/manifest @@ -0,0 +1 @@ +Main-Class: PoolTableDisplay diff --git a/trick_sims/SIM_pool/models/graphics/src/PoolTableDisplay.java b/trick_sims/SIM_pool/models/graphics/java/src/PoolTableDisplay.java similarity index 97% rename from trick_sims/SIM_pool/models/graphics/src/PoolTableDisplay.java rename to trick_sims/SIM_pool/models/graphics/java/src/PoolTableDisplay.java index 573ffe7d..c7eaddb1 100644 --- a/trick_sims/SIM_pool/models/graphics/src/PoolTableDisplay.java +++ b/trick_sims/SIM_pool/models/graphics/java/src/PoolTableDisplay.java @@ -24,7 +24,7 @@ import javax.swing.JPanel; class Ball { - static int numColors = 9; + static int numColors = 8; static Color[] colorList = { Color.WHITE, Color.YELLOW, @@ -45,7 +45,7 @@ class Ball { identity = id; x = 0.0; y = 0.0; - radius = 0.5; + radius = 1.0; color = colorList[id % numColors]; } } @@ -159,8 +159,8 @@ class RangeView extends JPanel { int bx = (int)(worldOriginX + scale * balls[ii].x); int by = (int)(worldOriginY - scale * balls[ii].y); drawCenteredCircle(g2d, bx, by, (int)(scale * 2 * balls[ii].radius)); - g2d.setPaint(Color.BLACK); - g2d.drawString ( String.format("%d",ii), bx,by); + // g2d.setPaint(Color.BLACK); + // g2d.drawString ( String.format("%d",ii), bx,by); } g2d.drawString ( String.format("SCALE: %d pixels/meter",scale), 20,20); @@ -294,7 +294,7 @@ public class PoolTableDisplay extends JFrame { line = poolTableDisplay.in.readLine(); field = line.split("\t"); for ( ii=0; ii < nballs; ii++) { - // poolTableDisplay.rangeView.balls[ii].radius = Double.parseDouble( field[ii+1]); + poolTableDisplay.rangeView.balls[ii].radius = Double.parseDouble( field[ii+1]); } } catch (IOException | NullPointerException e ) { go = false; diff --git a/trick_sims/SIM_pool/models/graphics/libigl-example-project b/trick_sims/SIM_pool/models/graphics/libigl-example-project new file mode 160000 index 00000000..a9b087f9 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/libigl-example-project @@ -0,0 +1 @@ +Subproject commit a9b087f9d8e9cce32ab68705128164cd5d4ad81a diff --git a/trick_sims/SIM_pool/models/pool_table/include/ball.hh b/trick_sims/SIM_pool/models/pool_table/include/ball.hh index 55f99791..9f0e8740 100644 --- a/trick_sims/SIM_pool/models/pool_table/include/ball.hh +++ b/trick_sims/SIM_pool/models/pool_table/include/ball.hh @@ -7,9 +7,9 @@ LIBRARY DEPENDENCY: #define _ball_hh_ // #include +#include "common_geometry.hh" // monotonically increasing ID -static int id = 0; class Ball { @@ -17,20 +17,48 @@ class Ball { Ball(double x, double y, double mass, double radius, bool isFixed, int id); Ball () {} - + + void setPos(double x, double y); + void setPos(double x, double y, double z); + + void setVel(double x, double y); + void setVel(double x, double y, double z); + + void setAccel(double x, double y); + void setAccel(double x, double y, double z); + + // void setRelativeVel(double x, double y); + void setRelativeVel(double x, double y, double z); + + // void setAngularVel(double x, double y); + void setAngularVel(double x, double y, double z); + + // void setAngularAccel(double x, double y); + void setAngularAccel(double x, double y, double z); + + void clearAllState(); + + // Z component should always be 0, unless someone tries to add jumps in the future - double pos[3]; - double prevPos[3]; - double vel[3]; - // Used to store derivatives between deriv and integration steps - double accel[3]; + // double pos[3]; + // double prevPos[3]; // Maybe don't need this anymore? + // double vel[3]; + // // Used to store derivatives between deriv and integration steps + // double accel[3]; - // Relating to angular velocity - double relativeVel[3]; - double w[3]; - double angular_accel[3]; + // // Relating to angular velocity + // double relativeVel[3]; + // double w[3]; + // double angular_accel[3]; + Vec pos; + Vec prevPos; + Vec vel; + Vec accel; + Vec relativeVel; + Vec w; + Vec angularAccel; - double color[3]; + // double color[3]; double mass; double radius; @@ -38,6 +66,8 @@ class Ball { bool isCue; int sliding; + bool inPlay = true; + unsigned int id; }; diff --git a/trick_sims/SIM_pool/models/pool_table/include/bumper.hh b/trick_sims/SIM_pool/models/pool_table/include/bumper.hh index f90eb7ab..f84b702b 100644 --- a/trick_sims/SIM_pool/models/pool_table/include/bumper.hh +++ b/trick_sims/SIM_pool/models/pool_table/include/bumper.hh @@ -7,39 +7,25 @@ LIBRARY DEPENDENCY: #define _bumper_hh_ #include - -// this should definitely go somewhere else -// maybe make a geometry libary -class Point { - public: - double x; - double y; - - Point(double x, double y) : x(x), y(y) {} - Point() {} -}; - -class Line { - public: - Point p1; - Point p2; - - Line (Point p1, Point p2) : p1(p1), p2(p2) {} - Line () {} -}; +#include "common_geometry.hh" class Bumper { public: + // Have to have a default constructor or trick freaks out + Bumper(); + Bumper(int numPoints, double x1, double y1, double x2, double y); + void AddPointToRender(double x, double y); void AddBorder (double x1, double y1, double x2, double y2); + int id; + Line border; + Vec ** renderedShape; + unsigned int numPoints; + enum PolygonType shapeType; + private: - // Actual line that can be collided with - Line border; - - // Shape that should be rendered - // Size should be dynamic - std::vector renderedShape; + int nextPointSlot = 0; }; diff --git a/trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh b/trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh new file mode 100644 index 00000000..7a6fc0b3 --- /dev/null +++ b/trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh @@ -0,0 +1,77 @@ +/********************************* TRICK HEADER ******************************* +PURPOSE: ( Geometry primitives to be used elsewhere. ) +LIBRARY DEPENDENCY: + (()) +*******************************************************************************/ +#ifndef _common_hh_ +#define _common_hh_ + +// Should maybe swap this for eigen stuff at some point +class Vec { + public: + Vec(double x, double y) : _x(x), _y(y), _z(0) {} + Vec(double x, double y, double z) : _x(x), _y(y), _z(z) {} + Vec() {} + + Vec operator+ (const Vec& other) { + Vec sum; + sum._x = _x + other._x; + sum._y = _y + other._y; + sum._z = _z + other._z; + return sum; + } + + Vec operator* (double scale) { + Vec ret; + ret._x = _x * scale; + ret._y = _y * scale; + ret._z = _z * scale; + return ret; + } + + double& operator() (int index) { + if (index == 0) { + return _x; + } else if (index == 1) { + return _y; + } else if (index == 2) { + return _z; + } + + // Throw an error i guess + } + + Vec normalized () { + Vec norm; + + } + + double& x () { return _x; } + double& y () { return _y; } + double& z () { return _z; } + + + private: + double _x; + double _y; + double _z; +}; + +class Line { + public: + Vec p1; + Vec p2; + + Line (Vec p1, Vec p2) : p1(p1), p2(p2) {} + Line () {} +}; + +enum PolygonType { + GENERIC, + CIRCLE, + TRIANGLE, + RECTANGLE, + QUAD +}; + +#endif \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/include/pocket.hh b/trick_sims/SIM_pool/models/pool_table/include/pocket.hh new file mode 100644 index 00000000..6bf45424 --- /dev/null +++ b/trick_sims/SIM_pool/models/pool_table/include/pocket.hh @@ -0,0 +1,24 @@ +/********************************* TRICK HEADER ******************************* +PURPOSE: ( Pool pocket class. ) +LIBRARY DEPENDENCY: + (()) +*******************************************************************************/ +#ifndef _pocket_hh_ +#define _pocket_hh_ + +#include +#include "common_geometry.hh" + +class Pocket { + public: + // Have to have a default constructor or trick freaks out + Pocket() {} + Pocket(double x, double y, double r) : x(x), y(y), radius(r) {} + + double x; + double y; + double radius; + +}; + +#endif \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh b/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh index 5a0b79d0..e4bc40d1 100644 --- a/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh +++ b/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh @@ -9,6 +9,7 @@ LIBRARY DEPENDENCIES: #include "trick/regula_falsi.h" #include "ball.hh" #include "bumper.hh" +#include "pocket.hh" #include @@ -17,42 +18,78 @@ class PoolTable { public: PoolTable () : numBalls(0), numAssociations(0) {} - int addBall (double x, double y, double mass, double radius, bool fixed); - int addBumper (double x1, double y1, double x2, double y2); - - int setBallPos(int id, double x, double y); - int setBallVel(int id, double v_x, double v_y); - - // Ball ** balls; - // Bumper ** bumpers; - Ball** balls; - Bumper** bumpers; - - // Ball-ball collisions - int nextBallSlot = 0; - unsigned int numBalls; - unsigned int numAssociations; - REGULA_FALSI* ballAssociations; - - // Ball-bumper collisions - unsigned int numBumpers; - unsigned int numCombos; - REGULA_FALSI* bumperAssociations; - - //void ballCollision(Ball &b1, Ball &b2); - int default_data(); int state_init(); int state_deriv(); int state_integ(); double collision(); + // double bumperCollision(); + + int addBall (double x, double y, double mass, double radius, bool fixed); + int addBumper (int numPoints, double x1, double y1, double x2, double y2); + int addPointToBumper(int id, double x, double y); + int addPointToTable(double x, double y); + int addPocket(double x, double y, double r); + + int setBallPos(int id, double x, double y); + int setBallVel(int id, double v_x, double v_y); + + void applyCueForce(double x_end, double y_end); + void applyCueForce(double x_end, double y_end, double cueHorizontalDisplacement, double cueVerticalDisplacement, double cueAngle); + + void resetCueBall(double x, double y); + void resetCueBall(); + + double removeBall(int id); + + + // State variables + Ball** balls; + + // Table parameters + // Bumpers and pockets are used by sim, tableShape is just used by graphics client + Bumper** bumpers; + Pocket** pockets; + Vec** tableShape; + + unsigned int numBumpers; + unsigned int numPockets; + unsigned int numTablePoints; + + int nextBallSlot = 0; + int nextBumperSlot = 0; + int nextPocketSlot = 0; + int nextTablePointSlot = 0; + + enum PolygonType tableShapeType; + + // Ball-ball collisions + unsigned int numBalls; + unsigned int numAssociations; + REGULA_FALSI* ballAssociations; + + // Ball-bumper collisions + unsigned int bumperBallCombos; + REGULA_FALSI* bumperAssociations; + + // Ball-pocket collisions + unsigned int pocketBallCombos; + REGULA_FALSI* pocketAssociations; // Sim constants that should be user-controllable double frictionRolling = 0.05; double frictionSliding = 0.25; double frictionScale = 1; double frictionTolerance = 0.0005; - double coefficientOfElasticity = 0.99; + double coefficientOfElasticity = .95; + double cueForceScale = 1.0; + double cueMass = 1.0; + + int cueBallIndex = 0; + double defaultCueBallX = -0.3; + double defaultCueBallY = 0; + + bool allowCollisions = true; }; #endif \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/src/ball.cpp b/trick_sims/SIM_pool/models/pool_table/src/ball.cpp index 3d6b3665..b7a4a081 100644 --- a/trick_sims/SIM_pool/models/pool_table/src/ball.cpp +++ b/trick_sims/SIM_pool/models/pool_table/src/ball.cpp @@ -6,30 +6,57 @@ LIBRARY DEPENDENCY: #include "../include/ball.hh" // #include "trick/memorymanager_c_intf.h" -#include "trick/MemoryManager.hh" -extern Trick::MemoryManager* trick_MM; +// #include "trick/MemoryManager.hh" +// extern Trick::MemoryManager* trick_MM; #include Ball::Ball(double x, double y, double mass, double radius, bool isFixed, int id) : mass(mass), + radius(radius), fixed(isFixed), id(id) { - pos[0] = x; - pos[1] = y; - pos[2] = 0; + pos = Vec(x, y, 0); } -// Ball* CreateBall(double x, double y, double mass, double radius, bool isFixed) { -// // Ball* b = (Ball*)TMM_declare_var_s("Ball"); -// Ball *b = new Ball(x, y, mass, radius, isFixed, 0); -// trick_MM->declare_extern_var ( b, "Ball"); -// // Ball *b = (Ball*)trick_MM->declare_var("Ball"); +void Ball::setPos(double x, double y) { setPos(x, y, 0); } +void Ball::setPos(double x, double y, double z) { + pos = Vec(x, y, z); +} + +void Ball::setVel(double x, double y) { setVel(x, y, 0); } +void Ball::setVel(double x, double y, double z) { + vel = Vec(x, y, z); +} + +void Ball::setAccel(double x, double y) { setAccel(x, y, 0); } +void Ball::setAccel(double x, double y, double z) { + accel = Vec(x, y, z); +} + +void Ball::setRelativeVel(double x, double y, double z) { + relativeVel = Vec(x, y, z); +} + +void Ball::setAngularVel(double x, double y, double z) { + w = Vec(x, y, z); +} + +void Ball::setAngularAccel(double x, double y, double z) { + angularAccel = Vec(x, y, z); +} + +void Ball::clearAllState() { + setPos(0, 0, 0); + setVel(0, 0, 0); + setAccel(0, 0, 0); + setRelativeVel(0, 0, 0); + setAngularVel(0, 0, 0); + setAngularAccel(0, 0, 0); + sliding = false; +} -// // return (new (b) Ball(x, y, mass, radius, isFixed, 0)); -// return b; -// } diff --git a/trick_sims/SIM_pool/models/pool_table/src/bumper.cpp b/trick_sims/SIM_pool/models/pool_table/src/bumper.cpp index d2927cf3..435e9c79 100644 --- a/trick_sims/SIM_pool/models/pool_table/src/bumper.cpp +++ b/trick_sims/SIM_pool/models/pool_table/src/bumper.cpp @@ -1,9 +1,25 @@ #include "bumper.hh" +#include "stdlib.h" + +#include "trick/memorymanager_c_intf.h" + +Bumper::Bumper() {} + +Bumper::Bumper(int numPoints, double x1, double y1, double x2, double y2) : + border(Line(Vec(x1, y1), Vec(x2, y2))), + numPoints(numPoints) +{ +} + void Bumper::AddPointToRender(double x, double y) { - + int id = nextPointSlot++; + if (id < numPoints) { + Vec * point = (Vec*) TMM_declare_var_s("Vec"); + renderedShape[id] = (new (point) Vec(x, y)); + } } void Bumper::AddBorder (double x1, double y1, double x2, double y2) { - + border = Line(Vec(x1, y1), Vec(x2, y2)); } \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/src/pocket.cpp b/trick_sims/SIM_pool/models/pool_table/src/pocket.cpp new file mode 100644 index 00000000..e69de29b diff --git a/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp b/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp index 0ee9da8a..d5b376e9 100644 --- a/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp +++ b/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp @@ -29,6 +29,11 @@ void scaleInPlace (double vec[], double scale, int dim) { } } +void mProduct (double product[2], double matrix[2][2], double vec[2]) { + product[0] = matrix[0][0] * vec[0] + matrix[1][0] * vec[1]; + product[1] = matrix[0][1] * vec[0] + matrix[1][1] * vec[1]; +} + @@ -36,14 +41,6 @@ int PoolTable::default_data() { // balls.clear(); // bumpers.clear(); - - // Dev Testing only - should be deleted - // int id1 = addBall(0.5, 0.5, 1, 1, false); - // int id2 = addBall(0.75, 0.5, 1, 1, false); - - // setBallVel(id1, 0.1, 0); - /////////////////////////////////////////// - numBalls = 0; numBumpers = 0; return 0; @@ -69,7 +66,30 @@ int PoolTable::state_init() { } } - // Need to do the same thing with rail/ball associations + bumperBallCombos = numBalls * numBumpers; + bumperAssociations = (REGULA_FALSI*)TMM_declare_var_1d("REGULA_FALSI", bumperBallCombos); + for (ii=0; iivel[0] << " " << balls[i]->vel[1] << std::endl; - // std::cout << "Velocity Norm: " << velocityNorm[0] << " " << velocityNorm[1] << std::endl; - - // balls[i]->accel[0] = 0; - // balls[i]->accel[1] = 0; - + // Magnitude of velocity is irrelevant unless very close to 0 // Has weird behavior when velocity is very small, so only apply friction if velocity is greater than a tolerance + + if (!balls[i]->inPlay) { + continue; + } + if (abs(dv_mag(balls[i]->vel)) > frictionTolerance) { double velocityNorm[3]; dv_norm(velocityNorm, balls[i]->vel); @@ -125,6 +143,10 @@ int PoolTable::state_integ() { int n = 6; for (int i = 0; i < numBalls; i++) { + if (!balls[i]->inPlay) { + continue; + } + // State - Need to load 4 values for each ball, but will have to have more when we add angular stuff // pos[0] pos[1] vel[0] vel[1] int inner_index = 0; @@ -153,6 +175,10 @@ int PoolTable::state_integ() { int integration_step = integrate(); for (int i = 0; i < numBalls; i++) { + if (!balls[i]->inPlay) { + continue; + } + // pos[0] pos[1] vel[0] vel[1] int inner_index = 0; balls[i]->pos[0] = unload_indexed_state(n*i + inner_index++); @@ -162,23 +188,55 @@ int PoolTable::state_integ() { balls[i]->vel[0] = unload_indexed_state(n*i + inner_index++); balls[i]->vel[1] = unload_indexed_state(n*i + inner_index++); balls[i]->vel[2] = unload_indexed_state(n*i + inner_index++); + + balls[i]->accel[0] = 0; + balls[i]->accel[1] = 0; + balls[i]->accel[2] = 0; + } - return 0; + return integration_step; +} + +double closestPointOnLine(Line& line, double pos[2], double result[2], bool print) { + double m[3]; + double a[3] = {line.p1.x, line.p1.y}; + double b[3] = {line.p2.x, line.p2.y}; + double diff[3]; + + dv_sub(diff, pos, a); + dv_sub(m, b, a); + + double t = dot(diff, m, 2) / dot(m, m, 2); + + // if (print) + // std::cout << "t: " << t << std::endl; + + if (t < 0) + t = 0; + + if (t > 1) + t = 1; + + scaleInPlace(m, t, 2); + dv_add(result, a, m); + // if (print) + // std::cout << "Result: " << result[0] << " " << result[1] << std::endl; + + return t; +} + +double PoolTable::removeBall(int id) { + balls[id]->inPlay = false; + balls[id]->clearAllState(); } -// Maybe need a separate scheduled job to handle pockets? -// And the cue? -// Maybe see if there's some "callback" that can handle user input -// There must be, since other sims have control panels too double PoolTable::collision() { - // Handle when the balls collide with others or with a bumper + + // Handle when the balls collide with others double now ; /* current integration time. */ - unsigned int first, second; - - unsigned int association_index; double event_tgo; unsigned int ii,jj; @@ -188,14 +246,26 @@ double PoolTable::collision() { std::vector collisionsToProcess; for (ii=1; iiinPlay) { + continue; + } for (jj=0; jjinPlay) { + continue; + } + double diff[3]; dv_sub(diff, balls[ii]->pos, balls[jj]->pos); double distanceBetweenBalls = dv_mag(diff); unsigned int associationIndex = ii*(ii-1)/2+jj; // boundary is distance between balls - radiuses of balls - ballAssociations[associationIndex].error = distanceBetweenBalls - (balls[ii]->radius + balls[jj]->radius); + double error = distanceBetweenBalls - (balls[ii]->radius + balls[jj]->radius); + + // std::cout << "Distance between centers: " << distanceBetweenBalls << std::endl; + // std::cout << "Radiuses: " << balls[ii]->radius << " " << balls[jj]->radius << std::endl; + // std::cout << "Error calculation: " << error << std::endl; + ballAssociations[associationIndex].error = error; double this_tgo = regula_falsi( now, &(ballAssociations[associationIndex])) ; if (this_tgo < event_tgo) { @@ -203,20 +273,33 @@ double PoolTable::collision() { } if (this_tgo == 0) { + std::cout << "Found colliding balls" << std::endl; + // Add this collision to a list of collisions to process collisionsToProcess.push_back(ii); collisionsToProcess.push_back(jj); + reset_regula_falsi( now, &(ballAssociations[associationIndex]) ); + + } else { + regula_falsi_set_upper (now, error, &ballAssociations[associationIndex]); } } } // Handle collisions for (int i = 0; i < collisionsToProcess.size(); i+=2) { + // if (allowCollisions == false) { + // return event_tgo; + // } + // allowCollisions = false; int index1 = collisionsToProcess[i]; int index2 = collisionsToProcess[i+1]; + std::cout << "Collision detected between balls " << index1 << " and " << index2 << std::endl; - double *q1 = balls[index1]->pos; - double *q2 = balls[index2]->pos; + double q1[3]; + dv_copy(q1, balls[index1]->pos); + double q2[3]; + dv_copy(q2, balls[index2]->pos); // dg = (q1 - q2) / (|q1 - q2|) @@ -234,15 +317,261 @@ double PoolTable::collision() { // J = ((-(1 + c) * dg * v) / (dg * M^-1 * dg^T) ) dg // For now let's just pretend all the masses are 1 double impulse = ((1.0 + coefficientOfElasticity) * dot(dg4, vel4, 4)) / (dot(dg4, dg4, 4)); - scaleInPlace(dg, impulse, 4); + scaleInPlace(dg4, impulse, 4); - + // Impulse[0:1] is x and y components of what should be applied to v1, Impulse[2:3] goes to v2 + double impulse1[3] = {dg4[0], dg4[1], 0}; + double impulse2[3] = {dg4[2], dg4[3], 0}; + double newV1[3]; + dv_copy(newV1, balls[index1]->vel); + double newV2[3]; + dv_copy(newV2, balls[index2]->vel); + + scaleInPlace(newV1, balls[index1]->mass, 3); + scaleInPlace(newV2, balls[index2]->mass, 3); + + dv_sub(newV1, newV1, impulse1); + dv_sub(newV2, newV2, impulse2); + + scaleInPlace(newV1, 1.0 / balls[index1]->mass, 3); + scaleInPlace(newV2, 1.0 / balls[index2]->mass, 3); + + std::cout << "Impulses applied: \n\tV1: " << newV1[0] << " " << newV1[1] << " \n\tV2: " << newV2[0] << " " << newV2[1] << std::endl; + + balls[index1]->vel[0] = newV1[0]; + balls[index1]->vel[1] = newV1[1]; + + balls[index2]->vel[0] = newV2[0]; + balls[index2]->vel[1] = newV2[1]; + } + + // std::cout << "Ball 0 pos: " << balls[0]->pos[0] << " " << balls[0]->pos[1] << std::endl; + // std::cout << "Bumper 0 pos: " << bumpers[0]->border.p1.x << " " << bumpers[0]->border.p1.y << " " << bumpers[0]->border.p2.x << " " << bumpers[0]->border.p2.y << std::endl; + + int numBumperCollisions = 0; + for (ii=0; iiinPlay) { + continue; + } + // if (numBumperCollisions > 0) + // break; + for (jj=0; jj 0) + // break; + unsigned int association_index = (ii*numBumpers) + jj; + Ball *ball = balls[ii]; + Bumper *bumper = bumpers[jj]; + //Point ballPos(ball->pos[0], ball->pos[1]); + double closestPointOnBumper[3] = {0, 0, 0}; + if (ii == 0 && jj == 3) { + double t = closestPointOnLine(bumper->border, ball->pos, closestPointOnBumper, true); + // std::cout << "Closest point on bumper: " << closestPointOnBumper[0] << " " << closestPointOnBumper[1] << std::endl; + + } else { + double t = closestPointOnLine(bumper->border, ball->pos, closestPointOnBumper, false); + } + double diff[3]; + + // dv_sub(diff, ball->pos, closestPointOnBumper); + diff[0] = ball->pos[0] - closestPointOnBumper[0]; + diff[1] = ball->pos[1] - closestPointOnBumper[1]; + diff[2] = 0; + + double distanceToBumper = abs(dv_mag(diff)) - ball->radius; + + bumperAssociations[association_index].error = distanceToBumper; + // if (ii == 0 && jj == 3) { + // std::cout << "Ball pos: " << balls[ii]->pos[0] << " " << balls[ii]->pos[1] << std::endl; + // std::cout << "Closest point on bumper: " << closestPointOnBumper[0] << " " << closestPointOnBumper[1] << std::endl; + // std::cout << "Distance to bumper: " << bumperAssociations[association_index].error << std::endl; + // } + double this_tgo = regula_falsi( now, &(bumperAssociations[association_index])) ; + if (this_tgo < event_tgo) { + event_tgo = this_tgo; + } + + if (this_tgo == 0) { + numBumperCollisions++; + std::cout << "Found colliding ball " << ii << " and bumper " << jj << std::endl; + + reset_regula_falsi( now, &(bumperAssociations[association_index]) ); + + if (numBumperCollisions > 1) + continue; + + double q1[3]; + dv_copy(q1, ball->pos); + double q2[3]; + dv_copy(q2, closestPointOnBumper); + q1[2] = 0; + q2[2] = 0; + + + // dg = (q1 - q2) / (|q1 - q2|) + double diff[3]; + dv_sub(diff, q1, q2); + double dg[3]; + dv_norm(dg, diff); + + // Have to stuff both velocities and dg values into 4d vector to do the calculation + // Otherwise I have to do more math + double dg4[4] = {dg[0], dg[1], -dg[0], -dg[1]}; + double vel4[4] = {ball->vel[0], ball->vel[1], 0, 0}; + + // Calculate the impulse + // J = ((-(1 + c) * dg * v) / (dg * M^-1 * dg^T) ) dg + // Really need to get some better matrix math in here + // only used the dot product of the first 2 in the last term since it's supposed to be dg * minv * dg + // and since the bumpers are immovable the mass is infinite which inverse is 0 + // So this isn't robust at all + // Setting the CoE to be 1 always - perfectly elastic + // Otherwise there's a weird bouncy thing + double impulse = ((1.0 + 1.0) * dot(dg4, vel4, 4)) / (dot(dg4, dg4, 2)); + std::cout << "Impulse: " << impulse << std::endl; + scaleInPlace(dg4, impulse, 4); + + // Impulse[0:1] is x and y components of what should be applied to v1, Impulse[2:3] goes to v2 + double impulse1[3] = {dg4[0], dg4[1], 0}; + double impulse2[3] = {dg4[2], dg4[3], 0}; + + double newV1[3]; + dv_copy(newV1, ball->vel); + // double newV2[3] = {0, 0}; + + scaleInPlace(newV1, ball->mass, 3); + // scaleInPlace(newV2, balls[index2]->mass, 3); + + dv_sub(newV1, newV1, impulse1); + // dv_sub(newV2, newV2, impulse2); + + scaleInPlace(newV1, 1.0 / ball->mass, 3); + // scaleInPlace(newV2, 1.0 / balls[index2]->mass, 3); + + std::cout << "Impulses applied: \n\tV1: " << newV1[0] << " " << newV1[1] << std::endl; + + ball->vel[0] = newV1[0]; + ball->vel[1] = newV1[1]; + + } else { + regula_falsi_set_upper (now, distanceToBumper, &bumperAssociations[association_index]); + } + } + + } + if (numBumperCollisions > 0) { + std::cout << "In this time step, " << numBumperCollisions << " collisions applied" << std::endl; + } + + // Pockets + for (ii=0; iiinPlay) { + continue; + } + for (jj=0; jjx, pocket->y, 0}; + + double diff[3]; + dv_sub(diff, ball->pos, pocketPos); + double distance = dv_mag(diff); + + // Ball is pocketed when center is within pocket radius + double error = distance - (pocket->radius); + + pocketAssociations[association_index].error = error; + double this_tgo = regula_falsi( now, &(pocketAssociations[association_index])); + + if (this_tgo < event_tgo) { + event_tgo = this_tgo; + } + + if (this_tgo == 0) { + std::cout << "Found pocketed ball" << std::endl; + reset_regula_falsi( now, &(pocketAssociations[association_index]) ); + removeBall(ii); + } + } } return event_tgo; } +void PoolTable::resetCueBall() { + resetCueBall(defaultCueBallX, defaultCueBallY); +} + +void PoolTable::resetCueBall(double x, double y) { + balls[cueBallIndex]->clearAllState(); + balls[cueBallIndex]->setPos(x, y); + + balls[cueBallIndex]->inPlay = true; +} + + + +void PoolTable::applyCueForce(double x_end, double y_end) { + applyCueForce(x_end, y_end, 0, 0, 0); +} + + +void PoolTable::applyCueForce(double x_end, double y_end, double cueHorizontalDisplacement, double cueVerticalDisplacement, double cueAngle) { + std::cout << "Applying cue force" << std::endl; + + // assume index 0 is cue ball + int cueIndex = 0; + double cueEnd[3] = {x_end, y_end}; + double cueBallPos[3] = {balls[cueIndex]->pos[0], balls[cueIndex]->pos[1]}; + + double r = balls[cueIndex]->radius; + double m = balls[cueIndex]->mass; + + double a = cueHorizontalDisplacement * r; + double b = cueVerticalDisplacement * r; + double c = abs(sqrt(pow(r,2) - pow(a,2) - pow(b,2))); + + double theta = cueAngle * M_PI / 180.0; + double angleScaling = 1.0 + (cueAngle / 25.0); + + double cueAxis[3]; + dv_sub(cueAxis, cueEnd, cueBallPos); + double cue_v = dv_mag(cueAxis) * cueForceScale * angleScaling; + dv_norm(cueAxis, cueAxis); + double axis2[2] = {cueAxis[0], cueAxis[1]}; + + double force = (2 * m * cue_v) / (1.0 * (m / cueMass) + (5.0 / (2.0*pow(r, 2))) * (pow(a,2) + pow(b,2)*pow(cos(theta),2) + pow(c,2)*pow(sin(theta),2) - 2*b*c*sin(theta)*cos(theta))); + + // Velocity in the frame of the cue + double v_b[2] = {0, -force/m * cos(theta)}; + + // Rotate to table frame + double y_unit[2] = {0, 1}; + double rot = acos(dot(axis2, y_unit, 2) / 1.0); + if (cueAxis[0] < 0) { + rot = -rot; + } + + double rotationMatrix[2][2]; + rotationMatrix[0][0] = cos(rot); + rotationMatrix[0][1] = -sin(rot); + rotationMatrix[1][0] = sin(rot); + rotationMatrix[1][1] = cos(rot); + + double v_table[2]; + mProduct(v_table, rotationMatrix, v_b); + + std::cout << "Velocity of ball after cue hit: " << v_table[0] << " " << v_table[1] << std::endl; + + balls[cueIndex]->vel[0] = v_table[0]; + balls[cueIndex]->vel[1] = v_table[1]; + + // TODO: logic for angular and relative velocity + +} + + // Add a ball to the table and return the ID int PoolTable::addBall (double x, double y, double mass, double radius, bool fixed) { int id = nextBallSlot++; @@ -256,11 +585,45 @@ int PoolTable::addBall (double x, double y, double mass, double radius, bool fix // Add a bumper to the table and return the ID // Only takes in the actual effective line, need to add something else for the rendered shape -int PoolTable::addBumper (double x1, double y1, double x2, double y2) { - // bumpers.push_back(bumper); +int PoolTable::addBumper (int numPoints, double x1, double y1, double x2, double y2) { + int id = nextBumperSlot++; + if (id < numBumpers) { + Bumper * bumper = (Bumper*) TMM_declare_var_s("Bumper"); + bumpers[id] = (new (bumper) Bumper(numPoints, x1, y1, x2, y2)); + return id; + } return -1; } +int PoolTable::addPointToBumper(int id, double x, double y) { + Bumper * bumper = bumpers[id]; + bumper->AddPointToRender(x, y); + + return 0; +} + +int PoolTable::addPointToTable(double x, double y) { + int id = nextTablePointSlot++; + if (id < numTablePoints) { + Point * point = (Point*) TMM_declare_var_s("Point"); + tableShape[id] = (new (point) Point(x, y)); + return id; + } + return -1; +} + +int PoolTable::addPocket(double x, double y, double r) { + int id = nextPocketSlot++; + if (id < numPockets) { + Pocket * pocket = (Pocket*) TMM_declare_var_s("Pocket"); + pockets[id] = (new (pocket) Pocket(x, y, r)); + return id; + } + return -1; +} + + + int PoolTable::setBallPos(int id, double x, double y) { if (id < numBalls && balls[id] != NULL) { balls[id]->pos[0] = x; From ad5be89c4af5a26d0dacc9c7627f027c4f526831 Mon Sep 17 00:00:00 2001 From: Deans Date: Thu, 14 Jul 2022 11:05:56 -0500 Subject: [PATCH 014/162] Adding fully function simulation --- trick_sims/SIM_pool/RUN_break/input.py | 25 +- trick_sims/SIM_pool/RUN_hexagon/input.py | 12 +- trick_sims/SIM_pool/RUN_test/input.py | 12 +- trick_sims/SIM_pool/S_define | 1 - .../models/graphics/cpp/CMakeLists.txt | 16 + .../SIM_pool/models/graphics/cpp/LICENSE | 363 +++++++ .../SIM_pool/models/graphics/cpp/README.md | 26 + .../SIM_pool/models/graphics/cpp/Socket.cpp | 52 + .../SIM_pool/models/graphics/cpp/Socket.hh | 25 + .../models/graphics/cpp/cmake/libigl.cmake | 11 + .../SIM_pool/models/graphics/cpp/main.cpp | 969 ++++++++++++++++++ .../pool_table/include/common_geometry.hh | 51 +- .../models/pool_table/include/pocket.hh | 5 +- .../models/pool_table/include/pool_table.hh | 2 +- .../models/pool_table/src/pool_table.cpp | 224 ++-- 15 files changed, 1599 insertions(+), 195 deletions(-) create mode 100644 trick_sims/SIM_pool/models/graphics/cpp/CMakeLists.txt create mode 100644 trick_sims/SIM_pool/models/graphics/cpp/LICENSE create mode 100644 trick_sims/SIM_pool/models/graphics/cpp/README.md create mode 100644 trick_sims/SIM_pool/models/graphics/cpp/Socket.cpp create mode 100644 trick_sims/SIM_pool/models/graphics/cpp/Socket.hh create mode 100644 trick_sims/SIM_pool/models/graphics/cpp/cmake/libigl.cmake create mode 100644 trick_sims/SIM_pool/models/graphics/cpp/main.cpp diff --git a/trick_sims/SIM_pool/RUN_break/input.py b/trick_sims/SIM_pool/RUN_break/input.py index 6624fb96..42ebca76 100644 --- a/trick_sims/SIM_pool/RUN_break/input.py +++ b/trick_sims/SIM_pool/RUN_break/input.py @@ -2,7 +2,7 @@ import math exec(open("./Modified_data/realtime.py").read()) -dyn.table.numBalls = 16 +dyn.table.numBalls = 11 dyn.table.balls = trick.TMM_declare_var_1d("Ball*", dyn.table.numBalls) ballRadius = 0.02 @@ -30,11 +30,11 @@ dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]* dyn.table.addBall(center_x+unit_neg[0]*6*(ballRadius+tol), center_y+unit_neg[1]*2*(ballRadius+tol), ballMass, ballRadius, False) dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]*2*(ballRadius+tol), ballMass, ballRadius, False) -dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*8*(ballRadius+tol), ballMass, ballRadius, False) -dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*8*(ballRadius+tol), ballMass, ballRadius, False) -dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*4*(ballRadius+tol), ballMass, ballRadius, False) -dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*4*(ballRadius+tol), ballMass, ballRadius, False) -dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y, ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*8*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*8*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +# dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y, ballMass, ballRadius, False) corners = [-.5, -.25, .5, .25] @@ -46,7 +46,7 @@ bumperWidth = 0.03 dyn.table.numTablePoints = 2 -dyn.table.tableShape = trick.TMM_declare_var_1d("Point*", dyn.table.numTablePoints) +dyn.table.tableShape = trick.TMM_declare_var_1d("Vec*", dyn.table.numTablePoints) dyn.table.tableShapeType = 3 # rectangle dyn.table.addPointToTable(corners[0], corners[1]) dyn.table.addPointToTable(corners[2], corners[3]) @@ -116,7 +116,7 @@ dyn.table.bumpers = trick.TMM_declare_var_1d("Bumper*", dyn.table.numBumpers) for i in range(len(bumperBorders)): id = dyn.table.addBumper(len(bumperShapes[i])/2, bumperBorders[i][0], bumperBorders[i][1], bumperBorders[i][2],bumperBorders[i][3]) dyn.table.bumpers[id][0].numPoints = len(bumperShapes[i])/2 - dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Point*", dyn.table.bumpers[id].numPoints) + dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Vec*", dyn.table.bumpers[id].numPoints) dyn.table.bumpers[id][0].shapeType = bumperShapeTypes[i] for j in range(0, len(bumperShapes[i]), 2): @@ -130,8 +130,7 @@ dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) #========================================== varServerPort = trick.var_server_get_port(); -# This will definitely change to something else -PoolTableDisplay_path = "models/graphics/libigl-example-project/build/example" +PoolTableDisplay_path = "models/graphics/cpp/build/PoolTableDisplay" if (os.path.isfile(PoolTableDisplay_path)) : @@ -140,9 +139,9 @@ if (os.path.isfile(PoolTableDisplay_path)) : print(PoolTableDisplay_cmd) os.system( PoolTableDisplay_cmd); else : - print('=================================================================================================') - print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') - print('=================================================================================================') + print('===================================') + print('PoolTableDisplay needs to be built.') + print('===================================') # PoolTableDisplay_path = "models/graphics/java/dist/PoolTableDisplay.jar" diff --git a/trick_sims/SIM_pool/RUN_hexagon/input.py b/trick_sims/SIM_pool/RUN_hexagon/input.py index 2f2e0789..5b65bbb0 100644 --- a/trick_sims/SIM_pool/RUN_hexagon/input.py +++ b/trick_sims/SIM_pool/RUN_hexagon/input.py @@ -54,7 +54,7 @@ bumperWidth = 0.03 dyn.table.numTablePoints = 6 -dyn.table.tableShape = trick.TMM_declare_var_1d("Point*", dyn.table.numTablePoints) +dyn.table.tableShape = trick.TMM_declare_var_1d("Vec*", dyn.table.numTablePoints) dyn.table.tableShapeType = 0 # generic for corner in corners: dyn.table.addPointToTable(corner[0], corner[1]) @@ -77,7 +77,7 @@ for i in range(len(corners)): id = dyn.table.addBumper(3, p1[0], p1[1], p2[0], p2[1]) dyn.table.bumpers[id][0].shapeType = 2 # Triangle i guess? dyn.table.bumpers[id][0].numPoints = 3 - dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Point*", dyn.table.bumpers[id].numPoints) + dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Vec*", dyn.table.bumpers[id].numPoints) dyn.table.addPointToBumper(id, p1[0], p1[1]) dyn.table.addPointToBumper(id, p2[0], p2[1]) p3 = [(p1[0] + p2[0])/2,(p1[1] + p2[1])/2] @@ -91,7 +91,7 @@ dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) varServerPort = trick.var_server_get_port(); # This will definitely change to something else -PoolTableDisplay_path = "models/graphics/libigl-example-project/build/example" +PoolTableDisplay_path = "models/graphics/cpp/build/PoolTableDisplay" if (os.path.isfile(PoolTableDisplay_path)) : @@ -100,9 +100,9 @@ if (os.path.isfile(PoolTableDisplay_path)) : print(PoolTableDisplay_cmd) os.system( PoolTableDisplay_cmd); else : - print('=================================================================================================') - print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') - print('=================================================================================================') + print('===================================') + print('PoolTableDisplay needs to be built.') + print('===================================') # PoolTableDisplay_path = "models/graphics/java/dist/PoolTableDisplay.jar" diff --git a/trick_sims/SIM_pool/RUN_test/input.py b/trick_sims/SIM_pool/RUN_test/input.py index 65911c38..c016a353 100644 --- a/trick_sims/SIM_pool/RUN_test/input.py +++ b/trick_sims/SIM_pool/RUN_test/input.py @@ -42,7 +42,7 @@ bumperWidth = 0.03 dyn.table.numTablePoints = 2 -dyn.table.tableShape = trick.TMM_declare_var_1d("Point*", dyn.table.numTablePoints) +dyn.table.tableShape = trick.TMM_declare_var_1d("Vec*", dyn.table.numTablePoints) dyn.table.tableShapeType = 3 # rectangle dyn.table.addPointToTable(corners[0], corners[1]) dyn.table.addPointToTable(corners[2], corners[3]) @@ -112,7 +112,7 @@ dyn.table.bumpers = trick.TMM_declare_var_1d("Bumper*", dyn.table.numBumpers) for i in range(len(bumperBorders)): id = dyn.table.addBumper(len(bumperShapes[i])/2, bumperBorders[i][0], bumperBorders[i][1], bumperBorders[i][2],bumperBorders[i][3]) dyn.table.bumpers[id][0].numPoints = len(bumperShapes[i])/2 - dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Point*", dyn.table.bumpers[id].numPoints) + dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Vec*", dyn.table.bumpers[id].numPoints) dyn.table.bumpers[id][0].shapeType = bumperShapeTypes[i] for j in range(0, len(bumperShapes[i]), 2): @@ -127,7 +127,7 @@ dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) varServerPort = trick.var_server_get_port(); # This will definitely change to something else -PoolTableDisplay_path = "models/graphics/libigl-example-project/build/example" +PoolTableDisplay_path = "models/graphics/cpp/build/PoolTableDisplay" if (os.path.isfile(PoolTableDisplay_path)) : @@ -136,9 +136,9 @@ if (os.path.isfile(PoolTableDisplay_path)) : print(PoolTableDisplay_cmd) os.system( PoolTableDisplay_cmd); else : - print('=================================================================================================') - print('PoolTableDisplay needs to be built. Please \"cd\" into ../models/graphics/java and type \"make\".') - print('=================================================================================================') + print('===================================') + print('PoolTableDisplay needs to be built.') + print('===================================') # PoolTableDisplay_path = "models/graphics/java/dist/PoolTableDisplay.jar" diff --git a/trick_sims/SIM_pool/S_define b/trick_sims/SIM_pool/S_define index ea1d0f55..15dcd6ca 100644 --- a/trick_sims/SIM_pool/S_define +++ b/trick_sims/SIM_pool/S_define @@ -17,7 +17,6 @@ class PoolTableSimObject : public Trick::SimObject { ("derivative") table.state_deriv() ; ("integration") trick_ret = table.state_integ() ; ("dynamic_event") table.collision() ; - // ("dynamic_event") table.bumperCollision() ; } }; diff --git a/trick_sims/SIM_pool/models/graphics/cpp/CMakeLists.txt b/trick_sims/SIM_pool/models/graphics/cpp/CMakeLists.txt new file mode 100644 index 00000000..49364e36 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/cpp/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.16) +project(PoolTableDisplay) + +list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) + +# Libigl +option(LIBIGL_GLFW "Build target igl::glfw" ON) +option(LIBIGL_IMGUI "Build target igl::imgui" ON) + +include(libigl) + + +# Add your project files +file(GLOB SRC_FILES *.cpp) +add_executable(${PROJECT_NAME} ${SRC_FILES}) +target_link_libraries(${PROJECT_NAME} PUBLIC igl::glfw igl::imgui) diff --git a/trick_sims/SIM_pool/models/graphics/cpp/LICENSE b/trick_sims/SIM_pool/models/graphics/cpp/LICENSE new file mode 100644 index 00000000..e87a115e --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/cpp/LICENSE @@ -0,0 +1,363 @@ +Mozilla Public License, version 2.0 + +1. Definitions + +1.1. "Contributor" + + means each individual or legal entity that creates, contributes to the + creation of, or owns Covered Software. + +1.2. "Contributor Version" + + means the combination of the Contributions of others (if any) used by a + Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + + means Source Code Form to which the initial Contributor has attached the + notice in Exhibit A, the Executable Form of such Source Code Form, and + Modifications of such Source Code Form, in each case including portions + thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + a. that the initial Contributor has attached the notice described in + Exhibit B to the Covered Software; or + + b. that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the terms of + a Secondary License. + +1.6. "Executable Form" + + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + + means a work that combines Covered Software with other material, in a + separate file or files, that is not Covered Software. + +1.8. "License" + + means this document. + +1.9. "Licensable" + + means having the right to grant, to the maximum extent possible, whether + at the time of the initial grant or subsequently, any and all of the + rights conveyed by this License. + +1.10. "Modifications" + + means any of the following: + + a. any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered Software; or + + b. any new file in Source Code Form that contains any Covered Software. + +1.11. "Patent Claims" of a Contributor + + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the License, + by the making, using, selling, offering for sale, having made, import, + or transfer of either its Contributions or its Contributor Version. + +1.12. "Secondary License" + + means either the GNU General Public License, Version 2.0, the GNU Lesser + General Public License, Version 2.1, the GNU Affero General Public + License, Version 3.0, or any later versions of those licenses. + +1.13. "Source Code Form" + + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that controls, is + controlled by, or is under common control with You. For purposes of this + definition, "control" means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + + +2. License Grants and Conditions + +2.1. Grants + + Each Contributor hereby grants You a world-wide, royalty-free, + non-exclusive license: + + a. under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + + b. under Patent Claims of such Contributor to make, use, sell, offer for + sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + + The licenses granted in Section 2.1 with respect to any Contribution + become effective for each Contribution on the date the Contributor first + distributes such Contribution. + +2.3. Limitations on Grant Scope + + The licenses granted in this Section 2 are the only rights granted under + this License. No additional rights or licenses will be implied from the + distribution or licensing of Covered Software under this License. + Notwithstanding Section 2.1(b) above, no patent license is granted by a + Contributor: + + a. for any code that a Contributor has removed from Covered Software; or + + b. for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + + c. under Patent Claims infringed by Covered Software in the absence of + its Contributions. + + This License does not grant any rights in the trademarks, service marks, + or logos of any Contributor (except as may be necessary to comply with + the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + + No Contributor makes additional grants as a result of Your choice to + distribute the Covered Software under a subsequent version of this + License (see Section 10.2) or under the terms of a Secondary License (if + permitted under the terms of Section 3.3). + +2.5. Representation + + Each Contributor represents that the Contributor believes its + Contributions are its original creation(s) or it has sufficient rights to + grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + + This License is not intended to limit any rights You have under + applicable copyright doctrines of fair use, fair dealing, or other + equivalents. + +2.7. Conditions + + Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in + Section 2.1. + + +3. Responsibilities + +3.1. Distribution of Source Form + + All distribution of Covered Software in Source Code Form, including any + Modifications that You create or to which You contribute, must be under + the terms of this License. You must inform recipients that the Source + Code Form of the Covered Software is governed by the terms of this + License, and how they can obtain a copy of this License. You may not + attempt to alter or restrict the recipients' rights in the Source Code + Form. + +3.2. Distribution of Executable Form + + If You distribute Covered Software in Executable Form then: + + a. such Covered Software must also be made available in Source Code Form, + as described in Section 3.1, and You must inform recipients of the + Executable Form how they can obtain a copy of such Source Code Form by + reasonable means in a timely manner, at a charge no more than the cost + of distribution to the recipient; and + + b. You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter the + recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + + You may create and distribute a Larger Work under terms of Your choice, + provided that You also comply with the requirements of this License for + the Covered Software. If the Larger Work is a combination of Covered + Software with a work governed by one or more Secondary Licenses, and the + Covered Software is not Incompatible With Secondary Licenses, this + License permits You to additionally distribute such Covered Software + under the terms of such Secondary License(s), so that the recipient of + the Larger Work may, at their option, further distribute the Covered + Software under the terms of either this License or such Secondary + License(s). + +3.4. Notices + + You may not remove or alter the substance of any license notices + (including copyright notices, patent notices, disclaimers of warranty, or + limitations of liability) contained within the Source Code Form of the + Covered Software, except that You may alter any license notices to the + extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + + You may choose to offer, and to charge a fee for, warranty, support, + indemnity or liability obligations to one or more recipients of Covered + Software. However, You may do so only on Your own behalf, and not on + behalf of any Contributor. You must make it absolutely clear that any + such warranty, support, indemnity, or liability obligation is offered by + You alone, and You hereby agree to indemnify every Contributor for any + liability incurred by such Contributor as a result of warranty, support, + indemnity or liability terms You offer. You may include additional + disclaimers of warranty and limitations of liability specific to any + jurisdiction. + +4. Inability to Comply Due to Statute or Regulation + + If it is impossible for You to comply with any of the terms of this License + with respect to some or all of the Covered Software due to statute, + judicial order, or regulation then You must: (a) comply with the terms of + this License to the maximum extent possible; and (b) describe the + limitations and the code they affect. Such description must be placed in a + text file included with all distributions of the Covered Software under + this License. Except to the extent prohibited by statute or regulation, + such description must be sufficiently detailed for a recipient of ordinary + skill to be able to understand it. + +5. Termination + +5.1. The rights granted under this License will terminate automatically if You + fail to comply with any of its terms. However, if You become compliant, + then the rights granted under this License from a particular Contributor + are reinstated (a) provisionally, unless and until such Contributor + explicitly and finally terminates Your grants, and (b) on an ongoing + basis, if such Contributor fails to notify You of the non-compliance by + some reasonable means prior to 60 days after You have come back into + compliance. Moreover, Your grants from a particular Contributor are + reinstated on an ongoing basis if such Contributor notifies You of the + non-compliance by some reasonable means, this is the first time You have + received notice of non-compliance with this License from such + Contributor, and You become compliant prior to 30 days after Your receipt + of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent + infringement claim (excluding declaratory judgment actions, + counter-claims, and cross-claims) alleging that a Contributor Version + directly or indirectly infringes any patent, then the rights granted to + You by any and all Contributors for the Covered Software under Section + 2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user + license agreements (excluding distributors and resellers) which have been + validly granted by You or Your distributors under this License prior to + termination shall survive termination. + +6. Disclaimer of Warranty + + Covered Software is provided under this License on an "as is" basis, + without warranty of any kind, either expressed, implied, or statutory, + including, without limitation, warranties that the Covered Software is free + of defects, merchantable, fit for a particular purpose or non-infringing. + The entire risk as to the quality and performance of the Covered Software + is with You. Should any Covered Software prove defective in any respect, + You (not any Contributor) assume the cost of any necessary servicing, + repair, or correction. This disclaimer of warranty constitutes an essential + part of this License. No use of any Covered Software is authorized under + this License except under this disclaimer. + +7. Limitation of Liability + + Under no circumstances and under no legal theory, whether tort (including + negligence), contract, or otherwise, shall any Contributor, or anyone who + distributes Covered Software as permitted above, be liable to You for any + direct, indirect, special, incidental, or consequential damages of any + character including, without limitation, damages for lost profits, loss of + goodwill, work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses, even if such party shall have been + informed of the possibility of such damages. This limitation of liability + shall not apply to liability for death or personal injury resulting from + such party's negligence to the extent applicable law prohibits such + limitation. Some jurisdictions do not allow the exclusion or limitation of + incidental or consequential damages, so this exclusion and limitation may + not apply to You. + +8. Litigation + + Any litigation relating to this License may be brought only in the courts + of a jurisdiction where the defendant maintains its principal place of + business and such litigation shall be governed by laws of that + jurisdiction, without reference to its conflict-of-law provisions. Nothing + in this Section shall prevent a party's ability to bring cross-claims or + counter-claims. + +9. Miscellaneous + + This License represents the complete agreement concerning the subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. Any law or regulation which provides that + the language of a contract shall be construed against the drafter shall not + be used to construe this License against a Contributor. + + +10. Versions of the License + +10.1. New Versions + + Mozilla Foundation is the license steward. Except as provided in Section + 10.3, no one other than the license steward has the right to modify or + publish new versions of this License. Each version will be given a + distinguishing version number. + +10.2. Effect of New Versions + + You may distribute the Covered Software under the terms of the version + of the License under which You originally received the Covered Software, + or under the terms of any subsequent version published by the license + steward. + +10.3. Modified Versions + + If you create software not governed by this License, and you want to + create a new license for such software, you may create and use a + modified version of this License if you rename the license and remove + any references to the name of the license steward (except to note that + such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary + Licenses If You choose to distribute Source Code Form that is + Incompatible With Secondary Licenses under the terms of this version of + the License, the notice described in Exhibit B of this License must be + attached. + +Exhibit A - Source Code Form License Notice + + This Source Code Form is subject to the + terms of the Mozilla Public License, v. + 2.0. If a copy of the MPL was not + distributed with this file, You can + obtain one at + http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular file, +then You may include the notice in a location (such as a LICENSE file in a +relevant directory) where a recipient would be likely to look for such a +notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice + + This Source Code Form is "Incompatible + With Secondary Licenses", as defined by + the Mozilla Public License, v. 2.0. + diff --git a/trick_sims/SIM_pool/models/graphics/cpp/README.md b/trick_sims/SIM_pool/models/graphics/cpp/README.md new file mode 100644 index 00000000..8338bf67 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/cpp/README.md @@ -0,0 +1,26 @@ +# Pool Table Display + +Uses the Libigl library for visualization. Connects to SIM_Billiards + + +## Compile + +libigl must be downloaded from Github : https://github.com/libigl/libigl +Clone it somewhere accessible, like your home directory. It does not need to be compiled. + +libigl depends on Eigen3, which also need to be downloaded and installed : https://eigen.tuxfamily.org/index.php?title=Main_Page + + +To compile: + + mkdir build + cd build + cmake .. + make + +## Run + +From within the `build` directory: + + ./PoolTableDisplay + diff --git a/trick_sims/SIM_pool/models/graphics/cpp/Socket.cpp b/trick_sims/SIM_pool/models/graphics/cpp/Socket.cpp new file mode 100644 index 00000000..7afe4ec7 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/cpp/Socket.cpp @@ -0,0 +1,52 @@ +#include "Socket.hh" + +#define SOCKET_BUF_SIZE 2048 + +Socket::Socket (std::string hostname, int port) : hostname(hostname), port(port) { + socket_fd = socket(AF_INET, SOCK_STREAM, 0); + if (socket_fd < 0) { + std::cout << "Socket connection failed" << std::endl; + } + + struct sockaddr_in serv_addr; + serv_addr.sin_family = AF_INET; + serv_addr.sin_port = htons(port); // convert to weird network byte format + + if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr)<=0) { + std::cout << "Invalid address/ Address not supported" << std::endl; + } + + if (connect(socket_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { + std::cout << "Connection failed" << std::endl; + } +} + +int Socket::send (std::string message) { + // weird syntax I've never used before - since the send syscall that i'm trying to use is overloaded in this class, + // I have to append :: to the front of it so that the compiler knows to look in the global namespace + int success = ::send(socket_fd, message.c_str(), message.size(), 0); + if (success < message.size()) { + std::cout << "Failed to send message" << std::endl; + } + return success; +} + +int Socket::operator<< (std::string message) { + return send(message); +} + +std::string Socket::receive () { + char buffer[SOCKET_BUF_SIZE]; + int numBytes = read(socket_fd, buffer, SOCKET_BUF_SIZE); + if (numBytes < 0) { + std::cout << "Failed to read from socket" << std::endl; + } else if (numBytes < SOCKET_BUF_SIZE) { + buffer[numBytes] = '\0'; + } + + return std::string(buffer); +} + +void Socket::operator>> (std::string& ret) { + ret = receive(); +} \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/graphics/cpp/Socket.hh b/trick_sims/SIM_pool/models/graphics/cpp/Socket.hh new file mode 100644 index 00000000..6823ca29 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/cpp/Socket.hh @@ -0,0 +1,25 @@ +#include +#include +#include +#include +#include +#include +#include + +class Socket { + + public: + Socket (std::string hostname, int port); + + int send (std::string message); + int operator<< (std::string message); + + std::string receive (); + void operator>> (std::string& ret); + + private: + int port; + std::string hostname; + int socket_fd; + +}; diff --git a/trick_sims/SIM_pool/models/graphics/cpp/cmake/libigl.cmake b/trick_sims/SIM_pool/models/graphics/cpp/cmake/libigl.cmake new file mode 100644 index 00000000..7b0ce371 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/cpp/cmake/libigl.cmake @@ -0,0 +1,11 @@ +if(TARGET igl::core) + return() +endif() + +include(FetchContent) +FetchContent_Declare( + libigl + GIT_REPOSITORY https://github.com/libigl/libigl.git + GIT_TAG v2.4.0 +) +FetchContent_MakeAvailable(libigl) diff --git a/trick_sims/SIM_pool/models/graphics/cpp/main.cpp b/trick_sims/SIM_pool/models/graphics/cpp/main.cpp new file mode 100644 index 00000000..2a913208 --- /dev/null +++ b/trick_sims/SIM_pool/models/graphics/cpp/main.cpp @@ -0,0 +1,969 @@ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Socket.hh" + +// #include +// #include +// #include +// #include +// #include + +#include + +std::vector ball_colors = {Eigen::Vector3d(1.0,1.0,0.0), //yellow + Eigen::Vector3d(0.0,0.0,1.0), //blue + Eigen::Vector3d(1.0,0.0,0.0), //red + Eigen::Vector3d(0.5,0.0,0.3), //purple + Eigen::Vector3d(0.7,0.5,0.0), //orange + Eigen::Vector3d(0.0,0.7,0.0), //green + Eigen::Vector3d(0.3,0.07,0.15), //maroon + Eigen::Vector3d(0.0,0.0,0.0), //black + }; + +const double layer_BALL = 0.005; +const double layer_TABLE = 0.001; +const double layer_BUMPER = 0.002; +const double layer_RAIL = 0.000; +const double layer_CUE = 0.008; +const double layer_POCKET = 0.002; + + + +class RenderedShape { + public: + RenderedShape() {} + + int baseIndex = 0; + + int getNumVertices() { + return vertices.size(); + } + + int getNumFaces() { + return faces.size(); + } + + + std::vector getFacesWithBaseIndex(int newBase) { + std::vector newFaces; + int offset = newBase - baseIndex; + Eigen::Vector3i baseOffset(offset, offset, offset); + for (Eigen::Vector3i& face : faces) { + newFaces.emplace_back(face + baseOffset); + } + baseIndex = newBase; + + return newFaces; + } + + ~RenderedShape() { + if (destructorPrint) + std::cout << "Destroying rendered Shape" << std::endl; + } + + // std::vector getVerticesWithOffset(int newBase) { + // std::vector newFaces; + // int offset = newBase - baseIndex; + // Eigen::Vector3i baseOffset(offset, offset, offset); + // for (Eigen::Vector3i& face : faces) { + // newFaces.emplace_back(face + baseOffset); + // } + // baseIndex = newBase; + + // return newFaces; + // } + + std::vector vertices; + std::vector faces; + std::vector colors; + + bool destructorPrint = false; + +}; + +class Point { + + public: + Point () : point(0, 0) {} + Point (double x, double y) : point(x, y, 0) {} + Point (double x, double y, double layer) : point(x, y, layer) {} + + Eigen::Vector3d toVec3 () const { + return Eigen::Vector3d(point); + } + + double x() const { + return point[0]; + } + + double y() const { + return point[1]; + } + + Eigen::Vector3d point; +}; + +class Polygon { + public: + Polygon(unsigned int verts, double layer) : vertexMax(verts), layer(layer) {} + + void addPoint(double x, double y) { + if (points.size() < vertexMax) + points.emplace_back(x, y, layer); + } + + void setColor(double r, double g, double b) { + color = Eigen::Vector3d(r, g, b); + } + + void setColor(Eigen::Vector3d& c) { + color = Eigen::Vector3d(c); + } + + void setLayer(double l) { + layer = l; + } + + Eigen::Vector3d getColor() const { + return color; + } + + ~Polygon() { + if (destructorPrint) + std::cout << "Destroying a polygon" << std::endl; + } + + // Works with any simple convex polygon where the points are in order + virtual RenderedShape* render() const { + RenderedShape * shape = new RenderedShape(); + + if (!isValid()) { + // Should maybe throw an error + std::cerr << "Generic has incorrect number of corners" << std::endl; + return shape; + } + + for (int i = 0; i < points.size(); i++) { + shape->vertices.emplace_back(points[i].toVec3()); + shape->colors.emplace_back(color); + } + + for (int i = 1; i < points.size()-1; i++) { + shape->faces.emplace_back(0, i, i+1); + } + + return shape; + } + + virtual bool isValid() const { + return points.size() <= vertexMax; + } + + protected: + std::vector points; + Eigen::Vector3d color; + unsigned int vertexMax; + double layer; + int id; + bool destructorPrint = false; +}; + +class Circle : public Polygon { + public: + Circle (double x, double y, double r, double layer) : Polygon(1, layer), radius(r) { + addPoint(x, y); + } + + bool isValid() const { + return points.size() == vertexMax; + } + + RenderedShape *render() const { + // Circle is broken down into wedges in order to be rendered here + RenderedShape *shape = new RenderedShape(); + + if (!isValid()) { + std::cout << "Circle has incorrect number of points" << std::endl; + return shape; + } + + // Add colors + for (int i = 0; i < numWedges + 2; i++) { + shape->colors.emplace_back(color); + } + + // Add center + shape->vertices.emplace_back(points[0].toVec3()); + // std::cout << "Center: " << points[0].toVec3() << std::endl; + // Add outside vertices + for (int i = 0; i <= numWedges; i++) { + shape->vertices.emplace_back(points[0].x() + radius * cos(2 * M_PI * i / numWedges), + points[0].y() + radius * sin(2 * M_PI * i / numWedges), + layer); + + } + + // Make the triangles + for (int j = 0; j <= numWedges; j++) { + shape->faces.emplace_back(0, j + 1, 1 + ((j + 1) % (numWedges + 1))); + } + + + return shape; + } + + private: + double radius; + int numWedges = 20; +}; + +// class Generic : public Polygon { + +// public: +// Generic(int numPoints, double layer) : Polygon(numPoints, layer) {} + +// // Assumes a simple convex polygon +// virtual RenderedShape* render() const { +// RenderedShape * shape = new RenderedShape(); + +// if (!isValid()) { +// // Should maybe throw an error +// std::cerr << "Generic has incorrect number of corners" << std::endl; +// return shape; +// } + +// for (int i = 0; i < points.size(); i++) { +// shape->vertices.emplace_back(points[i].toVec3()); +// shape->colors.emplace_back(color); +// } + +// for (int i = 1; i < points.size()-1; i++) { +// shape->faces.emplace_back(0, i, i+1); +// } + +// return shape; +// } +// }; + +class Rectangle : public Polygon { + public: + + // only need upper left and lower right corners + Rectangle(double layer) : Polygon(2, layer) {} + + bool isValid() const { + return points.size() == vertexMax; + } + + void addCorner (double x, double y) { + addPoint(x, y); + } + + RenderedShape* render() const { + RenderedShape *shape = new RenderedShape(); + + if (!isValid()) { + // Should maybe throw an error + std::cerr << "Rectangle has incorrect number of corners" << std::endl; + return shape; + } + + // Add colors + for (int i = 0; i < 6; i++) { + shape->colors.emplace_back(color); + } + + // Add triangles within rectangle + shape->vertices.emplace_back(points[0].x(), points[1].y(), layer); + shape->vertices.emplace_back(points[1].x(), points[0].y(), layer); + shape->vertices.emplace_back(points[0].toVec3()); + + shape->faces.emplace_back(0, 1, 2); + + shape->vertices.emplace_back(points[0].x(), points[1].y(), layer); + shape->vertices.emplace_back(points[1].toVec3()); + shape->vertices.emplace_back(points[1].x(), points[0].y(), layer); + + shape->faces.emplace_back(3, 4, 5); + + return shape; + } +}; + +class Triangle : public Polygon { + public: + Triangle (double layer) : Polygon(3, layer) {} + + + void addCorner (double x, double y) { + addPoint(x, y); + } + + RenderedShape* render() const { + RenderedShape *shape = new RenderedShape(); + + if (!isValid()) { + // Should maybe throw an error + std::cerr << "Triangle has incorrect number of corners" << std::endl; + return shape; + } + + // Add colors and vertices at the same time + for (int i = 0; i < 3; i++) { + shape->colors.emplace_back(color); + shape->vertices.emplace_back(points[i].toVec3()); + } + + // just the 1 triangle + shape->faces.emplace_back(0, 1, 2); + + return shape; + } +}; + +enum PolygonType { + GENERIC, + CIRCLE, + TRIANGLE, + RECTANGLE +}; + +class Table { + public: + Table () {} + + void clearMovingShapes() { + for (int i = 0; i < movingShapes.size(); i++) { + delete movingShapes[i]; + delete movingRenderedShapes[i]; + } + movingShapes.clear(); + movingRenderedShapes.clear(); + + } + + void updateMovingShape(int id) { + // TODO + } + + // Need to have an agreed upon way to send over variables + int addShape(std::vector shapeData, Eigen::Vector3d color, bool isStatic, PolygonType type, double layer) { + // std::cout << "In AddShape" << std::endl; + Polygon *shape; + + switch (type) { + + case GENERIC: { + // Number of points is just data / 2 i guess + // std::cout << "Creating generic polygon with " << shapeData.size()/2 << " points" << std::endl; + Polygon *newPolygon = new Polygon(shapeData.size()/2, layer); + for (int i = 0; i < shapeData.size(); i+=2) { + double x = shapeData[i]; + double y = shapeData[i+1]; + newPolygon->addPoint(x,y); + } + shape = newPolygon; + break; + } + case CIRCLE: { + // std::cout << "Adding circle" << std::endl; + if (shapeData.size() != 3) { + std::cout << "Bad shapedata size for circle" << std::endl; + return -1; + } + double x = shapeData[0]; + double y = shapeData[1]; + double r = shapeData[2]; + Circle *newCircle = new Circle(x, y, r, layer); + + shape = newCircle; + break; + } + case TRIANGLE: { + Triangle *newTriangle = new Triangle(layer); + if (shapeData.size() != 6) { + std::cout << "Bad shapedata size for triangle" << std::endl; + return -1; + } + for (int i = 0; i < shapeData.size(); i+=2) { + double x = shapeData[i]; + double y = shapeData[i+1]; + newTriangle->addCorner(x, y); + } + + shape = newTriangle; + break; + } + case RECTANGLE: { + // std::cout << "In rectangle" << std::endl; + Rectangle *newRectangle = new Rectangle(layer); + if (shapeData.size() != 4) { + std::cout << "Bad shapedata size for rectangle" << std::endl; + return -1; + } + for (int i = 0; i < shapeData.size(); i+=2) { + double x = shapeData[i]; + double y = shapeData[i+1]; + newRectangle->addCorner(x, y); + } + shape = newRectangle; + break; + } + default: { + break; + } + } + + shape->setColor(color); + + if (isStatic) { + std::cout << "Adding to static shapes" << std::endl; + staticShapes.emplace_back(shape); + } else { + // std::cout << "Adding to moving shapes" << std::endl; + movingShapes.emplace_back(shape); + } + + + return 0; + } + + // Call this once + void renderStaticShapes() { + staticRendered = true; + numStaticVertices = 0; + numStaticFaces = 0; + int i = 0; + staticRenderedShapes.clear(); + for (Polygon* shape : staticShapes) { + std::cout << "Rendering shape " << i++ << std::endl; + RenderedShape *renderedShape = shape->render(); + renderedShape->destructorPrint = true; + numStaticVertices += renderedShape->getNumVertices(); + numStaticFaces += renderedShape->getNumFaces(); + staticRenderedShapes.emplace_back(renderedShape); + } + } + + // Should think about how to make sure we aren't making big unnessary copies of stuff + std::tuple getMesh() { + + // if (!staticRendered) { + // renderStaticShapes(); + // } + + numStaticVertices = 0; + numStaticFaces = 0; + int i = 0; + staticRenderedShapes.clear(); + + for (Polygon* shape : staticShapes) { + RenderedShape *renderedShape = shape->render(); + numStaticVertices += renderedShape->getNumVertices(); + numStaticFaces += renderedShape->getNumFaces(); + staticRenderedShapes.emplace_back(renderedShape); + } + + int totalFaces = numStaticFaces; + int totalVertices = numStaticVertices; + for (Polygon* shape : movingShapes) { + RenderedShape *renderedShape = shape->render(); + totalVertices += renderedShape->getNumVertices(); + totalFaces += renderedShape->getNumFaces(); + movingRenderedShapes.push_back(renderedShape); + } + + // std::cout << "Total Vertices: " << totalVertices << std::endl; + // std::cout << "Total Faces: " << totalFaces << std::endl; + // std::cout << "Total Colors: " << totalVertices << std::endl; + + + // Now have to put all of these into giant matrices + Eigen::MatrixXd renderV; + renderV.resize(totalVertices, 3); + Eigen::MatrixXi renderF; + renderF.resize(totalFaces, 3); + Eigen::MatrixXd renderC; + renderC.resize(totalVertices, 3); + + // TODO: Ideally have some matrix with preloaded static shapes + // For now do them all here + + int vertexIndex = 0; + int faceIndex = 0; + for (RenderedShape* shape : staticRenderedShapes) { + // Add vertices and colors + for (int i = 0; i < shape->getNumVertices(); i++) { + renderV.row(i+vertexIndex) = shape->vertices[i]; + renderC.row(i+vertexIndex) = shape->colors[i]; + } + + auto newFaces = shape->getFacesWithBaseIndex(vertexIndex); + + // Add faces - with the correct offset + for (int i = 0; i < newFaces.size(); i++) { + renderF.row(i+faceIndex) = newFaces[i]; + } + + vertexIndex += shape->getNumVertices(); + faceIndex += newFaces.size(); + } + + for (RenderedShape* shape : movingRenderedShapes) { + // Add vertices and colors + for (int i = 0; i < shape->getNumVertices(); i++) { + renderV.row(i+vertexIndex) = shape->vertices[i]; + renderC.row(i+vertexIndex) = shape->colors[i]; + } + + auto newFaces = shape->getFacesWithBaseIndex(vertexIndex); + + // Add faces - with the correct offset + for (int i = 0; i < newFaces.size(); i++) { + renderF.row(i+faceIndex) = newFaces[i]; + } + + vertexIndex += shape->getNumVertices(); + faceIndex += newFaces.size(); + } + + return std::make_tuple(renderV, renderF, renderC); + } + + private: + std::vector staticShapes; + std::vector staticRenderedShapes; + std::vector movingRenderedShapes; + int numStaticVertices; + int numStaticFaces; + bool staticRendered = false; + + std::vector movingShapes; + +}; + +void printUsage() { + std::cout << "Usage: program " << std::endl; +} + +std::vector split (std::string& str, const char delim) { + std::stringstream ss(str); + std::string s; + std::vector ret; + while (std::getline(ss, s, delim)) { + ret.push_back(s); + } + return ret; +} + +std::vector parseTrickResponse(std::vector list) { + std::vector ret; + for (int i = 1; i < list.size(); i++) { + ret.push_back(stod(list[i])); + } + return ret; +} + +void launchViewer (igl::opengl::glfw::Viewer *viewer) { + viewer->launch(); +} + +bool mousePressed = false; +double mouseX = 0; +double mouseY = 0; + +std::queue messageQueue; +std::mutex messageLock; + +bool sendCue = false; +std::mutex renderLock; + +Eigen::MatrixXd V; +Eigen::MatrixXi F; +Eigen::MatrixXd C; +igl::opengl::glfw::imgui::ImGuiMenu* menu; + +bool mouse_down (igl::opengl::glfw::Viewer& viewer, int button, int modifier) { + mousePressed = true; + return true; +} + +bool mouse_up (igl::opengl::glfw::Viewer& viewer, int button, int modifier) { + mousePressed = false; + std::string cueRequest = ""; + std::string templateString = "dyn.table.applyCueForce(%.3f, %.3f) \n"; + + char buf[128]; + sprintf(buf, templateString.c_str(), mouseX, mouseY); + cueRequest += std::string(buf); + + messageLock.lock(); + messageQueue.push(cueRequest); + messageLock.unlock(); + + return true; +} + +bool mouse_move (igl::opengl::glfw::Viewer& viewer, int mouse_x, int mouse_y) { + Eigen::Vector3f pos(mouse_x, mouse_y, 0); + Eigen::Matrix4f model = viewer.core().view; + Eigen::Vector3f unproj = igl::unproject(pos, model, viewer.core().proj, viewer.core().viewport); + mouseX = unproj[0]; + mouseY = -unproj[1]; + return true; +} + +bool pre_draw (igl::opengl::glfw::Viewer& viewer) { + renderLock.lock(); + + viewer.data().clear(); + viewer.core().orthographic = true; + viewer.data().show_lines = false; + viewer.data().set_face_based(false); + viewer.data().double_sided = true; + viewer.core().is_animating = true; + viewer.core().camera_zoom = 2; + viewer.data().set_mesh(V, F); + viewer.data().set_colors(C); + + renderLock.unlock(); +} + +void draw_viewer_menu () { + ImGui::Text("Menu"); + if (ImGui::Button("Reset Cue Ball", ImVec2(-1, 0))) + { + std::string message = "dyn.table.resetCueBall() \n"; + messageLock.lock(); + messageQueue.push(message); + messageLock.unlock(); + } + +} + + +int main(int argc, char *argv[]) +{ + // Parse socket number out of argv + if (argc != 2) { + printUsage(); + return -1; + } + + int port = 0; + port = std::stoi(argv[1]); + if (port == 0) { + printUsage(); + return -1; + } + + std::cout << "Port received: " << port << std::endl; + + Socket socket("localhost", port); + + socket << "trick.var_set_client_tag(\"PoolTableDisplay\") \n"; + + // Should request all the static data first - table, bumper, and pocket shapes + // Hardcoded for now + + socket << "trick.var_add(\"dyn.table.numBalls\")\ntrick.var_send() \ntrick.var_clear() \n"; + + std::string reply; + socket >> reply; + + auto parsed = split(reply, '\t'); + int numBalls = stoi(parsed[1]); + std::cout << "Number of balls received: " << numBalls << std::endl; + + std::string radiusRequest = ""; + char* templateString = "trick.var_add(\"dyn.table.balls[%d][0].radius\")\n"; + for (int i = 0; i < numBalls; i++) { + char buf[64]; + sprintf(buf, templateString, i); + radiusRequest += std::string(buf); + } + socket << radiusRequest; + socket << "trick.var_send() \ntrick.var_clear() \n"; + socket >> reply; + // std::cout << "Radius reply: " << reply << std::endl; + auto radii = parseTrickResponse(split(reply, '\t')); + + // To be able to account for balls being added and subtracted, probably need to request numBalls every time, and just delete the moving objects each render cycle + // Probably a more optimized way to do this + // TODO: figure that out + + Table table; + + + + + socket << "trick.var_add(\"dyn.table.numTablePoints\") \ntrick.var_add(\"dyn.table.tableShapeType\")\n \ntrick.var_send() \ntrick.var_clear() \n"; + socket >> reply; + std::cout << "Table shape reply: " << reply << std::endl; + std::vector tableData = parseTrickResponse(split(reply, '\t')); + int numTablePoints = tableData[0]; + enum PolygonType tableShape = PolygonType((int)tableData[1]); + + std::string pointRequest = ""; + for (int i = 0; i < numTablePoints; i++) { + templateString = "trick.var_add(\"dyn.table.tableShape[%d][0]._x\")\ntrick.var_add(\"dyn.table.tableShape[%d][0]._y\")\n"; + char buf[256]; + sprintf(buf, templateString, i, i); + pointRequest += std::string(buf); + } + socket << pointRequest; + socket << "trick.var_send() \ntrick.var_clear() \n"; + socket >> reply; + std::vector tablePoints = parseTrickResponse(split(reply, '\t')); + table.addShape(tablePoints, Eigen::Vector3d(0.2, 0.6, 0.2), true, tableShape, layer_TABLE); + + // Make the rail - translate each point on the table out from center by railWidth + std::vector railData; + + if (tableShape == RECTANGLE) { + double railWidth = 0.07; + railData.push_back(tablePoints[0] - railWidth); + railData.push_back(tablePoints[1] - railWidth); + railData.push_back(tablePoints[2] + railWidth); + railData.push_back(tablePoints[3] + railWidth); + } else { + double railWidth = 0.15; + for (int i = 0; i < tablePoints.size(); i+=2) { + Eigen::Vector2d point(tablePoints[i], tablePoints[i+1]); + Eigen::Vector2d railPoint(tablePoints[i], tablePoints[i+1]); + point *= railWidth; + railPoint = railPoint + point; + railData.push_back(railPoint(0)); + railData.push_back(railPoint(1)); + } + } + + table.addShape(railData, Eigen::Vector3d(.3, .2, .15), true, tableShape, layer_RAIL); + + // Pockets + socket << "trick.var_add(\"dyn.table.numPockets\")\n \ntrick.var_send() \ntrick.var_clear() \n"; + + socket >> reply; + double numPockets = stod(split(reply, '\t')[1]); + for (int i = 0; i < numPockets; i++) { + templateString = "trick.var_add(\"dyn.table.pockets[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.pockets[%d][0].pos._y\")\n\ntrick.var_add(\"dyn.table.pockets[%d][0].radius\")\n"; + char buf[256]; + sprintf(buf, templateString, i, i, i); + std::string pocketRequest = std::string(buf); + + socket << pocketRequest; + socket << "trick.var_send() \ntrick.var_clear() \n"; + socket >> reply; + std::vector pocketData = parseTrickResponse(split(reply, '\t')); + table.addShape(pocketData, Eigen::Vector3d(0.0, 0.0, 0.0), true, CIRCLE, layer_POCKET); + } + + + // std::vector table_corners = {-.5, -.25, .5, .25}; + // Eigen::Vector3d table_color(0.2, 0.6, 0.2); + // table.addShape(table_corners, table_color, true, RECTANGLE); + + // Bumpers + + socket << "trick.var_add(\"dyn.table.numBumpers\")\n \ntrick.var_send() \ntrick.var_clear() \n"; + + socket >> reply; + double numBumpers = stod(split(reply, '\t')[1]); + + std::cout << "Num bumpers: " << numBumpers << std::endl; + + //templateString = "trick.var_add(\"dyn.table.bumpers[%d][0].border.p1.x\") \ntrick.var_add(\"dyn.table.bumpers[%d][0].border.p1.y\")\ntrick.var_add(\"dyn.table.bumpers[%d][0].border.p2.x\") \ntrick.var_add(\"dyn.table.bumpers[%d][0].border.p2.y\")\n"; + for (int i = 0; i < numBumpers; i++) { + std::string bumperRequests = ""; + + templateString = "trick.var_add(\"dyn.table.bumpers[%d][0].numPoints\")\ntrick.var_add(\"dyn.table.bumpers[%d][0].shapeType\") \n"; + char buf[256]; + sprintf(buf, templateString, i, i); + bumperRequests += std::string(buf); + socket << bumperRequests; + socket << "trick.var_send() \ntrick.var_clear() \n"; + socket >> reply; + std::vector bumperData = parseTrickResponse(split(reply, '\t')); + int bumperPoints = bumperData[0]; + enum PolygonType bumperShape = PolygonType((int)bumperData[1]); + + templateString = "trick.var_add(\"dyn.table.bumpers[%d][0].renderedShape[%d][0]._x\")\ntrick.var_add(\"dyn.table.bumpers[%d][0].renderedShape[%d][0]._y\")\n"; + bumperRequests = ""; + for (int j = 0; j < bumperPoints; j++) { + char buf[256]; + sprintf(buf, templateString, i, j, i, j); + bumperRequests += std::string(buf); + } + socket << bumperRequests; + socket << "trick.var_send() \ntrick.var_clear() \n"; + socket >> reply; + + std::vector bumperBorder = parseTrickResponse(split(reply, '\t')); + + table.addShape(bumperBorder, Eigen::Vector3d(0.2,0.4,0.2), true, bumperShape, layer_BUMPER); + } + + + // socket << "trick.var_pause()\n"; + // Request all of the ball positions + std::string positionRequest = ""; + templateString = "trick.var_add(\"dyn.table.balls[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.balls[%d][0].pos._y\")\n"; + for (int i = 0; i < numBalls; i++) { + char buf[128]; + sprintf(buf, templateString, i, i); + positionRequest += std::string(buf); + } + + socket << positionRequest; + socket << "trick.var_send() \ntrick.var_clear() \n"; + socket >> reply; + auto positions = parseTrickResponse(split(reply, '\t')); + + + for (int i = 0; i < numBalls; i++) { + std::vector circleData = {positions[(i*2)], positions[(i*2 + 1)], radii[i]}; + Eigen::Vector3d circleColor = ball_colors[i % ball_colors.size()]; + table.addShape(circleData, circleColor, false, CIRCLE, layer_BALL); + } + + renderLock.lock(); + std::tie(V, F, C) = table.getMesh(); + renderLock.unlock(); + + igl::opengl::glfw::Viewer * viewer = new igl::opengl::glfw::Viewer(); + igl::opengl::glfw::imgui::ImGuiPlugin *plugin = new igl::opengl::glfw::imgui::ImGuiPlugin(); + viewer->plugins.push_back(plugin); + menu = new igl::opengl::glfw::imgui::ImGuiMenu(); + plugin->widgets.push_back(menu); + + + viewer->callback_mouse_down = mouse_down; + viewer->callback_mouse_up = mouse_up; + viewer->callback_mouse_move = mouse_move; + viewer->callback_pre_draw = pre_draw; + menu->callback_draw_viewer_menu = draw_viewer_menu; + + viewer->core().orthographic = true; + viewer->core().camera_zoom = 2; + viewer->data().show_lines = false; + viewer->data().set_face_based(false); + viewer->data().double_sided = true; + + viewer->core().is_animating = true; + + // Plot the mesh + viewer->data().set_mesh(V, F); + viewer->data().set_colors(C); + + // Viewer is blocking, have to launch it in a separate thread + std::thread viewerThread (launchViewer, viewer); + + // std::this_thread::sleep_for(std::chrono::milliseconds(1000)); + + + std::cout << "After launch " << std::endl; + // Need to get nBalls and posititions every time + // Maybe should add some coordinating by ID logic too + socket << "trick.var_pause() \n"; + socket << "trick.var_add(\"dyn.table.numBalls\")\n"; + positionRequest = ""; + templateString = "trick.var_add(\"dyn.table.balls[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.balls[%d][0].pos._y\")\ntrick.var_add(\"dyn.table.balls[%d][0].inPlay\")\n"; + for (int i = 0; i < numBalls; i++) { + char buf[128]; + sprintf(buf, templateString, i, i, i); + positionRequest += std::string(buf); + } + + + socket << positionRequest; + socket << "trick.var_ascii() \n"; + socket << "trick.var_cycle(0.010) \n"; + socket << "trick.var_unpause() \n"; + + int badReplies = 10; + + // Start the actual draw loop + int drawIteration = 0; + while (true) { + // std::cout << "Draw loop iteration" << drawIteration++ << std::endl; + + messageLock.lock(); + while (!messageQueue.empty()) { + std::string message = messageQueue.front(); + messageQueue.pop(); + socket.send(message); + } + messageLock.unlock(); + + std::string reply; + socket >> reply; + + // std::cout << "Got data: " << reply << std::endl; + std::vector replyData = parseTrickResponse(split(reply, '\t')); + // numBalls = (int)replyData[0]; + + if (replyData.size() <= 1) { + // std::cout << "Received bad reply" << std::endl; + badReplies--; + if (badReplies > 0) + continue; + else + break; + } + + table.clearMovingShapes(); + + Eigen::Vector2d cueBallPos(0,0); + int cueBallIndex = 0; + + + for (int i = 0; i < numBalls; i++) { + double inPlay = replyData[1+(i*3 + 2)]; + if (inPlay == 0) { + continue; + } + std::vector circleData = {replyData[1+(i*3)], replyData[1+(i*3 + 1)], radii[i]}; + Eigen::Vector3d circleColor; + if (i == cueBallIndex) { + circleColor = Eigen::Vector3d(1,1,1); + cueBallPos = Eigen::Vector2d(replyData[1+(i*2)], replyData[1+(i*2 + 1)]); + } else { + circleColor = ball_colors[i % ball_colors.size()]; + + } + table.addShape(circleData, circleColor, false, CIRCLE, layer_BALL); + } + + if (mousePressed) { + // Draw the cue + double cue_width = 0.03; + Eigen::Vector2d cue_end(mouseX, mouseY); + Eigen::Vector2d vec = (cue_end - cueBallPos).normalized(); + Eigen::Vector2d off1(-vec(1), vec(0)); + Eigen::Vector2d off2(vec(1), -vec(0)); + Eigen::Vector2d point1 = cue_end + (off1 * cue_width); + Eigen::Vector2d point2 = cue_end + (off2 * cue_width); + std::vector triangleData = {cueBallPos(0), cueBallPos(1), point1(0), point1(1), point2(0), point2(1)}; + table.addShape(triangleData, Eigen::Vector3d(0, 0, 0), false, TRIANGLE, layer_CUE); + } + + renderLock.lock(); + std::tie(V, F, C) = table.getMesh(); + renderLock.unlock(); + } + + viewerThread.join(); +} diff --git a/trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh b/trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh index 7a6fc0b3..53ca5dee 100644 --- a/trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh +++ b/trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh @@ -6,12 +6,15 @@ LIBRARY DEPENDENCY: #ifndef _common_hh_ #define _common_hh_ +#include "math.h" +#include "iostream" + // Should maybe swap this for eigen stuff at some point class Vec { public: Vec(double x, double y) : _x(x), _y(y), _z(0) {} Vec(double x, double y, double z) : _x(x), _y(y), _z(z) {} - Vec() {} + Vec() : _x(0), _y(0), _z(0) {} Vec operator+ (const Vec& other) { Vec sum; @@ -21,6 +24,14 @@ class Vec { return sum; } + Vec operator- (const Vec& other) { + Vec sum; + sum._x = _x - other._x; + sum._y = _y - other._y; + sum._z = _z - other._z; + return sum; + } + Vec operator* (double scale) { Vec ret; ret._x = _x * scale; @@ -29,7 +40,21 @@ class Vec { return ret; } - double& operator() (int index) { + double dot(const Vec& other) { + double ret = 0; + ret += _x * other._x; + ret += _y * other._y; + ret += _z * other._z; + + return ret; + } + + // Dot product + double operator* (const Vec& other) { + return dot(other); + } + + double& operator[] (int index) { if (index == 0) { return _x; } else if (index == 1) { @@ -41,20 +66,32 @@ class Vec { // Throw an error i guess } + void setZero() { + _x = 0; + _y = 0; + _z = 0; + } + + double norm() { + return sqrt(_x*_x + _y*_y + _z*_z); + } + Vec normalized () { - Vec norm; - + Vec ret(*this); + + return ret * (1.0 / this->norm()); } double& x () { return _x; } double& y () { return _y; } double& z () { return _z; } - - private: double _x; double _y; double _z; + + private: + }; class Line { @@ -74,4 +111,6 @@ enum PolygonType { QUAD }; + + #endif \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/pool_table/include/pocket.hh b/trick_sims/SIM_pool/models/pool_table/include/pocket.hh index 6bf45424..33df29c5 100644 --- a/trick_sims/SIM_pool/models/pool_table/include/pocket.hh +++ b/trick_sims/SIM_pool/models/pool_table/include/pocket.hh @@ -13,10 +13,9 @@ class Pocket { public: // Have to have a default constructor or trick freaks out Pocket() {} - Pocket(double x, double y, double r) : x(x), y(y), radius(r) {} + Pocket(double x, double y, double r) : pos(x,y), radius(r) {} - double x; - double y; + Vec pos; double radius; }; diff --git a/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh b/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh index e4bc40d1..dd61dee7 100644 --- a/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh +++ b/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh @@ -82,7 +82,7 @@ class PoolTable { double frictionScale = 1; double frictionTolerance = 0.0005; double coefficientOfElasticity = .95; - double cueForceScale = 1.0; + double cueForceScale = 0.6; double cueMass = 1.0; int cueBallIndex = 0; diff --git a/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp b/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp index d5b376e9..dc82bd19 100644 --- a/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp +++ b/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp @@ -11,6 +11,8 @@ LIBRARY DEPENDENCY: #include "../include/pool_table.hh" #include "trick/trick_math_proto.h" + +// Leaving these here, but should probably go somewhere else double dot( /* Return: Scalar dot or inner product */ double vec1[], /* In: Vector 1 */ double vec2[], /* In: Vector 2 */ @@ -34,9 +36,6 @@ void mProduct (double product[2], double matrix[2][2], double vec[2]) { product[1] = matrix[0][1] * vec[0] + matrix[1][1] * vec[1]; } - - - int PoolTable::default_data() { // balls.clear(); // bumpers.clear(); @@ -66,6 +65,7 @@ int PoolTable::state_init() { } } + // Bumper/ball collisions bumperBallCombos = numBalls * numBumpers; bumperAssociations = (REGULA_FALSI*)TMM_declare_var_1d("REGULA_FALSI", bumperBallCombos); for (ii=0; iivel)) > frictionTolerance) { - double velocityNorm[3]; - dv_norm(velocityNorm, balls[i]->vel); + if (balls[i]->vel.norm() > frictionTolerance) { + Vec velocityNorm = balls[i]->vel.normalized(); balls[i]->accel[0] = - (frictionScale * frictionRolling * velocityNorm[0]); balls[i]->accel[1] = - (frictionScale * frictionRolling * velocityNorm[1]); @@ -147,8 +146,6 @@ int PoolTable::state_integ() { continue; } - // State - Need to load 4 values for each ball, but will have to have more when we add angular stuff - // pos[0] pos[1] vel[0] vel[1] int inner_index = 0; load_indexed_state(n*i + inner_index++, balls[i]->pos[0]); load_indexed_state(n*i + inner_index++, balls[i]->pos[1]); @@ -159,16 +156,14 @@ int PoolTable::state_integ() { load_indexed_state(n*i + inner_index++, balls[i]->vel[2]); // Derivatives of all of this junk - // vel[0] vel[1] accel[0] accel[1] - inner_index = 0; load_indexed_deriv(n*i + inner_index++, balls[i]->vel[0]); load_indexed_deriv(n*i + inner_index++, balls[i]->vel[1]); load_indexed_deriv(n*i + inner_index++, balls[i]->vel[2]); - load_indexed_deriv(n*i + inner_index++, balls[i]->accel[0]); // Needs to be accel[0] - load_indexed_deriv(n*i + inner_index++, balls[i]->accel[1]); // Needs to be accel[1] - load_indexed_deriv(n*i + inner_index++, balls[i]->accel[2]); // Needs to be accel[2] + load_indexed_deriv(n*i + inner_index++, balls[i]->accel[0]); + load_indexed_deriv(n*i + inner_index++, balls[i]->accel[1]); + load_indexed_deriv(n*i + inner_index++, balls[i]->accel[2]); } @@ -179,7 +174,7 @@ int PoolTable::state_integ() { continue; } - // pos[0] pos[1] vel[0] vel[1] + // pos[0] pos[1] pos[2] vel[0] vel[1] vel[2] int inner_index = 0; balls[i]->pos[0] = unload_indexed_state(n*i + inner_index++); balls[i]->pos[1] = unload_indexed_state(n*i + inner_index++); @@ -198,19 +193,13 @@ int PoolTable::state_integ() { return integration_step; } -double closestPointOnLine(Line& line, double pos[2], double result[2], bool print) { - double m[3]; - double a[3] = {line.p1.x, line.p1.y}; - double b[3] = {line.p2.x, line.p2.y}; - double diff[3]; +double closestPointOnLine(Line& line, Vec pos, Vec& result, bool print) { + Vec a(line.p1); + Vec b(line.p2); + Vec diff = pos - a; + Vec m = b - a; - dv_sub(diff, pos, a); - dv_sub(m, b, a); - - double t = dot(diff, m, 2) / dot(m, m, 2); - - // if (print) - // std::cout << "t: " << t << std::endl; + double t = (diff * m) / (m * m); if (t < 0) t = 0; @@ -218,10 +207,8 @@ double closestPointOnLine(Line& line, double pos[2], double result[2], bool prin if (t > 1) t = 1; - scaleInPlace(m, t, 2); - dv_add(result, a, m); - // if (print) - // std::cout << "Result: " << result[0] << " " << result[1] << std::endl; + m = m * t; + result = a + m; return t; } @@ -253,19 +240,14 @@ double PoolTable::collision() { if (!balls[jj]->inPlay) { continue; } - - double diff[3]; - dv_sub(diff, balls[ii]->pos, balls[jj]->pos); - double distanceBetweenBalls = dv_mag(diff); + unsigned int associationIndex = ii*(ii-1)/2+jj; // boundary is distance between balls - radiuses of balls + double distanceBetweenBalls = (balls[ii]->pos - balls[jj]->pos).norm(); double error = distanceBetweenBalls - (balls[ii]->radius + balls[jj]->radius); - - // std::cout << "Distance between centers: " << distanceBetweenBalls << std::endl; - // std::cout << "Radiuses: " << balls[ii]->radius << " " << balls[jj]->radius << std::endl; - // std::cout << "Error calculation: " << error << std::endl; ballAssociations[associationIndex].error = error; + double this_tgo = regula_falsi( now, &(ballAssociations[associationIndex])) ; if (this_tgo < event_tgo) { @@ -276,6 +258,7 @@ double PoolTable::collision() { std::cout << "Found colliding balls" << std::endl; // Add this collision to a list of collisions to process + // probably don't need to do this collisionsToProcess.push_back(ii); collisionsToProcess.push_back(jj); reset_regula_falsi( now, &(ballAssociations[associationIndex]) ); @@ -288,25 +271,16 @@ double PoolTable::collision() { // Handle collisions for (int i = 0; i < collisionsToProcess.size(); i+=2) { - // if (allowCollisions == false) { - // return event_tgo; - // } - // allowCollisions = false; int index1 = collisionsToProcess[i]; int index2 = collisionsToProcess[i+1]; std::cout << "Collision detected between balls " << index1 << " and " << index2 << std::endl; - double q1[3]; - dv_copy(q1, balls[index1]->pos); - double q2[3]; - dv_copy(q2, balls[index2]->pos); - + Vec q1(balls[index1]->pos); + Vec q2(balls[index2]->pos); // dg = (q1 - q2) / (|q1 - q2|) - double diff[3]; - dv_sub(diff, q1, q2); - double dg[3]; - dv_norm(dg, diff); + Vec diff = q1 - q2; + Vec dg = diff.normalized(); // Have to stuff both velocities and dg values into 4d vector to do the calculation // Otherwise I have to do more math @@ -320,22 +294,14 @@ double PoolTable::collision() { scaleInPlace(dg4, impulse, 4); // Impulse[0:1] is x and y components of what should be applied to v1, Impulse[2:3] goes to v2 - double impulse1[3] = {dg4[0], dg4[1], 0}; - double impulse2[3] = {dg4[2], dg4[3], 0}; + Vec impulse1(dg4[0], dg4[1], 0); + Vec impulse2(dg4[2], dg4[3], 0); - double newV1[3]; - dv_copy(newV1, balls[index1]->vel); - double newV2[3]; - dv_copy(newV2, balls[index2]->vel); + Vec newV1(balls[index1]->vel); + Vec newV2(balls[index2]->vel); - scaleInPlace(newV1, balls[index1]->mass, 3); - scaleInPlace(newV2, balls[index2]->mass, 3); - - dv_sub(newV1, newV1, impulse1); - dv_sub(newV2, newV2, impulse2); - - scaleInPlace(newV1, 1.0 / balls[index1]->mass, 3); - scaleInPlace(newV2, 1.0 / balls[index2]->mass, 3); + newV1 = ((newV1 * balls[index1]->mass) - impulse1) * (1.0 / balls[index1]->mass); + newV2 = ((newV2 * balls[index2]->mass) - impulse2) * (1.0 / balls[index2]->mass); std::cout << "Impulses applied: \n\tV1: " << newV1[0] << " " << newV1[1] << " \n\tV2: " << newV2[0] << " " << newV2[1] << std::endl; @@ -346,46 +312,22 @@ double PoolTable::collision() { balls[index2]->vel[1] = newV2[1]; } - // std::cout << "Ball 0 pos: " << balls[0]->pos[0] << " " << balls[0]->pos[1] << std::endl; - // std::cout << "Bumper 0 pos: " << bumpers[0]->border.p1.x << " " << bumpers[0]->border.p1.y << " " << bumpers[0]->border.p2.x << " " << bumpers[0]->border.p2.y << std::endl; - int numBumperCollisions = 0; for (ii=0; iiinPlay) { continue; } - // if (numBumperCollisions > 0) - // break; for (jj=0; jj 0) - // break; unsigned int association_index = (ii*numBumpers) + jj; + Ball *ball = balls[ii]; Bumper *bumper = bumpers[jj]; - //Point ballPos(ball->pos[0], ball->pos[1]); - double closestPointOnBumper[3] = {0, 0, 0}; - if (ii == 0 && jj == 3) { - double t = closestPointOnLine(bumper->border, ball->pos, closestPointOnBumper, true); - // std::cout << "Closest point on bumper: " << closestPointOnBumper[0] << " " << closestPointOnBumper[1] << std::endl; - - } else { - double t = closestPointOnLine(bumper->border, ball->pos, closestPointOnBumper, false); - } - double diff[3]; - - // dv_sub(diff, ball->pos, closestPointOnBumper); - diff[0] = ball->pos[0] - closestPointOnBumper[0]; - diff[1] = ball->pos[1] - closestPointOnBumper[1]; - diff[2] = 0; - - double distanceToBumper = abs(dv_mag(diff)) - ball->radius; + Vec closestPointOnBumper; + double t = closestPointOnLine(bumper->border, ball->pos, closestPointOnBumper, true); + double distanceToBumper = (ball->pos - closestPointOnBumper).norm() - ball->radius; bumperAssociations[association_index].error = distanceToBumper; - // if (ii == 0 && jj == 3) { - // std::cout << "Ball pos: " << balls[ii]->pos[0] << " " << balls[ii]->pos[1] << std::endl; - // std::cout << "Closest point on bumper: " << closestPointOnBumper[0] << " " << closestPointOnBumper[1] << std::endl; - // std::cout << "Distance to bumper: " << bumperAssociations[association_index].error << std::endl; - // } + double this_tgo = regula_falsi( now, &(bumperAssociations[association_index])) ; if (this_tgo < event_tgo) { event_tgo = this_tgo; @@ -394,25 +336,21 @@ double PoolTable::collision() { if (this_tgo == 0) { numBumperCollisions++; std::cout << "Found colliding ball " << ii << " and bumper " << jj << std::endl; - reset_regula_falsi( now, &(bumperAssociations[association_index]) ); - if (numBumperCollisions > 1) + if (numBumperCollisions > 1) { + // When a ball hits exactly a corner of 2 bumpers, both collisions will be detected and impulses applied. + // But since an impulse takes into consideration the original velocity, the second impulse applied + // just cancels out the first one most of the time. Both impulses should be identical since the + // collision point is the same, so make sure only 1 gets applied. This is kind of hacky continue; + } - double q1[3]; - dv_copy(q1, ball->pos); - double q2[3]; - dv_copy(q2, closestPointOnBumper); - q1[2] = 0; - q2[2] = 0; + Vec q1(ball->pos); + Vec q2(closestPointOnBumper); - - // dg = (q1 - q2) / (|q1 - q2|) - double diff[3]; - dv_sub(diff, q1, q2); - double dg[3]; - dv_norm(dg, diff); + Vec diff = q1 - q2; + Vec dg = diff.normalized(); // Have to stuff both velocities and dg values into 4d vector to do the calculation // Otherwise I have to do more math @@ -432,21 +370,13 @@ double PoolTable::collision() { scaleInPlace(dg4, impulse, 4); // Impulse[0:1] is x and y components of what should be applied to v1, Impulse[2:3] goes to v2 - double impulse1[3] = {dg4[0], dg4[1], 0}; - double impulse2[3] = {dg4[2], dg4[3], 0}; + Vec impulse1(dg4[0], dg4[1], 0); + Vec impulse2(dg4[2], dg4[3], 0); - double newV1[3]; - dv_copy(newV1, ball->vel); - // double newV2[3] = {0, 0}; - scaleInPlace(newV1, ball->mass, 3); - // scaleInPlace(newV2, balls[index2]->mass, 3); + Vec newV1 (ball->vel); - dv_sub(newV1, newV1, impulse1); - // dv_sub(newV2, newV2, impulse2); - - scaleInPlace(newV1, 1.0 / ball->mass, 3); - // scaleInPlace(newV2, 1.0 / balls[index2]->mass, 3); + newV1 = ((newV1 * ball->mass) - impulse1) * (1.0 / ball->mass); std::cout << "Impulses applied: \n\tV1: " << newV1[0] << " " << newV1[1] << std::endl; @@ -472,16 +402,11 @@ double PoolTable::collision() { unsigned int association_index = (ii*numPockets) + jj; Ball *ball = balls[ii]; Pocket *pocket = pockets[jj]; - double pocketPos[3] = {pocket->x, pocket->y, 0}; - - double diff[3]; - dv_sub(diff, ball->pos, pocketPos); - double distance = dv_mag(diff); // Ball is pocketed when center is within pocket radius - double error = distance - (pocket->radius); - + double error = (ball->pos - pocket->pos).norm() - (pocket->radius); pocketAssociations[association_index].error = error; + double this_tgo = regula_falsi( now, &(pocketAssociations[association_index])); if (this_tgo < event_tgo) { @@ -489,7 +414,7 @@ double PoolTable::collision() { } if (this_tgo == 0) { - std::cout << "Found pocketed ball" << std::endl; + std::cout << "Found pocketed ball " << ii << std::endl; reset_regula_falsi( now, &(pocketAssociations[association_index]) ); removeBall(ii); } @@ -510,20 +435,17 @@ void PoolTable::resetCueBall(double x, double y) { balls[cueBallIndex]->inPlay = true; } - - void PoolTable::applyCueForce(double x_end, double y_end) { applyCueForce(x_end, y_end, 0, 0, 0); } - void PoolTable::applyCueForce(double x_end, double y_end, double cueHorizontalDisplacement, double cueVerticalDisplacement, double cueAngle) { std::cout << "Applying cue force" << std::endl; // assume index 0 is cue ball int cueIndex = 0; - double cueEnd[3] = {x_end, y_end}; - double cueBallPos[3] = {balls[cueIndex]->pos[0], balls[cueIndex]->pos[1]}; + Vec cueEnd(x_end, y_end); + Vec cueBallPos(balls[cueIndex]->pos); double r = balls[cueIndex]->radius; double m = balls[cueIndex]->mass; @@ -535,37 +457,21 @@ void PoolTable::applyCueForce(double x_end, double y_end, double cueHorizontalDi double theta = cueAngle * M_PI / 180.0; double angleScaling = 1.0 + (cueAngle / 25.0); - double cueAxis[3]; - dv_sub(cueAxis, cueEnd, cueBallPos); - double cue_v = dv_mag(cueAxis) * cueForceScale * angleScaling; - dv_norm(cueAxis, cueAxis); + Vec cueAxis = cueEnd - cueBallPos; + double cue_v = cueAxis.norm() * cueForceScale * angleScaling; + cueAxis = cueAxis.normalized(); + double axis2[2] = {cueAxis[0], cueAxis[1]}; double force = (2 * m * cue_v) / (1.0 * (m / cueMass) + (5.0 / (2.0*pow(r, 2))) * (pow(a,2) + pow(b,2)*pow(cos(theta),2) + pow(c,2)*pow(sin(theta),2) - 2*b*c*sin(theta)*cos(theta))); // Velocity in the frame of the cue - double v_b[2] = {0, -force/m * cos(theta)}; + double v_multiplier = -force/m * cos(theta); + Vec velocityAfterHit = cueAxis * v_multiplier; - // Rotate to table frame - double y_unit[2] = {0, 1}; - double rot = acos(dot(axis2, y_unit, 2) / 1.0); - if (cueAxis[0] < 0) { - rot = -rot; - } + std::cout << "Velocity of ball after cue hit: " << velocityAfterHit[0] << " " << velocityAfterHit[1] << std::endl; - double rotationMatrix[2][2]; - rotationMatrix[0][0] = cos(rot); - rotationMatrix[0][1] = -sin(rot); - rotationMatrix[1][0] = sin(rot); - rotationMatrix[1][1] = cos(rot); - - double v_table[2]; - mProduct(v_table, rotationMatrix, v_b); - - std::cout << "Velocity of ball after cue hit: " << v_table[0] << " " << v_table[1] << std::endl; - - balls[cueIndex]->vel[0] = v_table[0]; - balls[cueIndex]->vel[1] = v_table[1]; + balls[cueIndex]->vel = velocityAfterHit; // TODO: logic for angular and relative velocity @@ -605,8 +511,8 @@ int PoolTable::addPointToBumper(int id, double x, double y) { int PoolTable::addPointToTable(double x, double y) { int id = nextTablePointSlot++; if (id < numTablePoints) { - Point * point = (Point*) TMM_declare_var_s("Point"); - tableShape[id] = (new (point) Point(x, y)); + Vec * point = (Vec*) TMM_declare_var_s("Vec"); + tableShape[id] = (new (point) Vec(x, y)); return id; } return -1; From ff18faf6dc81d77f2ca80650c11b44e30baf30c9 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Thu, 14 Jul 2022 16:07:14 -0500 Subject: [PATCH 015/162] Refactor graphics client to run in a single thread; remove extraneous files --- trick_sims/.gitignore | 2 + .../Modified_data/realtime.py | 0 .../RUN_break/input.py | 26 +- .../RUN_hexagon/input.py | 0 .../RUN_test/input.py | 14 +- .../{SIM_pool => SIM_billiards}/S_define | 0 trick_sims/SIM_billiards/S_overrides.mk | 2 + .../models/graphics/cpp/CMakeLists.txt | 0 .../models/graphics/cpp/README.md | 6 +- .../models/graphics/cpp/Socket.cpp | 29 +- .../models/graphics/cpp/Socket.hh | 10 +- .../models/graphics/cpp/cmake/libigl.cmake | 0 .../models/graphics/cpp/main.cpp | 516 +++++++++--------- .../graphics/java/src/PoolTableDisplay.java | 0 .../models/pool_table/include/ball.hh | 0 .../models/pool_table/include/bumper.hh | 0 .../pool_table/include/common_geometry.hh | 0 .../models/pool_table/include/pocket.hh | 0 .../models/pool_table/include/pool_table.hh | 0 .../models/pool_table/src/ball.cpp | 0 .../models/pool_table/src/bumper.cpp | 0 .../models/pool_table/src/pocket.cpp | 0 .../models/pool_table/src/pool_table.cpp | 0 trick_sims/SIM_pool/S_overrides.mk | 2 - .../SIM_pool/models/graphics/cpp/LICENSE | 363 ------------ .../SIM_pool/models/graphics/java/Makefile | 36 -- .../graphics/java/dist/PoolTableDisplay.jar | Bin 6493 -> 0 bytes .../SIM_pool/models/graphics/java/manifest | 1 - .../models/graphics/libigl-example-project | 1 - 29 files changed, 312 insertions(+), 696 deletions(-) rename trick_sims/{SIM_pool => SIM_billiards}/Modified_data/realtime.py (100%) rename trick_sims/{SIM_pool => SIM_billiards}/RUN_break/input.py (90%) rename trick_sims/{SIM_pool => SIM_billiards}/RUN_hexagon/input.py (100%) rename trick_sims/{SIM_pool => SIM_billiards}/RUN_test/input.py (96%) rename trick_sims/{SIM_pool => SIM_billiards}/S_define (100%) create mode 100644 trick_sims/SIM_billiards/S_overrides.mk rename trick_sims/{SIM_pool => SIM_billiards}/models/graphics/cpp/CMakeLists.txt (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/graphics/cpp/README.md (63%) rename trick_sims/{SIM_pool => SIM_billiards}/models/graphics/cpp/Socket.cpp (59%) rename trick_sims/{SIM_pool => SIM_billiards}/models/graphics/cpp/Socket.hh (70%) rename trick_sims/{SIM_pool => SIM_billiards}/models/graphics/cpp/cmake/libigl.cmake (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/graphics/cpp/main.cpp (72%) rename trick_sims/{SIM_pool => SIM_billiards}/models/graphics/java/src/PoolTableDisplay.java (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/include/ball.hh (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/include/bumper.hh (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/include/common_geometry.hh (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/include/pocket.hh (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/include/pool_table.hh (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/src/ball.cpp (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/src/bumper.cpp (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/src/pocket.cpp (100%) rename trick_sims/{SIM_pool => SIM_billiards}/models/pool_table/src/pool_table.cpp (100%) delete mode 100644 trick_sims/SIM_pool/S_overrides.mk delete mode 100644 trick_sims/SIM_pool/models/graphics/cpp/LICENSE delete mode 100644 trick_sims/SIM_pool/models/graphics/java/Makefile delete mode 100644 trick_sims/SIM_pool/models/graphics/java/dist/PoolTableDisplay.jar delete mode 100644 trick_sims/SIM_pool/models/graphics/java/manifest delete mode 160000 trick_sims/SIM_pool/models/graphics/libigl-example-project diff --git a/trick_sims/.gitignore b/trick_sims/.gitignore index 60d1a30c..4a06bade 100644 --- a/trick_sims/.gitignore +++ b/trick_sims/.gitignore @@ -25,7 +25,9 @@ T_main_* **/SIM_*/.trick **/SIM_*/trick.zip **/graphics/dist +**/graphics/java/dist **/graphics/manifest **/graphics/build +**/graphics/cpp/build jitlib build diff --git a/trick_sims/SIM_pool/Modified_data/realtime.py b/trick_sims/SIM_billiards/Modified_data/realtime.py similarity index 100% rename from trick_sims/SIM_pool/Modified_data/realtime.py rename to trick_sims/SIM_billiards/Modified_data/realtime.py diff --git a/trick_sims/SIM_pool/RUN_break/input.py b/trick_sims/SIM_billiards/RUN_break/input.py similarity index 90% rename from trick_sims/SIM_pool/RUN_break/input.py rename to trick_sims/SIM_billiards/RUN_break/input.py index 42ebca76..e6e05b7c 100644 --- a/trick_sims/SIM_pool/RUN_break/input.py +++ b/trick_sims/SIM_billiards/RUN_break/input.py @@ -2,7 +2,7 @@ import math exec(open("./Modified_data/realtime.py").read()) -dyn.table.numBalls = 11 +dyn.table.numBalls = 16 dyn.table.balls = trick.TMM_declare_var_1d("Ball*", dyn.table.numBalls) ballRadius = 0.02 @@ -30,11 +30,11 @@ dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]* dyn.table.addBall(center_x+unit_neg[0]*6*(ballRadius+tol), center_y+unit_neg[1]*2*(ballRadius+tol), ballMass, ballRadius, False) dyn.table.addBall(center_x+unit_pos[0]*6*(ballRadius+tol), center_y+unit_pos[1]*2*(ballRadius+tol), ballMass, ballRadius, False) -# dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*8*(ballRadius+tol), ballMass, ballRadius, False) -# dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*8*(ballRadius+tol), ballMass, ballRadius, False) -# dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*4*(ballRadius+tol), ballMass, ballRadius, False) -# dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*4*(ballRadius+tol), ballMass, ballRadius, False) -# dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y, ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*8*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*8*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_neg[0]*8*(ballRadius+tol), center_y+unit_neg[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y+unit_pos[1]*4*(ballRadius+tol), ballMass, ballRadius, False) +dyn.table.addBall(center_x+unit_pos[0]*8*(ballRadius+tol), center_y, ballMass, ballRadius, False) corners = [-.5, -.25, .5, .25] @@ -110,13 +110,17 @@ bumperShapes = [ [bumperBorders[0][0], bumperBorders[0][1]-bumperWidth, bumpe bumperShapeTypes = [3, 3, 3, 3, 3, 3, 2, 2,2,2,2, 2, 2, 2,2,2, 2, 2] -dyn.table.numBumpers = len(bumperBorders) + +bumperNum = len(bumperBorders) +print("Num bumpers: ", len(bumperBorders)) +dyn.table.numBumpers = bumperNum dyn.table.bumpers = trick.TMM_declare_var_1d("Bumper*", dyn.table.numBumpers) -for i in range(len(bumperBorders)): - id = dyn.table.addBumper(len(bumperShapes[i])/2, bumperBorders[i][0], bumperBorders[i][1], bumperBorders[i][2],bumperBorders[i][3]) - dyn.table.bumpers[id][0].numPoints = len(bumperShapes[i])/2 - dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Vec*", dyn.table.bumpers[id].numPoints) +for i in range(bumperNum): + numPoints = len(bumperShapes[i])/2 + id = dyn.table.addBumper(numPoints, bumperBorders[i][0], bumperBorders[i][1], bumperBorders[i][2],bumperBorders[i][3]) + dyn.table.bumpers[id][0].numPoints = numPoints + dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Vec*", numPoints) dyn.table.bumpers[id][0].shapeType = bumperShapeTypes[i] for j in range(0, len(bumperShapes[i]), 2): diff --git a/trick_sims/SIM_pool/RUN_hexagon/input.py b/trick_sims/SIM_billiards/RUN_hexagon/input.py similarity index 100% rename from trick_sims/SIM_pool/RUN_hexagon/input.py rename to trick_sims/SIM_billiards/RUN_hexagon/input.py diff --git a/trick_sims/SIM_pool/RUN_test/input.py b/trick_sims/SIM_billiards/RUN_test/input.py similarity index 96% rename from trick_sims/SIM_pool/RUN_test/input.py rename to trick_sims/SIM_billiards/RUN_test/input.py index c016a353..f8b990cc 100644 --- a/trick_sims/SIM_pool/RUN_test/input.py +++ b/trick_sims/SIM_billiards/RUN_test/input.py @@ -106,19 +106,21 @@ bumperShapes = [ [bumperBorders[0][0], bumperBorders[0][1]-bumperWidth, bumpe bumperShapeTypes = [3, 3, 3, 3, 3, 3, 2, 2,2,2,2, 2, 2, 2,2,2, 2, 2] -dyn.table.numBumpers = len(bumperBorders) +bumperNum = len(bumperBorders) +print("Num bumpers: ", len(bumperBorders)) +dyn.table.numBumpers = bumperNum dyn.table.bumpers = trick.TMM_declare_var_1d("Bumper*", dyn.table.numBumpers) -for i in range(len(bumperBorders)): - id = dyn.table.addBumper(len(bumperShapes[i])/2, bumperBorders[i][0], bumperBorders[i][1], bumperBorders[i][2],bumperBorders[i][3]) - dyn.table.bumpers[id][0].numPoints = len(bumperShapes[i])/2 - dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Vec*", dyn.table.bumpers[id].numPoints) +for i in range(bumperNum): + numPoints = len(bumperShapes[i])/2 + id = dyn.table.addBumper(numPoints, bumperBorders[i][0], bumperBorders[i][1], bumperBorders[i][2],bumperBorders[i][3]) + dyn.table.bumpers[id][0].numPoints = numPoints + dyn.table.bumpers[id][0].renderedShape = trick.TMM_declare_var_1d("Vec*", numPoints) dyn.table.bumpers[id][0].shapeType = bumperShapeTypes[i] for j in range(0, len(bumperShapes[i]), 2): dyn.table.addPointToBumper(id, bumperShapes[i][j],bumperShapes[i][j+1]) - dyn_integloop.getIntegrator(trick.Euler, 6*dyn.table.numBalls) #========================================== diff --git a/trick_sims/SIM_pool/S_define b/trick_sims/SIM_billiards/S_define similarity index 100% rename from trick_sims/SIM_pool/S_define rename to trick_sims/SIM_billiards/S_define diff --git a/trick_sims/SIM_billiards/S_overrides.mk b/trick_sims/SIM_billiards/S_overrides.mk new file mode 100644 index 00000000..1b84a37b --- /dev/null +++ b/trick_sims/SIM_billiards/S_overrides.mk @@ -0,0 +1,2 @@ +TRICK_CFLAGS += -Imodels +TRICK_CXXFLAGS += -Imodels \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/graphics/cpp/CMakeLists.txt b/trick_sims/SIM_billiards/models/graphics/cpp/CMakeLists.txt similarity index 100% rename from trick_sims/SIM_pool/models/graphics/cpp/CMakeLists.txt rename to trick_sims/SIM_billiards/models/graphics/cpp/CMakeLists.txt diff --git a/trick_sims/SIM_pool/models/graphics/cpp/README.md b/trick_sims/SIM_billiards/models/graphics/cpp/README.md similarity index 63% rename from trick_sims/SIM_pool/models/graphics/cpp/README.md rename to trick_sims/SIM_billiards/models/graphics/cpp/README.md index 8338bf67..2479c965 100644 --- a/trick_sims/SIM_pool/models/graphics/cpp/README.md +++ b/trick_sims/SIM_billiards/models/graphics/cpp/README.md @@ -1,18 +1,18 @@ # Pool Table Display -Uses the Libigl library for visualization. Connects to SIM_Billiards +Uses the Libigl library for visualization. Connects to SIM_billiards ## Compile libigl must be downloaded from Github : https://github.com/libigl/libigl + Clone it somewhere accessible, like your home directory. It does not need to be compiled. -libigl depends on Eigen3, which also need to be downloaded and installed : https://eigen.tuxfamily.org/index.php?title=Main_Page +libigl depends on Eigen3, which may need to be downloaded and installed : https://eigen.tuxfamily.org/index.php?title=Main_Page To compile: - mkdir build cd build cmake .. diff --git a/trick_sims/SIM_pool/models/graphics/cpp/Socket.cpp b/trick_sims/SIM_billiards/models/graphics/cpp/Socket.cpp similarity index 59% rename from trick_sims/SIM_pool/models/graphics/cpp/Socket.cpp rename to trick_sims/SIM_billiards/models/graphics/cpp/Socket.cpp index 7afe4ec7..d4587478 100644 --- a/trick_sims/SIM_pool/models/graphics/cpp/Socket.cpp +++ b/trick_sims/SIM_billiards/models/graphics/cpp/Socket.cpp @@ -1,11 +1,16 @@ #include "Socket.hh" -#define SOCKET_BUF_SIZE 2048 +#define SOCKET_BUF_SIZE 20480 -Socket::Socket (std::string hostname, int port) : hostname(hostname), port(port) { - socket_fd = socket(AF_INET, SOCK_STREAM, 0); - if (socket_fd < 0) { - std::cout << "Socket connection failed" << std::endl; +Socket::Socket() : _initialized(false) {} + +int Socket::init (std::string hostname, int port) { + _hostname = hostname; + _port = port; + _socket_fd = socket(AF_INET, SOCK_STREAM, 0); + if (_socket_fd < 0) { + std::cout << "Socket connection failed" << std::endl; + return -1; } struct sockaddr_in serv_addr; @@ -13,18 +18,22 @@ Socket::Socket (std::string hostname, int port) : hostname(hostname), port(port) serv_addr.sin_port = htons(port); // convert to weird network byte format if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr)<=0) { - std::cout << "Invalid address/ Address not supported" << std::endl; + std::cout << "Invalid address/ Address not supported" << std::endl; + return -1; } - if (connect(socket_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { - std::cout << "Connection failed" << std::endl; + if (connect(_socket_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { + std::cout << "Connection failed" << std::endl; + return -1; } + + _initialized = true; } int Socket::send (std::string message) { // weird syntax I've never used before - since the send syscall that i'm trying to use is overloaded in this class, // I have to append :: to the front of it so that the compiler knows to look in the global namespace - int success = ::send(socket_fd, message.c_str(), message.size(), 0); + int success = ::send(_socket_fd, message.c_str(), message.size(), 0); if (success < message.size()) { std::cout << "Failed to send message" << std::endl; } @@ -37,7 +46,7 @@ int Socket::operator<< (std::string message) { std::string Socket::receive () { char buffer[SOCKET_BUF_SIZE]; - int numBytes = read(socket_fd, buffer, SOCKET_BUF_SIZE); + int numBytes = read(_socket_fd, buffer, SOCKET_BUF_SIZE); if (numBytes < 0) { std::cout << "Failed to read from socket" << std::endl; } else if (numBytes < SOCKET_BUF_SIZE) { diff --git a/trick_sims/SIM_pool/models/graphics/cpp/Socket.hh b/trick_sims/SIM_billiards/models/graphics/cpp/Socket.hh similarity index 70% rename from trick_sims/SIM_pool/models/graphics/cpp/Socket.hh rename to trick_sims/SIM_billiards/models/graphics/cpp/Socket.hh index 6823ca29..dd9680d1 100644 --- a/trick_sims/SIM_pool/models/graphics/cpp/Socket.hh +++ b/trick_sims/SIM_billiards/models/graphics/cpp/Socket.hh @@ -9,7 +9,8 @@ class Socket { public: - Socket (std::string hostname, int port); + Socket (); + int init(std::string hostname, int port); int send (std::string message); int operator<< (std::string message); @@ -18,8 +19,9 @@ class Socket { void operator>> (std::string& ret); private: - int port; - std::string hostname; - int socket_fd; + int _port; + std::string _hostname; + int _socket_fd; + bool _initialized; }; diff --git a/trick_sims/SIM_pool/models/graphics/cpp/cmake/libigl.cmake b/trick_sims/SIM_billiards/models/graphics/cpp/cmake/libigl.cmake similarity index 100% rename from trick_sims/SIM_pool/models/graphics/cpp/cmake/libigl.cmake rename to trick_sims/SIM_billiards/models/graphics/cpp/cmake/libigl.cmake diff --git a/trick_sims/SIM_pool/models/graphics/cpp/main.cpp b/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp similarity index 72% rename from trick_sims/SIM_pool/models/graphics/cpp/main.cpp rename to trick_sims/SIM_billiards/models/graphics/cpp/main.cpp index 2a913208..1ed067e0 100644 --- a/trick_sims/SIM_pool/models/graphics/cpp/main.cpp +++ b/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp @@ -1,5 +1,5 @@ #include -#include +// #include #include #include #include @@ -10,29 +10,21 @@ #include #include #include -#include -#include #include "Socket.hh" -// #include -// #include -// #include -// #include -// #include -#include - -std::vector ball_colors = {Eigen::Vector3d(1.0,1.0,0.0), //yellow +std::vector ball_colors = {Eigen::Vector3d(0.0,0.4,0.0), //green + Eigen::Vector3d(1.0,1.0,0.0), //yellow Eigen::Vector3d(0.0,0.0,1.0), //blue Eigen::Vector3d(1.0,0.0,0.0), //red Eigen::Vector3d(0.5,0.0,0.3), //purple Eigen::Vector3d(0.7,0.5,0.0), //orange - Eigen::Vector3d(0.0,0.7,0.0), //green - Eigen::Vector3d(0.3,0.07,0.15), //maroon Eigen::Vector3d(0.0,0.0,0.0), //black + Eigen::Vector3d(0.3,0.07,0.15), //maroon }; + const double layer_BALL = 0.005; const double layer_TABLE = 0.001; const double layer_BUMPER = 0.002; @@ -56,7 +48,6 @@ class RenderedShape { return faces.size(); } - std::vector getFacesWithBaseIndex(int newBase) { std::vector newFaces; int offset = newBase - baseIndex; @@ -69,29 +60,9 @@ class RenderedShape { return newFaces; } - ~RenderedShape() { - if (destructorPrint) - std::cout << "Destroying rendered Shape" << std::endl; - } - - // std::vector getVerticesWithOffset(int newBase) { - // std::vector newFaces; - // int offset = newBase - baseIndex; - // Eigen::Vector3i baseOffset(offset, offset, offset); - // for (Eigen::Vector3i& face : faces) { - // newFaces.emplace_back(face + baseOffset); - // } - // baseIndex = newBase; - - // return newFaces; - // } - std::vector vertices; std::vector faces; std::vector colors; - - bool destructorPrint = false; - }; class Point { @@ -141,18 +112,13 @@ class Polygon { return color; } - ~Polygon() { - if (destructorPrint) - std::cout << "Destroying a polygon" << std::endl; - } - // Works with any simple convex polygon where the points are in order virtual RenderedShape* render() const { RenderedShape * shape = new RenderedShape(); if (!isValid()) { // Should maybe throw an error - std::cerr << "Generic has incorrect number of corners" << std::endl; + std::cout << "Generic has incorrect number of corners" << std::endl; return shape; } @@ -178,7 +144,6 @@ class Polygon { unsigned int vertexMax; double layer; int id; - bool destructorPrint = false; }; class Circle : public Polygon { @@ -207,7 +172,7 @@ class Circle : public Polygon { // Add center shape->vertices.emplace_back(points[0].toVec3()); - // std::cout << "Center: " << points[0].toVec3() << std::endl; + // Add outside vertices for (int i = 0; i <= numWedges; i++) { shape->vertices.emplace_back(points[0].x() + radius * cos(2 * M_PI * i / numWedges), @@ -230,34 +195,6 @@ class Circle : public Polygon { int numWedges = 20; }; -// class Generic : public Polygon { - -// public: -// Generic(int numPoints, double layer) : Polygon(numPoints, layer) {} - -// // Assumes a simple convex polygon -// virtual RenderedShape* render() const { -// RenderedShape * shape = new RenderedShape(); - -// if (!isValid()) { -// // Should maybe throw an error -// std::cerr << "Generic has incorrect number of corners" << std::endl; -// return shape; -// } - -// for (int i = 0; i < points.size(); i++) { -// shape->vertices.emplace_back(points[i].toVec3()); -// shape->colors.emplace_back(color); -// } - -// for (int i = 1; i < points.size()-1; i++) { -// shape->faces.emplace_back(0, i, i+1); -// } - -// return shape; -// } -// }; - class Rectangle : public Polygon { public: @@ -451,7 +388,6 @@ class Table { for (Polygon* shape : staticShapes) { std::cout << "Rendering shape " << i++ << std::endl; RenderedShape *renderedShape = shape->render(); - renderedShape->destructorPrint = true; numStaticVertices += renderedShape->getNumVertices(); numStaticFaces += renderedShape->getNumFaces(); staticRenderedShapes.emplace_back(renderedShape); @@ -577,83 +513,139 @@ std::vector parseTrickResponse(std::vector list) { return ret; } -void launchViewer (igl::opengl::glfw::Viewer *viewer) { - viewer->launch(); -} - -bool mousePressed = false; -double mouseX = 0; -double mouseY = 0; - -std::queue messageQueue; -std::mutex messageLock; - -bool sendCue = false; -std::mutex renderLock; - -Eigen::MatrixXd V; -Eigen::MatrixXi F; -Eigen::MatrixXd C; -igl::opengl::glfw::imgui::ImGuiMenu* menu; - -bool mouse_down (igl::opengl::glfw::Viewer& viewer, int button, int modifier) { - mousePressed = true; - return true; -} - -bool mouse_up (igl::opengl::glfw::Viewer& viewer, int button, int modifier) { - mousePressed = false; - std::string cueRequest = ""; - std::string templateString = "dyn.table.applyCueForce(%.3f, %.3f) \n"; - - char buf[128]; - sprintf(buf, templateString.c_str(), mouseX, mouseY); - cueRequest += std::string(buf); - - messageLock.lock(); - messageQueue.push(cueRequest); - messageLock.unlock(); - - return true; -} - -bool mouse_move (igl::opengl::glfw::Viewer& viewer, int mouse_x, int mouse_y) { - Eigen::Vector3f pos(mouse_x, mouse_y, 0); - Eigen::Matrix4f model = viewer.core().view; - Eigen::Vector3f unproj = igl::unproject(pos, model, viewer.core().proj, viewer.core().viewport); - mouseX = unproj[0]; - mouseY = -unproj[1]; - return true; -} - -bool pre_draw (igl::opengl::glfw::Viewer& viewer) { - renderLock.lock(); - - viewer.data().clear(); - viewer.core().orthographic = true; - viewer.data().show_lines = false; - viewer.data().set_face_based(false); - viewer.data().double_sided = true; - viewer.core().is_animating = true; - viewer.core().camera_zoom = 2; - viewer.data().set_mesh(V, F); - viewer.data().set_colors(C); - - renderLock.unlock(); -} - -void draw_viewer_menu () { - ImGui::Text("Menu"); - if (ImGui::Button("Reset Cue Ball", ImVec2(-1, 0))) - { - std::string message = "dyn.table.resetCueBall() \n"; - messageLock.lock(); - messageQueue.push(message); - messageLock.unlock(); +std::vector parseTrickResponseInt(std::vector list) { + std::vector ret; + for (int i = 1; i < list.size(); i++) { + ret.push_back(stoi(list[i])); } - + return ret; } +// void launchViewer (igl::opengl::glfw::Viewer *viewer) { +// std::cout << "About to launch the viewer" << std::endl; +// viewer->launch(); +// } + + + +// std::queue messageQueue; +// std::mutex messageLock; + +// std::mutex renderLock; + + +// igl::opengl::glfw::imgui::ImGuiMenu* menu; + +// bool mouse_down (igl::opengl::glfw::Viewer& viewer, int button, int modifier) { +// mousePressed = true; +// return true; +// } + +// bool mouse_up (igl::opengl::glfw::Viewer& viewer, int button, int modifier) { +// mousePressed = false; +// std::string cueRequest = ""; +// std::string templateString = "dyn.table.applyCueForce(%.3f, %.3f) \n"; + +// char buf[128]; +// sprintf(buf, templateString.c_str(), mouseX, mouseY); +// cueRequest += std::string(buf); + +// messageLock.lock(); +// messageQueue.push(cueRequest); +// messageLock.unlock(); + +// return true; +// } + +// bool mouse_move (igl::opengl::glfw::Viewer& viewer, int mouse_x, int mouse_y) { +// Eigen::Vector3f pos(mouse_x, mouse_y, 0); +// Eigen::Matrix4f model = viewer.core().view; +// Eigen::Vector3f unproj = igl::unproject(pos, model, viewer.core().proj, viewer.core().viewport); +// mouseX = unproj[0]; +// mouseY = -unproj[1]; +// return true; +// } + +// bool pre_draw (igl::opengl::glfw::Viewer& viewer) { + + // std::string reply; + // socket >> reply; + + // // std::cout << "Got data: " << reply << std::endl; + // std::vector replyData = parseTrickResponse(split(reply, '\t')); + // // numBalls = (int)replyData[0]; + + // if (replyData.size() <= 1) { + // // std::cout << "Received bad reply" << std::endl; + // return false; + // } + + // table.clearMovingShapes(); + + // Eigen::Vector2d cueBallPos(0,0); + // int cueBallIndex = 0; + + + // for (int i = 0; i < numBalls; i++) { + // double inPlay = replyData[1+(i*3 + 2)]; + // if (inPlay == 0) { + // continue; + // } + // std::vector circleData = {replyData[1+(i*3)], replyData[1+(i*3 + 1)], radii[i]}; + // Eigen::Vector3d circleColor; + // if (i == cueBallIndex) { + // circleColor = Eigen::Vector3d(1,1,1); + // cueBallPos = Eigen::Vector2d(replyData[1+(i*2)], replyData[1+(i*2 + 1)]); + // } else { + // circleColor = ball_colors[i % ball_colors.size()]; + + // } + // table.addShape(circleData, circleColor, false, CIRCLE, layer_BALL); + // } + + // if (mousePressed) { + // // Draw the cue + // double cue_width = 0.03; + // Eigen::Vector2d cue_end(mouseX, mouseY); + // Eigen::Vector2d vec = (cue_end - cueBallPos).normalized(); + // Eigen::Vector2d off1(-vec(1), vec(0)); + // Eigen::Vector2d off2(vec(1), -vec(0)); + // Eigen::Vector2d point1 = cue_end + (off1 * cue_width); + // Eigen::Vector2d point2 = cue_end + (off2 * cue_width); + // std::vector triangleData = {cueBallPos(0), cueBallPos(1), point1(0), point1(1), point2(0), point2(1)}; + // table.addShape(triangleData, Eigen::Vector3d(0, 0, 0), false, TRIANGLE, layer_CUE); + // } + + // renderLock.lock(); + // std::tie(V, F, C) = table.getMesh(); + + // renderLock.lock(); + + // viewer.data().clear(); + // viewer.core().orthographic = true; + // viewer.data().show_lines = false; + // viewer.data().set_face_based(false); + // viewer.data().double_sided = true; + // viewer.core().is_animating = true; + // viewer.core().camera_zoom = 2; + // viewer.data().set_mesh(V, F); + // viewer.data().set_colors(C); + + // renderLock.unlock(); +// } + +// void draw_viewer_menu () { +// ImGui::Text("Menu"); +// if (ImGui::Button("Reset Cue Ball", ImVec2(-1, 0))) +// { +// std::string message = "dyn.table.resetCueBall() \n"; +// messageLock.lock(); +// messageQueue.push(message); +// messageLock.unlock(); +// } + +// } + int main(int argc, char *argv[]) { @@ -663,25 +655,21 @@ int main(int argc, char *argv[]) return -1; } + bool socketOn = true; int port = 0; port = std::stoi(argv[1]); if (port == 0) { - printUsage(); - return -1; + socketOn = false; } std::cout << "Port received: " << port << std::endl; - - Socket socket("localhost", port); - - socket << "trick.var_set_client_tag(\"PoolTableDisplay\") \n"; - - // Should request all the static data first - table, bumper, and pocket shapes - // Hardcoded for now - - socket << "trick.var_add(\"dyn.table.numBalls\")\ntrick.var_send() \ntrick.var_clear() \n"; + Socket socket; + socket.init("localhost", port); std::string reply; + + socket << "trick.var_set_client_tag(\"PoolTableDisplay\") \n"; + socket << "trick.var_add(\"dyn.table.numBalls\")\ntrick.var_send() \ntrick.var_clear() \n"; socket >> reply; auto parsed = split(reply, '\t'); @@ -695,24 +683,18 @@ int main(int argc, char *argv[]) sprintf(buf, templateString, i); radiusRequest += std::string(buf); } + socket << radiusRequest; socket << "trick.var_send() \ntrick.var_clear() \n"; socket >> reply; - // std::cout << "Radius reply: " << reply << std::endl; - auto radii = parseTrickResponse(split(reply, '\t')); - // To be able to account for balls being added and subtracted, probably need to request numBalls every time, and just delete the moving objects each render cycle - // Probably a more optimized way to do this - // TODO: figure that out + auto radii = parseTrickResponse(split(reply, '\t')); Table table; - - - socket << "trick.var_add(\"dyn.table.numTablePoints\") \ntrick.var_add(\"dyn.table.tableShapeType\")\n \ntrick.var_send() \ntrick.var_clear() \n"; socket >> reply; - std::cout << "Table shape reply: " << reply << std::endl; + std::vector tableData = parseTrickResponse(split(reply, '\t')); int numTablePoints = tableData[0]; enum PolygonType tableShape = PolygonType((int)tableData[1]); @@ -724,22 +706,28 @@ int main(int argc, char *argv[]) sprintf(buf, templateString, i, i); pointRequest += std::string(buf); } + socket << pointRequest; socket << "trick.var_send() \ntrick.var_clear() \n"; socket >> reply; + std::vector tablePoints = parseTrickResponse(split(reply, '\t')); table.addShape(tablePoints, Eigen::Vector3d(0.2, 0.6, 0.2), true, tableShape, layer_TABLE); + // Make the rail - translate each point on the table out from center by railWidth std::vector railData; - - if (tableShape == RECTANGLE) { + + if (tableShape == RECTANGLE) { + // If it's a rectangle then the rail is a bigger rectangle double railWidth = 0.07; railData.push_back(tablePoints[0] - railWidth); railData.push_back(tablePoints[1] - railWidth); railData.push_back(tablePoints[2] + railWidth); railData.push_back(tablePoints[3] + railWidth); } else { + // If it's just a shape then rail is bigger shape + // Works with simple convex polygons double railWidth = 0.15; for (int i = 0; i < tablePoints.size(); i+=2) { Eigen::Vector2d point(tablePoints[i], tablePoints[i+1]); @@ -753,11 +741,10 @@ int main(int argc, char *argv[]) table.addShape(railData, Eigen::Vector3d(.3, .2, .15), true, tableShape, layer_RAIL); - // Pockets - socket << "trick.var_add(\"dyn.table.numPockets\")\n \ntrick.var_send() \ntrick.var_clear() \n"; - + socket << "trick.var_add(\"dyn.table.numPockets\")\n \ntrick.var_send() \ntrick.var_clear() \n"; socket >> reply; - double numPockets = stod(split(reply, '\t')[1]); + + int numPockets = stoi(split(reply, '\t')[1]); for (int i = 0; i < numPockets; i++) { templateString = "trick.var_add(\"dyn.table.pockets[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.pockets[%d][0].pos._y\")\n\ntrick.var_add(\"dyn.table.pockets[%d][0].radius\")\n"; char buf[256]; @@ -771,21 +758,14 @@ int main(int argc, char *argv[]) table.addShape(pocketData, Eigen::Vector3d(0.0, 0.0, 0.0), true, CIRCLE, layer_POCKET); } - - // std::vector table_corners = {-.5, -.25, .5, .25}; - // Eigen::Vector3d table_color(0.2, 0.6, 0.2); - // table.addShape(table_corners, table_color, true, RECTANGLE); - // Bumpers - socket << "trick.var_add(\"dyn.table.numBumpers\")\n \ntrick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - double numBumpers = stod(split(reply, '\t')[1]); + + int numBumpers = stoi(split(reply, '\t')[1]); std::cout << "Num bumpers: " << numBumpers << std::endl; - //templateString = "trick.var_add(\"dyn.table.bumpers[%d][0].border.p1.x\") \ntrick.var_add(\"dyn.table.bumpers[%d][0].border.p1.y\")\ntrick.var_add(\"dyn.table.bumpers[%d][0].border.p2.x\") \ntrick.var_add(\"dyn.table.bumpers[%d][0].border.p2.y\")\n"; for (int i = 0; i < numBumpers; i++) { std::string bumperRequests = ""; @@ -796,7 +776,7 @@ int main(int argc, char *argv[]) socket << bumperRequests; socket << "trick.var_send() \ntrick.var_clear() \n"; socket >> reply; - std::vector bumperData = parseTrickResponse(split(reply, '\t')); + std::vector bumperData = parseTrickResponseInt(split(reply, '\t')); int bumperPoints = bumperData[0]; enum PolygonType bumperShape = PolygonType((int)bumperData[1]); @@ -812,7 +792,6 @@ int main(int argc, char *argv[]) socket >> reply; std::vector bumperBorder = parseTrickResponse(split(reply, '\t')); - table.addShape(bumperBorder, Eigen::Vector3d(0.2,0.4,0.2), true, bumperShape, layer_BUMPER); } @@ -830,6 +809,7 @@ int main(int argc, char *argv[]) socket << positionRequest; socket << "trick.var_send() \ntrick.var_clear() \n"; socket >> reply; + auto positions = parseTrickResponse(split(reply, '\t')); @@ -839,97 +819,65 @@ int main(int argc, char *argv[]) table.addShape(circleData, circleColor, false, CIRCLE, layer_BALL); } - renderLock.lock(); - std::tie(V, F, C) = table.getMesh(); - renderLock.unlock(); + bool mousePressed = false; + double mouseX = 0; + double mouseY = 0; - igl::opengl::glfw::Viewer * viewer = new igl::opengl::glfw::Viewer(); + Eigen::MatrixXd V; + Eigen::MatrixXi F; + Eigen::MatrixXd C; + + std::tie(V, F, C) = table.getMesh(); + + igl::opengl::glfw::Viewer * view = new igl::opengl::glfw::Viewer(); igl::opengl::glfw::imgui::ImGuiPlugin *plugin = new igl::opengl::glfw::imgui::ImGuiPlugin(); - viewer->plugins.push_back(plugin); - menu = new igl::opengl::glfw::imgui::ImGuiMenu(); + igl::opengl::glfw::imgui::ImGuiMenu *menu = new igl::opengl::glfw::imgui::ImGuiMenu(); + + view->plugins.push_back(plugin); plugin->widgets.push_back(menu); + view->callback_mouse_down = [&](igl::opengl::glfw::Viewer& viewer, int button, int modifier) -> bool { + std::cout << "Mouse down" << std::endl; + mousePressed = true; + return false; + }; - viewer->callback_mouse_down = mouse_down; - viewer->callback_mouse_up = mouse_up; - viewer->callback_mouse_move = mouse_move; - viewer->callback_pre_draw = pre_draw; - menu->callback_draw_viewer_menu = draw_viewer_menu; + view->callback_mouse_up = [&] (igl::opengl::glfw::Viewer& viewer, int button, int modifier) -> bool { + mousePressed = false; + std::string cueRequest = ""; + std::string templateString = "dyn.table.applyCueForce(%.3f, %.3f) \n"; - viewer->core().orthographic = true; - viewer->core().camera_zoom = 2; - viewer->data().show_lines = false; - viewer->data().set_face_based(false); - viewer->data().double_sided = true; - - viewer->core().is_animating = true; - - // Plot the mesh - viewer->data().set_mesh(V, F); - viewer->data().set_colors(C); - - // Viewer is blocking, have to launch it in a separate thread - std::thread viewerThread (launchViewer, viewer); - - // std::this_thread::sleep_for(std::chrono::milliseconds(1000)); - - - std::cout << "After launch " << std::endl; - // Need to get nBalls and posititions every time - // Maybe should add some coordinating by ID logic too - socket << "trick.var_pause() \n"; - socket << "trick.var_add(\"dyn.table.numBalls\")\n"; - positionRequest = ""; - templateString = "trick.var_add(\"dyn.table.balls[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.balls[%d][0].pos._y\")\ntrick.var_add(\"dyn.table.balls[%d][0].inPlay\")\n"; - for (int i = 0; i < numBalls; i++) { char buf[128]; - sprintf(buf, templateString, i, i, i); - positionRequest += std::string(buf); - } + sprintf(buf, templateString.c_str(), mouseX, mouseY); + cueRequest += std::string(buf); + socket << cueRequest; + return false; + }; + view->callback_mouse_move = [&] (igl::opengl::glfw::Viewer& viewer, int mouse_x, int mouse_y) { + Eigen::Vector3f pos(mouse_x, mouse_y, 0); + Eigen::Matrix4f model = viewer.core().view; + // Viewer is made for 3d, so we have to do math to figure out what the 2d mouse coordinates are + Eigen::Vector3f unproj = igl::unproject(pos, model, viewer.core().proj, viewer.core().viewport); + mouseX = unproj[0]; + mouseY = -unproj[1]; + return true; + }; - socket << positionRequest; - socket << "trick.var_ascii() \n"; - socket << "trick.var_cycle(0.010) \n"; - socket << "trick.var_unpause() \n"; - - int badReplies = 10; - - // Start the actual draw loop - int drawIteration = 0; - while (true) { - // std::cout << "Draw loop iteration" << drawIteration++ << std::endl; - - messageLock.lock(); - while (!messageQueue.empty()) { - std::string message = messageQueue.front(); - messageQueue.pop(); - socket.send(message); - } - messageLock.unlock(); - - std::string reply; + view->callback_pre_draw = [&](igl::opengl::glfw::Viewer& viewer) -> bool { + // Look for new data and redraw socket >> reply; - - // std::cout << "Got data: " << reply << std::endl; std::vector replyData = parseTrickResponse(split(reply, '\t')); - // numBalls = (int)replyData[0]; if (replyData.size() <= 1) { - // std::cout << "Received bad reply" << std::endl; - badReplies--; - if (badReplies > 0) - continue; - else - break; + return false; } table.clearMovingShapes(); - Eigen::Vector2d cueBallPos(0,0); + Eigen::Vector2d cueBallPos; int cueBallIndex = 0; - for (int i = 0; i < numBalls; i++) { double inPlay = replyData[1+(i*3 + 2)]; if (inPlay == 0) { @@ -942,7 +890,6 @@ int main(int argc, char *argv[]) cueBallPos = Eigen::Vector2d(replyData[1+(i*2)], replyData[1+(i*2 + 1)]); } else { circleColor = ball_colors[i % ball_colors.size()]; - } table.addShape(circleData, circleColor, false, CIRCLE, layer_BALL); } @@ -960,10 +907,61 @@ int main(int argc, char *argv[]) table.addShape(triangleData, Eigen::Vector3d(0, 0, 0), false, TRIANGLE, layer_CUE); } - renderLock.lock(); std::tie(V, F, C) = table.getMesh(); - renderLock.unlock(); - } + + viewer.data().clear(); + viewer.core().orthographic = true; + viewer.data().show_lines = false; + viewer.data().set_face_based(false); + viewer.data().double_sided = true; + viewer.core().is_animating = true; + viewer.core().camera_zoom = 2; - viewerThread.join(); + // Set mesh and colors to new positions + viewer.data().set_mesh(V, F); + viewer.data().set_colors(C); + + return false; + }; + + menu->callback_draw_viewer_menu = [&] () { + ImGui::Text("Menu"); + if (ImGui::Button("Reset Cue Ball", ImVec2(-1, 0))) + { + std::string message = "dyn.table.resetCueBall() \n"; + socket << message; + } + }; + + + // Initial viewer setup + view->core().orthographic = true; + view->core().camera_zoom = 2; + view->data().show_lines = false; + view->data().set_face_based(false); + view->data().double_sided = true; + view->core().is_animating = true; + + // Plot the mesh + view->data().set_mesh(V, F); + view->data().set_colors(C); + + // Viewer is blocking, have to launch it in a separate thread + + // Need to get nBalls and positions every time + socket << "trick.var_pause() \n"; + socket << "trick.var_add(\"dyn.table.numBalls\")\n"; + positionRequest = ""; + templateString = "trick.var_add(\"dyn.table.balls[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.balls[%d][0].pos._y\")\ntrick.var_add(\"dyn.table.balls[%d][0].inPlay\")\n"; + for (int i = 0; i < numBalls; i++) { + char buf[128]; + sprintf(buf, templateString, i, i, i); + positionRequest += std::string(buf); + } + socket << positionRequest; + socket << "trick.var_ascii() \n"; + socket << "trick.var_cycle(0.010) \n"; + socket << "trick.var_unpause() \n"; + + view->launch(); } diff --git a/trick_sims/SIM_pool/models/graphics/java/src/PoolTableDisplay.java b/trick_sims/SIM_billiards/models/graphics/java/src/PoolTableDisplay.java similarity index 100% rename from trick_sims/SIM_pool/models/graphics/java/src/PoolTableDisplay.java rename to trick_sims/SIM_billiards/models/graphics/java/src/PoolTableDisplay.java diff --git a/trick_sims/SIM_pool/models/pool_table/include/ball.hh b/trick_sims/SIM_billiards/models/pool_table/include/ball.hh similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/include/ball.hh rename to trick_sims/SIM_billiards/models/pool_table/include/ball.hh diff --git a/trick_sims/SIM_pool/models/pool_table/include/bumper.hh b/trick_sims/SIM_billiards/models/pool_table/include/bumper.hh similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/include/bumper.hh rename to trick_sims/SIM_billiards/models/pool_table/include/bumper.hh diff --git a/trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh b/trick_sims/SIM_billiards/models/pool_table/include/common_geometry.hh similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/include/common_geometry.hh rename to trick_sims/SIM_billiards/models/pool_table/include/common_geometry.hh diff --git a/trick_sims/SIM_pool/models/pool_table/include/pocket.hh b/trick_sims/SIM_billiards/models/pool_table/include/pocket.hh similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/include/pocket.hh rename to trick_sims/SIM_billiards/models/pool_table/include/pocket.hh diff --git a/trick_sims/SIM_pool/models/pool_table/include/pool_table.hh b/trick_sims/SIM_billiards/models/pool_table/include/pool_table.hh similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/include/pool_table.hh rename to trick_sims/SIM_billiards/models/pool_table/include/pool_table.hh diff --git a/trick_sims/SIM_pool/models/pool_table/src/ball.cpp b/trick_sims/SIM_billiards/models/pool_table/src/ball.cpp similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/src/ball.cpp rename to trick_sims/SIM_billiards/models/pool_table/src/ball.cpp diff --git a/trick_sims/SIM_pool/models/pool_table/src/bumper.cpp b/trick_sims/SIM_billiards/models/pool_table/src/bumper.cpp similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/src/bumper.cpp rename to trick_sims/SIM_billiards/models/pool_table/src/bumper.cpp diff --git a/trick_sims/SIM_pool/models/pool_table/src/pocket.cpp b/trick_sims/SIM_billiards/models/pool_table/src/pocket.cpp similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/src/pocket.cpp rename to trick_sims/SIM_billiards/models/pool_table/src/pocket.cpp diff --git a/trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp b/trick_sims/SIM_billiards/models/pool_table/src/pool_table.cpp similarity index 100% rename from trick_sims/SIM_pool/models/pool_table/src/pool_table.cpp rename to trick_sims/SIM_billiards/models/pool_table/src/pool_table.cpp diff --git a/trick_sims/SIM_pool/S_overrides.mk b/trick_sims/SIM_pool/S_overrides.mk deleted file mode 100644 index 4fea3c64..00000000 --- a/trick_sims/SIM_pool/S_overrides.mk +++ /dev/null @@ -1,2 +0,0 @@ -TRICK_CFLAGS += -Imodels -I/usr/local/include/eigen3/ -TRICK_CXXFLAGS += -Imodels -I/usr/local/include/eigen3/ \ No newline at end of file diff --git a/trick_sims/SIM_pool/models/graphics/cpp/LICENSE b/trick_sims/SIM_pool/models/graphics/cpp/LICENSE deleted file mode 100644 index e87a115e..00000000 --- a/trick_sims/SIM_pool/models/graphics/cpp/LICENSE +++ /dev/null @@ -1,363 +0,0 @@ -Mozilla Public License, version 2.0 - -1. Definitions - -1.1. "Contributor" - - means each individual or legal entity that creates, contributes to the - creation of, or owns Covered Software. - -1.2. "Contributor Version" - - means the combination of the Contributions of others (if any) used by a - Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - - means Source Code Form to which the initial Contributor has attached the - notice in Exhibit A, the Executable Form of such Source Code Form, and - Modifications of such Source Code Form, in each case including portions - thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - a. that the initial Contributor has attached the notice described in - Exhibit B to the Covered Software; or - - b. that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the terms of - a Secondary License. - -1.6. "Executable Form" - - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - - means a work that combines Covered Software with other material, in a - separate file or files, that is not Covered Software. - -1.8. "License" - - means this document. - -1.9. "Licensable" - - means having the right to grant, to the maximum extent possible, whether - at the time of the initial grant or subsequently, any and all of the - rights conveyed by this License. - -1.10. "Modifications" - - means any of the following: - - a. any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered Software; or - - b. any new file in Source Code Form that contains any Covered Software. - -1.11. "Patent Claims" of a Contributor - - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the License, - by the making, using, selling, offering for sale, having made, import, - or transfer of either its Contributions or its Contributor Version. - -1.12. "Secondary License" - - means either the GNU General Public License, Version 2.0, the GNU Lesser - General Public License, Version 2.1, the GNU Affero General Public - License, Version 3.0, or any later versions of those licenses. - -1.13. "Source Code Form" - - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that controls, is - controlled by, or is under common control with You. For purposes of this - definition, "control" means (a) the power, direct or indirect, to cause - the direction or management of such entity, whether by contract or - otherwise, or (b) ownership of more than fifty percent (50%) of the - outstanding shares or beneficial ownership of such entity. - - -2. License Grants and Conditions - -2.1. Grants - - Each Contributor hereby grants You a world-wide, royalty-free, - non-exclusive license: - - a. under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - - b. under Patent Claims of such Contributor to make, use, sell, offer for - sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - - The licenses granted in Section 2.1 with respect to any Contribution - become effective for each Contribution on the date the Contributor first - distributes such Contribution. - -2.3. Limitations on Grant Scope - - The licenses granted in this Section 2 are the only rights granted under - this License. No additional rights or licenses will be implied from the - distribution or licensing of Covered Software under this License. - Notwithstanding Section 2.1(b) above, no patent license is granted by a - Contributor: - - a. for any code that a Contributor has removed from Covered Software; or - - b. for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - - c. under Patent Claims infringed by Covered Software in the absence of - its Contributions. - - This License does not grant any rights in the trademarks, service marks, - or logos of any Contributor (except as may be necessary to comply with - the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - - No Contributor makes additional grants as a result of Your choice to - distribute the Covered Software under a subsequent version of this - License (see Section 10.2) or under the terms of a Secondary License (if - permitted under the terms of Section 3.3). - -2.5. Representation - - Each Contributor represents that the Contributor believes its - Contributions are its original creation(s) or it has sufficient rights to - grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - - This License is not intended to limit any rights You have under - applicable copyright doctrines of fair use, fair dealing, or other - equivalents. - -2.7. Conditions - - Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in - Section 2.1. - - -3. Responsibilities - -3.1. Distribution of Source Form - - All distribution of Covered Software in Source Code Form, including any - Modifications that You create or to which You contribute, must be under - the terms of this License. You must inform recipients that the Source - Code Form of the Covered Software is governed by the terms of this - License, and how they can obtain a copy of this License. You may not - attempt to alter or restrict the recipients' rights in the Source Code - Form. - -3.2. Distribution of Executable Form - - If You distribute Covered Software in Executable Form then: - - a. such Covered Software must also be made available in Source Code Form, - as described in Section 3.1, and You must inform recipients of the - Executable Form how they can obtain a copy of such Source Code Form by - reasonable means in a timely manner, at a charge no more than the cost - of distribution to the recipient; and - - b. You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter the - recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - - You may create and distribute a Larger Work under terms of Your choice, - provided that You also comply with the requirements of this License for - the Covered Software. If the Larger Work is a combination of Covered - Software with a work governed by one or more Secondary Licenses, and the - Covered Software is not Incompatible With Secondary Licenses, this - License permits You to additionally distribute such Covered Software - under the terms of such Secondary License(s), so that the recipient of - the Larger Work may, at their option, further distribute the Covered - Software under the terms of either this License or such Secondary - License(s). - -3.4. Notices - - You may not remove or alter the substance of any license notices - (including copyright notices, patent notices, disclaimers of warranty, or - limitations of liability) contained within the Source Code Form of the - Covered Software, except that You may alter any license notices to the - extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - - You may choose to offer, and to charge a fee for, warranty, support, - indemnity or liability obligations to one or more recipients of Covered - Software. However, You may do so only on Your own behalf, and not on - behalf of any Contributor. You must make it absolutely clear that any - such warranty, support, indemnity, or liability obligation is offered by - You alone, and You hereby agree to indemnify every Contributor for any - liability incurred by such Contributor as a result of warranty, support, - indemnity or liability terms You offer. You may include additional - disclaimers of warranty and limitations of liability specific to any - jurisdiction. - -4. Inability to Comply Due to Statute or Regulation - - If it is impossible for You to comply with any of the terms of this License - with respect to some or all of the Covered Software due to statute, - judicial order, or regulation then You must: (a) comply with the terms of - this License to the maximum extent possible; and (b) describe the - limitations and the code they affect. Such description must be placed in a - text file included with all distributions of the Covered Software under - this License. Except to the extent prohibited by statute or regulation, - such description must be sufficiently detailed for a recipient of ordinary - skill to be able to understand it. - -5. Termination - -5.1. The rights granted under this License will terminate automatically if You - fail to comply with any of its terms. However, if You become compliant, - then the rights granted under this License from a particular Contributor - are reinstated (a) provisionally, unless and until such Contributor - explicitly and finally terminates Your grants, and (b) on an ongoing - basis, if such Contributor fails to notify You of the non-compliance by - some reasonable means prior to 60 days after You have come back into - compliance. Moreover, Your grants from a particular Contributor are - reinstated on an ongoing basis if such Contributor notifies You of the - non-compliance by some reasonable means, this is the first time You have - received notice of non-compliance with this License from such - Contributor, and You become compliant prior to 30 days after Your receipt - of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent - infringement claim (excluding declaratory judgment actions, - counter-claims, and cross-claims) alleging that a Contributor Version - directly or indirectly infringes any patent, then the rights granted to - You by any and all Contributors for the Covered Software under Section - 2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user - license agreements (excluding distributors and resellers) which have been - validly granted by You or Your distributors under this License prior to - termination shall survive termination. - -6. Disclaimer of Warranty - - Covered Software is provided under this License on an "as is" basis, - without warranty of any kind, either expressed, implied, or statutory, - including, without limitation, warranties that the Covered Software is free - of defects, merchantable, fit for a particular purpose or non-infringing. - The entire risk as to the quality and performance of the Covered Software - is with You. Should any Covered Software prove defective in any respect, - You (not any Contributor) assume the cost of any necessary servicing, - repair, or correction. This disclaimer of warranty constitutes an essential - part of this License. No use of any Covered Software is authorized under - this License except under this disclaimer. - -7. Limitation of Liability - - Under no circumstances and under no legal theory, whether tort (including - negligence), contract, or otherwise, shall any Contributor, or anyone who - distributes Covered Software as permitted above, be liable to You for any - direct, indirect, special, incidental, or consequential damages of any - character including, without limitation, damages for lost profits, loss of - goodwill, work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses, even if such party shall have been - informed of the possibility of such damages. This limitation of liability - shall not apply to liability for death or personal injury resulting from - such party's negligence to the extent applicable law prohibits such - limitation. Some jurisdictions do not allow the exclusion or limitation of - incidental or consequential damages, so this exclusion and limitation may - not apply to You. - -8. Litigation - - Any litigation relating to this License may be brought only in the courts - of a jurisdiction where the defendant maintains its principal place of - business and such litigation shall be governed by laws of that - jurisdiction, without reference to its conflict-of-law provisions. Nothing - in this Section shall prevent a party's ability to bring cross-claims or - counter-claims. - -9. Miscellaneous - - This License represents the complete agreement concerning the subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. Any law or regulation which provides that - the language of a contract shall be construed against the drafter shall not - be used to construe this License against a Contributor. - - -10. Versions of the License - -10.1. New Versions - - Mozilla Foundation is the license steward. Except as provided in Section - 10.3, no one other than the license steward has the right to modify or - publish new versions of this License. Each version will be given a - distinguishing version number. - -10.2. Effect of New Versions - - You may distribute the Covered Software under the terms of the version - of the License under which You originally received the Covered Software, - or under the terms of any subsequent version published by the license - steward. - -10.3. Modified Versions - - If you create software not governed by this License, and you want to - create a new license for such software, you may create and use a - modified version of this License if you rename the license and remove - any references to the name of the license steward (except to note that - such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary - Licenses If You choose to distribute Source Code Form that is - Incompatible With Secondary Licenses under the terms of this version of - the License, the notice described in Exhibit B of this License must be - attached. - -Exhibit A - Source Code Form License Notice - - This Source Code Form is subject to the - terms of the Mozilla Public License, v. - 2.0. If a copy of the MPL was not - distributed with this file, You can - obtain one at - http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular file, -then You may include the notice in a location (such as a LICENSE file in a -relevant directory) where a recipient would be likely to look for such a -notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice - - This Source Code Form is "Incompatible - With Secondary Licenses", as defined by - the Mozilla Public License, v. 2.0. - diff --git a/trick_sims/SIM_pool/models/graphics/java/Makefile b/trick_sims/SIM_pool/models/graphics/java/Makefile deleted file mode 100644 index 55e5e663..00000000 --- a/trick_sims/SIM_pool/models/graphics/java/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -SHELL = /bin/sh - -PROJECT_NAME = PoolTableDisplay -SRC_DIR = src -BUILD_DIR = build -CLASSES_DIR = $(BUILD_DIR)/classes -JAR_DIR = dist -MAIN_CLASS = PoolTableDisplay - -all: jar - -clean: - rm -rf $(BUILD_DIR) - rm -f manifest - -spotless: clean - rm -rf dist - -$(CLASSES_DIR): - @ mkdir -p $(CLASSES_DIR) - -compile: | $(CLASSES_DIR) - javac -sourcepath $(SRC_DIR) -d $(CLASSES_DIR) $(SRC_DIR)/PoolTableDisplay.java - -manifest: - @ echo "Main-Class: $(MAIN_CLASS)" > $@ - -$(JAR_DIR): - @ mkdir -p $(JAR_DIR) - -jar: compile manifest | $(JAR_DIR) - jar cvfm $(JAR_DIR)/$(PROJECT_NAME).jar manifest -C $(CLASSES_DIR) . - @ echo "-------------------------------------------------------------------------------" - @ echo " BUILD COMPLETE" - @ echo "The Java jar file (the Java Executable) is located at: $(JAR_DIR)/$(PROJECT_NAME).jar" - @ echo "-------------------------------------------------------------------------------" diff --git a/trick_sims/SIM_pool/models/graphics/java/dist/PoolTableDisplay.jar b/trick_sims/SIM_pool/models/graphics/java/dist/PoolTableDisplay.jar deleted file mode 100644 index 9de0aeaa35fddc5f4ed8ba97f4cca20db4ffc6e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6493 zcmaKw1yCGao3?QcKDbNJVQ>vj7<6!l;2zvP!EG4aJrLa8gA?2W1ed`rKtdpaz@O~y z|Gn?NyWiejU3I$p+})?Tp1S)vm%1`C3IG8E0|P(u7uW9Q4)(rSP<6mZow5lRlPD>jE0e^)|PN*nzg643PIoYQtXPPv* zKk;qvyMvSD z*iiNk55t+5_e(mhNJ#gXbg$j7+!6m{ecVn(xF)~f{^$Jn>%;neSH|4Y5oGCT?%`pb z9Hh3O4j3tzFj<}IBnHT#6Un)1e>QtpuHp)fjq@TCrH_AHaEfPR<5-CsA8oXv=b6LX zj^fStXc{8RS>Nh7+~2&<4Y)tOy)8fxtWOyMq-$mlA%jC2Cb`M*$T^@osKWqFR-PrY zQz$Q-z%uMgzn=&-2dU!XvY7^jVAH`rVGB12kn$q|#u%0%i( z@_Fz4=VCWd;#mjv8-;+%;L%gu2gFhK;AL7z>>=!%eMa7vdN`&P=Z8~)$TH5lWltkS zxlc+j$TCK-jI&w?&Fjv4u0>w_0zE@E=s3KcLAve!sKme5P-u?3EU-S{gd;Knw4@N? zH--;ECNZoYiEDS*Z1}}2#cUmU*rB9QCljJAuduh->B`7$_Z6PAqF1Y)@-gt`n^MIo zky2}FDvyer{D;p)ih4!eH5WPYHfbl{@gPmo-piFsn`ZeY4zZg$A>;FQrH!hMp*l*+ zP6|1cYbyTcP|KVNqGo=#SctEu!fwiU=9yXj$LX-Fnm)8waZ0)1ec#PaPVO6mK;x)yW zvyLp}JC*0G1iY=q;E$`Y{8X4K&qlA*^_OG&3Xv$38)jEi@0L6CKUFQb!#V$mh=6eY zyR`p()e!!!8d(=-Pj?qbb#rIy|EeA@9c3*_dHhE-OkG2gMASyiZK>!yjH|>Hvt5MX zkOoc$DKMG5Fdp7K1&MB#jN#SC=TX}4ud$8O#_2nLB&KLxX%g%0CmRJz1%oeo+vmjz zW1i{1KhHmYY&|^9&tLgq^6L@(t(&&zH@GI53mh4T_5@>_F^?He0gB=-Dn_Mk`ihkx zfoYz61BkPae1)?^(N!1aDmx09JjxvAB=Hb+hU3O{nU`?a?PyVNv;$|T==&>QjQ_H-o^cmU{wlz? z^K9gOE~EZL^S=J3K*)Dr+4drxknL(CZdB3vbW4zK+^LP9TB99fIkw1LPHLue(S5Vq$!$`9#LH>F%UVaN zRg4V&7HxAd2>FXyB7XewWc$6n-?pwexSGQE?F@>jnxZ~kGx!HCaIsJX`O9u-h=3Si zww;iD z#@Dtbma9l}%hy$uGX;is%{o^qQOj{uwhZ{uUtyj?XXJH^_Bj(;Y~B$ZrFtB7QZC5V zHb#lCbvjl?OD`AMKx;`x> zxGAs$cG9u{MG|*$Rx|W~4`si)DoTmb;Bp!tw>j5WC(!ytaiFTRnr0cHZ@9(#b;vqi zspH|v4`)tvrF+jCPv?;m4PJQ=fA1-UTEvW1j#HioFWG128ya8)l>!MfNDSDsCcVBj ziwm1q3emCbbjat;`YG8tJQ2<~q9c2{+{h;47RIR2Z$v=?-=_BJFNaPq-ZR1Z?}?_Y z5Wf>f;m7P8+9`EQ(PdyzF&q_VF>`j5dq>ZDgcE(3gUi}dJKdO`-m<4#p)FH-@o(;j zV+kbzV3D+1T6}C3l!AAbsaf;Q&xHw~sEekwI{}yHLQ>&+9dVRg)F7u9t z(`ycg#q`$I(IXX8)w1tl=TPWdEpS=Ei}U60Z;lFP@mdZY8SV;$KZ@Mu2V97J_}aO$ z_4sRF;_dm}WQ3?^$M#?_0eW@K&el_XtIn&gi%?X0mKeNP;UTfJP~<4T#i>$_rZ5f88>3Wh6#cjdVdhPt*M*7TlNPme zL&LEd)eQnt`(alN%ofJspuTk2ST=(c1|}8q3~Wu`JBY zWE;eJtNGbo@yKlT8+d|Cv6ZvJQgbuH)k|O68ilQ1y~RZp4(cB=MV*LIF;B&O6M-lI5vyyZva!|J=z zi_up}%WX)3ALz@#pY%H$ibYaox1lUAj*=@`P^t~&nmU}NUh?WuA`Y_|Eb{g5`Lb7} zP$JeU@V*{O1*M7m`KKsOp{y5`YGsS{#7`;Oy;K?iot54vlqDvpD%thv#>RLs?Z|Zx z&2JDslxLV-F7kiW`oS)ZQEr_6oz35vhZTk#&do_5XOHQ!12B5Qx#P6iJGkcK1|A5o zOTUyzaXMq}+XLD#<;sEw{2bF<5os0LKkgBx^wY`~|C!dV8l_A-K zWVg-gsyVXXHkKg?PN)bp-FJ3&`qERx8sIxbnCmR~Gh21CXu9k>82Oj;iGJSPpmo5D zT4gM9&K|F_f+zAqdMM_-hA|x6MQajwvM-;Q+==Y94m;6T2jySrL2G;(RncEQyF4CI5ka`&$DWEo>y7xKkZd4dJL-tB&z*{Z>KG=|m2 z!|Jta-7~CY4#yGI#fKY_NHmIu#Fu^9fkwf!+#P*`%Im6C;BFPq7w4e4O{MO|4;cMl zUP*<#!Avh-J8A8xiL0NH{ie4SW=W%}{2FqDqy6(spFtCfe6vl`W(Ikj>(~CRHi+bl zXy-ybYO?1!maZ~`qRlPB)Nh; zYi4ZhEy-2lcGEAa=|PtS!+O3GlgqHcR;h&KJ}woLmWYeBXg!^PYC+CTP0PlmpALq; z)!3|^J%Jle%(p=4>>|k)55S&Zs3Mojbn2|~v3v4}>CK0Ccb9}p?>t!ZWLFs0H;fL| zC8A2~LRj(?LcgA+4|Nx1hgmMfK%`cqimdcs`*4B)t94 z;(gR1O3elVA&lMiz*_RSDZ!ZL8vk9hU-}lUV>>RF(KP4s(~i)m{a zp>_Df%L?0+x&3WSzi_`Y84cjw5lLn*es%xyO{!#*;3_uSo8bN$!VmVtk(dOv1l7i1 z{kn)6=br{iI0m=-x4CRx?DuMC2UyCc*&tv8l;P z4asXrArd1Zrd`J#PBZ7olS({De82xLG5vc#a?xQ+WXp*7wUJrz?M1vznF%YHKjZ!v8DqpKQHOA9ujn-YY!&okv(EA0r>_r8f zbRC}S zQr72TY#2~_k!vMtGNhc_rjsMA=kGU#WpC2Ip3AY&O!EKi3fP5?`2M1w=00O7&H9A zvl}Ml=?DmNAMofFH}Pq1 zu4GhuqXY@a8yKg1`n?x432fvWU>Kom2)F-Cpm*}-5-sO&`O36gj&c)1mOz(WDC^p{K1LT@jR+W?TBjYW%v!4!YM^M}F5ULfPjvC6Do$_Phw{2eC zVLq6|v~wZ1m%X9pd3kgZOnG8VO|+IJY>X*_sK@fH+}7{?+&Ld4g%9?HN9+aX8+^se z{6>Tq?myot$lbWTN^|^$czxYMGia0S7vOcBRNbT{R=)dL8B2Q&Q+l!=tTu;AEHP~3 z7VOQupP2{8(4HO?a2w?uN6p95_)N@fALl{}=yur2VbRyi!OU;VehuuUV9Xs6EGz9l zQ8Z9geVx&kDnc;@VoY(RAk^yF7C*6}enkHOb(jLjC6@gI^e{TzjtL6gncZ zxnENm;Cg2#?NMYmjSPx_qe)<9^mOPfytN-(x7?Rn1@mED1XKl-LH46oPoaLax-mlH zUyKzIxeMCvFIir?JMzxwxc8t5(X3P6O>&YmCgrDcbOdy_Ujrp1nuMl7q-rW%&Kl1b zQ_agDo5510m{(x-;pKdFo#<`4Sp`HJ`ElV436vVqr6YkX8j;LIwq_^qb)M6Es+7F1 z-p_fDA(JClM*wk>uy$tbQ5eWdzn`PhQGk%VsYTgSg$PQC8GUrp3G5m*t6%{nu4>Tr zMSSz!csKM@)NqJ{yFr-WkX(o*cKvh01yReAh zbhI7$hW);5V>p))KYqKEBBZ9OW10hX@cFzD3y^--55IEUtg%(v?cfzfh@Cf4n0w2D zEn;|vNxG0@;9Hy;!F4hr6F+Wn=flU-zuiE^o`9U_M)|Owpf-#zvmQG$l9w446uk{9 z-9yjN!PcR^J6McVZ?fa~%-N+z!W z*)$;k%*yrvxOm<_(EuB{3OBN&VVpd06yF-l`I2dTi z+t1>nzR7>GNRDpa&6wFz3%P~fX4I{BKJIXM56Zuc(jdcO^k8%<%CRT?;^9%;Y`n_$ zDl9UoBgrGt1!?Lf(cxB;@kl;=;!%wB1L>W2ceF)!IN*(Y$rW$w70amiBZhFn2Sm_; z#3P||57%MsJyv%_)uo`f`&xkbrktctvyhwU7ka#W2J-u{IMT5wy|I~%T|jGfW-P1J zLPfY!uC%#HnpPrvd1|FS3FkXr(Y!-1{v5&C9f0i_iD>Nf`{HAy*ja0BMWM?;KAkyG zwsO}o*{ba5yhOG<-fWMZ9ua3DQ1P8#vJ&=tk!A(a{6jfymOPcX_xqm7pOhv_ z_$o|R6>#SLKC!+UJI!mB>5R-Sd3_8x_7~MzmE#nSVr-%=GRKY9>$gG0^hP|hO4CjX;TsXX-N^000{pb>HmLT{|D*+cm0de{{j5} zwEi8X{{i}cN&NTlU)I0j{eM2;?^yK@a{o&kzlVPT_<#ET4p06-*S|!B{J$aCfBOI4 yqyIrHf5{sCe*l+%n*aVa|FrRcNdo8JHTCMssJ}T60s`9a!}~W!o+JHp_5T29KzCdK diff --git a/trick_sims/SIM_pool/models/graphics/java/manifest b/trick_sims/SIM_pool/models/graphics/java/manifest deleted file mode 100644 index 5c286ff4..00000000 --- a/trick_sims/SIM_pool/models/graphics/java/manifest +++ /dev/null @@ -1 +0,0 @@ -Main-Class: PoolTableDisplay diff --git a/trick_sims/SIM_pool/models/graphics/libigl-example-project b/trick_sims/SIM_pool/models/graphics/libigl-example-project deleted file mode 160000 index a9b087f9..00000000 --- a/trick_sims/SIM_pool/models/graphics/libigl-example-project +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a9b087f9d8e9cce32ab68705128164cd5d4ad81a From cdc1f240d81e6dbc2ac2803b2d4287ba167ed7d5 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 19 Jul 2022 16:49:12 -0500 Subject: [PATCH 016/162] Add gtest instructions for MacOS to install guide --- docs/documentation/install_guide/Install-Guide.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index 1afbf4bc..290753b8 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -168,6 +168,7 @@ export PYTHON_VERSION=3 proceed to [Install Trick](#install) section of the install guide +--- ### macOS Monterey, Big Sur, Catalina #### These instructions are for Intel-based macs. For the latest Apple silicon (M1) instructions see this issue: https://github.com/nasa/trick/issues/1283 @@ -214,6 +215,17 @@ e.g. ./configure --with-llvm=/Users/trickguy/llvm13 --with-udunits=/usr/local/Cellar/udunits/2.2.28 ``` +OPTIONAL: Trick uses google test (gtest) version 1.8 for unit testing. To install gtest: +``` +brew install wget +wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz +tar xzvf release-1.8.0.tar.gz +cd googletest-release-1.8.0/googletest +cmake . +make +make install +``` + proceed to [Install Trick](#install) section of the install guide --- From 3cd2a1606f12cf9bcbecde754d2181ddbbb363fc Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 20 Jul 2022 11:38:42 -0500 Subject: [PATCH 017/162] 1308 gcc ver (#1309) * add correct GCC verno to ICG for llvm >= 10 Co-authored-by: Jacqueline Deans Co-authored-by: Deans --- autoconf/configure.ac | 2 +- configure | 7209 +++++++++++------ share/trick/makefiles/config_user.mk.in | 1 + .../codegen/Interface_Code_Gen/Utilities.cpp | 37 + .../codegen/Interface_Code_Gen/Utilities.hh | 1 + .../codegen/Interface_Code_Gen/main.cpp | 8 +- .../codegen/Interface_Code_Gen/makefile | 1 + 7 files changed, 4680 insertions(+), 2579 deletions(-) diff --git a/autoconf/configure.ac b/autoconf/configure.ac index b5cee7f4..83be0027 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -245,7 +245,7 @@ AC_DEFUN([AX_GCC_VERSION], [ AS_IF([test "x$GCC" = "xyes"],[ AS_IF([test "x$ax_gcc_version_option" != "xno"],[ AC_CACHE_CHECK([gcc version],[ax_cv_gcc_version],[ - ax_cv_gcc_version="`$CC -dumpversion`" + ax_cv_gcc_version="`$CC -dumpfullversion -dumpversion`" AS_IF([test "x$ax_cv_gcc_version" = "x"],[ ax_cv_gcc_version="" ]) diff --git a/configure b/configure index dcea12e7..e0d8912e 100755 --- a/configure +++ b/configure @@ -1,9 +1,10 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Trick 17+. +# Generated by GNU Autoconf 2.71 for Trick 17+. # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation @@ -14,14 +15,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -31,46 +34,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -79,13 +82,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -94,8 +90,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -107,30 +107,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -152,20 +132,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -185,42 +167,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -228,14 +221,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -253,18 +253,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." @@ -291,6 +292,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -308,6 +310,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -322,7 +332,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -331,7 +341,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -370,12 +380,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -387,18 +398,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -410,9 +430,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -439,7 +459,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -483,7 +503,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -497,6 +517,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -510,6 +534,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -584,40 +615,36 @@ PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" +ac_header_cxx_list= ac_subst_vars='LTLIBOBJS LIBOBJS USE_ER7_UTILS @@ -637,8 +664,10 @@ CLANG LLVM_CONFIG PTHREAD_CFLAGS PTHREAD_LIBS +PTHREAD_CXX PTHREAD_CC ax_pthread_config +EGREP CPP MVN JAVA_CC_OPTS @@ -658,6 +687,7 @@ PYTHON PYTHON_VERSION ZIP PERL_VERSION +GREP SED PERL CURL @@ -668,9 +698,6 @@ LEX LD TEE GCC_VERSION -ac_ct_CC -CFLAGS -CC AWK TRICK_OFFLINE TRICK_FORCE_32BIT @@ -678,17 +705,18 @@ LIBXML X_LIB_DIR USE_X_WINDOWS MOTIF_HOME -EGREP -GREP CXXCPP -OBJEXT -EXEEXT +XMKMF ac_ct_CXX -CPPFLAGS -LDFLAGS CXXFLAGS CXX -XMKMF +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC XCRUN host_os host_vendor @@ -759,16 +787,16 @@ enable_er7utils ac_precious_vars='build_alias host_alias target_alias -XMKMF -CXX -CXXFLAGS +CC +CFLAGS LDFLAGS LIBS CPPFLAGS +CXX +CXXFLAGS CCC +XMKMF CXXCPP -CC -CFLAGS PYTHON_VERSION JAVA_CC JAVA_CC_FLAGS @@ -841,8 +869,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -883,9 +909,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -909,9 +935,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1122,9 +1148,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1138,9 +1164,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1184,9 +1210,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1202,7 +1228,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1266,7 +1292,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1429,17 +1455,17 @@ Optional Packages: --with-civetweb[=DIR] CIVETWEB root directory Some influential environment variables: - XMKMF Path to xmkmf, Makefile generator for X Window System - CXX C++ compiler command - CXXFLAGS C++ compiler flags + CC C compiler command + CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + XMKMF Path to xmkmf, Makefile generator for X Window System CXXCPP C++ preprocessor - CC C compiler command - CFLAGS C compiler flags PYTHON_VERSION Adds suffix to python search e.g. PYTHON_VERSION=3 will look for python3 @@ -1467,9 +1493,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1497,7 +1523,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1505,7 +1532,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1515,9 +1542,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Trick configure 17+ -generated by GNU Autoconf 2.69 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1528,20 +1555,20 @@ fi ## Autoconf initialization. ## ## ------------------------ ## -# ac_fn_cxx_try_compile LINENO -# ---------------------------- +# ac_fn_c_try_compile LINENO +# -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () +ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1549,14 +1576,54 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest.beam + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1566,57 +1633,20 @@ fi } # ac_fn_cxx_try_compile -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1624,17 +1654,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1649,134 +1680,43 @@ fi } # ac_fn_cxx_try_link -# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES -# --------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_cxx_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_cxx_check_header_mongrel - -# ac_fn_cxx_try_run LINENO +# ac_fn_cxx_try_cpp LINENO # ------------------------ -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_cxx_try_run () +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" + if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + } +then : ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=$ac_status + ac_retval=1 fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval -} # ac_fn_cxx_try_run +} # ac_fn_cxx_try_cpp # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- @@ -1785,82 +1725,46 @@ fi ac_fn_cxx_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_compile -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1868,17 +1772,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1905,7 +1810,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1913,14 +1818,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1930,100 +1836,66 @@ fi } # ac_fn_c_try_cpp -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no +if ac_fn_c_try_compile "$LINENO" +then : + eval "$3=yes" +else $as_nop + eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_header_mongrel +} # ac_fn_c_check_header_compile +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Trick $as_me 17+, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2056,8 +1928,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2092,7 +1968,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2127,11 +2003,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2142,8 +2020,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2167,7 +2045,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2175,14 +2053,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2190,15 +2068,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2206,8 +2084,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2221,63 +2099,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2287,19 +2150,650 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif + +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' + +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' + +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif + +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str = ""; + int number = 0; + float fnumber = 0; + + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + + return *str && number && fnumber; +} +' + +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' + +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif + +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; + +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); + +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +# Test code for whether the C++ compiler supports C++98 (global declarations) +ac_cxx_conftest_cxx98_globals=' +// Does the compiler advertise C++98 conformance? +#if !defined __cplusplus || __cplusplus < 199711L +# error "Compiler does not advertise C++98 conformance" +#endif + +// These inclusions are to reject old compilers that +// lack the unsuffixed header files. +#include +#include + +// and are *not* freestanding headers in C++98. +extern void assert (int); +namespace std { + extern int strcmp (const char *, const char *); +} + +// Namespaces, exceptions, and templates were all added after "C++ 2.0". +using std::exception; +using std::strcmp; + +namespace { + +void test_exception_syntax() +{ + try { + throw "test"; + } catch (const char *s) { + // Extra parentheses suppress a warning when building autoconf itself, + // due to lint rules shared with more typical C programs. + assert (!(strcmp) (s, "test")); + } +} + +template struct test_template +{ + T const val; + explicit test_template(T t) : val(t) {} + template T add(U u) { return static_cast(u) + val; } +}; + +} // anonymous namespace +' + +# Test code for whether the C++ compiler supports C++98 (body of main) +ac_cxx_conftest_cxx98_main=' + assert (argc); + assert (! argv[0]); +{ + test_exception_syntax (); + test_template tt (2.0); + assert (tt.add (4) == 6.0); + assert (true && !false); +} +' + +# Test code for whether the C++ compiler supports C++11 (global declarations) +ac_cxx_conftest_cxx11_globals=' +// Does the compiler advertise C++ 2011 conformance? +#if !defined __cplusplus || __cplusplus < 201103L +# error "Compiler does not advertise C++11 conformance" +#endif + +namespace cxx11test +{ + constexpr int get_val() { return 20; } + + struct testinit + { + int i; + double d; + }; + + class delegate + { + public: + delegate(int n) : n(n) {} + delegate(): delegate(2354) {} + + virtual int getval() { return this->n; }; + protected: + int n; + }; + + class overridden : public delegate + { + public: + overridden(int n): delegate(n) {} + virtual int getval() override final { return this->n * 2; } + }; + + class nocopy + { + public: + nocopy(int i): i(i) {} + nocopy() = default; + nocopy(const nocopy&) = delete; + nocopy & operator=(const nocopy&) = delete; + private: + int i; + }; + + // for testing lambda expressions + template Ret eval(Fn f, Ret v) + { + return f(v); + } + + // for testing variadic templates and trailing return types + template auto sum(V first) -> V + { + return first; + } + template auto sum(V first, Args... rest) -> V + { + return first + sum(rest...); + } +} +' + +# Test code for whether the C++ compiler supports C++11 (body of main) +ac_cxx_conftest_cxx11_main=' +{ + // Test auto and decltype + auto a1 = 6538; + auto a2 = 48573953.4; + auto a3 = "String literal"; + + int total = 0; + for (auto i = a3; *i; ++i) { total += *i; } + + decltype(a2) a4 = 34895.034; +} +{ + // Test constexpr + short sa[cxx11test::get_val()] = { 0 }; +} +{ + // Test initializer lists + cxx11test::testinit il = { 4323, 435234.23544 }; +} +{ + // Test range-based for + int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, + 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; + for (auto &x : array) { x += 23; } +} +{ + // Test lambda expressions + using cxx11test::eval; + assert (eval ([](int x) { return x*2; }, 21) == 42); + double d = 2.0; + assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); + assert (d == 5.0); + assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); + assert (d == 5.0); +} +{ + // Test use of variadic templates + using cxx11test::sum; + auto a = sum(1); + auto b = sum(1, 2); + auto c = sum(1.0, 2.0, 3.0); +} +{ + // Test constructor delegation + cxx11test::delegate d1; + cxx11test::delegate d2(); + cxx11test::delegate d3(45); +} +{ + // Test override and final + cxx11test::overridden o1(55464); +} +{ + // Test nullptr + char *c = nullptr; +} +{ + // Test template brackets + test_template<::test_template> v(test_template(12)); +} +{ + // Unicode literals + char const *utf8 = u8"UTF-8 string \u2500"; + char16_t const *utf16 = u"UTF-8 string \u2500"; + char32_t const *utf32 = U"UTF-32 string \u2500"; +} +' + +# Test code for whether the C compiler supports C++11 (complete). +ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} +${ac_cxx_conftest_cxx11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + ${ac_cxx_conftest_cxx11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C++98 (complete). +ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_cxx_conftest_cxx98_main} + return ok; +} +" + +as_fn_append ac_header_cxx_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_cxx_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_cxx_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_cxx_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_cxx_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_cxx_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_cxx_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_cxx_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_cxx_list " unistd.h unistd_h HAVE_UNISTD_H" + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/autoconf" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2310,12 +2804,12 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -2324,24 +2818,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2351,11 +2845,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi done if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2375,33 +2870,6 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -ac_aux_dir= -for ac_dir in autoconf "$srcdir"/autoconf; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in autoconf \"$srcdir\"/autoconf" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. @@ -2436,26 +2904,29 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -2474,21 +2945,22 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -2519,15 +2991,17 @@ case "${host_os}" in esac -if test "$ON_MAC" = "yes"; then : +if test "$ON_MAC" = "yes" +then : # Extract the first word of "xcrun", so it can be a program name with args. set dummy xcrun; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XCRUN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_XCRUN+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $XCRUN in [\\/]* | ?:[\\/]*) ac_cv_path_XCRUN="$XCRUN" # Let the user override the test with a path. @@ -2537,11 +3011,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_XCRUN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_XCRUN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2554,21 +3032,22 @@ esac fi XCRUN=$ac_cv_path_XCRUN if test -n "$XCRUN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XCRUN" >&5 -$as_echo "$XCRUN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XCRUN" >&5 +printf "%s\n" "$XCRUN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - if test "$ac_cv_path_XCRUN" = "norun"; then : + if test "$ac_cv_path_XCRUN" = "norun" +then : as_fn_error $? "could not find xcrun - install Xcode command line tools" "$LINENO" 5 fi XCODE_SDK_PATH=`$XCRUN --show-sdk-path` XTRAINCPATHS="-I/usr/X11/include -I${XCODE_SDK_PATH}/usr/include -I${XCODE_SDK_PATH}/usr/include/libxml2" -else +else $as_nop XTRAINCPATHS="-I/usr/include/libxml2/" @@ -2576,37 +3055,45 @@ fi CFLAGS="$CFLAGS $XTRAINCPATHS" CPPFLAGS="$CPPFLAGS $XTRAINCPATHS" -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2615,42 +3102,43 @@ IFS=$as_save_IFS fi fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - test -n "$CXX" && break - done fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2659,46 +3147,372 @@ IFS=$as_save_IFS fi fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" + if test "x$ac_ct_CC" = x; then + CC="" else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - CXX=$ac_ct_CXX + CC=$ac_ct_CC fi +else + CC="$ac_cv_prog_CC" fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + fi fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2708,7 +3522,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -2716,7 +3530,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -2728,9 +3542,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 -$as_echo_n "checking whether the C++ compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -2751,11 +3565,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -2772,7 +3587,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -2788,44 +3603,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C++ compiler cannot create executables +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 -$as_echo_n "checking for C++ compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -2839,15 +3656,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -2856,7 +3673,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -2868,8 +3685,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -2877,10 +3694,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -2888,39 +3705,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C++ compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -2934,11 +3752,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -2947,31 +3766,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -2981,29 +3801,454 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+y} +ac_save_CFLAGS=$CFLAGS +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +else $as_nop + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + + + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +printf %s "checking whether the compiler supports GNU C++... " >&6; } +if test ${ac_cv_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO" +then : + ac_compiler_gnu=yes +else $as_nop + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi -ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no @@ -3012,57 +4257,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes -else +else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : -else +else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then @@ -3077,6 +4325,100 @@ else CXXFLAGS= fi fi +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_98+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx98" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx98" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 +fi +fi + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -3089,36 +4431,32 @@ ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +printf %s "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" + if test ${ac_cv_prog_CXXCPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CXX needs to be expanded + for CXXCPP in "$CXX -E" cpp /lib/cpp do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : +if ac_fn_cxx_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -3130,10 +4468,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : +if ac_fn_cxx_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -3143,7 +4482,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : break fi @@ -3155,29 +4495,24 @@ fi else ac_cv_prog_CXXCPP=$CXXCPP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +printf "%s\n" "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : +if ac_fn_cxx_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -3189,10 +4524,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : +if ac_fn_cxx_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -3202,11 +4538,12 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi @@ -3218,12 +4555,13 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 -$as_echo_n "checking for X... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X" >&5 +printf %s "checking for X... " >&6; } # Check whether --with-x was given. -if test "${with_x+set}" = set; then : +if test ${with_x+y} +then : withval=$with_x; fi @@ -3234,12 +4572,41 @@ if test "x$with_x" = xno; then else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( - *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : - $as_echo_n "(cached) " >&6 -else + *,NONE | NONE,*) if test ${ac_cv_have_x+y} +then : + printf %s "(cached) " >&6 +else $as_nop # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir +ac_x_includes=no +ac_x_libraries=no +# Do we need to do anything special at all? +ac_save_LIBS=$LIBS +LIBS="-lX11 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main (void) +{ +XrmInitialize () + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO" +then : + # We can compile and link X programs with no special options. + ac_x_includes= + ac_x_libraries= +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +LIBS="$ac_save_LIBS" +# If that didn't work, only try xmkmf and file system searches +# for native compilation. +if test x"$ac_x_includes" = xno && test "$cross_compiling" = no +then : + rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' @@ -3278,7 +4645,7 @@ _ACEOF rm -f -r conftest.dir fi -# Standard set of common directories for X headers. + # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include @@ -3305,6 +4672,8 @@ ac_x_header_dirs=' /usr/local/include/X11R5 /usr/local/include/X11R4 +/opt/X11/include + /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 @@ -3326,10 +4695,11 @@ if test "$ac_x_includes" = no; then /* end confdefs.h. */ #include _ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : +if ac_fn_cxx_try_cpp "$LINENO" +then : # We can compile using X headers with no special include directory. ac_x_includes= -else +else $as_nop for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir @@ -3350,20 +4720,21 @@ if test "$ac_x_libraries" = no; then /* end confdefs.h. */ #include int -main () +main (void) { XrmInitialize () ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= -else +else $as_nop LIBS=$ac_save_LIBS -for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +for ac_dir in `printf "%s\n" "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do @@ -3374,19 +4745,21 @@ do done done fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no +fi +# Record the results. case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) + no,* | *,no | *\'*) : # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no";; #( - *) + ac_cv_have_x="have_x=no" ;; #( + *) : # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" + ac_x_libraries='$ac_x_libraries'" ;; esac fi ;; #( @@ -3396,8 +4769,8 @@ fi fi # $with_x != no if test "$have_x" != yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 -$as_echo "$have_x" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 +printf "%s\n" "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. @@ -3407,300 +4780,74 @@ else ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 -$as_echo "libraries $x_libraries, headers $x_includes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 +printf "%s\n" "libraries $x_libraries, headers $x_includes" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +ac_header= ac_cache= +for ac_item in $ac_header_cxx_list do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count + if test $ac_cache; then + ac_fn_cxx_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_cxx_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - done -if test "$no_x" = "yes"; then : + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi +if test "$no_x" = "yes" +then : USE_X_WINDOWS=0 -else +else $as_nop USE_X_WINDOWS=1 - if test "x$x_includes" = "x"; then : + if test "x$x_includes" = "x" +then : -else +else $as_nop X_INCLUDE_DIR=-I$x_includes fi - if test "x$x_libraries" = "x"; then : + if test "x$x_libraries" = "x" +then : -else +else $as_nop X_LIB_DIR=-L$x_libraries fi - ac_fn_cxx_check_header_mongrel "$LINENO" "X11/Intrinsic.h" "ac_cv_header_X11_Intrinsic_h" "$ac_includes_default" -if test "x$ac_cv_header_X11_Intrinsic_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "X11/Intrinsic.h" "ac_cv_header_X11_Intrinsic_h" "$ac_includes_default" +if test "x$ac_cv_header_X11_Intrinsic_h" = xyes +then : -else +else $as_nop as_fn_error $? "could not find libxt development headers" "$LINENO" 5 fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for trick_source/data_products/fermi-ware" >&5 -$as_echo_n "checking for trick_source/data_products/fermi-ware... " >&6; } -if ${ac_cv_file_trick_source_data_products_fermi_ware+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for trick_source/data_products/fermi-ware" >&5 +printf %s "checking for trick_source/data_products/fermi-ware... " >&6; } +if test ${ac_cv_file_trick_source_data_products_fermi_ware+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "trick_source/data_products/fermi-ware"; then @@ -3709,19 +4856,22 @@ else ac_cv_file_trick_source_data_products_fermi_ware=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file_trick_source_data_products_fermi_ware" >&5 -$as_echo "$ac_cv_file_trick_source_data_products_fermi_ware" >&6; } -if test "x$ac_cv_file_trick_source_data_products_fermi_ware" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file_trick_source_data_products_fermi_ware" >&5 +printf "%s\n" "$ac_cv_file_trick_source_data_products_fermi_ware" >&6; } +if test "x$ac_cv_file_trick_source_data_products_fermi_ware" = xyes +then : - ac_fn_cxx_check_header_mongrel "$LINENO" "Xm/Xm.h" "ac_cv_header_Xm_Xm_h" "$ac_includes_default" -if test "x$ac_cv_header_Xm_Xm_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "Xm/Xm.h" "ac_cv_header_Xm_Xm_h" "$ac_includes_default" +if test "x$ac_cv_header_Xm_Xm_h" = xyes +then : MOTIF_HOME="/usr" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/local/include/Xm/Xm.h" >&5 -$as_echo_n "checking for /usr/local/include/Xm/Xm.h... " >&6; } -if ${ac_cv_file__usr_local_include_Xm_Xm_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /usr/local/include/Xm/Xm.h" >&5 +printf %s "checking for /usr/local/include/Xm/Xm.h... " >&6; } +if test ${ac_cv_file__usr_local_include_Xm_Xm_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "/usr/local/include/Xm/Xm.h"; then @@ -3730,16 +4880,18 @@ else ac_cv_file__usr_local_include_Xm_Xm_h=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_local_include_Xm_Xm_h" >&5 -$as_echo "$ac_cv_file__usr_local_include_Xm_Xm_h" >&6; } -if test "x$ac_cv_file__usr_local_include_Xm_Xm_h" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_local_include_Xm_Xm_h" >&5 +printf "%s\n" "$ac_cv_file__usr_local_include_Xm_Xm_h" >&6; } +if test "x$ac_cv_file__usr_local_include_Xm_Xm_h" = xyes +then : MOTIF_HOME="/usr/local" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /sw/include/Xm/Xm.h" >&5 -$as_echo_n "checking for /sw/include/Xm/Xm.h... " >&6; } -if ${ac_cv_file__sw_include_Xm_Xm_h+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /sw/include/Xm/Xm.h" >&5 +printf %s "checking for /sw/include/Xm/Xm.h... " >&6; } +if test ${ac_cv_file__sw_include_Xm_Xm_h+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "/sw/include/Xm/Xm.h"; then @@ -3748,11 +4900,12 @@ else ac_cv_file__sw_include_Xm_Xm_h=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__sw_include_Xm_Xm_h" >&5 -$as_echo "$ac_cv_file__sw_include_Xm_Xm_h" >&6; } -if test "x$ac_cv_file__sw_include_Xm_Xm_h" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__sw_include_Xm_Xm_h" >&5 +printf "%s\n" "$ac_cv_file__sw_include_Xm_Xm_h" >&6; } +if test "x$ac_cv_file__sw_include_Xm_Xm_h" = xyes +then : MOTIF_HOME="/sw" -else +else $as_nop as_fn_error $? "could not find Xm/Xm.h" "$LINENO" 5 fi @@ -3761,8 +4914,7 @@ fi fi - -else +else $as_nop MOTIF_HOME="" @@ -3777,55 +4929,62 @@ fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lxml2" >&5 -$as_echo_n "checking for main in -lxml2... " >&6; } -if ${ac_cv_lib_xml2_main+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lxml2" >&5 +printf %s "checking for main in -lxml2... " >&6; } +if test ${ac_cv_lib_xml2_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lxml2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - +namespace conftest { + extern "C" int main (); +} int -main () +main (void) { -return main (); +return conftest::main (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_lib_xml2_main=yes -else +else $as_nop ac_cv_lib_xml2_main=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_main" >&5 -$as_echo "$ac_cv_lib_xml2_main" >&6; } -if test "x$ac_cv_lib_xml2_main" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_main" >&5 +printf "%s\n" "$ac_cv_lib_xml2_main" >&6; } +if test "x$ac_cv_lib_xml2_main" = xyes +then : LIBXML=-lxml2 fi -ac_fn_cxx_check_header_mongrel "$LINENO" "libxml/tree.h" "ac_cv_header_libxml_tree_h" "$ac_includes_default" -if test "x$ac_cv_header_libxml_tree_h" = xyes; then : +ac_fn_cxx_check_header_compile "$LINENO" "libxml/tree.h" "ac_cv_header_libxml_tree_h" "$ac_includes_default" +if test "x$ac_cv_header_libxml_tree_h" = xyes +then : -else +else $as_nop as_fn_error $? "could not find libxml development headers" "$LINENO" 5 fi - # If 32bit is specified, set some compilation flags. # Check whether --enable-32bit was given. -if test "${enable_32bit+set}" = set; then : - enableval=$enable_32bit; if test "x$enable_32bit" = xyes; then : +if test ${enable_32bit+y} +then : + enableval=$enable_32bit; if test "x$enable_32bit" = xyes +then : TRICK_FORCE_32BIT=1 CFLAGS="${CFLAGS} -m32" @@ -3833,10 +4992,10 @@ if test "${enable_32bit+set}" = set; then : LDFLAGS="${LDFLAGS} -m32" ARCH="i686" -else +else $as_nop TRICK_FORCE_32BIT=0 fi -else +else $as_nop TRICK_FORCE_32BIT=0 fi @@ -3845,15 +5004,18 @@ fi # If offline is specified, set some compilation flags # Check whether --enable-offline was given. -if test "${enable_offline+set}" = set; then : - enableval=$enable_offline; if test "x$enable_offline" = xyes; then : +if test ${enable_offline+y} +then : + enableval=$enable_offline; if test "x$enable_offline" = xyes +then : TRICK_OFFLINE="1" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for trick-offline" >&5 -$as_echo_n "checking for trick-offline... " >&6; } -if ${ac_cv_file_trick_offline+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for trick-offline" >&5 +printf %s "checking for trick-offline... " >&6; } +if test ${ac_cv_file_trick_offline+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "trick-offline"; then @@ -3862,20 +5024,21 @@ else ac_cv_file_trick_offline=no fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file_trick_offline" >&5 -$as_echo "$ac_cv_file_trick_offline" >&6; } -if test "x$ac_cv_file_trick_offline" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file_trick_offline" >&5 +printf "%s\n" "$ac_cv_file_trick_offline" >&6; } +if test "x$ac_cv_file_trick_offline" = xyes +then : -else +else $as_nop as_fn_error $? "Offline mode requires an uncompressed directory named \"trick-offline\" in TRICK_HOME" "$LINENO" 5 fi -else +else $as_nop TRICK_OFFLINE="0" fi -else +else $as_nop TRICK_OFFLINE="0" fi @@ -3884,14 +5047,16 @@ fi # If offline is specified, set some compilation flags # Check whether --enable-offline was given. -if test "${enable_offline+set}" = set; then : - enableval=$enable_offline; if test "x$enable_offline" = xyes; then : +if test ${enable_offline+y} +then : + enableval=$enable_offline; if test "x$enable_offline" = xyes +then : TRICK_OFFLINE="1" -else +else $as_nop TRICK_OFFLINE="0" fi -else +else $as_nop TRICK_OFFLINE="0" fi @@ -3923,11 +5088,12 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -3935,11 +5101,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3950,11 +5120,11 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -3969,11 +5139,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -3981,11 +5152,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3996,11 +5171,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4009,11 +5184,12 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -4021,11 +5197,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4036,11 +5216,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -4048,8 +5228,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -4062,11 +5242,12 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -4074,11 +5255,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4089,11 +5274,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4102,11 +5287,12 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -4115,15 +5301,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4139,18 +5329,18 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4161,11 +5351,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -4173,11 +5364,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4188,11 +5383,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4205,11 +5400,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -4217,11 +5413,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4232,11 +5432,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4248,8 +5448,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -4257,25 +5457,129 @@ esac fi fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. +set dummy ${ac_tool_prefix}clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "clang", so it can be a program name with args. +set dummy clang; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="clang" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +fi + + +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -4285,20 +5589,21 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -4308,29 +5613,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -4339,57 +5648,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -4404,94 +5716,144 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c11_program +_ACEOF +for ac_arg in '' -std=gnu11 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c99_program +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC +fi + +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +$ac_c_conftest_c89_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi fi ac_ext=cpp @@ -4510,15 +5872,16 @@ if test -z "$CXX"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else @@ -4526,11 +5889,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4541,11 +5908,11 @@ fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +printf "%s\n" "$CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4554,15 +5921,16 @@ fi fi if test -z "$CXX"; then ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else @@ -4570,11 +5938,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4585,11 +5957,11 @@ fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +printf "%s\n" "$ac_ct_CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4601,8 +5973,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -4612,7 +5984,7 @@ fi fi fi # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -4622,7 +5994,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -4632,20 +6004,21 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 +printf %s "checking whether the compiler supports GNU C++... " >&6; } +if test ${ac_cv_cxx_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -4655,29 +6028,33 @@ main () return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi -ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +printf %s "checking whether $CXX accepts -g... " >&6; } +if test ${ac_cv_prog_cxx_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no @@ -4686,57 +6063,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes -else +else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : -else +else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_cxx_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } +if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then @@ -4751,6 +6131,100 @@ else CXXFLAGS= fi fi +ac_prog_cxx_stdcxx=no +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 +printf %s "checking for $CXX option to enable C++11 features... " >&6; } +if test ${ac_cv_prog_cxx_11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_11=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx11_program +_ACEOF +for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx11=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx11" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx11" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 + ac_prog_cxx_stdcxx=cxx11 +fi +fi +if test x$ac_prog_cxx_stdcxx = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 +printf %s "checking for $CXX option to enable C++98 features... " >&6; } +if test ${ac_cv_prog_cxx_98+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cxx_98=no +ac_save_CXX=$CXX +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_cxx_conftest_cxx98_program +_ACEOF +for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA +do + CXX="$ac_save_CXX $ac_arg" + if ac_fn_cxx_try_compile "$LINENO" +then : + ac_cv_prog_cxx_cxx98=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cxx_cxx98" != "xno" && break +done +rm -f conftest.$ac_ext +CXX=$ac_save_CXX +fi + +if test "x$ac_cv_prog_cxx_cxx98" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cxx_cxx98" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 +printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } + CXX="$CXX $ac_cv_prog_cxx_cxx98" +fi + ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 + ac_prog_cxx_stdcxx=cxx98 +fi +fi + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4758,29 +6232,34 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test "$ON_MAC" = "no"; then : +if test "$ON_MAC" = "no" +then : GCC_VERSION="" - if test "x$GCC" = "xyes"; then : + if test "x$GCC" = "xyes" +then : - if test "x$ax_gcc_version_option" != "xno"; then : + if test "x$ax_gcc_version_option" != "xno" +then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5 -$as_echo_n "checking gcc version... " >&6; } -if ${ax_cv_gcc_version+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5 +printf %s "checking gcc version... " >&6; } +if test ${ax_cv_gcc_version+y} +then : + printf %s "(cached) " >&6 +else $as_nop - ax_cv_gcc_version="`$CC -dumpversion`" - if test "x$ax_cv_gcc_version" = "x"; then : + ax_cv_gcc_version="`$CC -dumpfullversion -dumpversion`" + if test "x$ax_cv_gcc_version" = "x" +then : ax_cv_gcc_version="" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_version" >&5 -$as_echo "$ax_cv_gcc_version" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_version" >&5 +printf "%s\n" "$ax_cv_gcc_version" >&6; } GCC_VERSION=$ax_cv_gcc_version fi @@ -4789,11 +6268,12 @@ fi fi -if test "x$GCC_VERSION" = "x"; then : +if test "x$GCC_VERSION" = "x" +then : -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking gcc version >= 4.8" >&5 -$as_echo_n "checking gcc version >= 4.8... " >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gcc version >= 4.8" >&5 +printf %s "checking gcc version >= 4.8... " >&6; } @@ -4826,10 +6306,10 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version if test "$ax_compare_version" = "true" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } as_fn_error $? "Trick requires gcc version >= 4.8" "$LINENO" 5 fi @@ -4841,11 +6321,12 @@ CXX=`which $CXX` # Extract the first word of "tee", so it can be a program name with args. set dummy tee; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_TEE+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_TEE+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $TEE in [\\/]* | ?:[\\/]*) ac_cv_path_TEE="$TEE" # Let the user override the test with a path. @@ -4855,11 +6336,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_TEE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_TEE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4872,24 +6357,26 @@ esac fi TEE=$ac_cv_path_TEE if test -n "$TEE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5 -$as_echo "$TEE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5 +printf "%s\n" "$TEE" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -if test "$ac_cv_path_TEE" = "notee"; then : +if test "$ac_cv_path_TEE" = "notee" +then : as_fn_error $? "could not find tee" "$LINENO" 5 fi # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LD+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $LD in [\\/]* | ?:[\\/]*) ac_cv_path_LD="$LD" # Let the user override the test with a path. @@ -4899,11 +6386,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LD="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_LD="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4916,26 +6407,28 @@ esac fi LD=$ac_cv_path_LD if test -n "$LD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -$as_echo "$LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +printf "%s\n" "$LD" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -if test "$ac_cv_path_LD" = "nold"; then : +if test "$ac_cv_path_LD" = "nold" +then : as_fn_error $? "could not find ld" "$LINENO" 5 fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LEX+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_LEX+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else @@ -4943,11 +6436,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4958,11 +6455,11 @@ fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 -$as_echo "$LEX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 +printf "%s\n" "$LEX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4970,15 +6467,26 @@ fi done test -n "$LEX" || LEX=":" -if test "x$LEX" != "x:"; then - cat >conftest.l <<_ACEOF + if test "x$LEX" != "x:"; then + cat >conftest.l <<_ACEOF +%{ +#ifdef __cplusplus +extern "C" +#endif +int yywrap(void); +%} %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ - yyless ((input () != 0)); } +#ifdef __cplusplus + yyless ((yyinput () != 0)); +#else + yyless ((input () != 0)); +#endif + } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% @@ -4986,116 +6494,221 @@ f { unput (yytext[0]); } extern char *yytext; #endif int +yywrap (void) +{ + return 1; +} +int main (void) { - return ! yylex () + ! yywrap (); + return ! yylex (); } _ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex output file root" >&5 +printf %s "checking for lex output file root... " >&6; } +if test ${ac_cv_prog_lex_root+y} +then : + printf %s "(cached) " >&6 +else $as_nop + +ac_cv_prog_lex_root=unknown { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 -$as_echo_n "checking lex output file root... " >&6; } -if ${ac_cv_prog_lex_root+:} false; then : - $as_echo_n "(cached) " >&6 -else - + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy -else - as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 -$as_echo "$ac_cv_prog_lex_root" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 +printf "%s\n" "$ac_cv_prog_lex_root" >&6; } +if test "$ac_cv_prog_lex_root" = unknown +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot find output from $LEX; giving up on $LEX" >&5 +printf "%s\n" "$as_me: WARNING: cannot find output from $LEX; giving up on $LEX" >&2;} + LEX=: LEXLIB= +fi LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root -if test -z "${LEXLIB+set}"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 -$as_echo_n "checking lex library... " >&6; } -if ${ac_cv_lib_lex+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${LEXLIB+y} +then : + +else $as_nop + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex library" >&5 +printf %s "checking for lex library... " >&6; } +if test ${ac_cv_lib_lex+y} +then : + printf %s "(cached) " >&6 +else $as_nop + + ac_save_LIBS="$LIBS" + ac_found=false + for ac_cv_lib_lex in 'none needed' -lfl -ll 'not found'; do + case $ac_cv_lib_lex in #( + 'none needed') : + ;; #( + 'not found') : + break ;; #( + *) : + LIBS="$ac_cv_lib_lex $ac_save_LIBS" ;; #( + *) : + ;; +esac - ac_save_LIBS=$LIBS - ac_cv_lib_lex='none needed' - for ac_lib in '' -lfl -ll; do - LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - ac_cv_lib_lex=$ac_lib +if ac_fn_cxx_try_link "$LINENO" +then : + ac_found=: fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - test "$ac_cv_lib_lex" != 'none needed' && break + if $ac_found; then + break + fi done - LIBS=$ac_save_LIBS + LIBS="$ac_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 -$as_echo "$ac_cv_lib_lex" >&6; } - test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 +printf "%s\n" "$ac_cv_lib_lex" >&6; } + if test "$ac_cv_lib_lex" = 'not found' +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: required lex library not found; giving up on $LEX" >&5 +printf "%s\n" "$as_me: WARNING: required lex library not found; giving up on $LEX" >&2;} + LEX=: LEXLIB= +elif test "$ac_cv_lib_lex" = 'none needed' +then : + LEXLIB='' +else $as_nop + LEXLIB=$ac_cv_lib_lex +fi + ac_save_LIBS="$LIBS" + LIBS= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing yywrap" >&5 +printf %s "checking for library containing yywrap... " >&6; } +if test ${ac_cv_search_yywrap+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +namespace conftest { + extern "C" int yywrap (); +} +int +main (void) +{ +return conftest::yywrap (); + ; + return 0; +} +_ACEOF +for ac_lib in '' fl l +do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_cxx_try_link "$LINENO" +then : + ac_cv_search_yywrap=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext + if test ${ac_cv_search_yywrap+y} +then : + break +fi +done +if test ${ac_cv_search_yywrap+y} +then : + +else $as_nop + ac_cv_search_yywrap=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yywrap" >&5 +printf "%s\n" "$ac_cv_search_yywrap" >&6; } +ac_res=$ac_cv_search_yywrap +if test "$ac_res" != no +then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + LEXLIB="$LIBS" +fi + + LIBS="$ac_save_LIBS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 -$as_echo_n "checking whether yytext is a pointer... " >&6; } -if ${ac_cv_prog_lex_yytext_pointer+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test "$LEX" != : +then : + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 +printf %s "checking whether yytext is a pointer... " >&6; } +if test ${ac_cv_prog_lex_yytext_pointer+y} +then : + printf %s "(cached) " >&6 +else $as_nop # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no -ac_save_LIBS=$LIBS -LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_compile "$LINENO" +then : ac_cv_prog_lex_yytext_pointer=yes fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_save_LIBS +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 -$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 +printf "%s\n" "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then -$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h +printf "%s\n" "#define YYTEXT_POINTER 1" >>confdefs.h + +fi fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi -if test "x$LEX" = "x:"; then : +if test "x$LEX" = "x:" +then : as_fn_error $? "could not find flex" "$LINENO" 5 fi # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_BISON+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_BISON+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $BISON in [\\/]* | ?:[\\/]*) ac_cv_path_BISON="$BISON" # Let the user override the test with a path. @@ -5105,11 +6718,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_BISON="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5122,24 +6739,26 @@ esac fi BISON=$ac_cv_path_BISON if test -n "$BISON"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5 -$as_echo "$BISON" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5 +printf "%s\n" "$BISON" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -if test "$ac_cv_path_BISON" = "nobison"; then : +if test "$ac_cv_path_BISON" = "nobison" +then : as_fn_error $? "could not find bison" "$LINENO" 5 fi # Extract the first word of "curl", so it can be a program name with args. set dummy curl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_CURL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CURL+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $CURL in [\\/]* | ?:[\\/]*) ac_cv_path_CURL="$CURL" # Let the user override the test with a path. @@ -5149,11 +6768,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_CURL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_CURL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5166,24 +6789,26 @@ esac fi CURL=$ac_cv_path_CURL if test -n "$CURL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5 -$as_echo "$CURL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5 +printf "%s\n" "$CURL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -if test "$ac_cv_path_CURL" = "nocurl"; then : +if test "$ac_cv_path_CURL" = "nocurl" +then : as_fn_error $? "could not find curl" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PERL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. @@ -5193,11 +6818,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5209,19 +6838,20 @@ esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -$as_echo "$PERL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -5235,10 +6865,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -5247,13 +6882,13 @@ case `"$ac_path_SED" --version 2>&1` in ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" + printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -5281,21 +6916,91 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" - if test -n "$PERL"; then : + + + if test -n "$PERL" +then : ax_perl_version="5.14.0" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl version" >&5 -$as_echo_n "checking for perl version... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl version" >&5 +printf %s "checking for perl version... " >&6; } perl_version=`$PERL --version 2>&1 \ | $SED -n -e '/This is perl/b inspect @@ -5303,8 +7008,8 @@ b : inspect s/.* (\{0,1\}v\([0-9]*\.[0-9]*\.[0-9]*\))\{0,1\} .*/\1/;p'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $perl_version" >&5 -$as_echo "$perl_version" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $perl_version" >&5 +printf "%s\n" "$perl_version" >&6; } PERL_VERSION=$perl_version @@ -5352,21 +7057,22 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort | sed "s/x${ax_compare_version_A} fi -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find the perl interpreter" >&5 -$as_echo "$as_me: WARNING: could not find the perl interpreter" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find the perl interpreter" >&5 +printf "%s\n" "$as_me: WARNING: could not find the perl interpreter" >&2;} as_fn_error $? "Trick requires perl version >= 5.14.0" "$LINENO" 5 fi # Extract the first word of "zip", so it can be a program name with args. set dummy zip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ZIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ZIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $ZIP in [\\/]* | ?:[\\/]*) ac_cv_path_ZIP="$ZIP" # Let the user override the test with a path. @@ -5376,11 +7082,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_ZIP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5393,15 +7103,16 @@ esac fi ZIP=$ac_cv_path_ZIP if test -n "$ZIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIP" >&5 -$as_echo "$ZIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ZIP" >&5 +printf "%s\n" "$ZIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -if test "$ac_cv_path_ZIP" = "nozip"; then : +if test "$ac_cv_path_ZIP" = "nozip" +then : as_fn_error $? "Trick now requires zip but it could not be found. Please install zip. We recommend you use your OS package manager" "$LINENO" 5 fi @@ -5410,18 +7121,20 @@ fi # Check whether --with-python was given. -if test "${with_python+set}" = set; then : +if test ${with_python+y} +then : withval=$with_python; PYTHON_HOME="$withval" for ac_prog in python${PYTHON_VERSION} python python3 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PYTHON+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PYTHON+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. @@ -5431,11 +7144,15 @@ else for as_dir in "$PYTHON_HOME" do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5447,11 +7164,11 @@ esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 -$as_echo "$PYTHON" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +printf "%s\n" "$PYTHON" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5459,7 +7176,8 @@ fi done test -n "$PYTHON" || PYTHON="nopython" - if test "$ac_cv_path_PYTHON" = "" || test "$ac_cv_path_PYTHON" = "nopython"; then : + if test "$ac_cv_path_PYTHON" = "" || test "$ac_cv_path_PYTHON" = "nopython" +then : as_fn_error $? "could not find python python or python3 in the specefied path. Please install the python development package" "$LINENO" 5 fi PYTHON_MAJORMINOR=`${PYTHON} -c 'import sys; print(str(sys.version_info[0])+"."+str(sys.version_info[1]))'` @@ -5468,11 +7186,12 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PYTHON_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PYTHON_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PYTHON_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path. @@ -5482,11 +7201,15 @@ else for as_dir in "$PYTHON_HOME" do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5498,11 +7221,11 @@ esac fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 -$as_echo "$PYTHON_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 +printf "%s\n" "$PYTHON_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5510,21 +7233,23 @@ fi done test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="nopython-config" - if test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config"; then : + if test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config" +then : as_fn_error $? "could not find python-config python-config or python-config in the specified path. Please install the python development package" "$LINENO" 5 fi -else +else $as_nop for ac_prog in python${PYTHON_VERSION} python python3 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PYTHON+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PYTHON+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. @@ -5534,11 +7259,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5550,11 +7279,11 @@ esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 -$as_echo "$PYTHON" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +printf "%s\n" "$PYTHON" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5562,7 +7291,8 @@ fi done test -n "$PYTHON" || PYTHON="nopython" - if test {"$ac_cv_path_PYTHON" = "" || test "${ac_cv_path_PYTHON}" = "nopython"}; then : + if test {"$ac_cv_path_PYTHON" = "" || test "${ac_cv_path_PYTHON}" = "nopython"} +then : as_fn_error $? "could not find python python or python3. Please install the python development package" "$LINENO" 5 fi PYTHON_MAJORMINOR=`${PYTHON} -c 'import sys; print(str(sys.version_info[0])+"."+str(sys.version_info[1]))'` @@ -5571,11 +7301,12 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PYTHON_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PYTHON_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $PYTHON_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path. @@ -5585,11 +7316,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5601,11 +7336,11 @@ esac fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 -$as_echo "$PYTHON_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 +printf "%s\n" "$PYTHON_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5613,7 +7348,8 @@ fi done test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="nopython-config" - if test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config"; then : + if test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config" +then : as_fn_error $? "could not find python-config python-config or python-config. Please install the python development package" "$LINENO" 5 fi @@ -5668,11 +7404,14 @@ PYTHON_LIBS=`${PYTHON_LIBS_COMMAND} | tr '\r\n' ' '` # Check whether --with-prepend-path was given. -if test "${with_prepend_path+set}" = set; then : - withval=$with_prepend_path; if test "x${with_prepend_path}" = xyes; then : +if test ${with_prepend_path+y} +then : + withval=$with_prepend_path; if test "x${with_prepend_path}" = xyes +then : PATH="/usr/local/bin:${PATH}" -else - if test "x${with_prepend_path}" != xno; then : +else $as_nop + if test "x${with_prepend_path}" != xno +then : PATH="${withval}:${PATH}" fi @@ -5682,11 +7421,12 @@ fi # Extract the first word of "gnuplot", so it can be a program name with args. set dummy gnuplot; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GNUPLOT+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GNUPLOT+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $GNUPLOT in [\\/]* | ?:[\\/]*) ac_cv_path_GNUPLOT="$GNUPLOT" # Let the user override the test with a path. @@ -5696,11 +7436,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GNUPLOT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_GNUPLOT="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5713,22 +7457,24 @@ esac fi GNUPLOT=$ac_cv_path_GNUPLOT if test -n "$GNUPLOT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUPLOT" >&5 -$as_echo "$GNUPLOT" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNUPLOT" >&5 +printf "%s\n" "$GNUPLOT" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -if test "$ac_cv_path_GNUPLOT" = "nognuplot"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: could not find gnuplot" >&5 -$as_echo "$as_me: could not find gnuplot" >&6;} +if test "$ac_cv_path_GNUPLOT" = "nognuplot" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: could not find gnuplot" >&5 +printf "%s\n" "$as_me: could not find gnuplot" >&6;} fi # Check whether --with-swig was given. -if test "${with_swig+set}" = set; then : +if test ${with_swig+y} +then : withval=$with_swig; TEMP_PATH="${PATH}" PATH="$withval:${PATH}" @@ -5738,11 +7484,12 @@ if test "${with_swig+set}" = set; then : do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_SWIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SWIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $SWIG in [\\/]* | ?:[\\/]*) ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. @@ -5752,11 +7499,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_SWIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5768,11 +7519,11 @@ esac fi SWIG=$ac_cv_path_SWIG if test -n "$SWIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 -$as_echo "$SWIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 +printf "%s\n" "$SWIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5781,12 +7532,14 @@ done if test -z "$SWIG" ; then as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 - elif test -n "2.0" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5 -$as_echo_n "checking SWIG version... " >&6; } + elif test -z "2.0" ; then + : + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5 +printf %s "checking SWIG version... " >&6; } swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 -$as_echo "$swig_version" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 +printf "%s\n" "$swig_version" >&6; } if test -n "$swig_version" ; then # Calculate the required version number components required=2.0 @@ -5794,12 +7547,12 @@ $as_echo "$swig_version" >&6; } if test -z "$required_major" ; then required_major=0 fi - required=`echo $required | sed 's/[0-9]*[^0-9]//'` + required=`echo $required. | sed 's/[0-9]*[^0-9]//'` required_minor=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_minor" ; then required_minor=0 fi - required=`echo $required | sed 's/[0-9]*[^0-9]//'` + required=`echo $required. | sed 's/[0-9]*[^0-9]//'` required_patch=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_patch" ; then required_patch=0 @@ -5829,21 +7582,21 @@ $as_echo "$swig_version" >&6; } \+ $available_minor \* 100 \+ $available_patch` if test $available_swig_vernum -lt $required_swig_vernum; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&5 -$as_echo "$as_me: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&5 +printf "%s\n" "$as_me: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&2;} SWIG='' as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5 -$as_echo_n "checking for SWIG library... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5 +printf %s "checking for SWIG library... " >&6; } SWIG_LIB=`$SWIG -swiglib` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5 -$as_echo "$SWIG_LIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5 +printf "%s\n" "$SWIG_LIB" >&6; } fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 -$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 +printf "%s\n" "$as_me: WARNING: cannot determine SWIG version" >&2;} SWIG='' as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 fi @@ -5852,18 +7605,19 @@ $as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;} PATH="${TEMP_PATH}" -else +else $as_nop # Find path to the "swig" executable. for ac_prog in swig swig3.0 swig2.0 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_SWIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SWIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $SWIG in [\\/]* | ?:[\\/]*) ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. @@ -5873,11 +7627,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_SWIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5889,11 +7647,11 @@ esac fi SWIG=$ac_cv_path_SWIG if test -n "$SWIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 -$as_echo "$SWIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 +printf "%s\n" "$SWIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5902,12 +7660,14 @@ done if test -z "$SWIG" ; then as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 - elif test -n "2.0" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5 -$as_echo_n "checking SWIG version... " >&6; } + elif test -z "2.0" ; then + : + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5 +printf %s "checking SWIG version... " >&6; } swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 -$as_echo "$swig_version" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 +printf "%s\n" "$swig_version" >&6; } if test -n "$swig_version" ; then # Calculate the required version number components required=2.0 @@ -5915,12 +7675,12 @@ $as_echo "$swig_version" >&6; } if test -z "$required_major" ; then required_major=0 fi - required=`echo $required | sed 's/[0-9]*[^0-9]//'` + required=`echo $required. | sed 's/[0-9]*[^0-9]//'` required_minor=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_minor" ; then required_minor=0 fi - required=`echo $required | sed 's/[0-9]*[^0-9]//'` + required=`echo $required. | sed 's/[0-9]*[^0-9]//'` required_patch=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_patch" ; then required_patch=0 @@ -5950,21 +7710,21 @@ $as_echo "$swig_version" >&6; } \+ $available_minor \* 100 \+ $available_patch` if test $available_swig_vernum -lt $required_swig_vernum; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&5 -$as_echo "$as_me: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&5 +printf "%s\n" "$as_me: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&2;} SWIG='' as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5 -$as_echo_n "checking for SWIG library... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5 +printf %s "checking for SWIG library... " >&6; } SWIG_LIB=`$SWIG -swiglib` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5 -$as_echo "$SWIG_LIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5 +printf "%s\n" "$SWIG_LIB" >&6; } fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 -$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 +printf "%s\n" "$as_me: WARNING: cannot determine SWIG version" >&2;} SWIG='' as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 fi @@ -5977,29 +7737,33 @@ fi # Check whether --enable-java was given. -if test "${enable_java+set}" = set; then : - enableval=$enable_java; if test "x$enable_java" = xyes; then : +if test ${enable_java+y} +then : + enableval=$enable_java; if test "x$enable_java" = xyes +then : USE_JAVA="1" -else +else $as_nop USE_JAVA="0" fi -else +else $as_nop USE_JAVA="1" fi - if test "$USE_JAVA" = "1"; then : + if test "$USE_JAVA" = "1" +then : for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -6007,11 +7771,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6022,11 +7790,11 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6038,11 +7806,12 @@ done do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_JAVA_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_JAVA_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$JAVA_CC"; then ac_cv_prog_JAVA_CC="$JAVA_CC" # Let the user override the test. else @@ -6050,11 +7819,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_JAVA_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6065,11 +7838,11 @@ fi fi JAVA_CC=$ac_cv_prog_JAVA_CC if test -n "$JAVA_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA_CC" >&5 -$as_echo "$JAVA_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $JAVA_CC" >&5 +printf "%s\n" "$JAVA_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6082,11 +7855,12 @@ if test -z "$JAVA_CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_JAVA_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_JAVA_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_JAVA_CC"; then ac_cv_prog_ac_ct_JAVA_CC="$ac_ct_JAVA_CC" # Let the user override the test. else @@ -6094,11 +7868,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_JAVA_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6109,11 +7887,11 @@ fi fi ac_ct_JAVA_CC=$ac_cv_prog_ac_ct_JAVA_CC if test -n "$ac_ct_JAVA_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_JAVA_CC" >&5 -$as_echo "$ac_ct_JAVA_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_JAVA_CC" >&5 +printf "%s\n" "$ac_ct_JAVA_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -6125,8 +7903,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac JAVA_CC=$ac_ct_JAVA_CC @@ -6145,8 +7923,8 @@ fi test -z "$JAVA_CC" && as_fn_error $? "no acceptable java compiler found in \$PATH" "$LINENO" 5 JAVA_VER=`$JAVA_CC -version 2>&1 | $ac_cv_path_PERL -ne 'print $& if /\d+(\.\d+)?/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking $JAVA_CC version >= 1.8" >&5 -$as_echo_n "checking $JAVA_CC version >= 1.8... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $JAVA_CC version >= 1.8" >&5 +printf %s "checking $JAVA_CC version >= 1.8... " >&6; } @@ -6179,23 +7957,25 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version if test "$ax_compare_version" = "true" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } as_fn_error $? "Trick requires javac version >= 1.8" "$LINENO" 5 fi - if test "$TRICK_OFFLINE" = "0"; then : + if test "$TRICK_OFFLINE" = "0" +then : # Extract the first word of "mvn", so it can be a program name with args. set dummy mvn; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MVN+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MVN+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $MVN in [\\/]* | ?:[\\/]*) ac_cv_path_MVN="$MVN" # Let the user override the test with a path. @@ -6205,11 +7985,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_MVN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_MVN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6222,15 +8006,16 @@ esac fi MVN=$ac_cv_path_MVN if test -n "$MVN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MVN" >&5 -$as_echo "$MVN" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MVN" >&5 +printf "%s\n" "$MVN" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - if test "$ac_cv_path_MVN" = "nomvn"; then : + if test "$ac_cv_path_MVN" = "nomvn" +then : as_fn_error $? "could not find maven" "$LINENO" 5 fi @@ -6245,40 +8030,36 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -6290,10 +8071,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -6303,7 +8085,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : break fi @@ -6315,29 +8098,24 @@ fi else ac_cv_prog_CPP=$CPP fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : -else +else $as_nop # Broken: fails on valid input. continue fi @@ -6349,10 +8127,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : +if ac_fn_c_try_cpp "$LINENO" +then : # Broken: success on invalid input. continue -else +else $as_nop # Passes both tests. ac_preproc_ok=: break @@ -6362,11 +8141,12 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : +if $ac_preproc_ok +then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi @@ -6378,6 +8158,79 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + @@ -6401,38 +8254,41 @@ if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then ax_pthread_save_CC="$CC" ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" - if test "x$PTHREAD_CC" != "x"; then : + if test "x$PTHREAD_CC" != "x" +then : CC="$PTHREAD_CC" +fi + if test "x$PTHREAD_CXX" != "x" +then : + CXX="$PTHREAD_CXX" fi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 -$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 +printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char pthread_join (); int -main () +main (void) { return pthread_join (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_pthread_ok=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 -$as_echo "$ax_pthread_ok" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = "xno"; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -6447,10 +8303,12 @@ fi # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" @@ -6508,11 +8366,12 @@ case $host_os in _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 -$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} + $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 +printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} fi -rm -f conftest* +rm -rf conftest* ;; @@ -6526,16 +8385,67 @@ rm -f conftest* # that too in a future libc.) So we'll check first for the # standard Solaris way of linking pthreads (-mt -lpthread). - ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" ;; esac +# Are we compiling with Clang? + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 +printf %s "checking whether $CC is Clang... " >&6; } +if test ${ax_cv_PTHREAD_CLANG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 +then : + ax_cv_PTHREAD_CLANG=yes +fi +rm -rf conftest* + + fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + # GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) -if test "x$GCC" = "xyes"; then : - ax_pthread_flags="-pthread -pthreads $ax_pthread_flags" +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + +if test "x$GCC" = "xyes" +then : + ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags" fi +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +if test "x$ax_pthread_clang" = "xyes" +then : + ax_pthread_flags="-pthread,-lpthread -pthread" +fi + + # The presence of a feature test macro requesting re-entrant function # definitions is, on some systems, a strong hint that pthreads support is # correctly enabled @@ -6553,175 +8463,45 @@ case $host_os in ax_pthread_check_macro="--" ;; esac -if test "x$ax_pthread_check_macro" = "x--"; then : +if test "x$ax_pthread_check_macro" = "x--" +then : ax_pthread_check_cond=0 -else +else $as_nop ax_pthread_check_cond="!defined($ax_pthread_check_macro)" fi -# Are we compiling with Clang? - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 -$as_echo_n "checking whether $CC is Clang... " >&6; } -if ${ax_cv_PTHREAD_CLANG+:} false; then : - $as_echo_n "(cached) " >&6 -else - ax_cv_PTHREAD_CLANG=no - # Note that Autoconf sets GCC=yes for Clang as well as GCC - if test "x$GCC" = "xyes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ -# if defined(__clang__) && defined(__llvm__) - AX_PTHREAD_CC_IS_CLANG -# endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then : - ax_cv_PTHREAD_CLANG=yes -fi -rm -f conftest* - - fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 -$as_echo "$ax_cv_PTHREAD_CLANG" >&6; } -ax_pthread_clang="$ax_cv_PTHREAD_CLANG" - -ax_pthread_clang_warning=no - -# Clang needs special handling, because older versions handle the -pthread -# option in a rather... idiosyncratic way - -if test "x$ax_pthread_clang" = "xyes"; then - - # Clang takes -pthread; it has never supported any other flag - - # (Note 1: This will need to be revisited if a system that Clang - # supports has POSIX threads in a separate library. This tends not - # to be the way of modern systems, but it's conceivable.) - - # (Note 2: On some systems, notably Darwin, -pthread is not needed - # to get POSIX threads support; the API is always present and - # active. We could reasonably leave PTHREAD_CFLAGS empty. But - # -pthread does define _REENTRANT, and while the Darwin headers - # ignore this macro, third-party headers might not.) - - PTHREAD_CFLAGS="-pthread" - PTHREAD_LIBS= - - ax_pthread_ok=yes - - # However, older versions of Clang make a point of warning the user - # that, in an invocation where only linking and no compilation is - # taking place, the -pthread option has no effect ("argument unused - # during compilation"). They expect -pthread to be passed in only - # when source code is being compiled. - # - # Problem is, this is at odds with the way Automake and most other - # C build frameworks function, which is that the same flags used in - # compilation (CFLAGS) are also used in linking. Many systems - # supported by AX_PTHREAD require exactly this for POSIX threads - # support, and in fact it is often not straightforward to specify a - # flag that is used only in the compilation phase and not in - # linking. Such a scenario is extremely rare in practice. - # - # Even though use of the -pthread flag in linking would only print - # a warning, this can be a nuisance for well-run software projects - # that build with -Werror. So if the active version of Clang has - # this misfeature, we search for an option to squash it. - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 -$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } -if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then : - $as_echo_n "(cached) " >&6 -else - ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown - # Create an alternate version of $ac_link that compiles and - # links in two steps (.c -> .o, .o -> exe) instead of one - # (.c -> exe), because the warning occurs only in the second - # step - ax_pthread_save_ac_link="$ac_link" - ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' - ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` - ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" - ax_pthread_save_CFLAGS="$CFLAGS" - for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do - if test "x$ax_pthread_try" = "xunknown"; then : - break -fi - CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" - ac_link="$ax_pthread_save_ac_link" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int main(void){return 0;} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_link="$ax_pthread_2step_ac_link" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int main(void){return 0;} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - break -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done - ac_link="$ax_pthread_save_ac_link" - CFLAGS="$ax_pthread_save_CFLAGS" - if test "x$ax_pthread_try" = "x"; then : - ax_pthread_try=no -fi - ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 -$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } - - case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in - no | unknown) ;; - *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; - esac - -fi # $ax_pthread_clang = yes if test "x$ax_pthread_ok" = "xno"; then for ax_pthread_try_flag in $ax_pthread_flags; do case $ax_pthread_try_flag in none) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 -$as_echo_n "checking whether pthreads work without any flags... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +printf %s "checking whether pthreads work without any flags... " >&6; } ;; - -mt,pthread) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5 -$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; } - PTHREAD_CFLAGS="-mt" - PTHREAD_LIBS="-lpthread" + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 +printf %s "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } ;; -*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 -$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 +printf %s "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ax_pthread_config+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ax_pthread_config+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else @@ -6729,11 +8509,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ax_pthread_config="yes" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6745,15 +8529,16 @@ fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 -$as_echo "$ax_pthread_config" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 +printf "%s\n" "$ax_pthread_config" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - if test "x$ax_pthread_config" = "xno"; then : + if test "x$ax_pthread_config" = "xno" +then : continue fi PTHREAD_CFLAGS="`pthread-config --cflags`" @@ -6761,8 +8546,8 @@ fi ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 -$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 +printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } PTHREAD_LIBS="-l$ax_pthread_try_flag" ;; esac @@ -6788,10 +8573,16 @@ $as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } # if $ax_pthread_check_cond # error "$ax_pthread_check_macro must be defined" # endif - static void routine(void *a) { a = 0; } + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } static void *start_routine(void *a) { return a; } int -main () +main (void) { pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); @@ -6803,18 +8594,20 @@ pthread_t th; pthread_attr_t attr; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_pthread_ok=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 -$as_echo "$ax_pthread_ok" >&6; } - if test "x$ax_pthread_ok" = "xyes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xyes" +then : break fi @@ -6823,6 +8616,109 @@ fi done fi + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 +printf %s "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } +if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`printf "%s\n" "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + if test "x$ax_pthread_try" = "xunknown" +then : + break +fi + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + ac_link="$ax_pthread_2step_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO" +then : + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + if test "x$ax_pthread_try" = "x" +then : + ax_pthread_try=no +fi + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes + + + # Various other checks: if test "x$ax_pthread_ok" = "xyes"; then ax_pthread_save_CFLAGS="$CFLAGS" @@ -6831,51 +8727,53 @@ if test "x$ax_pthread_ok" = "xyes"; then LIBS="$PTHREAD_LIBS $LIBS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 -$as_echo_n "checking for joinable pthread attribute... " >&6; } -if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +printf %s "checking for joinable pthread attribute... " >&6; } +if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_cv_PTHREAD_JOINABLE_ATTR=unknown for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { int attr = $ax_pthread_attr; return attr /* ; */ ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 -$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 +printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ - test "x$ax_pthread_joinable_attr_defined" != "xyes"; then : + test "x$ax_pthread_joinable_attr_defined" != "xyes" +then : -cat >>confdefs.h <<_ACEOF -#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR -_ACEOF +printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR" >>confdefs.h ax_pthread_joinable_attr_defined=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 -$as_echo_n "checking whether more special flags are required for pthreads... " >&6; } -if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 +printf %s "checking whether more special flags are required for pthreads... " >&6; } +if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_cv_PTHREAD_SPECIAL_FLAGS=no case $host_os in solaris*) @@ -6884,45 +8782,50 @@ else esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 -$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 +printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ - test "x$ax_pthread_special_flags_added" != "xyes"; then : + test "x$ax_pthread_special_flags_added" != "xyes" +then : PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" ax_pthread_special_flags_added=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 -$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; } -if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 +printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } +if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { int i = PTHREAD_PRIO_INHERIT; + return i; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_PTHREAD_PRIO_INHERIT=yes -else +else $as_nop ax_cv_PTHREAD_PRIO_INHERIT=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 -$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 +printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ - test "x$ax_pthread_prio_inherit_defined" != "xyes"; then : + test "x$ax_pthread_prio_inherit_defined" != "xyes" +then : -$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h ax_pthread_prio_inherit_defined=yes @@ -6940,19 +8843,31 @@ fi #handle absolute path differently from PATH based program lookup case "x$CC" in #( x/*) : - if as_fn_executable_p ${CC}_r; then : + + if as_fn_executable_p ${CC}_r +then : PTHREAD_CC="${CC}_r" -fi ;; #( +fi + if test "x${CXX}" != "x" +then : + if as_fn_executable_p ${CXX}_r +then : + PTHREAD_CXX="${CXX}_r" +fi +fi + ;; #( *) : - for ac_prog in ${CC}_r + + for ac_prog in ${CC}_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PTHREAD_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PTHREAD_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else @@ -6960,11 +8875,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6975,19 +8894,73 @@ fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 -$as_echo "$PTHREAD_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +printf "%s\n" "$PTHREAD_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" - ;; -esac ;; #( + + if test "x${CXX}" != "x" +then : + for ac_prog in ${CXX}_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PTHREAD_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -n "$PTHREAD_CXX"; then + ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_prog_PTHREAD_CXX="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX +if test -n "$PTHREAD_CXX"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 +printf "%s\n" "$PTHREAD_CXX" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$PTHREAD_CXX" && break +done +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + +fi + + ;; +esac + ;; #( *) : ;; esac @@ -6997,6 +8970,8 @@ esac fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" +test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" + @@ -7005,7 +8980,7 @@ test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "x$ax_pthread_ok" = "xyes"; then -$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD 1" >>confdefs.h : else @@ -7029,11 +9004,12 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$PERL"; then # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PERL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$PERL"; then ac_cv_prog_PERL="$PERL" # Let the user override the test. else @@ -7041,11 +9017,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PERL="perl" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7056,11 +9036,11 @@ fi fi PERL=$ac_cv_prog_PERL if test -n "$PERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -$as_echo "$PERL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7069,18 +9049,18 @@ fi if test "x$PERL" != x; then ax_perl_modules_failed=0 for ax_perl_module in 'Text::Balanced' ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 -$as_echo_n "checking for perl module $ax_perl_module... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 +printf %s "checking for perl module $ax_perl_module... " >&6; } # Would be nice to log result here, but can't rely on autoconf internals $PERL -e "use $ax_perl_module; exit" > /dev/null 2>&1 if test $? -ne 0; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; ax_perl_modules_failed=1 else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; }; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; }; fi done @@ -7093,8 +9073,8 @@ $as_echo "ok" >&6; }; as_fn_error $? "could not find perl modules Text::Balanced" "$LINENO" 5 fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 -$as_echo "$as_me: WARNING: could not find perl" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 +printf "%s\n" "$as_me: WARNING: could not find perl" >&2;} fi @@ -7106,11 +9086,12 @@ fi if test -z "$PERL"; then # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PERL+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PERL+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$PERL"; then ac_cv_prog_PERL="$PERL" # Let the user override the test. else @@ -7118,11 +9099,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PERL="perl" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7133,11 +9118,11 @@ fi fi PERL=$ac_cv_prog_PERL if test -n "$PERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -$as_echo "$PERL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -7146,18 +9131,18 @@ fi if test "x$PERL" != x; then ax_perl_modules_failed=0 for ax_perl_module in 'Digest::MD5' ; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 -$as_echo_n "checking for perl module $ax_perl_module... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 +printf %s "checking for perl module $ax_perl_module... " >&6; } # Would be nice to log result here, but can't rely on autoconf internals $PERL -e "use $ax_perl_module; exit" > /dev/null 2>&1 if test $? -ne 0; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; }; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; ax_perl_modules_failed=1 else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; }; + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; }; fi done @@ -7170,22 +9155,24 @@ $as_echo "ok" >&6; }; as_fn_error $? "could not find perl module Digest::MD5" "$LINENO" 5 fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 -$as_echo "$as_me: WARNING: could not find perl" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 +printf "%s\n" "$as_me: WARNING: could not find perl" >&2;} fi # Check whether --with-llvm was given. -if test "${with_llvm+set}" = set; then : +if test ${with_llvm+y} +then : withval=$with_llvm; LLVM_HOME="$withval" # Extract the first word of "llvm-config", so it can be a program name with args. set dummy llvm-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LLVM_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LLVM_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $LLVM_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_LLVM_CONFIG="$LLVM_CONFIG" # Let the user override the test with a path. @@ -7195,11 +9182,15 @@ else for as_dir in "$LLVM_HOME/bin" do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LLVM_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_LLVM_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7212,27 +9203,29 @@ esac fi LLVM_CONFIG=$ac_cv_path_LLVM_CONFIG if test -n "$LLVM_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5 -$as_echo "$LLVM_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5 +printf "%s\n" "$LLVM_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - if test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config"; then : + if test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config" +then : as_fn_error $? "could not find llvm-config" "$LINENO" 5 fi -else +else $as_nop # Extract the first word of "llvm-config", so it can be a program name with args. set dummy llvm-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_LLVM_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LLVM_CONFIG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $LLVM_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_LLVM_CONFIG="$LLVM_CONFIG" # Let the user override the test with a path. @@ -7243,11 +9236,15 @@ as_dummy=""/bin:/usr/bin:/usr/local/bin:/sw/bin:/usr/local/opt/llvm/bin"" for as_dir in $as_dummy do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_LLVM_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_LLVM_CONFIG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7260,15 +9257,16 @@ esac fi LLVM_CONFIG=$ac_cv_path_LLVM_CONFIG if test -n "$LLVM_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5 -$as_echo "$LLVM_CONFIG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5 +printf "%s\n" "$LLVM_CONFIG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - if test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config"; then : + if test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config" +then : as_fn_error $? "could not find llvm-config" "$LINENO" 5 fi LLVM_HOME=`$LLVM_CONFIG --prefix` @@ -7280,12 +9278,13 @@ fi LLVM_LIB_DIR=`$LLVM_CONFIG --libdir` LLVM_BIN_DIR=`$LLVM_CONFIG --bindir` LLVM_INCLUDE_DIR=`$LLVM_CONFIG --includedir` -as_ac_File=`$as_echo "ac_cv_file_$LLVM_INCLUDE_DIR/clang/Basic/LLVM.h" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_INCLUDE_DIR/clang/Basic/LLVM.h" >&5 -$as_echo_n "checking for $LLVM_INCLUDE_DIR/clang/Basic/LLVM.h... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_INCLUDE_DIR/clang/Basic/LLVM.h" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_INCLUDE_DIR/clang/Basic/LLVM.h" >&5 +printf %s "checking for $LLVM_INCLUDE_DIR/clang/Basic/LLVM.h... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_INCLUDE_DIR/clang/Basic/LLVM.h"; then @@ -7295,20 +9294,22 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : -else +else $as_nop as_fn_error $? "could not find clang development headers" "$LINENO" 5 fi -as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libLLVMSupport.a" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libLLVMSupport.a" >&5 -$as_echo_n "checking for $LLVM_LIB_DIR/libLLVMSupport.a... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libLLVMSupport.a" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libLLVMSupport.a" >&5 +printf %s "checking for $LLVM_LIB_DIR/libLLVMSupport.a... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libLLVMSupport.a"; then @@ -7318,22 +9319,24 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : -else +else $as_nop as_fn_error $? "could not find clang library files in $LLVM_LIB_DIR" "$LINENO" 5 fi # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_CLANG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CLANG+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $CLANG in [\\/]* | ?:[\\/]*) ac_cv_path_CLANG="$CLANG" # Let the user override the test with a path. @@ -7344,11 +9347,15 @@ as_dummy=""$LLVM_BIN_DIR:/bin:/usr/bin:/usr/local/bin:/sw/bin"" for as_dir in $as_dummy do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_CLANG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_CLANG="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7361,27 +9368,29 @@ esac fi CLANG=$ac_cv_path_CLANG if test -n "$CLANG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CLANG" >&5 -$as_echo "$CLANG" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CLANG" >&5 +printf "%s\n" "$CLANG" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -if test "$ac_cv_path_CLANG" = "noclang"; then : +if test "$ac_cv_path_CLANG" = "noclang" +then : as_fn_error $? "could not find clang" "$LINENO" 5 fi OLD_CLANG_LIBS="-lclangFrontend -lclangDriver -lclangSerialization -lclangParse -lclangSema -lclangAnalysis -lclangEdit -lclangAST -lclangLex -lclangBasic" NEW_CLANG_LIBS="-lclang-cpp" -as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclangFrontend.a" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangFrontend.a" >&5 -$as_echo_n "checking for $LLVM_LIB_DIR/libclangFrontend.a... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libclangFrontend.a" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangFrontend.a" >&5 +printf %s "checking for $LLVM_LIB_DIR/libclangFrontend.a... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libclangFrontend.a"; then @@ -7391,19 +9400,21 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : ICG_CLANGLIBS="$OLD_CLANG_LIBS" -else - as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclangFrontend.so" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangFrontend.so" >&5 -$as_echo_n "checking for $LLVM_LIB_DIR/libclangFrontend.so... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libclangFrontend.so" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangFrontend.so" >&5 +printf %s "checking for $LLVM_LIB_DIR/libclangFrontend.so... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libclangFrontend.so"; then @@ -7413,19 +9424,21 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : ICG_CLANGLIBS="$OLD_CLANG_LIBS" -else - as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclang-cpp.a" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclang-cpp.a" >&5 -$as_echo_n "checking for $LLVM_LIB_DIR/libclang-cpp.a... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libclang-cpp.a" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclang-cpp.a" >&5 +printf %s "checking for $LLVM_LIB_DIR/libclang-cpp.a... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libclang-cpp.a"; then @@ -7435,19 +9448,21 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : ICG_CLANGLIBS="$NEW_CLANG_LIBS" -else - as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclang-cpp.so" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclang-cpp.so" >&5 -$as_echo_n "checking for $LLVM_LIB_DIR/libclang-cpp.so... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libclang-cpp.so" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclang-cpp.so" >&5 +printf %s "checking for $LLVM_LIB_DIR/libclang-cpp.so... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libclang-cpp.so"; then @@ -7457,13 +9472,14 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : ICG_CLANGLIBS="$NEW_CLANG_LIBS" -else +else $as_nop as_fn_error $? "could not find clang libs in LLVM library: \"$LLVM_LIB_DIR\"" "$LINENO" 5 fi @@ -7485,7 +9501,8 @@ fi CLANG_VERSION="" ax_cv_clang_version="`$CLANG --version | grep "version" | sed "s/.*version \(0-9*\.0-9*\.0-9*\).*/\1/"`" - if test "x$ax_cv_clang_version" = "x"; then : + if test "x$ax_cv_clang_version" = "x" +then : ax_cv_clang_version="" @@ -7493,11 +9510,12 @@ fi CLANG_VERSION=$ax_cv_clang_version -if test "x$CLANG_VERSION" = "x"; then : +if test "x$CLANG_VERSION" = "x" +then : -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking clang version >= 3.4.2" >&5 -$as_echo_n "checking clang version >= 3.4.2... " >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking clang version >= 3.4.2" >&5 +printf %s "checking clang version >= 3.4.2... " >&6; } @@ -7530,10 +9548,10 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version if test "$ax_compare_version" = "true" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } as_fn_error $? "Trick requires llvm/clang version >= 3.4.2" "$LINENO" 5 fi @@ -7544,30 +9562,31 @@ fi # # Handle user hints # -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if zlib is wanted" >&5 -$as_echo_n "checking if zlib is wanted... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if zlib is wanted" >&5 +printf %s "checking if zlib is wanted... " >&6; } zlib_places="/usr/local /usr /opt/local /sw" # Check whether --with-zlib was given. -if test "${with_zlib+set}" = set; then : +if test ${with_zlib+y} +then : withval=$with_zlib; if test "$withval" != no ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } if test -d "$withval" then zlib_places="$withval $zlib_places" else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, $withval does not exist, checking usual places" >&5 -$as_echo "$as_me: WARNING: Sorry, $withval does not exist, checking usual places" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, $withval does not exist, checking usual places" >&5 +printf "%s\n" "$as_me: WARNING: Sorry, $withval does not exist, checking usual places" >&2;} fi else zlib_places= - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } fi @@ -7590,18 +9609,18 @@ then LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" fi - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 -$as_echo_n "checking for inflateEnd in -lz... " >&6; } -if ${ac_cv_lib_z_inflateEnd+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 +printf %s "checking for inflateEnd in -lz... " >&6; } +if test ${ac_cv_lib_z_inflateEnd+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -7610,43 +9629,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char inflateEnd (); int -main () +main (void) { return inflateEnd (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_z_inflateEnd=yes -else +else $as_nop ac_cv_lib_z_inflateEnd=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 -$as_echo "$ac_cv_lib_z_inflateEnd" >&6; } -if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 +printf "%s\n" "$ac_cv_lib_z_inflateEnd" >&6; } +if test "x$ac_cv_lib_z_inflateEnd" = xyes +then : zlib_cv_libz=yes -else +else $as_nop zlib_cv_libz=no fi - ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes +then : zlib_cv_zlib_h=yes -else +else $as_nop zlib_cv_zlib_h=no fi - ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -7663,7 +9681,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" LIBS="-lz $LIBS" -$as_echo "#define HAVE_LIBZ 1" >>confdefs.h +printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h else @@ -7678,44 +9696,47 @@ fi # Check whether --with-udunits was given. -if test "${with_udunits+set}" = set; then : +if test ${with_udunits+y} +then : withval=$with_udunits; UDUNITS_HOME="$withval" -else +else $as_nop UDUNITS_HOME="" fi -if test "$UDUNITS_HOME" = ""; then : +if test "$UDUNITS_HOME" = "" +then : - ac_fn_cxx_check_header_mongrel "$LINENO" "udunits2.h" "ac_cv_header_udunits2_h" "$ac_includes_default" -if test "x$ac_cv_header_udunits2_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "udunits2.h" "ac_cv_header_udunits2_h" "$ac_includes_default" +if test "x$ac_cv_header_udunits2_h" = xyes +then : UDUNITS_INCLUDES= -else - ac_fn_cxx_check_header_mongrel "$LINENO" "udunits2/udunits2.h" "ac_cv_header_udunits2_udunits2_h" "$ac_includes_default" -if test "x$ac_cv_header_udunits2_udunits2_h" = xyes; then : +else $as_nop + ac_fn_cxx_check_header_compile "$LINENO" "udunits2/udunits2.h" "ac_cv_header_udunits2_udunits2_h" "$ac_includes_default" +if test "x$ac_cv_header_udunits2_udunits2_h" = xyes +then : UDUNITS_INCLUDES=-I/usr/include/udunits2 -else +else $as_nop as_fn_error $? "could not find udunits development headers" "$LINENO" 5 fi - fi - UDUNITS_LDFLAGS=-ludunits2 -else +else $as_nop UDUNITS_EXCLUDE=$UDUNITS_HOME - as_ac_File=`$as_echo "ac_cv_file_$UDUNITS_HOME/include/udunits2.h" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $UDUNITS_HOME/include/udunits2.h" >&5 -$as_echo_n "checking for $UDUNITS_HOME/include/udunits2.h... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_ac_File=`printf "%s\n" "ac_cv_file_$UDUNITS_HOME/include/udunits2.h" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $UDUNITS_HOME/include/udunits2.h" >&5 +printf %s "checking for $UDUNITS_HOME/include/udunits2.h... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$UDUNITS_HOME/include/udunits2.h"; then @@ -7725,19 +9746,21 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : UDUNITS_INCLUDES=-I$UDUNITS_HOME/include UDUNITS_LDFLAGS="-Wl,-rpath,$UDUNITS_HOME/lib -L$UDUNITS_HOME/lib -ludunits2" -else - as_ac_File=`$as_echo "ac_cv_file_$UDUNITS_HOME/lib/udunits2.h" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $UDUNITS_HOME/lib/udunits2.h" >&5 -$as_echo_n "checking for $UDUNITS_HOME/lib/udunits2.h... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + as_ac_File=`printf "%s\n" "ac_cv_file_$UDUNITS_HOME/lib/udunits2.h" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $UDUNITS_HOME/lib/udunits2.h" >&5 +printf %s "checking for $UDUNITS_HOME/lib/udunits2.h... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$UDUNITS_HOME/lib/udunits2.h"; then @@ -7747,13 +9770,14 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : UDUNITS_INCLUDES=-I$UDUNITS_HOME/lib UDUNITS_LDFLAGS="-Wl,-rpath,$UDUNITS_HOME/lib -L$UDUNITS_HOME/lib -ludunits2" -else +else $as_nop as_fn_error $? "could not find udunits2" "$LINENO" 5 fi @@ -7766,44 +9790,47 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ludunits2" >&5 -$as_echo_n "checking for main in -ludunits2... " >&6; } -if ${ac_cv_lib_udunits2_main+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -ludunits2" >&5 +printf %s "checking for main in -ludunits2... " >&6; } +if test ${ac_cv_lib_udunits2_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ludunits2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - +namespace conftest { + extern "C" int main (); +} int -main () +main (void) { -return main (); +return conftest::main (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_lib_udunits2_main=yes -else +else $as_nop ac_cv_lib_udunits2_main=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_udunits2_main" >&5 -$as_echo "$ac_cv_lib_udunits2_main" >&6; } -if test "x$ac_cv_lib_udunits2_main" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBUDUNITS2 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_udunits2_main" >&5 +printf "%s\n" "$ac_cv_lib_udunits2_main" >&6; } +if test "x$ac_cv_lib_udunits2_main" = xyes +then : + printf "%s\n" "#define HAVE_LIBUDUNITS2 1" >>confdefs.h LIBS="-ludunits2 $LIBS" -else +else $as_nop as_fn_error $? "could not find libudunits" "$LINENO" 5 fi @@ -7814,27 +9841,31 @@ fi # Check whether --with-hdf5 was given. -if test "${with_hdf5+set}" = set; then : +if test ${with_hdf5+y} +then : withval=$with_hdf5; HDF5_HOME="$withval" - if test "$HDF5_HOME" = "yes"; then : - ac_fn_cxx_check_header_mongrel "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default" -if test "x$ac_cv_header_hdf5_h" = xyes; then : + if test "$HDF5_HOME" = "yes" +then : + ac_fn_cxx_check_header_compile "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default" +if test "x$ac_cv_header_hdf5_h" = xyes +then : HDF5_HOME="/usr" -else +else $as_nop as_fn_error $? "could not find hdf5.h" "$LINENO" 5 fi - -else - if test "$HDF5_HOME" = "no"; then : +else $as_nop + if test "$HDF5_HOME" = "no" +then : HDF5_HOME="" -else - as_ac_File=`$as_echo "ac_cv_file_$HDF5_HOME/include/hdf5.h" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $HDF5_HOME/include/hdf5.h" >&5 -$as_echo_n "checking for $HDF5_HOME/include/hdf5.h... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + as_ac_File=`printf "%s\n" "ac_cv_file_$HDF5_HOME/include/hdf5.h" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $HDF5_HOME/include/hdf5.h" >&5 +printf %s "checking for $HDF5_HOME/include/hdf5.h... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$HDF5_HOME/include/hdf5.h"; then @@ -7844,11 +9875,12 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : -else +else $as_nop as_fn_error $? "could not find $HDF5_HOME/include/hdf5.h" "$LINENO" 5 fi @@ -7857,61 +9889,65 @@ fi fi fi -else +else $as_nop - ac_fn_cxx_check_header_mongrel "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default" -if test "x$ac_cv_header_hdf5_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default" +if test "x$ac_cv_header_hdf5_h" = xyes +then : HDF5_HOME="/usr" -else +else $as_nop HDF5_HOME="" fi - fi - if test "$HDF5_HOME" != ""; then : + if test "$HDF5_HOME" != "" +then : LDFLAGS="${LDFLAGS} -L${HDF5_HOME}/lib" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lhdf5" >&5 -$as_echo_n "checking for main in -lhdf5... " >&6; } -if ${ac_cv_lib_hdf5_main+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lhdf5" >&5 +printf %s "checking for main in -lhdf5... " >&6; } +if test ${ac_cv_lib_hdf5_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lhdf5 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - +namespace conftest { + extern "C" int main (); +} int -main () +main (void) { -return main (); +return conftest::main (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_lib_hdf5_main=yes -else +else $as_nop ac_cv_lib_hdf5_main=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hdf5_main" >&5 -$as_echo "$ac_cv_lib_hdf5_main" >&6; } -if test "x$ac_cv_lib_hdf5_main" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBHDF5 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hdf5_main" >&5 +printf "%s\n" "$ac_cv_lib_hdf5_main" >&6; } +if test "x$ac_cv_lib_hdf5_main" = xyes +then : + printf "%s\n" "#define HAVE_LIBHDF5 1" >>confdefs.h LIBS="-lhdf5 $LIBS" -else +else $as_nop as_fn_error $? "could not find libhdf5" "$LINENO" 5 fi @@ -7924,27 +9960,31 @@ fi # Check whether --with-gsl was given. -if test "${with_gsl+set}" = set; then : +if test ${with_gsl+y} +then : withval=$with_gsl; GSL_HOME="$withval" - if test "$GSL_HOME" = "yes"; then : - ac_fn_cxx_check_header_mongrel "$LINENO" "gsl/gsl_rng.h" "ac_cv_header_gsl_gsl_rng_h" "$ac_includes_default" -if test "x$ac_cv_header_gsl_gsl_rng_h" = xyes; then : + if test "$GSL_HOME" = "yes" +then : + ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_rng.h" "ac_cv_header_gsl_gsl_rng_h" "$ac_includes_default" +if test "x$ac_cv_header_gsl_gsl_rng_h" = xyes +then : GSL_HOME="/usr" -else +else $as_nop as_fn_error $? "could not find gsl/gsl_rng.h" "$LINENO" 5 fi - -else - if test "$GSL_HOME" = "no"; then : +else $as_nop + if test "$GSL_HOME" = "no" +then : GSL_HOME="" -else - as_ac_File=`$as_echo "ac_cv_file_$GSL_HOME/include/gsl" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GSL_HOME/include/gsl" >&5 -$as_echo_n "checking for $GSL_HOME/include/gsl... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + as_ac_File=`printf "%s\n" "ac_cv_file_$GSL_HOME/include/gsl" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $GSL_HOME/include/gsl" >&5 +printf %s "checking for $GSL_HOME/include/gsl... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$GSL_HOME/include/gsl"; then @@ -7954,11 +9994,12 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : -else +else $as_nop as_fn_error $? "could not find $GSL_HOME/include/gsl" "$LINENO" 5 fi @@ -7967,59 +10008,63 @@ fi fi fi -else - ac_fn_cxx_check_header_mongrel "$LINENO" "gsl/gsl_rng.h" "ac_cv_header_gsl_gsl_rng_h" "$ac_includes_default" -if test "x$ac_cv_header_gsl_gsl_rng_h" = xyes; then : +else $as_nop + ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_rng.h" "ac_cv_header_gsl_gsl_rng_h" "$ac_includes_default" +if test "x$ac_cv_header_gsl_gsl_rng_h" = xyes +then : GSL_HOME="/usr" -else +else $as_nop GSL_HOME="" fi - fi - if test "$GSL_HOME" != ""; then : + if test "$GSL_HOME" != "" +then : LDFLAGS="${LDFLAGS} -L${GSL_HOME}/lib" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgsl" >&5 -$as_echo_n "checking for main in -lgsl... " >&6; } -if ${ac_cv_lib_gsl_main+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lgsl" >&5 +printf %s "checking for main in -lgsl... " >&6; } +if test ${ac_cv_lib_gsl_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lgsl -lgslcblas $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - +namespace conftest { + extern "C" int main (); +} int -main () +main (void) { -return main (); +return conftest::main (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : +if ac_fn_cxx_try_link "$LINENO" +then : ac_cv_lib_gsl_main=yes -else +else $as_nop ac_cv_lib_gsl_main=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gsl_main" >&5 -$as_echo "$ac_cv_lib_gsl_main" >&6; } -if test "x$ac_cv_lib_gsl_main" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBGSL 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gsl_main" >&5 +printf "%s\n" "$ac_cv_lib_gsl_main" >&6; } +if test "x$ac_cv_lib_gsl_main" = xyes +then : + printf "%s\n" "#define HAVE_LIBGSL 1" >>confdefs.h LIBS="-lgsl $LIBS" -else +else $as_nop as_fn_error $? "could not find libgsl" "$LINENO" 5 fi @@ -8030,27 +10075,31 @@ fi # Check whether --with-gtest was given. -if test "${with_gtest+set}" = set; then : +if test ${with_gtest+y} +then : withval=$with_gtest; GTEST_HOME="$withval" - if test "$GTEST_HOME" = "yes"; then : - ac_fn_cxx_check_header_mongrel "$LINENO" "gtest/gtest.h" "ac_cv_header_gtest_gtest_h" "$ac_includes_default" -if test "x$ac_cv_header_gtest_gtest_h" = xyes; then : + if test "$GTEST_HOME" = "yes" +then : + ac_fn_cxx_check_header_compile "$LINENO" "gtest/gtest.h" "ac_cv_header_gtest_gtest_h" "$ac_includes_default" +if test "x$ac_cv_header_gtest_gtest_h" = xyes +then : GTEST_HOME="/usr" -else +else $as_nop as_fn_error $? "could not find gtest/gtest.h" "$LINENO" 5 fi - -else - if test "$GTEST_HOME" = "no"; then : +else $as_nop + if test "$GTEST_HOME" = "no" +then : GTEST_HOME="" -else - as_ac_File=`$as_echo "ac_cv_file_$GTEST_HOME/include/gtest" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GTEST_HOME/include/gtest" >&5 -$as_echo_n "checking for $GTEST_HOME/include/gtest... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +else $as_nop + as_ac_File=`printf "%s\n" "ac_cv_file_$GTEST_HOME/include/gtest" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $GTEST_HOME/include/gtest" >&5 +printf %s "checking for $GTEST_HOME/include/gtest... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$GTEST_HOME/include/gtest"; then @@ -8060,11 +10109,12 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : -else +else $as_nop as_fn_error $? "could not find $GTEST_HOME/include/gtest" "$LINENO" 5 fi @@ -8073,16 +10123,16 @@ fi fi fi -else - ac_fn_cxx_check_header_mongrel "$LINENO" "gtest/gtest.h" "ac_cv_header_gtest_gtest_h" "$ac_includes_default" -if test "x$ac_cv_header_gtest_gtest_h" = xyes; then : +else $as_nop + ac_fn_cxx_check_header_compile "$LINENO" "gtest/gtest.h" "ac_cv_header_gtest_gtest_h" "$ac_includes_default" +if test "x$ac_cv_header_gtest_gtest_h" = xyes +then : GTEST_HOME="/usr" -else +else $as_nop GTEST_HOME="" fi - fi @@ -8090,32 +10140,36 @@ fi # Check whether --with-civetweb was given. -if test "${with_civetweb+set}" = set; then : +if test ${with_civetweb+y} +then : withval=$with_civetweb; # --with option was provided. CIVETWEB_HOME="$withval" USE_CIVETWEB="0" # check whether directory arg was also provided. - if test "$CIVETWEB_HOME" = "yes"; then : - ac_fn_cxx_check_header_mongrel "$LINENO" "civetweb.h" "ac_cv_header_civetweb_h" "$ac_includes_default" -if test "x$ac_cv_header_civetweb_h" = xyes; then : + if test "$CIVETWEB_HOME" = "yes" +then : + ac_fn_cxx_check_header_compile "$LINENO" "civetweb.h" "ac_cv_header_civetweb_h" "$ac_includes_default" +if test "x$ac_cv_header_civetweb_h" = xyes +then : CIVETWEB_HOME="/usr"; USE_CIVETWEB="1" -else +else $as_nop as_fn_error $? "could not find civetweb.h" "$LINENO" 5 fi - -else +else $as_nop # else check whether --without-civet or --with-civet=no specified. - if test "$CIVETWEB_HOME" = "no"; then : + if test "$CIVETWEB_HOME" = "no" +then : CIVETWEB_HOME="" -else +else $as_nop # else --with-civet was provided with a directory path. - as_ac_File=`$as_echo "ac_cv_file_$CIVETWEB_HOME/include/civetweb.h" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CIVETWEB_HOME/include/civetweb.h" >&5 -$as_echo_n "checking for $CIVETWEB_HOME/include/civetweb.h... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_ac_File=`printf "%s\n" "ac_cv_file_$CIVETWEB_HOME/include/civetweb.h" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CIVETWEB_HOME/include/civetweb.h" >&5 +printf %s "checking for $CIVETWEB_HOME/include/civetweb.h... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$CIVETWEB_HOME/include/civetweb.h"; then @@ -8125,23 +10179,25 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$CIVETWEB_HOME/include/civetweb.h" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$CIVETWEB_HOME/include/civetweb.h" | $as_tr_cpp` 1 _ACEOF USE_CIVETWEB="1" -else +else $as_nop as_fn_error $? "Could not find all of the civetweb files." "$LINENO" 5 fi -as_ac_File=`$as_echo "ac_cv_file_$CIVETWEB_HOME/lib/libcivetweb.a" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CIVETWEB_HOME/lib/libcivetweb.a" >&5 -$as_echo_n "checking for $CIVETWEB_HOME/lib/libcivetweb.a... " >&6; } -if eval \${$as_ac_File+:} false; then : - $as_echo_n "(cached) " >&6 -else +as_ac_File=`printf "%s\n" "ac_cv_file_$CIVETWEB_HOME/lib/libcivetweb.a" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CIVETWEB_HOME/lib/libcivetweb.a" >&5 +printf %s "checking for $CIVETWEB_HOME/lib/libcivetweb.a... " >&6; } +if eval test \${$as_ac_File+y} +then : + printf %s "(cached) " >&6 +else $as_nop test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$CIVETWEB_HOME/lib/libcivetweb.a"; then @@ -8151,15 +10207,16 @@ else fi fi eval ac_res=\$$as_ac_File - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$CIVETWEB_HOME/lib/libcivetweb.a" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$CIVETWEB_HOME/lib/libcivetweb.a" | $as_tr_cpp` 1 _ACEOF USE_CIVETWEB="1" -else +else $as_nop as_fn_error $? "Could not find all of the civetweb files." "$LINENO" 5 fi @@ -8167,18 +10224,18 @@ fi fi fi -else +else $as_nop # --with option not provided. - ac_fn_cxx_check_header_mongrel "$LINENO" "civetweb.h" "ac_cv_header_civetweb_h" "$ac_includes_default" -if test "x$ac_cv_header_civetweb_h" = xyes; then : + ac_fn_cxx_check_header_compile "$LINENO" "civetweb.h" "ac_cv_header_civetweb_h" "$ac_includes_default" +if test "x$ac_cv_header_civetweb_h" = xyes +then : CIVETWEB_HOME="/usr"; USE_CIVETWEB="1" -else +else $as_nop CIVETWEB_HOME=""; USE_CIVETWEB="0" fi - fi @@ -8186,13 +10243,15 @@ fi # Check whether --enable-er7utils was given. -if test "${enable_er7utils+set}" = set; then : - enableval=$enable_er7utils; if test "x$enable_er7utils" = xyes; then : +if test ${enable_er7utils+y} +then : + enableval=$enable_er7utils; if test "x$enable_er7utils" = xyes +then : USE_ER7_UTILS="1" -else +else $as_nop USE_ER7_UTILS="0" fi -else +else $as_nop USE_ER7_UTILS="1" fi @@ -8229,8 +10288,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -8260,15 +10319,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -8282,8 +10341,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -8336,7 +10395,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -8352,8 +10411,8 @@ LTLIBOBJS=$ac_ltlibobjs ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -8376,14 +10435,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -8393,46 +10454,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -8441,13 +10502,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -8456,8 +10510,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -8469,30 +10527,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -8505,13 +10543,14 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -8538,18 +10577,20 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -8561,12 +10602,13 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -8597,7 +10639,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -8619,6 +10661,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -8632,6 +10678,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -8673,7 +10725,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -8682,7 +10734,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -8745,7 +10797,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Trick $as_me 17+, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -8794,14 +10846,16 @@ $config_files Report bugs to the package provider." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Trick config.status 17+ -configured by $0, generated by GNU Autoconf 2.69, +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -8839,21 +10893,21 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -8881,7 +10935,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -8895,7 +10949,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -8920,7 +10974,7 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree @@ -9148,7 +11202,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -9156,17 +11210,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -9183,7 +11237,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -9207,9 +11261,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -9262,8 +11316,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -9305,9 +11359,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -9354,10 +11408,11 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi printf "\033[32mconfigure script successfully completed\033[0m\n" + diff --git a/share/trick/makefiles/config_user.mk.in b/share/trick/makefiles/config_user.mk.in index 1347929b..011dbdba 100644 --- a/share/trick/makefiles/config_user.mk.in +++ b/share/trick/makefiles/config_user.mk.in @@ -47,5 +47,6 @@ USE_ER7_UTILS = @USE_ER7_UTILS@ LIBXML = @LIBXML@ PREFIX ?= @prefix@ +TRICK_GCC_VERSION = @GCC_VERSION@ CONFIG_MK = 1 diff --git a/trick_source/codegen/Interface_Code_Gen/Utilities.cpp b/trick_source/codegen/Interface_Code_Gen/Utilities.cpp index c90052b3..0155f468 100644 --- a/trick_source/codegen/Interface_Code_Gen/Utilities.cpp +++ b/trick_source/codegen/Interface_Code_Gen/Utilities.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "Utilities.hh" @@ -191,3 +192,39 @@ std::string underline(const std::string& text, unsigned length) { std::string quote(const std::string& text) { return "\"" + text + "\""; } + + +// This function will accept version numbers with Major, Major.Minor, or Major.Minor.Patch. +// It removes non-numerical prefixes or postfixes to the version number. The return value +// is an int with the format MMmmpp, which is what llvm LangOpts.gnucversion expects. +// If there is a problem or no verno is provided, it returns the default value. +int gccVersionToIntOrDefault(const char* verno, int def) { + const int buffersize = 32; + // need mutable characters for strtok + char verbuf[buffersize]; + if(verno == nullptr || verno[0] == '\0' || strlen(verno) >= buffersize) { + // Invalid GCC version string, returning default GCC version + return def; + } + strcpy(verbuf, verno); + const int len = strlen(verbuf); + const char* majMinPatch[3] = {"0", "0", "0"}; + // Setting non-numerals to the delimeter (might catch vernos with prefix or postfix) + for(int i = 0; i < len; i++) { + if(verbuf[i] < '0' || verbuf[i] > '9') { + verbuf[i] = '.'; + } + } + char* next = strtok(verbuf, "."); + for(int i = 0; next != nullptr && i < 3; i++) { + majMinPatch[i] = next; + next = strtok(nullptr, "."); + } + // This is the format that LLVM expects for the version number + int result = 10000*atoi(majMinPatch[0]) + 100*atoi(majMinPatch[1]) + atoi(majMinPatch[2]); + if(result > 999999) { + std::cerr << "Warning: GCC_VERSION is invalid version number: " << result << ". Setting ICG to use default GCC version: " << def << std::endl; + return def; + } + return result; +} diff --git a/trick_source/codegen/Interface_Code_Gen/Utilities.hh b/trick_source/codegen/Interface_Code_Gen/Utilities.hh index 50dd24fe..6fcfe13d 100644 --- a/trick_source/codegen/Interface_Code_Gen/Utilities.hh +++ b/trick_source/codegen/Interface_Code_Gen/Utilities.hh @@ -28,5 +28,6 @@ std::string underline(const std::string& text); std::string underline(const std::string& text, unsigned length); std::string quote(const std::string& text); std::string & replace_special_chars( std::string & str); +int gccVersionToIntOrDefault(const char* verno, int def); #endif diff --git a/trick_source/codegen/Interface_Code_Gen/main.cpp b/trick_source/codegen/Interface_Code_Gen/main.cpp index 33b3f43f..0cc557a0 100644 --- a/trick_source/codegen/Interface_Code_Gen/main.cpp +++ b/trick_source/codegen/Interface_Code_Gen/main.cpp @@ -64,8 +64,14 @@ void set_lang_opts(clang::CompilerInstance & ci) { ci.getLangOpts().DoubleSquareBracketAttributes = true ; #endif // Activate C++17 parsing +#ifdef TRICK_GCC_VERSION +const char * gcc_version = TRICK_GCC_VERSION; +#else +const char * gcc_version = ""; +#endif + #if (LIBCLANG_MAJOR >= 10) - ci.getLangOpts().GNUCVersion = true ; + ci.getLangOpts().GNUCVersion = gccVersionToIntOrDefault(gcc_version, 40805); ci.getLangOpts().CPlusPlus17 = true ; #endif } diff --git a/trick_source/codegen/Interface_Code_Gen/makefile b/trick_source/codegen/Interface_Code_Gen/makefile index 93df3d15..a0eb3551 100644 --- a/trick_source/codegen/Interface_Code_Gen/makefile +++ b/trick_source/codegen/Interface_Code_Gen/makefile @@ -38,6 +38,7 @@ endif ifeq ($(TRICK_HOST_TYPE),Linux) CLANGLIBS += $(shell $(LLVM_HOME)/bin/llvm-config --libs) +CXXFLAGS += -DTRICK_GCC_VERSION=\"$(TRICK_GCC_VERSION)\" ifeq ($(CLANG_MINOR_GTEQ5),1) # Fedora 21 adds -ledit as a system lib, but it isn't installed, or required. CLANGLIBS += $(filter-out -ledit,$(shell $(LLVM_HOME)/bin/llvm-config --system-libs)) From b69475175dc67053aa4cb63777d3e4a10a7d4a81 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 20 Jul 2022 15:56:02 -0500 Subject: [PATCH 018/162] Minor improvement to SIM_billiards --- .../SIM_billiards/Modified_data/realtime.py | 2 +- trick_sims/SIM_billiards/README.md | 31 +++++ .../models/graphics/cpp/main.cpp | 127 ------------------ 3 files changed, 32 insertions(+), 128 deletions(-) create mode 100644 trick_sims/SIM_billiards/README.md diff --git a/trick_sims/SIM_billiards/Modified_data/realtime.py b/trick_sims/SIM_billiards/Modified_data/realtime.py index 31546eb5..172b2f1b 100644 --- a/trick_sims/SIM_billiards/Modified_data/realtime.py +++ b/trick_sims/SIM_billiards/Modified_data/realtime.py @@ -4,7 +4,7 @@ trick.exec_set_software_frame(0.01) trick.itimer_enable() trick.exec_set_enable_freeze(True) -trick.exec_set_freeze_command(True) +# trick.exec_set_freeze_command(True) simControlPanel = trick.SimControlPanel() trick.add_external_application(simControlPanel) diff --git a/trick_sims/SIM_billiards/README.md b/trick_sims/SIM_billiards/README.md new file mode 100644 index 00000000..9db73808 --- /dev/null +++ b/trick_sims/SIM_billiards/README.md @@ -0,0 +1,31 @@ +# Billiards Sim + +Playable simulation of a billiards table. Includes friction, impulse collision handling, and cue forces currently. + +Angular forces on cue ball, user control of parameters, and detailed physics writeup coming soon :) + + +

+ +# Pool Table Display + +Located in models/graphics/cpp, uses the Libigl library for visualization. + +## Compile + +libigl must be downloaded from Github : https://github.com/libigl/libigl + +Clone it somewhere accessible, like your home directory. It does not need to be compiled. + +libigl depends on Eigen3, which may (or may not) need to be downloaded and installed : https://eigen.tuxfamily.org/index.php?title=Main_Page + +To compile: +``` +cd models/graphics/cpp +mkdir build +cd build +cmake .. +make +``` + +The provided input files will automatically run and connect to the display. \ No newline at end of file diff --git a/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp b/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp index 1ed067e0..003bc9ad 100644 --- a/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp +++ b/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp @@ -521,132 +521,6 @@ std::vector parseTrickResponseInt(std::vector list) { return ret; } -// void launchViewer (igl::opengl::glfw::Viewer *viewer) { -// std::cout << "About to launch the viewer" << std::endl; -// viewer->launch(); -// } - - - -// std::queue messageQueue; -// std::mutex messageLock; - -// std::mutex renderLock; - - -// igl::opengl::glfw::imgui::ImGuiMenu* menu; - -// bool mouse_down (igl::opengl::glfw::Viewer& viewer, int button, int modifier) { -// mousePressed = true; -// return true; -// } - -// bool mouse_up (igl::opengl::glfw::Viewer& viewer, int button, int modifier) { -// mousePressed = false; -// std::string cueRequest = ""; -// std::string templateString = "dyn.table.applyCueForce(%.3f, %.3f) \n"; - -// char buf[128]; -// sprintf(buf, templateString.c_str(), mouseX, mouseY); -// cueRequest += std::string(buf); - -// messageLock.lock(); -// messageQueue.push(cueRequest); -// messageLock.unlock(); - -// return true; -// } - -// bool mouse_move (igl::opengl::glfw::Viewer& viewer, int mouse_x, int mouse_y) { -// Eigen::Vector3f pos(mouse_x, mouse_y, 0); -// Eigen::Matrix4f model = viewer.core().view; -// Eigen::Vector3f unproj = igl::unproject(pos, model, viewer.core().proj, viewer.core().viewport); -// mouseX = unproj[0]; -// mouseY = -unproj[1]; -// return true; -// } - -// bool pre_draw (igl::opengl::glfw::Viewer& viewer) { - - // std::string reply; - // socket >> reply; - - // // std::cout << "Got data: " << reply << std::endl; - // std::vector replyData = parseTrickResponse(split(reply, '\t')); - // // numBalls = (int)replyData[0]; - - // if (replyData.size() <= 1) { - // // std::cout << "Received bad reply" << std::endl; - // return false; - // } - - // table.clearMovingShapes(); - - // Eigen::Vector2d cueBallPos(0,0); - // int cueBallIndex = 0; - - - // for (int i = 0; i < numBalls; i++) { - // double inPlay = replyData[1+(i*3 + 2)]; - // if (inPlay == 0) { - // continue; - // } - // std::vector circleData = {replyData[1+(i*3)], replyData[1+(i*3 + 1)], radii[i]}; - // Eigen::Vector3d circleColor; - // if (i == cueBallIndex) { - // circleColor = Eigen::Vector3d(1,1,1); - // cueBallPos = Eigen::Vector2d(replyData[1+(i*2)], replyData[1+(i*2 + 1)]); - // } else { - // circleColor = ball_colors[i % ball_colors.size()]; - - // } - // table.addShape(circleData, circleColor, false, CIRCLE, layer_BALL); - // } - - // if (mousePressed) { - // // Draw the cue - // double cue_width = 0.03; - // Eigen::Vector2d cue_end(mouseX, mouseY); - // Eigen::Vector2d vec = (cue_end - cueBallPos).normalized(); - // Eigen::Vector2d off1(-vec(1), vec(0)); - // Eigen::Vector2d off2(vec(1), -vec(0)); - // Eigen::Vector2d point1 = cue_end + (off1 * cue_width); - // Eigen::Vector2d point2 = cue_end + (off2 * cue_width); - // std::vector triangleData = {cueBallPos(0), cueBallPos(1), point1(0), point1(1), point2(0), point2(1)}; - // table.addShape(triangleData, Eigen::Vector3d(0, 0, 0), false, TRIANGLE, layer_CUE); - // } - - // renderLock.lock(); - // std::tie(V, F, C) = table.getMesh(); - - // renderLock.lock(); - - // viewer.data().clear(); - // viewer.core().orthographic = true; - // viewer.data().show_lines = false; - // viewer.data().set_face_based(false); - // viewer.data().double_sided = true; - // viewer.core().is_animating = true; - // viewer.core().camera_zoom = 2; - // viewer.data().set_mesh(V, F); - // viewer.data().set_colors(C); - - // renderLock.unlock(); -// } - -// void draw_viewer_menu () { -// ImGui::Text("Menu"); -// if (ImGui::Button("Reset Cue Ball", ImVec2(-1, 0))) -// { -// std::string message = "dyn.table.resetCueBall() \n"; -// messageLock.lock(); -// messageQueue.push(message); -// messageLock.unlock(); -// } - -// } - - int main(int argc, char *argv[]) { // Parse socket number out of argv @@ -837,7 +711,6 @@ int main(int argc, char *argv[]) plugin->widgets.push_back(menu); view->callback_mouse_down = [&](igl::opengl::glfw::Viewer& viewer, int button, int modifier) -> bool { - std::cout << "Mouse down" << std::endl; mousePressed = true; return false; }; From b4b8226953e37759e239763fc8ce511e8084c2bc Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 20 Jul 2022 15:58:26 -0500 Subject: [PATCH 019/162] Create How-To-Make-A-Release.md closes #1310 --- docs/howto_guides/How-To-Make-A-Release.md | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 docs/howto_guides/How-To-Make-A-Release.md diff --git a/docs/howto_guides/How-To-Make-A-Release.md b/docs/howto_guides/How-To-Make-A-Release.md new file mode 100644 index 00000000..57f5d041 --- /dev/null +++ b/docs/howto_guides/How-To-Make-A-Release.md @@ -0,0 +1,41 @@ +# How To Make A Trick Release +This guide describes how to make a Trick release on GitHub +### Close Open Issues +Go through recently updated issues/pull requests and make sure that any open issues that have been fixed are merged and closed +### Make the release notes +#### Examples +https://github.com/nasa/trick/releases +#### Steps +* Review closed issues, pull requests, and commits since the last release and make a bulleted list of major changes + * UI Changes + * Header Changes + * Dependency Changes + * Major Bugfixes + * New features, tools, and example sims + * New OS/distro support + * New dependency support (such as LLVM/GCC versions) + * Major Documentation changes +### Choose a version number and change the version numbers in the master branch +* Advance major version number if there are interface changes or other major build-breaking changes +* Advance minor version number if there are major improvements or new features that are not build breaking +* Advance patch/tiny version number for hotfixes or other bugfixes +### Change the version numbers in the master branch +#### Example +https://github.com/nasa/trick/commit/a317c222748e706e89b7f344f6910d1f39824feb +#### Steps +* In share/trick/trick_ver.txt change the "current_version" string to match the new version number and remove any postfixes +* In trick_source/java/pom.xml change the tag to the new version and remove any postfixes +* In CMakeLists.txt change TRICK_MAJOR TRICK_MINOR TRICK_TINY to match the current version, and set TRICK_PRERELEASE to an empty string +### Create a commit, tag, and push to github.com + * `git commit -m "update version numbers for Trick Simulation Environment X.Y.Z" + * `git tag -a -m "Trick Simulation Environment "` e.g. `git tag -a 25.0.0 -m "Trick Simulation Environment 25.0.0"` + * `git push origin +### Change version numbers back to prerelease and push + * reverse the process of changing the version numbers, updating to the next minor prerelease version (or major version if planning a major release soon). + * Remember to add the -beta postfix to the version number + * `git commit -m "update version numbers to prerelease X.Y.Z-beta" + * `git push origin master` +### Create the release through the github UI + * This process is subject to change, so I'm posting the link to GitHub documentation here: + * https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release + * Currently we do not add any artifacts/binaries or open discussions, so you can ignore those optional steps. From 19cd35a63cf22ade8bde139efe478f7460ce2e6c Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 20 Jul 2022 15:59:19 -0500 Subject: [PATCH 020/162] Update How-To-Guides.md --- docs/howto_guides/How-To-Guides.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/howto_guides/How-To-Guides.md b/docs/howto_guides/How-To-Guides.md index 1f99ae06..6a75b616 100644 --- a/docs/howto_guides/How-To-Guides.md +++ b/docs/howto_guides/How-To-Guides.md @@ -7,3 +7,4 @@ 01. [How do I exclude code from being processed by Trick?](How-To-Exclude-Code) 01. [How do I create a model library to save compilation time?](/trick/documentation/building_a_simulation/Trickified-Project-Libraries) 01. [How do I use inherited templates in the input file?](How-To-Use-Inherited-Templates) +01. [How do I make a new Trick Release?](How-To-Make-A-Release) From 234b733ac569191217dd2033c07b26c77ba5a9da Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 20 Jul 2022 15:59:42 -0500 Subject: [PATCH 021/162] Update How-To-Guides.md --- docs/howto_guides/How-To-Guides.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/howto_guides/How-To-Guides.md b/docs/howto_guides/How-To-Guides.md index 6a75b616..66683f41 100644 --- a/docs/howto_guides/How-To-Guides.md +++ b/docs/howto_guides/How-To-Guides.md @@ -7,4 +7,4 @@ 01. [How do I exclude code from being processed by Trick?](How-To-Exclude-Code) 01. [How do I create a model library to save compilation time?](/trick/documentation/building_a_simulation/Trickified-Project-Libraries) 01. [How do I use inherited templates in the input file?](How-To-Use-Inherited-Templates) -01. [How do I make a new Trick Release?](How-To-Make-A-Release) +01. [How do I make a new Trick release on GitHub?](How-To-Make-A-Release) From 194a29e255b7eb8f25d411f46fa03aadaca2877b Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 20 Jul 2022 16:01:39 -0500 Subject: [PATCH 022/162] Update How-To-Make-A-Release.md --- docs/howto_guides/How-To-Make-A-Release.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/howto_guides/How-To-Make-A-Release.md b/docs/howto_guides/How-To-Make-A-Release.md index 57f5d041..5b53ac44 100644 --- a/docs/howto_guides/How-To-Make-A-Release.md +++ b/docs/howto_guides/How-To-Make-A-Release.md @@ -27,9 +27,9 @@ https://github.com/nasa/trick/commit/a317c222748e706e89b7f344f6910d1f39824feb * In trick_source/java/pom.xml change the tag to the new version and remove any postfixes * In CMakeLists.txt change TRICK_MAJOR TRICK_MINOR TRICK_TINY to match the current version, and set TRICK_PRERELEASE to an empty string ### Create a commit, tag, and push to github.com - * `git commit -m "update version numbers for Trick Simulation Environment X.Y.Z" + * `git commit -m "update version numbers for Trick Simulation Environment X.Y.Z"` * `git tag -a -m "Trick Simulation Environment "` e.g. `git tag -a 25.0.0 -m "Trick Simulation Environment 25.0.0"` - * `git push origin + * `git push origin ` ### Change version numbers back to prerelease and push * reverse the process of changing the version numbers, updating to the next minor prerelease version (or major version if planning a major release soon). * Remember to add the -beta postfix to the version number From 0fdcb086c55acc87351aa747bb3685df00de3d6f Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 20 Jul 2022 16:02:03 -0500 Subject: [PATCH 023/162] Update How-To-Make-A-Release.md --- docs/howto_guides/How-To-Make-A-Release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/howto_guides/How-To-Make-A-Release.md b/docs/howto_guides/How-To-Make-A-Release.md index 5b53ac44..2dc61ab0 100644 --- a/docs/howto_guides/How-To-Make-A-Release.md +++ b/docs/howto_guides/How-To-Make-A-Release.md @@ -33,7 +33,7 @@ https://github.com/nasa/trick/commit/a317c222748e706e89b7f344f6910d1f39824feb ### Change version numbers back to prerelease and push * reverse the process of changing the version numbers, updating to the next minor prerelease version (or major version if planning a major release soon). * Remember to add the -beta postfix to the version number - * `git commit -m "update version numbers to prerelease X.Y.Z-beta" + * `git commit -m "update version numbers to prerelease X.Y.Z-beta"` * `git push origin master` ### Create the release through the github UI * This process is subject to change, so I'm posting the link to GitHub documentation here: From a34c0fa5caf4703e42c49cf611d2b15669a0adf2 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 20 Jul 2022 16:02:48 -0500 Subject: [PATCH 024/162] Update How-To-Make-A-Release.md --- docs/howto_guides/How-To-Make-A-Release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/howto_guides/How-To-Make-A-Release.md b/docs/howto_guides/How-To-Make-A-Release.md index 2dc61ab0..bb45c93b 100644 --- a/docs/howto_guides/How-To-Make-A-Release.md +++ b/docs/howto_guides/How-To-Make-A-Release.md @@ -24,7 +24,7 @@ https://github.com/nasa/trick/releases https://github.com/nasa/trick/commit/a317c222748e706e89b7f344f6910d1f39824feb #### Steps * In share/trick/trick_ver.txt change the "current_version" string to match the new version number and remove any postfixes -* In trick_source/java/pom.xml change the tag to the new version and remove any postfixes +* In trick_source/java/pom.xml change the \ tag to the new version and remove any postfixes * In CMakeLists.txt change TRICK_MAJOR TRICK_MINOR TRICK_TINY to match the current version, and set TRICK_PRERELEASE to an empty string ### Create a commit, tag, and push to github.com * `git commit -m "update version numbers for Trick Simulation Environment X.Y.Z"` From e15723bde591f1c0d2b8e51782fce14c5ec4bf4d Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 20 Jul 2022 16:09:56 -0500 Subject: [PATCH 025/162] Update How-To-Make-A-Release.md --- docs/howto_guides/How-To-Make-A-Release.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/howto_guides/How-To-Make-A-Release.md b/docs/howto_guides/How-To-Make-A-Release.md index bb45c93b..d2cbda71 100644 --- a/docs/howto_guides/How-To-Make-A-Release.md +++ b/docs/howto_guides/How-To-Make-A-Release.md @@ -15,7 +15,7 @@ https://github.com/nasa/trick/releases * New OS/distro support * New dependency support (such as LLVM/GCC versions) * Major Documentation changes -### Choose a version number and change the version numbers in the master branch +### Choose a version number * Advance major version number if there are interface changes or other major build-breaking changes * Advance minor version number if there are major improvements or new features that are not build breaking * Advance patch/tiny version number for hotfixes or other bugfixes @@ -31,7 +31,7 @@ https://github.com/nasa/trick/commit/a317c222748e706e89b7f344f6910d1f39824feb * `git tag -a -m "Trick Simulation Environment "` e.g. `git tag -a 25.0.0 -m "Trick Simulation Environment 25.0.0"` * `git push origin ` ### Change version numbers back to prerelease and push - * reverse the process of changing the version numbers, updating to the next minor prerelease version (or major version if planning a major release soon). + * Reverse the process of changing the version numbers in the files listed above; update to the next minor prerelease version (or major version if planning a major release soon). * Remember to add the -beta postfix to the version number * `git commit -m "update version numbers to prerelease X.Y.Z-beta"` * `git push origin master` From 9363603f0f80487339b85cdf4d26a9a4b6b1e423 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 20 Jul 2022 16:47:07 -0500 Subject: [PATCH 026/162] update version numbers for Trick Simulation Environment 19.4.0 --- CMakeLists.txt | 6 +++--- share/trick/trick_ver.txt | 2 +- trick_source/java/pom.xml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 83112df3..de2f2697 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,11 +3,11 @@ cmake_minimum_required(VERSION 3.1) # trick is a C/C++ project, but we have some macOS # configuration to do before CMake searches for compilers project(trick NONE) -set(TRICK_MAJOR 23) -set(TRICK_MINOR 0) +set(TRICK_MAJOR 19) +set(TRICK_MINOR 4) set(TRICK_TINY 0) # set TRICK_PRERELEASE TO EMPTY STRING "" ON RELEASE -set(TRICK_PRERELEASE "-beta") +set(TRICK_PRERELEASE "") # On macOS Mojave and Catalina, the compilers in /usr/bin # are the ones that include the correct C standard library system headers diff --git a/share/trick/trick_ver.txt b/share/trick/trick_ver.txt index 281d9a1a..77cf5cda 100644 --- a/share/trick/trick_ver.txt +++ b/share/trick/trick_ver.txt @@ -1 +1 @@ -current_version = "23.0.0-beta" +current_version = "19.4.0" diff --git a/trick_source/java/pom.xml b/trick_source/java/pom.xml index 41cfcac0..5f03d70e 100644 --- a/trick_source/java/pom.xml +++ b/trick_source/java/pom.xml @@ -6,7 +6,7 @@ trick-java trick-java - 23.0.0-beta + 19.4.0 trick-java From 61a378553d2d3de7589610b82c7916e4bae66cbe Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 20 Jul 2022 16:53:18 -0500 Subject: [PATCH 027/162] update version numbers to prerelease 19.5.0-beta --- CMakeLists.txt | 4 ++-- share/trick/trick_ver.txt | 2 +- trick_source/java/pom.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index de2f2697..22498788 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,10 +4,10 @@ cmake_minimum_required(VERSION 3.1) # configuration to do before CMake searches for compilers project(trick NONE) set(TRICK_MAJOR 19) -set(TRICK_MINOR 4) +set(TRICK_MINOR 5) set(TRICK_TINY 0) # set TRICK_PRERELEASE TO EMPTY STRING "" ON RELEASE -set(TRICK_PRERELEASE "") +set(TRICK_PRERELEASE "-beta") # On macOS Mojave and Catalina, the compilers in /usr/bin # are the ones that include the correct C standard library system headers diff --git a/share/trick/trick_ver.txt b/share/trick/trick_ver.txt index 77cf5cda..df8fb6aa 100644 --- a/share/trick/trick_ver.txt +++ b/share/trick/trick_ver.txt @@ -1 +1 @@ -current_version = "19.4.0" +current_version = "19.5.0-beta" diff --git a/trick_source/java/pom.xml b/trick_source/java/pom.xml index 5f03d70e..23ec85c9 100644 --- a/trick_source/java/pom.xml +++ b/trick_source/java/pom.xml @@ -6,7 +6,7 @@ trick-java trick-java - 19.4.0 + 19.5.0-beta trick-java From 2dd12fcbb6c5b00bfb8290b53bb0e368428674ea Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 27 Jul 2022 08:40:40 -0500 Subject: [PATCH 028/162] #1315 parse websocket msg len for correct data (#1316) closes #1315 --- include/trick/MyCivetServer.hh | 2 +- include/trick/WebSocketSession.hh | 2 +- trick_sims/Cannon/models/httpMethods/TimeSession.cpp | 2 +- trick_sims/Cannon/models/httpMethods/TimeSession.hh | 2 +- .../web/CivetServer/include/VariableServerSession.hh | 2 +- trick_source/web/CivetServer/src/MyCivetServer.cpp | 2 +- trick_source/web/CivetServer/src/VariableServerSession.cpp | 2 +- trick_source/web/CivetServer/src/http_GET_handlers.cpp | 6 ++++-- 8 files changed, 11 insertions(+), 9 deletions(-) diff --git a/include/trick/MyCivetServer.hh b/include/trick/MyCivetServer.hh index 5e5a2855..e0763269 100644 --- a/include/trick/MyCivetServer.hh +++ b/include/trick/MyCivetServer.hh @@ -63,7 +63,7 @@ class MyCivetServer { void deleteWebSocketSession(struct mg_connection * nc); void installHTTPGEThandler(std::string handlerName, httpMethodHandler handler); void installWebSocketSessionMaker(std::string name, WebSocketSessionMaker maker); - void handleWebSocketClientMessage(struct mg_connection *conn, const char* data); + void handleWebSocketClientMessage(struct mg_connection *conn, const std::string& data); void handleHTTPGETrequest(struct mg_connection *conn, const struct mg_request_info* ri, std::string handlerName); diff --git a/include/trick/WebSocketSession.hh b/include/trick/WebSocketSession.hh index 0c643365..4dc2a416 100644 --- a/include/trick/WebSocketSession.hh +++ b/include/trick/WebSocketSession.hh @@ -21,7 +21,7 @@ class WebSocketSession { */ virtual void marshallData()=0; virtual void sendMessage()=0; - virtual int handleMessage(std::string)=0; + virtual int handleMessage(const std::string&)=0; struct mg_connection* connection; /* ** */ }; diff --git a/trick_sims/Cannon/models/httpMethods/TimeSession.cpp b/trick_sims/Cannon/models/httpMethods/TimeSession.cpp index 8dfe6c95..92a2cf24 100644 --- a/trick_sims/Cannon/models/httpMethods/TimeSession.cpp +++ b/trick_sims/Cannon/models/httpMethods/TimeSession.cpp @@ -36,7 +36,7 @@ void TimeSession::sendMessage() { mg_websocket_write(connection, MG_WEBSOCKET_OPCODE_TEXT, message, strlen(message)); } -int TimeSession::handleMessage(std::string client_msg) { +int TimeSession::handleMessage(const std::string& client_msg) { if (client_msg.compare("GMT") == 0) { zone = TimeSession::GMT; diff --git a/trick_sims/Cannon/models/httpMethods/TimeSession.hh b/trick_sims/Cannon/models/httpMethods/TimeSession.hh index dee11bc2..18f3629c 100644 --- a/trick_sims/Cannon/models/httpMethods/TimeSession.hh +++ b/trick_sims/Cannon/models/httpMethods/TimeSession.hh @@ -15,7 +15,7 @@ class TimeSession : public WebSocketSession { ~TimeSession(); void marshallData(); void sendMessage(); - int handleMessage(std::string); + int handleMessage(const std::string&); private: time_t now; Zone zone; diff --git a/trick_source/web/CivetServer/include/VariableServerSession.hh b/trick_source/web/CivetServer/include/VariableServerSession.hh index 36c81078..56408413 100644 --- a/trick_source/web/CivetServer/include/VariableServerSession.hh +++ b/trick_source/web/CivetServer/include/VariableServerSession.hh @@ -21,7 +21,7 @@ class VariableServerSession : public WebSocketSession { ~VariableServerSession(); void marshallData(); /* -- base */ void sendMessage(); /* -- base */ - int handleMessage(std::string); /* -- base */ + int handleMessage(const std::string&); /* -- base */ void setTimeInterval(unsigned int milliseconds); void addVariable(char* vname); diff --git a/trick_source/web/CivetServer/src/MyCivetServer.cpp b/trick_source/web/CivetServer/src/MyCivetServer.cpp index ce230082..daafbfaa 100644 --- a/trick_source/web/CivetServer/src/MyCivetServer.cpp +++ b/trick_source/web/CivetServer/src/MyCivetServer.cpp @@ -371,7 +371,7 @@ int MyCivetServer::join() { return 0; } -void MyCivetServer::handleWebSocketClientMessage(struct mg_connection *conn, const char* data) { +void MyCivetServer::handleWebSocketClientMessage(struct mg_connection *conn, const std::string& data) { std::map::iterator iter; iter = webSocketSessionMap.find(conn); if (iter != webSocketSessionMap.end()) { diff --git a/trick_source/web/CivetServer/src/VariableServerSession.cpp b/trick_source/web/CivetServer/src/VariableServerSession.cpp index c42d5694..e3c1a5ea 100644 --- a/trick_source/web/CivetServer/src/VariableServerSession.cpp +++ b/trick_source/web/CivetServer/src/VariableServerSession.cpp @@ -73,7 +73,7 @@ void VariableServerSession::sendMessage() { } // Base class virtual function. -int VariableServerSession::handleMessage(std::string client_msg) { +int VariableServerSession::handleMessage(const std::string& client_msg) { int status = 0; std::vector members = parseJSON(client_msg.c_str()); diff --git a/trick_source/web/CivetServer/src/http_GET_handlers.cpp b/trick_source/web/CivetServer/src/http_GET_handlers.cpp index ee914522..10b63768 100644 --- a/trick_source/web/CivetServer/src/http_GET_handlers.cpp +++ b/trick_source/web/CivetServer/src/http_GET_handlers.cpp @@ -177,10 +177,12 @@ int ws_data_handler(struct mg_connection *conn, int bits, { int rvalue = 1; MyCivetServer* server = (MyCivetServer*) my_server; - if (server->debug) { message_publish(MSG_INFO, "Trick Webserver: WEBSOCKET[%p] RECIEVED: \"%s\".\n", (void*)conn, data); } + std::string msg(data, data_len); + if (server->debug) { message_publish(MSG_INFO, "Trick Webserver: WEBSOCKET[%p] RECIEVED: \"%s\".\n", (void*)conn, msg.c_str()); } if (data_len > 0) { - server->handleWebSocketClientMessage(conn, data); + std::string msg(data, data_len); + server->handleWebSocketClientMessage(conn, msg); } return rvalue; } From 318603cda39a8a7293f378655f732909866b7623 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 27 Jul 2022 08:48:15 -0500 Subject: [PATCH 029/162] add version number v1.15 to civetweb install instructions --- docs/documentation/web/Configuring_TRICK_with_Civetweb.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/web/Configuring_TRICK_with_Civetweb.md b/docs/documentation/web/Configuring_TRICK_with_Civetweb.md index 36e2ffae..fb0c1a63 100644 --- a/docs/documentation/web/Configuring_TRICK_with_Civetweb.md +++ b/docs/documentation/web/Configuring_TRICK_with_Civetweb.md @@ -1,7 +1,7 @@ ## Configuring Trick with Civetweb To configure Trick to support the civetweb web server, you'll need to -1. Download Civetweb from [Github](https://github.com/civetweb/civetweb). Where you put the Civetweb directory will be designated as $(CIVETWEB_HOME). +1. Download or clone Civetweb release (currently v1.15) from [Github](https://github.com/civetweb/civetweb). Where you put the Civetweb directory will be designated as $(CIVETWEB_HOME). 2. Build the Civetweb library. 3. Configure Trick. From d80c4ff0c70c3342dcc46862cbf50f2fa6eaf7fe Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Wed, 27 Jul 2022 15:00:33 -0500 Subject: [PATCH 030/162] Update test_32.yml --- .github/workflows/test_32.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test_32.yml b/.github/workflows/test_32.yml index 6a77bf2e..c00219f8 100644 --- a/.github/workflows/test_32.yml +++ b/.github/workflows/test_32.yml @@ -63,4 +63,6 @@ jobs: ./configure --without-hdf5 --enable-32bit make - name: Run tests - run: make test + run: | + echo $MAKEFLAGS $CXXFLAGS $CFLAGS + make test From 36416c197352b0ae8d83e6e0f1a0ea4de208f04a Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Wed, 27 Jul 2022 16:07:50 -0500 Subject: [PATCH 031/162] Refactoring of CrewModule Graphics client in SIM_splashdown #1322 --- .../main/java/trick/cmdisplay/CMDisplay.java | 77 ++++++++++--------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/trick_sims/SIM_splashdown/models/CrewModuleGraphics/src/main/java/trick/cmdisplay/CMDisplay.java b/trick_sims/SIM_splashdown/models/CrewModuleGraphics/src/main/java/trick/cmdisplay/CMDisplay.java index 5ddeb251..b5395eba 100644 --- a/trick_sims/SIM_splashdown/models/CrewModuleGraphics/src/main/java/trick/cmdisplay/CMDisplay.java +++ b/trick_sims/SIM_splashdown/models/CrewModuleGraphics/src/main/java/trick/cmdisplay/CMDisplay.java @@ -44,6 +44,8 @@ class CrewModuleView extends JPanel { private int water_poly_y[]; private Color vehicleLineColor; + private Color vehicleFillColor; + private double[] vehiclePos; private double[] centerOfBuoyancy; @@ -93,6 +95,7 @@ class CrewModuleView extends JPanel { water_poly_y = new int[water_vrtx_world.length]; vehicleLineColor = Color.GRAY; + vehicleFillColor = new Color(255,255,250); vehiclePos = new double[] {0.0, 0.0, 0.0}; @@ -177,6 +180,7 @@ class CrewModuleView extends JPanel { {25,37,26},{26,37,27},{27,37,28},{28,37,29},{29,37,30},{30,37,31},{31,37,32},{32,37,33},{33,37,34},{34,37,35},{35,37,36},{36,37,25} }; + // Create the normals for the triangles veh_unit_normals_body = new double[veh_triangles.length][3]; double v1[] = {0.0, 0.0, 0.0}; double v2[] = {0.0, 0.0, 0.0}; @@ -231,7 +235,7 @@ class CrewModuleView extends JPanel { vantageAzimuth += (dx * Math.PI) / getWidth(); if (vantageAzimuth > Math.PI) vantageAzimuth -= Math.PI; if (vantageAzimuth < -Math.PI) vantageAzimuth += Math.PI; - vantageElevation += (dy * Math.PI) / getHeight(); + vantageElevation -= (dy * Math.PI) / getHeight(); if (vantageElevation > Math.toRadians( 89.0)) vantageElevation = Math.toRadians( 89.0); if (vantageElevation < Math.toRadians(-89.0)) vantageElevation = Math.toRadians(-89.0); setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); @@ -275,6 +279,22 @@ class CrewModuleView extends JPanel { centerOfBuoyancy[2] = CBz; } + public void drawLineSegmentInWorld(Graphics2D g, Color color, double start[], double end[]) { + g.setPaint(color); + int start_screen[] = {0, 0}; + int end_screen[] = {0, 0}; + worldToScreenPoint( start_screen, start); + worldToScreenPoint( end_screen, end); + g.drawLine( start_screen[0], start_screen[1], end_screen[0], end_screen[1]); + } + + public void drawLabelInWorld(Graphics2D g, Color color, double loc_world[], String s) { + g.setPaint(color); + int loc_screen[] = {0, 0}; + worldToScreenPoint( loc_screen, loc_world); + g.drawString ( s, loc_screen[0], loc_screen[1]); + } + private void doDrawing( Graphics g) { Graphics2D g2d = (Graphics2D) g; @@ -302,7 +322,7 @@ class CrewModuleView extends JPanel { g2d.drawPolygon(water_poly_x, water_poly_y, 4); // ======================== - // Draw Vehicle + // Draw vehicle // Transform the vehicle vertices from body -> world, apply the vehicle position offset, and then to 2D screen points. for (int i=0; i World -> Vantage MatrixOps.MtimesV(veh_unit_normals_world[i], bodyToWorldRotation, veh_unit_normals_body[i]); @@ -329,26 +345,31 @@ class CrewModuleView extends JPanel { double facing_angle = MatrixOps.VdotV(veh_unit_normals_vantage[i], LOS_vantage); if ( (facing_angle > 0.0) && (facing_angle < Math.toRadians(90))) { - // Calculate the (diffuse) reflection intensity. + // Calculate the diffuse reflection intensity. double neg_illumination_vector[] = {0.0, 0.0, 0.0}; MatrixOps.Vscale(neg_illumination_vector, illumination_vector, -1.0); double diffuse_intensity = MatrixOps.VdotV(neg_illumination_vector, veh_unit_normals_world[i]); if (diffuse_intensity < 0.0) diffuse_intensity = 0.0; + // Proportion of the total light due to ambiant light. + // (1.0 - ambient) is the proportion of reflected light. + double ambiant = 0.8; // Must be between 0.0 and 1.0. + // The color intensity is a combination of ambiant light intensity, // and diffuse reflection intensity. double color_intensity = (ambiant + (1.0 - ambiant) * diffuse_intensity); - int CCR = (int) (veh_RGB[0] * color_intensity); - int CCG = (int) (veh_RGB[1] * color_intensity); - int CCB = (int) (veh_RGB[2] * color_intensity); - g2d.setPaint( new Color(CCR, CCG, CCB)); - + g2d.setPaint( new Color( (int)(vehicleFillColor.getRed() * color_intensity), + (int)(vehicleFillColor.getGreen() * color_intensity), + (int)(vehicleFillColor.getBlue() * color_intensity))); // Draw the triangle. int triangle_poly_x[] = {0, 0, 0}; int triangle_poly_y[] = {0, 0, 0}; + // For each point of the triangle. for (int j=0; j < 3; j++) { + triangle_poly_x[j] = veh_vrtx_screen[ veh_triangles[i][j] ][0]; triangle_poly_y[j] = veh_vrtx_screen[ veh_triangles[i][j] ][1]; + } g2d.fillPolygon(triangle_poly_x, triangle_poly_y, 3); } @@ -356,7 +377,7 @@ class CrewModuleView extends JPanel { // Draw Wireframe Model - // g2d.setPaint( vehicleLineColor ); + g2d.setPaint( vehicleLineColor ); for (int i=0; i Date: Thu, 28 Jul 2022 13:09:21 -0500 Subject: [PATCH 032/162] In MemoryManager_clear_memory.cpp call delete_var with destroy flag==true. #1301 (#1324) Authored-by: John M. Penn --- .../sim_services/MemoryManager/MemoryManager_clear_memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp index a71e1ffa..25e4939c 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp @@ -307,7 +307,7 @@ void Trick::MemoryManager::reset_memory() { n_addrs = deletion_list.size(); for (ii = 0 ; ii < n_addrs ; ii ++) { - delete_var( deletion_list[ii], false); + delete_var( deletion_list[ii], true); } // reset counter to 100mil. This (hopefully) ensures all alloc'ed ids are after external variables. From be5f170b9046a3edd23e4a765b1d6cda12fa4a3a Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 28 Jul 2022 14:58:13 -0500 Subject: [PATCH 033/162] Revert "In MemoryManager_clear_memory.cpp call delete_var with destroy flag==true. #1301 (#1324)" (#1325) This reverts commit 5bf349bb1f6e042d8a9f1a54cb88ca587b92b8f3. --- .../sim_services/MemoryManager/MemoryManager_clear_memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp index 25e4939c..a71e1ffa 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp @@ -307,7 +307,7 @@ void Trick::MemoryManager::reset_memory() { n_addrs = deletion_list.size(); for (ii = 0 ; ii < n_addrs ; ii ++) { - delete_var( deletion_list[ii], true); + delete_var( deletion_list[ii], false); } // reset counter to 100mil. This (hopefully) ensures all alloc'ed ids are after external variables. From d94d5fc8630be19692046d089b33b8ad3ab049d2 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Thu, 28 Jul 2022 15:00:55 -0500 Subject: [PATCH 034/162] Remove destroy flag from MemoryManager::delete_var(). #1301 --- include/trick/MemoryManager.hh | 2 +- include/trick/mm_macros.hh | 4 ++-- .../MemoryManager/MemoryManager_clear_memory.cpp | 2 +- .../sim_services/MemoryManager/MemoryManager_delete_var.cpp | 6 ++---- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/include/trick/MemoryManager.hh b/include/trick/MemoryManager.hh index bac485df..dd63b3cc 100644 --- a/include/trick/MemoryManager.hh +++ b/include/trick/MemoryManager.hh @@ -301,7 +301,7 @@ namespace Trick { @param address - the address of the variable. @return 0 = SUCCESS, 1 = FAILURE */ - int delete_var(void* address, bool destroy = true); + int delete_var(void* address); /** Forget about the variable with the given name and deallocate the memory associated with it. diff --git a/include/trick/mm_macros.hh b/include/trick/mm_macros.hh index c872b6eb..1bdc028e 100644 --- a/include/trick/mm_macros.hh +++ b/include/trick/mm_macros.hh @@ -37,10 +37,10 @@ return addr ; \ } ; \ static void operator delete (void *p) { \ - if ( get_alloc_info_at(p) ) { trick_MM->delete_var(p, false) ; free(p) ; } \ + if ( get_alloc_info_at(p) ) { trick_MM->delete_var(p) ; free(p) ; } \ } ; \ static void operator delete[] (void *p) { \ - if ( get_alloc_info_at(p) ) { trick_MM->delete_var(p, false) ; free(p) ; } \ + if ( get_alloc_info_at(p) ) { trick_MM->delete_var(p) ; free(p) ; } \ } ; #endif diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp index a71e1ffa..32ff066c 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp @@ -307,7 +307,7 @@ void Trick::MemoryManager::reset_memory() { n_addrs = deletion_list.size(); for (ii = 0 ; ii < n_addrs ; ii ++) { - delete_var( deletion_list[ii], false); + delete_var( deletion_list[ii]); } // reset counter to 100mil. This (hopefully) ensures all alloc'ed ids are after external variables. diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_delete_var.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_delete_var.cpp index ce220a47..0c72f71d 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_delete_var.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_delete_var.cpp @@ -6,7 +6,7 @@ #include "trick/MemoryManager.hh" // MEMBER FUNCTION -int Trick::MemoryManager::delete_var(void* address, bool destroy ) { +int Trick::MemoryManager::delete_var(void* address ) { if (address == 0) { if (debug_level) { @@ -37,9 +37,7 @@ int Trick::MemoryManager::delete_var(void* address, bool destroy ) { */ if ( alloc_info->stcl == TRICK_LOCAL ) { if ( alloc_info->alloc_type == TRICK_ALLOC_MALLOC ) { - if (destroy) { - io_src_destruct_class( alloc_info ); - } + io_src_destruct_class( alloc_info ); free( address); } else if ( alloc_info->alloc_type == TRICK_ALLOC_NEW ) { io_src_delete_class( alloc_info ); From 58cbf24d5ac05d5820e96d1c0af6657b59fb68a7 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Thu, 28 Jul 2022 16:43:26 -0500 Subject: [PATCH 035/162] Remove 2 arg delete_var unit test case. #1301 --- .../sim_services/MemoryManager/test/MM_delete_var_unittest.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_source/sim_services/MemoryManager/test/MM_delete_var_unittest.cc b/trick_source/sim_services/MemoryManager/test/MM_delete_var_unittest.cc index e86833a7..41a4730a 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_delete_var_unittest.cc +++ b/trick_source/sim_services/MemoryManager/test/MM_delete_var_unittest.cc @@ -41,6 +41,7 @@ TEST_F(MM_delete_var_unittest, var_exists) { } +#if 0 TEST_F(MM_delete_var_unittest, byAddress_destroy) { int exists; @@ -64,7 +65,6 @@ TEST_F(MM_delete_var_unittest, byAddress_destroy) { EXPECT_EQ(0, exists); } -#if 0 TEST_F(MM_delete_var_unittest, byAddress_nodestroy) { int exists; From 467188335388701853885d85cba2715563ac1158 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 1 Aug 2022 15:11:12 -0500 Subject: [PATCH 036/162] Test 32-bit mode on oraclelinux 8 (#1327) * Add 32bit test for oraclelinux8 #1304 closes #1304 --- .github/workflows/test_32_oracle.yml | 75 ++++++++++++++++++++++++++++ .github/workflows/test_linux.yml | 31 ++---------- 2 files changed, 78 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/test_32_oracle.yml diff --git a/.github/workflows/test_32_oracle.yml b/.github/workflows/test_32_oracle.yml new file mode 100644 index 00000000..60fe9fe1 --- /dev/null +++ b/.github/workflows/test_32_oracle.yml @@ -0,0 +1,75 @@ +name: 32-bit Oracle + +on: + push: + paths-ignore: + - 'docs/**' + - '.github/workflows/**' + - '!.github/workflows/test_32_oracle.yml' + pull_request: + +jobs: + trick_32bit_oracle: + runs-on: ubuntu-latest + container: docker://oraclelinux:8 + steps: + - name: Add dnf repo + run: dnf -y install epel-release && dnf -y update + - name: Install other dependencies + run: > + dnf install -y tar bison clang clang-devel cmake diffutils + expat-devel.i686 expat.i686 flex gcc gcc-c++ git glibc-devel.i686 + glibc.i686 glibc.x86_64 gsl-devel gsl-devel.i686 java-11-openjdk + java-11-openjdk-devel libstdc++-devel libstdc++-devel.i686 libxml2-devel + libxml2-devel.i686 llvm llvm-devel llvm-static make maven ncurses-devel + ncurses-devel.i686 openmotif openmotif-devel perl perl-Digest-MD5 + python2-devel python3-devel python3-libs.i686 swig tar udunits2 + udunits2-devel wget which zip zlib-devel zlib-devel.i686 + - name: Symlink python + run: | + ln -s /lib/libpython3.6m.so.1.0 /lib/libpython3.6m.so + - name: Install Udunits (32 bit) + run: | + cd / + curl --retry 4 -O https://artifacts.unidata.ucar.edu/repository/downloads-udunits/current/udunits-2.2.28.tar.gz + tar xfvz udunits-2.2.28.tar.gz + rm -rf udunits-2.2.28.tar.gz + cd udunits-2.2.28 + export CFLAGS="-m32" + export CXXFLAGS="-m32" + export MAKEFLAGS=-j`nproc` + ./configure + make + make install + cd / + rm -rf udunit-2.2.28 + - name: Install GTest: + run: | + dnf config-manager --enable ol8_codeready_builder + dnf install -y gtest-devel + - name: Install GTest (32 bit) + run: | + wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz + tar xfvz release-1.8.0.tar.gz + cd googletest-release-1.8.0/googletest + export CFLAGS="-m32" + export CXXFLAGS="-m32" + export MAKEFLAGS=-j`nproc` + cmake . + make + make install + - name: Checkout repository + uses: actions/checkout@master + - name: Build Trick + run: | + export CFLAGS="-m32" + export CXXFLAGS="-m32" + export MAKEFLAGS=-j`nproc` + ./configure --without-hdf5 --enable-32bit + make + - name: Run tests + run: | + export CFLAGS="-m32" + export CXXFLAGS="-m32" + export MAKEFLAGS=-j`nproc` + make test diff --git a/.github/workflows/test_linux.yml b/.github/workflows/test_linux.yml index 4eed1072..013f0d85 100644 --- a/.github/workflows/test_linux.yml +++ b/.github/workflows/test_linux.yml @@ -163,7 +163,9 @@ jobs: export MAKEFLAGS=-j`nproc` make - name: Test - run: make test + run: | + export MAKEFLAGS=-j`nproc` + make test - name: Upload Tests uses: actions/upload-artifact@v3.0.0 if: success() || failure() # run this step even if previous step failed @@ -183,30 +185,3 @@ jobs: # share # libexec # retention-days: 1 - -# report: -# needs: [build] -# strategy: -# fail-fast: false -# matrix: -# cfg: -# #-------- Operating Systems ---------------- -# - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } -# - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } -# - { os: debian, tag: 10, arch: debian, arch_ver: 10 } -# - { os: debian, tag: 11, arch: debian, arch_ver: 11 } -# - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } -# - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } -# - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } -# - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } -# python: [2, 3] - -# runs-on: ubuntu-latest -# steps: -# - uses: dorny/test-reporter@v1 -# with: -# artifact: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} # artifact name -# name: Results_Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} # Name of the check run which will be created -# path: '*.xml' # Path to test results (inside artifact .zip) -# reporter: java-junit # Format of test results - From d28a835c4d3a6121c198cecffdc557d9b50ea1a5 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 1 Aug 2022 15:32:50 -0500 Subject: [PATCH 037/162] Update test_32_oracle.yml --- .github/workflows/test_32_oracle.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_32_oracle.yml b/.github/workflows/test_32_oracle.yml index 60fe9fe1..54c76670 100644 --- a/.github/workflows/test_32_oracle.yml +++ b/.github/workflows/test_32_oracle.yml @@ -43,7 +43,7 @@ jobs: make install cd / rm -rf udunit-2.2.28 - - name: Install GTest: + - name: Install GTest run: | dnf config-manager --enable ol8_codeready_builder dnf install -y gtest-devel From 3e54516abbde348ece2f80360b5e0601e4a718ed Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Tue, 2 Aug 2022 17:01:35 -0500 Subject: [PATCH 038/162] correct trick-units printout for Rankine --- bin/trick-units | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/trick-units b/bin/trick-units index 2e86f209..2078dbf6 100755 --- a/bin/trick-units +++ b/bin/trick-units @@ -134,7 +134,7 @@ print "-" x 50 . "\n"; printf "%25s%s", "Kelvin: ", "K, °K, degK"; print "\n"; printf "%25s%s", "Centigrade: ", "°C, degC"; print "\n"; printf "%25s%s", "Fahrenheit: ", "°F, degF"; print "\n"; -printf "%25s%s", "Rankine: ", "°R, degF"; print "\n"; +printf "%25s%s", "Rankine: ", "°R, degR"; print "\n"; print "\n"; From 279d131a0a6efdbcd119838b2cb718af94c28b40 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 5 Aug 2022 17:05:10 -0500 Subject: [PATCH 039/162] Add Horizonal Navigation bars (breadcrumbs) to all documentation pages (#1328) * Add breadcrumbs to all documentation pages, fix some links between pages --- docs/documentation/Documentation-Home.md | 16 ++-- .../Building-a-Simulation.md | 3 + .../Environment-Variables.md | 3 + .../Making-the-Simulation.md | 4 + .../Model-Source-Code.md | 3 + .../Simulation-Definition-File.md | 3 + .../Trickified-Project-Libraries.md | 4 + .../data_products/DP-Product-File-Format.md | 3 + .../data_products/DP-Session-File-Format.md | 2 + .../data_products/Data-Products-GUIs.md | 2 + .../data_products/Data-Products.md | 3 + .../data_products/Plot-Printing.md | 3 + .../introduction/Introduction.md | 3 + .../Miscellaneous-Trick-Tools.md | 2 + .../Python-Variable-Server-Client.md | 6 +- .../miscellaneous_trick_tools/TrickOps.md | 4 + .../running_a_simulation/Input-File.md | 2 + .../Running-a-Simulation.md | 3 + .../running_a_simulation/Runtime-Output.md | 3 + .../runtime_guis/MalfunctionsTrickView.md | 3 + .../runtime_guis/MonteMonitor.md | 3 + .../runtime_guis/Runtime-GUIs.md | 3 + .../runtime_guis/TrickView.md | 3 + .../simulation_capabilities/Checkpoints.md | 3 + .../Command-Line-Arguments.md | 3 + .../simulation_capabilities/Data-Record.md | 2 + .../simulation_capabilities/Debug-Pause.md | 2 + .../simulation_capabilities/Echo-Jobs.md | 2 + .../simulation_capabilities/Environment.md | 2 + .../simulation_capabilities/Event-Manager.md | 2 + .../Executive-Scheduler.md | 2 + .../simulation_capabilities/Frame-Logging.md | 2 + .../Input-Processor.md | 2 + .../simulation_capabilities/Integrator.md | 2 + .../JIT-Input-Processor.md | 3 + .../simulation_capabilities/Master-Slave.md | 2 + .../simulation_capabilities/Realtime-Clock.md | 5 +- .../Realtime-Injector.md | 2 + .../simulation_capabilities/Realtime-Timer.md | 2 + .../simulation_capabilities/Realtime.md | 2 + .../STL-Checkpointing.md | 2 + .../Simulation-Capabilities.md | 3 +- .../Status-Message-System.md | 2 + .../simulation_capabilities/Threads.md | 6 +- .../UserGuide-Monte-Carlo.md | 4 +- .../Variable-Server.md | 2 + .../MemoryManager-Declaration-String.md | 4 + .../MemoryManager-TRICK_TYPE.md | 2 + .../memory_manager/MemoryManager.md | 3 + .../simulation_utilities/Math-Utilities.md | 3 + .../Simulation-Utilities.md | 3 + .../simulation_utilities/Trickcomm.md | 2 + ...with_Civetweb.md => Configure-Civetweb.md} | 5 ++ ...ing_the_HTTP-API.md => Extend-http-api.md} | 5 ++ ...tending_the_WS-API.md => Extend-ws-api.md} | 7 +- ...encryption_to_Your_Webserver.md => SSL.md} | 5 ++ docs/documentation/web/Webserver-apis.md | 12 +++ ...Web_Server_to_Your_Sim.md => Webserver.md} | 4 + ...TP-API_alloc_info.md => http-alloc-api.md} | 81 ++++++++++--------- ...bleServer.md => ws-variable-server-api.md} | 57 +++++++------ 60 files changed, 255 insertions(+), 81 deletions(-) rename docs/documentation/web/{Configuring_TRICK_with_Civetweb.md => Configure-Civetweb.md} (71%) rename docs/documentation/web/{Extending_the_HTTP-API.md => Extend-http-api.md} (89%) rename docs/documentation/web/{Extending_the_WS-API.md => Extend-ws-api.md} (96%) rename docs/documentation/web/{Adding_SSL_encryption_to_Your_Webserver.md => SSL.md} (81%) create mode 100644 docs/documentation/web/Webserver-apis.md rename docs/documentation/web/{Adding_a_Web_Server_to_Your_Sim.md => Webserver.md} (93%) rename docs/documentation/web/{HTTP-API_alloc_info.md => http-alloc-api.md} (92%) rename docs/documentation/web/{WS-API_VariableServer.md => ws-variable-server-api.md} (94%) diff --git a/docs/documentation/Documentation-Home.md b/docs/documentation/Documentation-Home.md index 871c95b4..b18374bb 100644 --- a/docs/documentation/Documentation-Home.md +++ b/docs/documentation/Documentation-Home.md @@ -51,14 +51,14 @@ The user guide contains information pertinent to Trick users. These pages will h 01. [Standard Template Library Checkpointing](simulation_capabilities/STL-Checkpointing) 01. [Threads](simulation_capabilities/Threads) -01. Web Server - 01. [Adding a Web Server to Your Sim](web/Adding_a_Web_Server_to_Your_Sim) - 01. Web Server APIs - 01. [HTTP-API_alloc_info](web/HTTP-API_alloc_info) - 01. [WS-API_VariableServer](web/WS-API_VariableServer) - 01. Adding New Web Server APIs - 01. [Extending_the_HTTP-API](web/Extending_the_HTTP-API) - 01. [Extending_the_WS-API](web/Extending_the_WS-API) +01. [Web Server](web/Webserver) + 01. [Configure Trick with Civetweb](web/Configure-Civetweb) + 01. [Add SSL encryption to your webserver](web/SSL) + 01. [Web Server APIs](web/Webserver-apis) + 01. [HTTP alloc API](web/http-alloc-api.md) + 01. [WS Variable Server API](web/ws-variable-server-api.md) + 01. [Extend the HTTP API](web/Extend-http-api.md) + 01. [Extend the WS API](web/Extend-ws-api.md) 01. [Simulation Utilities](simulation_utilities/Simulation-Utilities) 01. [Trickcomm](simulation_utilities/Trickcomm) diff --git a/docs/documentation/building_a_simulation/Building-a-Simulation.md b/docs/documentation/building_a_simulation/Building-a-Simulation.md index d95f0d5f..c7eddd29 100644 --- a/docs/documentation/building_a_simulation/Building-a-Simulation.md +++ b/docs/documentation/building_a_simulation/Building-a-Simulation.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → Building a Simulation | +|------------------------------------------------------------------| + The building blocks of a basic Trick simulation are C/C++ structures/classes (models), a Python input file and a Trick simulation definition file (S_define). The S_define contains simulation objects which offer a way to turn the C/C++ function/methods into simulation jobs. Trick generates the necessary Python glue code which makes the C/C++ structures/classes accessible by the Python input file. The input file configures the simulation and is a command-line argument to the simulation executable. ... to be continued ... diff --git a/docs/documentation/building_a_simulation/Environment-Variables.md b/docs/documentation/building_a_simulation/Environment-Variables.md index 91024723..c6d6a694 100644 --- a/docs/documentation/building_a_simulation/Environment-Variables.md +++ b/docs/documentation/building_a_simulation/Environment-Variables.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Building a Simulation](Building-a-Simulation) → Environment Variables | +|------------------------------------------------------------------| + Trick uses a list of variables for building sims e.g. TRICK_CFLAGS and TRICK_CXXFLAGS. Each variable has a default value that may be overridden by setting the value in the environment. Trick resolves these variables by a call to a function called "trick-gte". Type in "${TRICK_HOME}/bin/trick-gte" on the command line to see what the "Trick environment" is. ### Adding ${TRICK_HOME}/bin to PATH diff --git a/docs/documentation/building_a_simulation/Making-the-Simulation.md b/docs/documentation/building_a_simulation/Making-the-Simulation.md index 22fa9b23..73ca61b0 100644 --- a/docs/documentation/building_a_simulation/Making-the-Simulation.md +++ b/docs/documentation/building_a_simulation/Making-the-Simulation.md @@ -1,3 +1,7 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Building a Simulation](Building-a-Simulation) → Making the Simulation | +|------------------------------------------------------------------| + + ### Simulation Compilation Environment Variables The -Ipaths in TRICK_CFLAGS and TRICK_CXXFLAGS tell Trick where to find model source files. The flags also can contain compiler settings, for instance the -g flag is used for compiling in debug mode. See section Trick_Environment for more detail and information on variables for linking in external libraries, setting the compiler etc. diff --git a/docs/documentation/building_a_simulation/Model-Source-Code.md b/docs/documentation/building_a_simulation/Model-Source-Code.md index f0b0fb7e..06efc40c 100644 --- a/docs/documentation/building_a_simulation/Model-Source-Code.md +++ b/docs/documentation/building_a_simulation/Model-Source-Code.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Building a Simulation](Building-a-Simulation) → Model Source Code | +|------------------------------------------------------------------| + This section details the syntax for creating headers and source code that Trick can process. It also details the operation of the Trick Interface Code Generator (ICG) that processes headers, and the Module Interface Specification Processor (MIS) that processes source code. diff --git a/docs/documentation/building_a_simulation/Simulation-Definition-File.md b/docs/documentation/building_a_simulation/Simulation-Definition-File.md index 72773652..c603e073 100644 --- a/docs/documentation/building_a_simulation/Simulation-Definition-File.md +++ b/docs/documentation/building_a_simulation/Simulation-Definition-File.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Building a Simulation](Building-a-Simulation) → Simulation Definition File | +|------------------------------------------------------------------| + The Simulation Definition File or S_define is the file which lays out the architecture of the simulation. Details about job frequencies, job class, job data, importing/exporting data to other simulations, freeze cycles, integration, etc. are all housed in this one file. diff --git a/docs/documentation/building_a_simulation/Trickified-Project-Libraries.md b/docs/documentation/building_a_simulation/Trickified-Project-Libraries.md index b4e3a938..cb06ceb3 100644 --- a/docs/documentation/building_a_simulation/Trickified-Project-Libraries.md +++ b/docs/documentation/building_a_simulation/Trickified-Project-Libraries.md @@ -1,3 +1,7 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Building a Simulation](Building-a-Simulation) → Trickified Project Libraries | +|------------------------------------------------------------------| + + During a simulation build, Trick generates several rounds of files to support data recording, checkpointing, and Python access: * Trick generates `S_source.hh` from the `S_define` diff --git a/docs/documentation/data_products/DP-Product-File-Format.md b/docs/documentation/data_products/DP-Product-File-Format.md index 5f806edf..fc282b78 100644 --- a/docs/documentation/data_products/DP-Product-File-Format.md +++ b/docs/documentation/data_products/DP-Product-File-Format.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Data Products](Data-Products) → DP Product File Format | +|------------------------------------------------------------------| + Since Trick 10, the DP Product Specification File Format is changed to XML. The DP Product XML file DTD is defined as following: diff --git a/docs/documentation/data_products/DP-Session-File-Format.md b/docs/documentation/data_products/DP-Session-File-Format.md index 9f6c32a0..5b00c49e 100644 --- a/docs/documentation/data_products/DP-Session-File-Format.md +++ b/docs/documentation/data_products/DP-Session-File-Format.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Data Products](Data-Products) → DP Session File Format | +|------------------------------------------------------------------| Since Trick 10, the DP Session file is changed to XML format. The Session XML Document Type Definitions(DTD) is defined as following: diff --git a/docs/documentation/data_products/Data-Products-GUIs.md b/docs/documentation/data_products/Data-Products-GUIs.md index e84ca91f..0154aba1 100644 --- a/docs/documentation/data_products/Data-Products-GUIs.md +++ b/docs/documentation/data_products/Data-Products-GUIs.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Data Products](Data-Products) → Data Products GUIs | +|------------------------------------------------------------------| There are two main GUIs for viewing Trick logged data: diff --git a/docs/documentation/data_products/Data-Products.md b/docs/documentation/data_products/Data-Products.md index eb653591..fc58b4eb 100644 --- a/docs/documentation/data_products/Data-Products.md +++ b/docs/documentation/data_products/Data-Products.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → Data Products | +|------------------------------------------------------------------| + The Data Products (DP) is a simulation data post processor designed to allow visualization of data recorded in the Trick simulation. The data products can plot ASCII, Binary & HDF5 data. HDF5 is the new data format supported since Trick 10. diff --git a/docs/documentation/data_products/Plot-Printing.md b/docs/documentation/data_products/Plot-Printing.md index 5139ade8..1c88ce2f 100644 --- a/docs/documentation/data_products/Plot-Printing.md +++ b/docs/documentation/data_products/Plot-Printing.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Data Products](Data-Products) → Plot Printing | +|------------------------------------------------------------------| + To print fermi plots, simply bring up the fermi plot, and press either the "Print" (printer icon) button or the individual "Print" (printer icon) buttons on the plots themselves. In order for this to work you should set two environment variables: ``` diff --git a/docs/documentation/introduction/Introduction.md b/docs/documentation/introduction/Introduction.md index 02ed4bed..6ba3cd18 100644 --- a/docs/documentation/introduction/Introduction.md +++ b/docs/documentation/introduction/Introduction.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → Introduction | +|------------------------------------------------------------------| + The responsibility for this document lies with the [Simulation and Graphics Branch (ER7)](https://er.jsc.nasa.gov/ER7/) of the [Automation, Robotics and Simulation Division](https://er.jsc.nasa.gov/) of the NASA JSC Engineering Directorate. The purpose of this document is to provide Trick simulation developers and users with a detailed user’s reference guide on how to install Trick, use Trick processors and utilities, and how to operate a simulation from execution to data post processing. diff --git a/docs/documentation/miscellaneous_trick_tools/Miscellaneous-Trick-Tools.md b/docs/documentation/miscellaneous_trick_tools/Miscellaneous-Trick-Tools.md index df2858fa..a7156bed 100644 --- a/docs/documentation/miscellaneous_trick_tools/Miscellaneous-Trick-Tools.md +++ b/docs/documentation/miscellaneous_trick_tools/Miscellaneous-Trick-Tools.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → Miscellaneous Trick Tools | +|------------------------------------------------------------------| ### Interface Code Generator - ICG diff --git a/docs/documentation/miscellaneous_trick_tools/Python-Variable-Server-Client.md b/docs/documentation/miscellaneous_trick_tools/Python-Variable-Server-Client.md index 89e1e32f..720566f9 100644 --- a/docs/documentation/miscellaneous_trick_tools/Python-Variable-Server-Client.md +++ b/docs/documentation/miscellaneous_trick_tools/Python-Variable-Server-Client.md @@ -1,3 +1,7 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Miscellaneous Trick Tools](Miscellaneous-Trick-Tools) → Python Variable Server Client | +|------------------------------------------------------------------| + + `variable_server.py` is a Python module for communicating with a sim's variable server from a Python program. Its primary purpose is to easily get and set variable values and units, but it also includes some additional convenience methods for affecting the sim's state. The code itself is well-commented, so I won't be reproducing the API here. Run `pydoc variable_server` (in the containing directory) for that. # Release Your Resources! @@ -384,4 +388,4 @@ class Variable(__builtin__.object) | should not directly change any part of this class. ``` -[Continue to Software Requirements](software_requirements_specification/SRS) +[Continue to Trick Ops](TrickOps) diff --git a/docs/documentation/miscellaneous_trick_tools/TrickOps.md b/docs/documentation/miscellaneous_trick_tools/TrickOps.md index 228dcd87..6ccef78a 100644 --- a/docs/documentation/miscellaneous_trick_tools/TrickOps.md +++ b/docs/documentation/miscellaneous_trick_tools/TrickOps.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Miscellaneous Trick Tools](Miscellaneous-Trick-Tools) → Trick Ops | +|------------------------------------------------------------------| + # Table of Contents * [Requirements](#Requirements) * [Features](#Features) @@ -292,3 +295,4 @@ This is purposeful -- handling every project-specific constraint is impossible. A lot of time was spent adding `python` docstrings to the `TrickWorkflow.py` and `WorkflowCommon.py` modules. This README does not cover all functionality, so please see the in-code documentation for more detailed information on the framework. +[Continue to Software Requirements](../software_requirements_specification/SRS) \ No newline at end of file diff --git a/docs/documentation/running_a_simulation/Input-File.md b/docs/documentation/running_a_simulation/Input-File.md index 577e2bfc..be3b1940 100644 --- a/docs/documentation/running_a_simulation/Input-File.md +++ b/docs/documentation/running_a_simulation/Input-File.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Running a Simulation](Running-a-Simulation) → Input File | +|------------------------------------------------------------------| The primary interface between the simulation executable and the user is the runstream input file. The Trick simulation input file syntax is Python. All Python syntax rules diff --git a/docs/documentation/running_a_simulation/Running-a-Simulation.md b/docs/documentation/running_a_simulation/Running-a-Simulation.md index 619c28c2..79707bdd 100644 --- a/docs/documentation/running_a_simulation/Running-a-Simulation.md +++ b/docs/documentation/running_a_simulation/Running-a-Simulation.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → Running a Simulation | +|------------------------------------------------------------------| + S_main_${TRICK_HOST_CPU}.exe is generated by the CP and is the simulation main executable program. The runtime configuration of the executive and its associated support utilities may be manipulated through entries in the simulation input file. The input file is described in detail in Input_File. diff --git a/docs/documentation/running_a_simulation/Runtime-Output.md b/docs/documentation/running_a_simulation/Runtime-Output.md index 229c771e..3910302b 100644 --- a/docs/documentation/running_a_simulation/Runtime-Output.md +++ b/docs/documentation/running_a_simulation/Runtime-Output.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Running a Simulation](Running-a-Simulation) → Runtime Output| +|------------------------------------------------------------------| + Executing the simulation main executable S_main_${TRICK_HOST_CPU}.exe generates a handful of log files that document a simulation run. The log files are written to the RUN_ directory by default. The destination can be redirected by specifying the -O or -OO option for the runtime executive. Two of the log files are described below. diff --git a/docs/documentation/running_a_simulation/runtime_guis/MalfunctionsTrickView.md b/docs/documentation/running_a_simulation/runtime_guis/MalfunctionsTrickView.md index a834662d..8d0ed569 100644 --- a/docs/documentation/running_a_simulation/runtime_guis/MalfunctionsTrickView.md +++ b/docs/documentation/running_a_simulation/runtime_guis/MalfunctionsTrickView.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../../Documentation-Home) → [Running a Simulation](../Running-a-Simulation) → [Runtime GUIs](Runtime-GUIs) → Malfunctions | +|------------------------------------------------------------------| + ### Events/Malfunctions Trick View Events/Malfunctions Trick View (hereafter referred to as MTV) is a graphical user interface that has two main functions: diff --git a/docs/documentation/running_a_simulation/runtime_guis/MonteMonitor.md b/docs/documentation/running_a_simulation/runtime_guis/MonteMonitor.md index 1293bba7..9b46cdae 100644 --- a/docs/documentation/running_a_simulation/runtime_guis/MonteMonitor.md +++ b/docs/documentation/running_a_simulation/runtime_guis/MonteMonitor.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../../Documentation-Home) → [Running a Simulation](../Running-a-Simulation) → [Runtime GUIs](Runtime-GUIs) → Monte Monitor | +|------------------------------------------------------------------| + ### Monte Monitor Monte Monitor (hereafter referred to as MM) is a graphical user interface that allows users to view and modify the states diff --git a/docs/documentation/running_a_simulation/runtime_guis/Runtime-GUIs.md b/docs/documentation/running_a_simulation/runtime_guis/Runtime-GUIs.md index 2e5a38fa..880dfcf4 100644 --- a/docs/documentation/running_a_simulation/runtime_guis/Runtime-GUIs.md +++ b/docs/documentation/running_a_simulation/runtime_guis/Runtime-GUIs.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../../Documentation-Home) → [Running a Simulation](../Running-a-Simulation) → Runtime GUIs | +|------------------------------------------------------------------| + Trick provides the following graphical user interfaces: ### Simulation Control Panel diff --git a/docs/documentation/running_a_simulation/runtime_guis/TrickView.md b/docs/documentation/running_a_simulation/runtime_guis/TrickView.md index 0d2aae70..df6e2d7a 100644 --- a/docs/documentation/running_a_simulation/runtime_guis/TrickView.md +++ b/docs/documentation/running_a_simulation/runtime_guis/TrickView.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../../Documentation-Home) → [Running a Simulation](../Running-a-Simulation) → [Runtime GUIs](Runtime-GUIs) → Trick View | +|------------------------------------------------------------------| + Trick View (hereafter referred to as TV) is a graphical user interface that allows users to view and modify Trick-managed variables in a simulation while it is running. It also provides for the launching of integrated strip charts and can save and restore lists of variables and their associated strip charts. #### Launching diff --git a/docs/documentation/simulation_capabilities/Checkpoints.md b/docs/documentation/simulation_capabilities/Checkpoints.md index d1eb6f20..541b6013 100644 --- a/docs/documentation/simulation_capabilities/Checkpoints.md +++ b/docs/documentation/simulation_capabilities/Checkpoints.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Checkpoints | +|------------------------------------------------------------------| + The Trick CheckPointWriter is a C++ Class that implements checkpointing. ## Checkpointing diff --git a/docs/documentation/simulation_capabilities/Command-Line-Arguments.md b/docs/documentation/simulation_capabilities/Command-Line-Arguments.md index ddf99bb1..06f33f08 100644 --- a/docs/documentation/simulation_capabilities/Command-Line-Arguments.md +++ b/docs/documentation/simulation_capabilities/Command-Line-Arguments.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Command Line Arguments | +|------------------------------------------------------------------| + The Trick::CommandLineArguments class stores the command line arguments specified by the user when starting the simulation. The class provides routines to diff --git a/docs/documentation/simulation_capabilities/Data-Record.md b/docs/documentation/simulation_capabilities/Data-Record.md index df0a6fc8..cdf6717e 100644 --- a/docs/documentation/simulation_capabilities/Data-Record.md +++ b/docs/documentation/simulation_capabilities/Data-Record.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Data Record | +|------------------------------------------------------------------| Data Recording provides the capability to specify any number of data recording groups, each with an unlimited number of parameter references, and with each group recording diff --git a/docs/documentation/simulation_capabilities/Debug-Pause.md b/docs/documentation/simulation_capabilities/Debug-Pause.md index 10fc3624..e8984587 100644 --- a/docs/documentation/simulation_capabilities/Debug-Pause.md +++ b/docs/documentation/simulation_capabilities/Debug-Pause.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Debug Pause | +|------------------------------------------------------------------| Debug Pause is a debugging feature provided by Trick. When turned on, Debug Pause will print the current simulation time and the name of the current job, and pause the simulation @e before the job is executed. Debug Pause provides a way for the user to step diff --git a/docs/documentation/simulation_capabilities/Echo-Jobs.md b/docs/documentation/simulation_capabilities/Echo-Jobs.md index a2bdce00..0f39b37e 100644 --- a/docs/documentation/simulation_capabilities/Echo-Jobs.md +++ b/docs/documentation/simulation_capabilities/Echo-Jobs.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Echo Jobs | +|------------------------------------------------------------------| Echo Jobs is a handy debugging toggle provided by Trick. When turned on, Echo Jobs will print the current simulation time and the name of the current job being executed. Echo Jobs is a convenient way to see the order of job execution and narrow down when diff --git a/docs/documentation/simulation_capabilities/Environment.md b/docs/documentation/simulation_capabilities/Environment.md index 9eecc030..6d3ac0ab 100644 --- a/docs/documentation/simulation_capabilities/Environment.md +++ b/docs/documentation/simulation_capabilities/Environment.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Environment | +|------------------------------------------------------------------| This class saves the Trick environment variables at compile-time. The variables are saved inside the S_main executable. These variables are read-only after they diff --git a/docs/documentation/simulation_capabilities/Event-Manager.md b/docs/documentation/simulation_capabilities/Event-Manager.md index 263b7448..7d317b89 100644 --- a/docs/documentation/simulation_capabilities/Event-Manager.md +++ b/docs/documentation/simulation_capabilities/Event-Manager.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Event Manager | +|------------------------------------------------------------------| This page describes the methods available in the Trick::EventManager and Trick::EventProcessor class. See [Input_File](/trick/documentation/running_a_simulation/Input-File) for detailed information on the syntax of the input processor file. diff --git a/docs/documentation/simulation_capabilities/Executive-Scheduler.md b/docs/documentation/simulation_capabilities/Executive-Scheduler.md index 5c8a2b8f..53434729 100644 --- a/docs/documentation/simulation_capabilities/Executive-Scheduler.md +++ b/docs/documentation/simulation_capabilities/Executive-Scheduler.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Executive Scheduler | +|------------------------------------------------------------------| This scheduler or derivative of this class is required for Trick simulations to run. diff --git a/docs/documentation/simulation_capabilities/Frame-Logging.md b/docs/documentation/simulation_capabilities/Frame-Logging.md index 537e1e73..4f388baa 100644 --- a/docs/documentation/simulation_capabilities/Frame-Logging.md +++ b/docs/documentation/simulation_capabilities/Frame-Logging.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Frame Logging | +|------------------------------------------------------------------| Trick provides a means to gather simulation performance data and view it using Data Products (see [Data Products](Data-Products)). When the user turns on the Frame Logging feature, Trick will use its Data Recording mechanism to track the following: diff --git a/docs/documentation/simulation_capabilities/Input-Processor.md b/docs/documentation/simulation_capabilities/Input-Processor.md index d0ba447f..f0e011b9 100644 --- a/docs/documentation/simulation_capabilities/Input-Processor.md +++ b/docs/documentation/simulation_capabilities/Input-Processor.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Input Processor | +|------------------------------------------------------------------| This page describes the methods available in the Trick::InputProcessor class. See [Input File](../running_a_simulation/Input-File) for detailed information on the syntax of the input processor file. diff --git a/docs/documentation/simulation_capabilities/Integrator.md b/docs/documentation/simulation_capabilities/Integrator.md index 56382dd2..9b941325 100644 --- a/docs/documentation/simulation_capabilities/Integrator.md +++ b/docs/documentation/simulation_capabilities/Integrator.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Integrator | +|------------------------------------------------------------------| Trick provides a state integration capability described by the inputs below. To use these options a developer must develop application code which interfaces the application states with diff --git a/docs/documentation/simulation_capabilities/JIT-Input-Processor.md b/docs/documentation/simulation_capabilities/JIT-Input-Processor.md index eb4b91e8..b8777385 100644 --- a/docs/documentation/simulation_capabilities/JIT-Input-Processor.md +++ b/docs/documentation/simulation_capabilities/JIT-Input-Processor.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → JIT Input Processor | +|------------------------------------------------------------------| + A JIT input file is a C++ input file that can be used along side a python input file, or even replace the python input file. The JIT input file includes "S_source.hh" that gives it access to the entire simulation. The code in a JIT input file is compiled into a shared library during simulation initialization. The simulation dynamically opens the shared library and runs a specific function called "run_me" that must be defined in the JIT input file. There are a couple of advantages to this type of input file. 1. Once compiled, a JIT input file is orders of magnitude faster to execute than a python equivalent. That is because there is no python is involved, everything is C++. diff --git a/docs/documentation/simulation_capabilities/Master-Slave.md b/docs/documentation/simulation_capabilities/Master-Slave.md index 2332fb70..1e798b06 100644 --- a/docs/documentation/simulation_capabilities/Master-Slave.md +++ b/docs/documentation/simulation_capabilities/Master-Slave.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Master/Slave | +|------------------------------------------------------------------| Master/Slave is a way to do distributed processing in Trick using multiple simulations. Master/Slave synchronization synchronizes a master simulation to one or more slave diff --git a/docs/documentation/simulation_capabilities/Realtime-Clock.md b/docs/documentation/simulation_capabilities/Realtime-Clock.md index 95064820..4f0571c0 100644 --- a/docs/documentation/simulation_capabilities/Realtime-Clock.md +++ b/docs/documentation/simulation_capabilities/Realtime-Clock.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Realtime Clock | +|------------------------------------------------------------------| + # Realtime-Clock **Contents** @@ -194,6 +197,6 @@ double exec_get_sim_time(void) ; defined in ```exec_proto.h```. - +Continue to [Realtime Timer](Realtime-Timer) \ No newline at end of file diff --git a/docs/documentation/simulation_capabilities/Realtime-Injector.md b/docs/documentation/simulation_capabilities/Realtime-Injector.md index e18db2a3..eb6f06ec 100644 --- a/docs/documentation/simulation_capabilities/Realtime-Injector.md +++ b/docs/documentation/simulation_capabilities/Realtime-Injector.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Realtime Injector | +|------------------------------------------------------------------| The Real Time Injector (RTI) allows the user to set simulation variables synchronously without impacting real-time performance. The RTI performs the injection diff --git a/docs/documentation/simulation_capabilities/Realtime-Timer.md b/docs/documentation/simulation_capabilities/Realtime-Timer.md index a2e09682..6ecdf360 100644 --- a/docs/documentation/simulation_capabilities/Realtime-Timer.md +++ b/docs/documentation/simulation_capabilities/Realtime-Timer.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Realtime Timer | +|------------------------------------------------------------------| A realtime sleep timer is an optional class for Trick simulations. diff --git a/docs/documentation/simulation_capabilities/Realtime.md b/docs/documentation/simulation_capabilities/Realtime.md index 3bd32c20..59bc4d11 100644 --- a/docs/documentation/simulation_capabilities/Realtime.md +++ b/docs/documentation/simulation_capabilities/Realtime.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Realtime | +|------------------------------------------------------------------| Trick provides a real-time processing capability which is different from many real-time simulation capabilities. The Trick executive is a "time based" executive and can run in diff --git a/docs/documentation/simulation_capabilities/STL-Checkpointing.md b/docs/documentation/simulation_capabilities/STL-Checkpointing.md index 606c896d..508bf8dc 100644 --- a/docs/documentation/simulation_capabilities/STL-Checkpointing.md +++ b/docs/documentation/simulation_capabilities/STL-Checkpointing.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → STL Checkpointing | +|------------------------------------------------------------------| Trick checkpoints the following STL types: array, vector, list, deque, set, multiset map, multimap, stack, queue, priority_queue, pair. diff --git a/docs/documentation/simulation_capabilities/Simulation-Capabilities.md b/docs/documentation/simulation_capabilities/Simulation-Capabilities.md index 8f4956b9..841c9f4f 100644 --- a/docs/documentation/simulation_capabilities/Simulation-Capabilities.md +++ b/docs/documentation/simulation_capabilities/Simulation-Capabilities.md @@ -1,4 +1,5 @@ - +| [Home](/trick) → [Documentation Home](../Documentation-Home) → Simulation Capabilities | +|------------------------------------------------------------------| This section details the runtime capabilities of Trick. diff --git a/docs/documentation/simulation_capabilities/Status-Message-System.md b/docs/documentation/simulation_capabilities/Status-Message-System.md index 8b4b75d6..1f4b4fc9 100644 --- a/docs/documentation/simulation_capabilities/Status-Message-System.md +++ b/docs/documentation/simulation_capabilities/Status-Message-System.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Status Message System | +|------------------------------------------------------------------| The Message Publisher publishes executive and/or model messages. A Message Subscriber gets the messages published by the Publisher. diff --git a/docs/documentation/simulation_capabilities/Threads.md b/docs/documentation/simulation_capabilities/Threads.md index ca2391c4..c032840b 100644 --- a/docs/documentation/simulation_capabilities/Threads.md +++ b/docs/documentation/simulation_capabilities/Threads.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Threads | +|------------------------------------------------------------------| + # The ThreadBase Class A trick sim is a multi-threaded process, and all of the threads that are created by Trick or Trick generated code inherit from the abstract class ThreadBase. ThreadBase classes have the capability to change the priority and cpu affinity of the thread. ThreadBase classes include trick_sys threads as well as user defined threads from the S_define: @@ -70,4 +73,5 @@ Set the priority for the thread. See the man page for sched(7) for more details. ```cpp int set_priority(unsigned int req_priority) ``` -[Continue to Simulation Utilities](/trick/documentation/simulation_utilities/Simulation-Utilities) + +[Continue to Web Server](../web/Webserver) diff --git a/docs/documentation/simulation_capabilities/UserGuide-Monte-Carlo.md b/docs/documentation/simulation_capabilities/UserGuide-Monte-Carlo.md index 409b5a50..39e746e2 100644 --- a/docs/documentation/simulation_capabilities/UserGuide-Monte-Carlo.md +++ b/docs/documentation/simulation_capabilities/UserGuide-Monte-Carlo.md @@ -1,5 +1,5 @@ -| [Home](Home) → [Documentation Home](Documentation-Home) → Monte Carlo | -|--------------------------------------------------------------------------------------| +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Monte Carlo | +|------------------------------------------------------------------| # Introduction Monte Carlo is an advanced simulation capability provided by Trick that allows users to repeatedly run copies of a simulation with different input values. Users can vary the input space of a simulation via input file, random value generation, or by calculating values from previous Monte Carlo runs in a process called optimization. diff --git a/docs/documentation/simulation_capabilities/Variable-Server.md b/docs/documentation/simulation_capabilities/Variable-Server.md index ff8a1684..877f5352 100644 --- a/docs/documentation/simulation_capabilities/Variable-Server.md +++ b/docs/documentation/simulation_capabilities/Variable-Server.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Variable Server | +|------------------------------------------------------------------| When running a Trick simulation, unless specifically turned off, a server called the "variable server" is always up and listening in a separate thread of execution. The diff --git a/docs/documentation/simulation_capabilities/memory_manager/MemoryManager-Declaration-String.md b/docs/documentation/simulation_capabilities/memory_manager/MemoryManager-Declaration-String.md index 049f1e42..b122ad58 100644 --- a/docs/documentation/simulation_capabilities/memory_manager/MemoryManager-Declaration-String.md +++ b/docs/documentation/simulation_capabilities/memory_manager/MemoryManager-Declaration-String.md @@ -1,3 +1,7 @@ +| [Home](/trick) → [Documentation Home](../../Documentation-Home) → [Simulation Capabilities](../Simulation-Capabilities) → [Memory Manager](MemoryManager) → Declaration String| +|------------------------------------------------------------------| + + ### Memory Manager Declaration A declaration provides a data type description of a chunk of memory. diff --git a/docs/documentation/simulation_capabilities/memory_manager/MemoryManager-TRICK_TYPE.md b/docs/documentation/simulation_capabilities/memory_manager/MemoryManager-TRICK_TYPE.md index c052d5e6..43c83ccb 100644 --- a/docs/documentation/simulation_capabilities/memory_manager/MemoryManager-TRICK_TYPE.md +++ b/docs/documentation/simulation_capabilities/memory_manager/MemoryManager-TRICK_TYPE.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../../Documentation-Home) → [Simulation Capabilities](../Simulation-Capabilities) → [Memory Manager](MemoryManager) → Trick Type| +|------------------------------------------------------------------| - **TRICK_TYPE** is an enmeration type that specifies data types. Available types are provided in the following table. diff --git a/docs/documentation/simulation_capabilities/memory_manager/MemoryManager.md b/docs/documentation/simulation_capabilities/memory_manager/MemoryManager.md index 3ff0106f..7419ad72 100644 --- a/docs/documentation/simulation_capabilities/memory_manager/MemoryManager.md +++ b/docs/documentation/simulation_capabilities/memory_manager/MemoryManager.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../../Documentation-Home) → [Simulation Capabilities](../Simulation-Capabilities) → Memory Manager | +|------------------------------------------------------------------| + ## Trick Memory Manager The Memory Manager diff --git a/docs/documentation/simulation_utilities/Math-Utilities.md b/docs/documentation/simulation_utilities/Math-Utilities.md index b2a5855a..d794a179 100644 --- a/docs/documentation/simulation_utilities/Math-Utilities.md +++ b/docs/documentation/simulation_utilities/Math-Utilities.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Utilities](Simulation-Utilities) → Math Utilities | +|------------------------------------------------------------------| + To be added. [Continue to Miscellaneous Trick Tools](../miscellaneous_trick_tools/Miscellaneous-Trick-Tools) diff --git a/docs/documentation/simulation_utilities/Simulation-Utilities.md b/docs/documentation/simulation_utilities/Simulation-Utilities.md index 020b2ed2..a1b72c08 100644 --- a/docs/documentation/simulation_utilities/Simulation-Utilities.md +++ b/docs/documentation/simulation_utilities/Simulation-Utilities.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → Simulation Utilities | +|------------------------------------------------------------------| + This section details the simulation utilities of Trick. Simulation utilities provide a service to user models. These included a socket communication library, Trickcomm, as well as math routines, units conversion routines, and some abstract data types written in C. diff --git a/docs/documentation/simulation_utilities/Trickcomm.md b/docs/documentation/simulation_utilities/Trickcomm.md index 069a26f8..617b4c37 100644 --- a/docs/documentation/simulation_utilities/Trickcomm.md +++ b/docs/documentation/simulation_utilities/Trickcomm.md @@ -1,3 +1,5 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Utilities](Simulation-Utilities) → TrickComm | +|------------------------------------------------------------------| To be added. diff --git a/docs/documentation/web/Configuring_TRICK_with_Civetweb.md b/docs/documentation/web/Configure-Civetweb.md similarity index 71% rename from docs/documentation/web/Configuring_TRICK_with_Civetweb.md rename to docs/documentation/web/Configure-Civetweb.md index fb0c1a63..19ddf882 100644 --- a/docs/documentation/web/Configuring_TRICK_with_Civetweb.md +++ b/docs/documentation/web/Configure-Civetweb.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Web Server](Webserver) → Configuring Trick with Civetweb | +|------------------------------------------------------------------| + ## Configuring Trick with Civetweb To configure Trick to support the civetweb web server, you'll need to @@ -19,3 +22,5 @@ cd $(TRICK_HOME) make clean make ``` + +Continue to [Adding SSL Encryption](SSL) \ No newline at end of file diff --git a/docs/documentation/web/Extending_the_HTTP-API.md b/docs/documentation/web/Extend-http-api.md similarity index 89% rename from docs/documentation/web/Extending_the_HTTP-API.md rename to docs/documentation/web/Extend-http-api.md index 0c114d67..087b39c9 100644 --- a/docs/documentation/web/Extending_the_HTTP-API.md +++ b/docs/documentation/web/Extend-http-api.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Web Server](Webserver) → [APIs](WebServerAPIs) → Extending the HTTP API | +|------------------------------------------------------------------| + ## Extending the HTTP-API The HTTP-API is implemented as a collection of ```httpMethodHandlers```. An ```httpMethodHandler``` is a pointer to a function that is expected to respond to an HTTP GET request, using the **CivetWeb** framework. An ```httpMethodHandler``` is defined (in ```trick/CivetWeb.hh```) as follows: @@ -113,3 +116,5 @@ void create_connections() { } ``` + +Continue to [Extending the WS API](Extend-ws-api) \ No newline at end of file diff --git a/docs/documentation/web/Extending_the_WS-API.md b/docs/documentation/web/Extend-ws-api.md similarity index 96% rename from docs/documentation/web/Extending_the_WS-API.md rename to docs/documentation/web/Extend-ws-api.md index a82c47c4..223c83e6 100644 --- a/docs/documentation/web/Extending_the_WS-API.md +++ b/docs/documentation/web/Extend-ws-api.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Web Server](Webserver) → [APIs](WebServerAPIs) → Extend the WS API | +|------------------------------------------------------------------| + ## Extending the WebSocket-API ## When You Create a WebSocket Connection @@ -267,6 +270,4 @@ To test your new web socket interface, put the following ```time.html``` file in ``` - - - +Continue to [Simulation Utilities](../simulation_utilities/Simulation-Utilities) \ No newline at end of file diff --git a/docs/documentation/web/Adding_SSL_encryption_to_Your_Webserver.md b/docs/documentation/web/SSL.md similarity index 81% rename from docs/documentation/web/Adding_SSL_encryption_to_Your_Webserver.md rename to docs/documentation/web/SSL.md index e4808818..aad5ae19 100644 --- a/docs/documentation/web/Adding_SSL_encryption_to_Your_Webserver.md +++ b/docs/documentation/web/SSL.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Web Server](Webserver) → Adding SSL Encryption to your Webserver | +|------------------------------------------------------------------| + # Adding SSL Encryption to Your Webserver ## Getting started @@ -34,3 +37,5 @@ Where server.pem is the path to the server.pem file you created when creating a ## Access your webserver Now that ssl encryption is enabled, to access you webserver use https://localhost.ssl:8888 instead of http and wss://localhost.ssl:8888 for http and ws protocals respectively. + +Continue to [Adding SSL Encryption](SSL) \ No newline at end of file diff --git a/docs/documentation/web/Webserver-apis.md b/docs/documentation/web/Webserver-apis.md new file mode 100644 index 00000000..da0aaa3b --- /dev/null +++ b/docs/documentation/web/Webserver-apis.md @@ -0,0 +1,12 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Web Server](Webserver) → APIs | +|------------------------------------------------------------------| + +# Web Server APIs + +The web server provides APIs over http and wss protocol. Both can be extended by a client developer if necessary. + +API Documentation Pages +- [HTTP Alloc API](http-alloc-api) +- [WS Variable Server API](ws-variable-server-api) +- [Extending the HTTP API](Extend-http-api) +- [Extending the WS API](Extend-ws-api) \ No newline at end of file diff --git a/docs/documentation/web/Adding_a_Web_Server_to_Your_Sim.md b/docs/documentation/web/Webserver.md similarity index 93% rename from docs/documentation/web/Adding_a_Web_Server_to_Your_Sim.md rename to docs/documentation/web/Webserver.md index 50a1abf4..96c21b4b 100644 --- a/docs/documentation/web/Adding_a_Web_Server_to_Your_Sim.md +++ b/docs/documentation/web/Webserver.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → Web Server | +|------------------------------------------------------------------| + # Adding a Web Server to Your Sim If Trick is [configured with Civetweb](Configuring_TRICK_with_Civetweb.md), @@ -77,3 +80,4 @@ The **images** directory contains trick_icon.png. **You are encouraged to add to, modify, and/or delete these files and directories to best suite the needs of your project.** +Continue to [Configuring Trick with Civetweb](Configure-Civetweb) \ No newline at end of file diff --git a/docs/documentation/web/HTTP-API_alloc_info.md b/docs/documentation/web/http-alloc-api.md similarity index 92% rename from docs/documentation/web/HTTP-API_alloc_info.md rename to docs/documentation/web/http-alloc-api.md index 3cb9a90c..89be2be9 100644 --- a/docs/documentation/web/HTTP-API_alloc_info.md +++ b/docs/documentation/web/http-alloc-api.md @@ -1,16 +1,19 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Web Server](Webserver) → [APIs](WebServerAPIs) → HTTP Alloc API | +|------------------------------------------------------------------| + # HTTP-API: alloc_info -```http://localhost:8888/api/http/alloc_info``` +```http://localhost:8888/api/http/alloc_info``` ## Purpose -Request a JSON encoded sub-list of allocation descriptors from the Memory Manager’s alloc_info list. +Request a JSON encoded sub-list of allocation descriptors from the Memory Manager’s alloc_info list. ## Query String Parameters | Parameter|Default|Description | -|-------------|----|----------------------------------| -| ```start``` | 0 | starting index of the sub-list. | -| ```count``` | 20 | number of allocation descriptors.| +|-------------|----|----------------------------------| +| ```start``` | 0 | starting index of the sub-list. | +| ```count``` | 20 | number of allocation descriptors.| ### EXAMPLE: @@ -20,11 +23,11 @@ Request a JSON encoded sub-list of allocation descriptors from the Memory Manage Returns a JSON object containing four name-value pairs: -### JSON Response Object +### JSON Response Object | Name | Value Description | -|-------------------|-----------------------------------------| -| ```alloc_total``` | Total number allocations in the Memory Manager’s alloc_info list. | +|-------------------|-----------------------------------------| +| ```alloc_total``` | Total number allocations in the Memory Manager’s alloc_info list. | | ```chunk_size``` | Number of allocation description objects in ```alloc_list```. | | ```chunk_start``` | The Memory Manager alloc_info index of the first ```alloc_list``` element below| | ```alloc_list``` | Array of JSON Allocation Description objects (described below). | @@ -33,8 +36,8 @@ Returns a JSON object containing four name-value pairs: ### JSON Allocation Description Object | Name | Value Description | -|---------------|---------------------------------------------------------------------------------| -| ```name``` | Name of the allocation. May be ```Null``` | +|---------------|---------------------------------------------------------------------------------| +| ```name``` | Name of the allocation. May be ```Null``` | | ```start``` | Starting address of the allocation. | | ```end``` | Ending address of the allocation. | | ```num``` | | @@ -56,32 +59,34 @@ In ```SIM_cannon_numeric``` (one of Trick's example sims) the following query re #### Response ```json -{ "alloc_total":43, - "chunk_size":2, - "chunk_start":20, - "alloc_list":[ - { "name":"dyn", - "start":"0x101aa9900", - "end":"0x101aa9b27", - "num":"1", - "size":"552", - "type":"CannonSimObject", - "stcl":"TRICK_EXTERN", - "language":"Language_CPP", - "index": [] - } - , - { "name":"web", - "start":"0x101aa9610", - "end":"0x101aa98ff", - "num":"1", - "size":"752", - "type":"WebServerSimObject", - "stcl":"TRICK_EXTERN", - "language":"Language_CPP", - "index": [] - } - ] -} +{ "alloc_total":43, + "chunk_size":2, + "chunk_start":20, + "alloc_list":[ + { "name":"dyn", + "start":"0x101aa9900", + "end":"0x101aa9b27", + "num":"1", + "size":"552", + "type":"CannonSimObject", + "stcl":"TRICK_EXTERN", + "language":"Language_CPP", + "index": [] + } + , + { "name":"web", + "start":"0x101aa9610", + "end":"0x101aa98ff", + "num":"1", + "size":"752", + "type":"WebServerSimObject", + "stcl":"TRICK_EXTERN", + "language":"Language_CPP", + "index": [] + } + ] +} -``` \ No newline at end of file +``` + +Continue to [WS Variable Server API](ws-variable-server-api) \ No newline at end of file diff --git a/docs/documentation/web/WS-API_VariableServer.md b/docs/documentation/web/ws-variable-server-api.md similarity index 94% rename from docs/documentation/web/WS-API_VariableServer.md rename to docs/documentation/web/ws-variable-server-api.md index ac98271e..9b294bc5 100644 --- a/docs/documentation/web/WS-API_VariableServer.md +++ b/docs/documentation/web/ws-variable-server-api.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Web Server](Webserver) → [APIs](WebServerAPIs) → WS Variable Server API | +|------------------------------------------------------------------| + # WS-API: VariableServer ```ws://localhost:8888/api/ws/VariableServer``` @@ -18,62 +21,62 @@ Add a Trick Variable to the current session. Stop sending periodic ```var_list``` messages (*see below*) from the server. ```json -{ "cmd" : "var_pause" } +{ "cmd" : "var_pause" } ``` Resume sending periodic ```var_list``` response messages from the server. ```json -{ "cmd" : "var_unpause" } - +{ "cmd" : "var_unpause" } + ``` Send one ```var_list``` message from the server. ```json -{ "cmd" : "var_send" } +{ "cmd" : "var_send" } ``` Clear all variables from the current session, that is: undo all of the ```var_add``` commands. ```json -{ "cmd" : "var_clear" } +{ "cmd" : "var_clear" } ``` Disconnect from the variable server. ```json -{ "cmd" : "var_exit" } +{ "cmd" : "var_exit" } ``` Set the period (in milliseconds) at which ```var_list``` messages are sent form the server. ```json -{ "cmd" : "var_cycle", - "period" : integer -} +{ "cmd" : "var_cycle", + "period" : integer +} ``` Execute the given Python code in the host sim. ```json -{ "cmd" : "python", - "pycode" : string -} +{ "cmd" : "python", + "pycode" : string +} ``` Send the sie structure from the server. Response will be the ```sie``` response message (*below*). ```json -{ "cmd" : "sie" } +{ "cmd" : "sie" } ``` Send the units for the given variable. Response will be the ```units``` response message (*below*). ```json -{ "cmd" : "units", - "var_name" : string -} +{ "cmd" : "units", + "var_name" : string +} ``` ## Server to Client Response Messages @@ -81,34 +84,34 @@ Send the units for the given variable. Response will be the ```units``` response Error Response ```json -{ "msg_type" : "error", - "error_text" : string +{ "msg_type" : "error", + "error_text" : string } ``` Periodic response containing the values of variables requested by ```var_add```. ```json -{ "msg_type" : "var_list" - "time" : double - "values" : [] +{ "msg_type" : "var_list" + "time" : double + "values" : [] } ``` Response to the ```sie``` command (*above*). ```json -{ "msg_type" : "sie", - "data" : string +{ "msg_type" : "sie", + "data" : string } ``` Response to the ```units``` command (*above*). ```json -{ "msg_type" : "units", - "var_name" : string, - "data" : string +{ "msg_type" : "units", + "var_name" : string, + "data" : string } ``` @@ -208,3 +211,5 @@ Response to the ```units``` command (*above*). ``` + +Continue to [Extending the HTTP API](Extend-http-api) \ No newline at end of file From 866c7a871f48a326993aa9b00c4663a0b2c77ea9 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 9 Aug 2022 14:01:03 -0500 Subject: [PATCH 040/162] Fix broken link in docs --- docs/related_projects/Related-Projects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/related_projects/Related-Projects.md b/docs/related_projects/Related-Projects.md index 40f26da3..ec9ef62a 100644 --- a/docs/related_projects/Related-Projects.md +++ b/docs/related_projects/Related-Projects.md @@ -1,4 +1,4 @@ -| [Home](Home) → Related Projects | +| [Home](/trick) → Related Projects | |---------------------------------| # Open Source Projects From 77dae99fc8a34af8d4aabd97e5f80e503a261810 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 10 Aug 2022 13:10:18 -0500 Subject: [PATCH 041/162] Race condition patch (#1329) * Add patch for an uncommon bug where some data recording threads hang forever --- include/trick/DataRecordDispatcher.hh | 2 ++ .../sim_services/DataRecord/DataRecordDispatcher.cpp | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/trick/DataRecordDispatcher.hh b/include/trick/DataRecordDispatcher.hh index 7a8bc3b8..55d58932 100644 --- a/include/trick/DataRecordDispatcher.hh +++ b/include/trick/DataRecordDispatcher.hh @@ -28,6 +28,8 @@ namespace Trick { pthread_cond_t init_complete_cv; /**< trick_io(**) */ /** Data writer initialized mutex. */ pthread_mutex_t init_complete_mutex; /**< trick_io(**) */ + /** Flag to exit (instead of pthread_cancel) */ + bool cancelled; } ; class DRDWriterThread : public Trick::ThreadBase { diff --git a/trick_source/sim_services/DataRecord/DataRecordDispatcher.cpp b/trick_source/sim_services/DataRecord/DataRecordDispatcher.cpp index ea8849f9..df5533d7 100644 --- a/trick_source/sim_services/DataRecord/DataRecordDispatcher.cpp +++ b/trick_source/sim_services/DataRecord/DataRecordDispatcher.cpp @@ -29,6 +29,7 @@ Trick::DRDMutexes::DRDMutexes() { pthread_mutex_init(&dr_go_mutex, NULL); pthread_cond_init(&init_complete_cv, NULL); pthread_mutex_init(&init_complete_mutex, NULL); + cancelled = false; } Trick::DRDWriterThread::DRDWriterThread(DRDMutexes & in_mutexes, std::vector & in_groups) : @@ -48,6 +49,10 @@ void * Trick::DRDWriterThread::thread_body() { then call the write_data method for all of the groups */ while(1) { pthread_cond_wait(&(drd_mutexes.dr_go_cv), &(drd_mutexes.dr_go_mutex)); + if (drd_mutexes.cancelled) { + pthread_mutex_unlock(&(drd_mutexes.dr_go_mutex)); + pthread_exit(0); + } for ( unsigned int ii = 0 ; ii < groups.size() ; ii++ ) { if ( groups[ii]->buffer_type == Trick::DR_Buffer ) { groups[ii]->write_data(true) ; @@ -90,6 +95,7 @@ int Trick::DataRecordDispatcher::init() { pthread_mutex_lock(&drd_mutexes.init_complete_mutex); drd_writer_thread.create_thread() ; pthread_cond_wait(&drd_mutexes.init_complete_cv, &drd_mutexes.init_complete_mutex); + pthread_mutex_unlock(&drd_mutexes.init_complete_mutex); return(0) ; } @@ -239,7 +245,9 @@ int Trick::DataRecordDispatcher::shutdown() { if ( drd_writer_thread.get_pthread_id() != 0 ) { pthread_mutex_lock( &drd_mutexes.dr_go_mutex); - pthread_cancel( drd_writer_thread.get_pthread_id()) ; + // pthread_cancel( drd_writer_thread.get_pthread_id()) ; + drd_mutexes.cancelled = true; + pthread_cond_signal(&drd_mutexes.dr_go_cv); pthread_mutex_unlock( &drd_mutexes.dr_go_mutex); } From af4a40057d9d2e388c220b724e2573ea77be0da3 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 11 Aug 2022 11:27:36 -0500 Subject: [PATCH 042/162] Update Install-Guide.md closes #1300 references #1302 --- .../install_guide/Install-Guide.md | 43 ++++++++++++------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index 290753b8..39684487 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -9,16 +9,16 @@ Trick requires various free third party utilities in order to function. All the | Utility | Version | Description | Usage | Notes | |---------------:|:-------:|:-----------------------:|:---------------------------------------------------------:|:------------------------------------------------------| -| [gcc] and g++ | 4.8+ | C/C++ Compiler | Compiles Trick and Trick simulations. | | -| [clang]/[llvm] | <=13 (14 not currently supported) | C/C++ Compiler | Utilized by the interface code generator. | | -| [python] | 2.7+ | Programming Language | Lets the user interact with a simulation. | Trick has been tested up to python 3.9 as of 02/21 | -| [perl] | 5.6+ | Programming Language | Allows executable scripts in the bin directory to run. | | -| [java] | 11+ | Programming Language | Necessary for Trick GUIs. | | -| [swig] | 2.x-3.x | Language Interfacing | Connects the python input processor with Trick's C code. | 3.0+ required for some unit tests in make test target | -| [make] | 3.78+ | Build Automation | Automates the building and cleaning of Trick. | | -| [openmotif] | 2.2.0+ | GUI Toolkit | Covers Trick GUIs not made with Java. | | -| [udunits] | 2.x+ | C Unit Library/Database | Provides support for units of physical quantities. | | -| [maven] | x.x | Java package manager | Downloads Java dependencies and builds trick GUIs | | +| [gcc] and g++ | 4.8+ | C/C++ Compiler | Compiles Trick and Trick simulations. | | +| [clang]/[llvm] | <=14 | C/C++ Compiler | Utilized by the interface code generator. | Trick Versions <= 19.3 should use LLVM <= 9 | +| [python] | 2.7+ | Programming Language | Lets the user interact with a simulation. | Trick has been tested up to python 3.9 as of 02/21 | +| [perl] | 5.6+ | Programming Language | Allows executable scripts in the bin directory to run. | | +| [java] | 11+ | Programming Language | Necessary for Trick GUIs. | | +| [swig] | 2.x-3.x | Language Interfacing | Connects the python input processor with Trick's C code. | 3.0+ required for some unit tests in make test target. SWIG 4.x is compatible with Trick, but has some issues https://github.com/nasa/trick/issues/1288 | +| [make] | 3.78+ | Build Automation | Automates the building and cleaning of Trick. | | +| [openmotif] | 2.2.0+ | GUI Toolkit | Covers Trick GUIs not made with Java. | | +| [udunits] | 2.x+ | C Unit Library/Database | Provides support for units of physical quantities. | | +| [maven] | x.x | Java package manager | Downloads Java dependencies and builds trick GUIs | | [gcc]: https://gcc.gnu.org/ [clang]: https://clang.llvm.org/ @@ -48,7 +48,9 @@ Trick runs on GNU/Linux and macOS, though any System V/POSIX compatible UNIX wor | Quick Jump Menu | |---| |[RedHat Enterprise Linux (RHEL) 8](#redhat8)| -|[CentOS 8](#redhat8)| +|[Oracle Linux 8](#redhat8)| +|[AlmaLinux 8](#redhat8)| +|[Rocky Linux 8](#redhat8)| |[RedHat Enterprise Linux (RHEL) 7](#redhat7)| |[CentOS 7](#redhat7)| |[Fedora](#fedora)| @@ -68,7 +70,7 @@ The configuration for these tests can be found in the [trick/.github/workflow/te --- -### RedHat Enterprise Linux (RHEL) 8, CentOS 8 +### RedHat Enterprise Linux (RHEL) 8, Oracle Linux 8, Rocky Linux 8, AlmaLinux 8 Trick requires the clang/llvm compiler to compile and link the Trick Interface Code Generator. clang/llvm is available through the [Extra Packages for Enterprise Linux](https://fedoraproject.org/wiki/EPEL) repository. Download and install the 'epel-release' package. @@ -84,12 +86,21 @@ python3-devel diffutils -Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository. In order to access gtest-devel in the epel repository you need to enable the dnf option PowerTools +Trick makes use of several optional packages if they are present on the system. These include using the HDF5 package for logging, the GSL packages for random number generation, and google test (gtest) for Trick's unit testing. These are available from the EPEL repository. In order to access gtest-devel in the epel repository on RHEL 8 you need to enable the dnf repo CodeReady Linux Builder. In Rocky Linux and Alma Linux you can instead enable the Power Tools Repo. On Oracle Linux 8 you must enable OL8 CodeReady Builder. +See RedHat's documentation to enable the CodeReady Linux Builder repository: +https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/package_manifest/codereadylinuxbuilder-repository + +On AlmaLinux 8, Rocky Linux 8: ```bash -yum install -y 'dnf-command(config-manager)' -yum config-manager --enable PowerTools -yum install hdf5-devel gsl-devel gtest-devel +dnf config-manager --enable powertools + dnf install -y gtest-devel +``` + +On Oracle Linux 8: +``` +dnf config-manager --enable ol8_codeready_builder +dnf install -y gtest-devel ``` proceed to [Install Trick](#install) section of the install guide From c390ca5ba68d86de8fa4b14bd918f6fc1eb561d6 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 11 Aug 2022 15:10:29 -0500 Subject: [PATCH 043/162] replace GTEST_HAS_TR1_TUPLE with -std=c++11 (#1331) --- .github/workflows/test_macos.yml | 7 +------ trick_source/data_products/DPX/test/unit_test/makefile | 2 +- trick_source/sim_services/Clock/test/Makefile | 2 +- trick_source/sim_services/Executive/test/Makefile | 2 +- trick_source/sim_services/Integrator/test/Makefile | 2 +- trick_source/sim_services/MonteCarlo/test/Makefile | 2 +- trick_source/sim_services/ScheduledJobQueue/test/Makefile | 2 +- trick_source/sim_services/Timer/test/Makefile | 2 +- trick_source/trick_utils/SAIntegrator/unittest/Makefile | 2 +- trick_source/trick_utils/comm/test/Makefile | 2 +- trick_source/trick_utils/interpolator/test/Makefile | 2 +- trick_source/trick_utils/math/test/Makefile | 2 +- trick_source/trick_utils/unicode/test/Makefile | 2 +- trick_source/trick_utils/units/test/makefile | 2 +- 14 files changed, 14 insertions(+), 19 deletions(-) diff --git a/.github/workflows/test_macos.yml b/.github/workflows/test_macos.yml index a0e0f79c..d41a6e75 100644 --- a/.github/workflows/test_macos.yml +++ b/.github/workflows/test_macos.yml @@ -17,12 +17,7 @@ jobs: - name: Install gtest run: | - wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz - tar xzvf release-1.8.0.tar.gz - cd googletest-release-1.8.0/googletest - cmake . - make - make install + brew install googletest - name: Install dependencies run: | # sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.15.pkg -target / diff --git a/trick_source/data_products/DPX/test/unit_test/makefile b/trick_source/data_products/DPX/test/unit_test/makefile index a2260f9f..b3a58dca 100644 --- a/trick_source/data_products/DPX/test/unit_test/makefile +++ b/trick_source/data_products/DPX/test/unit_test/makefile @@ -30,7 +30,7 @@ else endif ifeq ($(TRICK_HOST_TYPE), Darwin) - CFLAGS += -DGTEST_HAS_TR1_TUPLE=0 + CFLAGS += -std=c++11 MOTIF_INCDIR = -I/sw/include XLIBS = -L/sw/lib -lXm -L/usr/X11R6/lib -L/usr/X11/lib SDK_DIR = $(shell xcrun --show-sdk-path) diff --git a/trick_source/sim_services/Clock/test/Makefile b/trick_source/sim_services/Clock/test/Makefile index cc1e34c4..8d00cd53 100644 --- a/trick_source/sim_services/Clock/test/Makefile +++ b/trick_source/sim_services/Clock/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} LIBS = -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/sim_services/Executive/test/Makefile b/trick_source/sim_services/Executive/test/Makefile index e2ca8492..0f032a43 100644 --- a/trick_source/sim_services/Executive/test/Makefile +++ b/trick_source/sim_services/Executive/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = -L ${TRICK_LIB_DIR} -ltrick_mm -ltrick_units -ltrick TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/sim_services/Integrator/test/Makefile b/trick_source/sim_services/Integrator/test/Makefile index f78fe80b..0a4d991f 100644 --- a/trick_source/sim_services/Integrator/test/Makefile +++ b/trick_source/sim_services/Integrator/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -I${TRICK_HOME}/trick_source -I${TRICK_HOME}/include/trick/compat -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 -DUSE_ER7_UTILS_INTEGRATORS=1 -DTEST ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -I${TRICK_HOME}/trick_source -I${TRICK_HOME}/include/trick/compat -g -Wall -Wextra -std=c++11 -DUSE_ER7_UTILS_INTEGRATORS=1 -DTEST ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick -ltrick_mm -ltrick_units -ltrick -ltrick_mm TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/sim_services/MonteCarlo/test/Makefile b/trick_source/sim_services/MonteCarlo/test/Makefile index ac84d770..039d8184 100644 --- a/trick_source/sim_services/MonteCarlo/test/Makefile +++ b/trick_source/sim_services/MonteCarlo/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 -std=c++11 +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick -ltrick_pyip -ltrick_comm -ltrick_math -ltrick_mm -ltrick_units TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/sim_services/ScheduledJobQueue/test/Makefile b/trick_source/sim_services/ScheduledJobQueue/test/Makefile index f65f0e8e..1bf900a4 100644 --- a/trick_source/sim_services/ScheduledJobQueue/test/Makefile +++ b/trick_source/sim_services/ScheduledJobQueue/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick_mm -ltrick_units -ltrick -ltrick_mm -ltrick_units -ltrick TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/sim_services/Timer/test/Makefile b/trick_source/sim_services/Timer/test/Makefile index 90463262..98338472 100644 --- a/trick_source/sim_services/Timer/test/Makefile +++ b/trick_source/sim_services/Timer/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick -ltrick_units -ltrick_mm TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread diff --git a/trick_source/trick_utils/SAIntegrator/unittest/Makefile b/trick_source/trick_utils/SAIntegrator/unittest/Makefile index a29d4767..d7f90f24 100644 --- a/trick_source/trick_utils/SAIntegrator/unittest/Makefile +++ b/trick_source/trick_utils/SAIntegrator/unittest/Makefile @@ -3,7 +3,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common RM = rm -rf -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} INCLUDE_DIRS = -I../include -I$(GTEST_HOME)/include SAI_OBJDIR = obj diff --git a/trick_source/trick_utils/comm/test/Makefile b/trick_source/trick_utils/comm/test/Makefile index 543579cb..3671db95 100644 --- a/trick_source/trick_utils/comm/test/Makefile +++ b/trick_source/trick_utils/comm/test/Makefile @@ -7,7 +7,7 @@ INCLUDE_DIRS = -I$(GTEST_HOME) -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include # Use the trick_comm library only. libtrick.a would also work. TRICK_LIBS := ${TRICK_LIB_DIR}/libtrick_comm.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -TRICK_CXXFLAGS += ${INCLUDE_DIRS} -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += ${INCLUDE_DIRS} -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} # Automatically determine all executable names produced by this Makefile. TESTS = comm_test diff --git a/trick_source/trick_utils/interpolator/test/Makefile b/trick_source/trick_utils/interpolator/test/Makefile index 984fd914..376371a6 100644 --- a/trick_source/trick_utils/interpolator/test/Makefile +++ b/trick_source/trick_utils/interpolator/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread diff --git a/trick_source/trick_utils/math/test/Makefile b/trick_source/trick_utils/math/test/Makefile index 8e28d9eb..3a090399 100644 --- a/trick_source/trick_utils/math/test/Makefile +++ b/trick_source/trick_utils/math/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I${GTEST_HOME}/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I${GTEST_HOME}/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick_math.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread diff --git a/trick_source/trick_utils/unicode/test/Makefile b/trick_source/trick_utils/unicode/test/Makefile index 782d18ff..f63c944b 100644 --- a/trick_source/trick_utils/unicode/test/Makefile +++ b/trick_source/trick_utils/unicode/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lpthread diff --git a/trick_source/trick_utils/units/test/makefile b/trick_source/trick_utils/units/test/makefile index e1516d4d..97001036 100644 --- a/trick_source/trick_utils/units/test/makefile +++ b/trick_source/trick_utils/units/test/makefile @@ -7,7 +7,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I${GTEST_HOME}/include -I$(TRICK_HOME)/include -g -Wall -Wextra -DGTEST_HAS_TR1_TUPLE=0 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I${GTEST_HOME}/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick_units.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main From fe7422c5f0390266a24f1c93ce5a91f4d5f0c009 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 11 Aug 2022 16:50:21 -0500 Subject: [PATCH 044/162] Update report_linux.yml --- .github/workflows/report_linux.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/report_linux.yml b/.github/workflows/report_linux.yml index b91ea9a9..13499354 100644 --- a/.github/workflows/report_linux.yml +++ b/.github/workflows/report_linux.yml @@ -12,14 +12,16 @@ jobs: matrix: cfg: #-------- Operating Systems ---------------- - - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } - - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } - - { os: debian, tag: 10, arch: debian, arch_ver: 10 } - - { os: debian, tag: 11, arch: debian, arch_ver: 11 } - - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } - - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } - - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } - - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } + - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } + - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } + - { os: ubuntu, tag: 22.04, arch: debian, arch_ver: 12 } + - { os: debian, tag: 10, arch: debian, arch_ver: 10 } + - { os: debian, tag: 11, arch: debian, arch_ver: 11 } + - { os: debian, tag: bookworm, arch: debian, arch_ver: 12 } + - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } + - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } + - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } + - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } python: [2, 3] runs-on: ubuntu-latest From 6d56c281e0273f5d3689c533b6c99b5bdab3ca7f Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Mon, 15 Aug 2022 14:16:29 -0500 Subject: [PATCH 045/162] Fix broken link in Webserver.md --- docs/documentation/web/Webserver.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/documentation/web/Webserver.md b/docs/documentation/web/Webserver.md index 96c21b4b..f854ac1d 100644 --- a/docs/documentation/web/Webserver.md +++ b/docs/documentation/web/Webserver.md @@ -3,7 +3,7 @@ # Adding a Web Server to Your Sim -If Trick is [configured with Civetweb](Configuring_TRICK_with_Civetweb.md), +If Trick is [configured with Civetweb](Configure-Civetweb.md), adding a web server to your simulation simply requires including the CivetServer sim module into your **S_define** file: ``` @@ -80,4 +80,4 @@ The **images** directory contains trick_icon.png. **You are encouraged to add to, modify, and/or delete these files and directories to best suite the needs of your project.** -Continue to [Configuring Trick with Civetweb](Configure-Civetweb) \ No newline at end of file +Continue to [Configuring Trick with Civetweb](Configure-Civetweb) From 9c8799610fe1806ba67af547842a42b1d81ee28f Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Thu, 18 Aug 2022 10:47:07 -0500 Subject: [PATCH 046/162] Variable Server - var_send_once and integration test (#1330) * Adds the send_once command and message type, which allows a user to request a variable to be sent immediately and only once (intended to replace the var_add, var_send, var_clear idiom that is commonly used for this purpose) * Minor refactoring of variable server internals to reduce repeated code * Adds SIM_test_varserv to integration test to test basic variable server functionality * Changes graphics client for SIM_billiards to use var_send_once as an example of intended use * Add documentation for var_send_once in docs and tutorial * Set exit_code_enabled in trick unit tests to be true by default * Patch for failing bookworm build --- .../Variable-Server.md | 33 ++- docs/tutorial/TutVariableServer.md | 75 +++++- include/trick/VariableServer.hh | 2 + include/trick/VariableServerThread.hh | 37 ++- include/trick/variable_server_message_types.h | 3 +- test/SIM_test_varserv/S_define | 5 +- .../models/varserv/include/VS.hh | 11 +- .../models/varserv/src/VS_commands.cpp | 9 +- .../models/varserv/src/VS_default_data.cpp | 3 + .../models/varserv/src/VS_init.cpp | 16 +- .../models/varserv/src/VS_shutdown.cpp | 2 +- .../models/varserv/src/VS_tests.cpp | 127 ++++----- .../models/varserv/src/VS_unittests.cpp | 21 -- test/makefile | 3 +- .../models/graphics/cpp/main.cpp | 242 ++++++++---------- .../DataRecord/DataRecordGroup.cpp | 2 +- .../sim_services/UnitTest/UnitTest.cpp | 2 +- .../VariableServerThread_commands.cpp | 45 +++- .../VariableServerThread_copy_sim_data.cpp | 34 +-- .../VariableServerThread_loop.cpp | 5 +- .../VariableServerThread_write_data.cpp | 212 +++++++++------ .../VariableServer/var_server_ext.cpp | 18 ++ 22 files changed, 529 insertions(+), 378 deletions(-) delete mode 100644 test/SIM_test_varserv/models/varserv/src/VS_unittests.cpp diff --git a/docs/documentation/simulation_capabilities/Variable-Server.md b/docs/documentation/simulation_capabilities/Variable-Server.md index 877f5352..5ae7c557 100644 --- a/docs/documentation/simulation_capabilities/Variable-Server.md +++ b/docs/documentation/simulation_capabilities/Variable-Server.md @@ -189,6 +189,22 @@ trick.var_send() The var_send command forces the variable server to return the list of values to the client immediately. +#### Sending variables only once and immediately + +```python +trick.var_send_once( string var_name) +``` + +The var_send_once command forces the variable server to return the value of the given +variable to the client immediately. + +```python +trick.var_send_once( string var_list, int num_vars) +``` + +var_send_once can also accept a comma separated list of variables. The number of variables +in this list must match num_vars, or it will not be processed. + #### Changing the Units ```python @@ -386,12 +402,17 @@ unprintable character) that occurs within the character string value will appear escaped character, i.e. preceded by a backslash. The 1st value returned in the list will always be a message indicator. The possible -values of the message indicator are: -- 0 returned variable value(s) from var_add or var_send -- 1 returned value from var_exists -- 2 returned value from send_sie_resource (special command used by Trick View) -- 3 returned value from send_event_data (special command used by Events/Malfunctions Trick View) or var_send_list_size -- 4 values redirected from stdio if var_set_send_stdio is enabled +values of the message indicator listen in the table below. + +| Name | Value | Meaning | +|-------------------|-------|---------| +| VS\_IP\_ERROR | -1 | Protocol Error| +| VS\_VAR\_LIST | 0 | A list of variable values. | +| VS\_VAR\_EXISTS | 1 | Response to var\_exists( variable_name )| +| VS\_SIE\_RESOURCE | 2 | Response to send_sie_resource| +| VS\_LIST\_SIZE | 3 | Response to var_send_list_size or send_event_data| +| VS\_STDIO | 4 | Values Redirected from stdio if var_set_send_stdio is enabled| +| VS\_SEND\_ONCE | 5 | Response to var\_send\_once| If the variable units are also specified along with the variable name in a var_add or var_units command, then that variable will also have its units specification returned following diff --git a/docs/tutorial/TutVariableServer.md b/docs/tutorial/TutVariableServer.md index 98c016bb..6e83e3dc 100644 --- a/docs/tutorial/TutVariableServer.md +++ b/docs/tutorial/TutVariableServer.md @@ -133,8 +133,7 @@ Control Panel, as shown below. The output of the script will display three columns of numbers. The left most number is the [variable server message type](#variable-server-message-types). Here, a message type of 0 indicates that the message is the (tab delimited) list -of the values we requested. This is the only message type we'll be concerned -with in this tutorial. The two columns to the right of the message number are +of the values we requested. The two columns to the right of the message number are the values of ```dyn.cannon.pos[0]``` and ```dyn.cannon.pos[1]```, in the order that they were specified in the script. @@ -208,14 +207,68 @@ Suppose we wanted to get the value of the initial angle of our cannon. We don't need to get it repeatedly, because it doesn't change. We just want to get it once, and then to repeatedly get the position data, which changes over time. -For this situation we can use the [**var_send**](#api-var-send) command, which -tells the variable server to send the values specified in the session variable -list immediately, regardless of whether [**var_pause**](#api-var-pause) was -previously commanded. +For this situation, we can take one of several approaches. The most straightforward +is the [**var_send_once**](#api-var-send-once) command, which tells the variable +server to send the values sent as arguments immediately, regardless of whether +[**var_pause**](#api-var-pause) was previously commanded. To demonstrate how this works, let's add the following code to our script, right after the line where we sent the **var_ascii** command. +```python +client_socket.send( "trick.var_send_once(\"dyn.cannon.init_angle\")\n") +line = insock.readline() +print line +``` + +In this code, we simply ask the variable server to immediately send the value of ```dyn.cannon.init_angle```, +call ```insock.readline()``` to wait for a response, and print the response when it is received. +[**var_send_once**](#api-var-send-once) does not alter the session variable list in any way. + +When we run the client, the first few lines of output should look something like: + +``` +5 0.5235987755982988 + +0 0 0 + +0 0 0 +``` + +The [**var_send_once**](#api-var-send-once) command uses a [message type](#variable-server-message-types) of 5 +to allow a programmer to differentiate between normal session variables and var_send_once variables. var_send_once +does not alter or interfere with the session variable list, which would allow both of these features to be +used simultaneously in a sim. + +The [**var_send_once**](#api-var-send-once) also allows a user to request multiple variables in a single +command. [**var_send_once**](#api-var-send-once) can accept a comma-separated list of variables as the +first argument and the number of variables in the list as the second argument. +In our example, suppose we also wanted to retrieve the initial speed of the cannonball. +We could retrieve both variables with a single command: + +```python +client_socket.send( "trick.var_send_once(\"dyn.cannon.init_angle, dyn.cannon.init_speed\", 2)\n") +``` + +Now, when we run the client, we get both the init_angle and the init_speed with the first message. + +``` +5 0.5235987755982988 50 + +0 0 0 + +0 0 0 +``` + + +Another commonly used pattern to retrieve variables only once is to use the [**var_add**](#api-var-add), +[**var_send**](#api-var-send), and [**var_clear**](#api-var-clear) commands. [**var_send**](#api-var-send) tells +the variable server to send all **session** variables immediately regardless of whether [**var_pause**](#api-var-pause) +was previously commanded. + +To demonstrate how this works, replace the code in the previous listing with the snippet below, right +after the line where we sent the **var_ascii** command. + ```python client_socket.send( "trick.var_add(\"dyn.cannon.init_angle\")\n") client_socket.send( "trick.var_send()\n" ) @@ -224,6 +277,8 @@ print line client_socket.send( "trick.var_clear()\n" ) ``` + + In this snippet of code, we add ```dyn.cannon.init_angle``` to the session variable list. Then we call [**var_send**](#api-var-send) to tell the variable server to send us the value, and wait for the response by calling @@ -501,6 +556,7 @@ Add this to the bottom of RUN_test/input.py to give it a try. | VS\_SIE\_RESOURCE | 2 | Response to send_sie_resource| | VS\_LIST\_SIZE | 3 | Response to var_send_list_size or send_event_data| | VS\_STDIO | 4 | Values Redirected from stdio if var_set_send_stdio is enabled| +| VS\_SEND\_ONCE | 5 | Response to var\_send\_once| ### The Variable Server API @@ -545,6 +601,13 @@ Resume periodic responses. **var\_send()** - Send response immediately. + +**var\_send\_once( variable_name )** - +Immediately send the value of variable_name + +**var\_send\_once( variable_list, num_variables )** - +Immediately send the value of all variables in the comma separated variable_list, or an error if the number of variables in the list does not match num_variables + **var\_clear()** - Clear the session variable list. diff --git a/include/trick/VariableServer.hh b/include/trick/VariableServer.hh index 9aee8409..cd2cb5ce 100644 --- a/include/trick/VariableServer.hh +++ b/include/trick/VariableServer.hh @@ -305,6 +305,8 @@ int var_add(std::string in_name, std::string units_name) ; int var_remove(std::string in_name) ; int var_units(std::string var_name , std::string units_name) ; int var_exists(std::string in_name) ; +int var_send_once(std::string in_name) ; +int var_send_once(std::string in_name, int numArgs) ; int var_send() ; int var_clear() ; int var_cycle(double in_rate) ; diff --git a/include/trick/VariableServerThread.hh b/include/trick/VariableServerThread.hh index 1b3ce499..cb133c2d 100644 --- a/include/trick/VariableServerThread.hh +++ b/include/trick/VariableServerThread.hh @@ -14,6 +14,8 @@ #include "trick/ThreadBase.hh" #include "trick/VariableServerReference.hh" #include "trick/variable_server_sync_types.h" +#include "trick/variable_server_message_types.h" + namespace Trick { @@ -120,6 +122,16 @@ namespace Trick { */ int var_exists( std::string in_name ) ; + /** + @brief @userdesc Command to immediately send the value of a comma separated list of variables + @par Python Usage: + @code trick.var_send_once("", ) @endcode + @param in_name_list - the variables name to retrieve, comma separated + @param num_vars - number of vars in in_name_list + @return always 0 + */ + int var_send_once(std::string in_name_list, int num_vars); + /** @brief @userdesc Command to instruct the variable server to immediately send back the values of variables that are registered with the var_add command @@ -369,11 +381,22 @@ namespace Trick { */ int copy_sim_data(); + /** + @brief Copy given variable values from Trick memory to each variable's output buffer. + cyclical indicated whether it is a normal cyclical copy or a send_once copy + */ + int copy_sim_data(std::vector given_vars, bool cyclical); + /** @brief Write data in the appropriate format (var_ascii or var_binary) from variable output buffers to socket. */ int write_data(); + /** + @brief Write data from the given var only to the appropriate format (var_ascii or var_binary) from variable output buffers to socket. + */ + int write_data(std::vector var) ; + /** @brief gets the send_stdio flag. */ @@ -426,9 +449,19 @@ namespace Trick { int transmit_file(std::string file_name); /** - @brief Called by write_data to write data to socket in var_binary format. + @brief Called by write_data to write given variables to socket in var_binary format. */ - int write_binary_data( int Start, char *buf1, int PacketNum ); + int write_binary_data( int Start, char *buf1, const std::vector& given_vars, VS_MESSAGE_TYPE message_type); + + /** + @brief Called by write_data to write given variables to socket in var_ascii format. + */ + int write_ascii_data(char * dest_buf, const std::vector& given_vars, VS_MESSAGE_TYPE message_type ); + + /** + @brief Construct a variable reference from the string in_name and handle error checking + */ + VariableReference* create_var_reference(std::string in_name); /** @brief Make a time reference. diff --git a/include/trick/variable_server_message_types.h b/include/trick/variable_server_message_types.h index a7280cbd..b2e317c3 100644 --- a/include/trick/variable_server_message_types.h +++ b/include/trick/variable_server_message_types.h @@ -12,7 +12,8 @@ typedef enum { VS_VAR_EXISTS = 1, VS_SIE_RESOURCE = 2, VS_LIST_SIZE = 3 , - VS_STDIO = 4 + VS_STDIO = 4, + VS_SEND_ONCE = 5 } VS_MESSAGE_TYPE ; #endif diff --git a/test/SIM_test_varserv/S_define b/test/SIM_test_varserv/S_define index fb85f3fc..7fed83f8 100644 --- a/test/SIM_test_varserv/S_define +++ b/test/SIM_test_varserv/S_define @@ -23,11 +23,10 @@ class testSimObject : public Trick::SimObject { ("default_data") vst.default_vars(); ("initialization") vst.init(); ("initialization") vst.testAddRemove(); + ("initialization") vst.testUnits(); ("initialization") vst.testExists(); ("initialization") vst.testPause(); - ("initialization") vst.testOther(); - //(1.0, "scheduled") trick_ret = vst.testing(); - + ("initialization") vst.testSendOnce(); ("shutdown") vst.shutdown(); } }; diff --git a/test/SIM_test_varserv/models/varserv/include/VS.hh b/test/SIM_test_varserv/models/varserv/include/VS.hh index 69d9654e..93eade0c 100644 --- a/test/SIM_test_varserv/models/varserv/include/VS.hh +++ b/test/SIM_test_varserv/models/varserv/include/VS.hh @@ -11,6 +11,7 @@ PROGRAMMERS: ( (Lindsay Landry) (L3) (9-12-2013) ) #ifndef VS_HH #define VS_HH + class VSTest { public: @@ -19,13 +20,13 @@ class VSTest { char got_read[80]; double cycle_rate; - TCDevice bob; + TCDevice comm_device; char a; unsigned char b; short c; unsigned short d; - int e; /* M xy-position */ + int e; /* m xy-position */ unsigned int f; long g; unsigned long h; @@ -34,7 +35,7 @@ class VSTest { long long k; unsigned long long l; bool m; - + int n[5]; VSTest(); ~VSTest(); @@ -51,8 +52,8 @@ class VSTest { int testAddRemove(); int testExists(); int testPause(); - int testOther(); - int testCycle(); + int testSendOnce(); + int testUnits(); private: int get_line(char* thing); diff --git a/test/SIM_test_varserv/models/varserv/src/VS_commands.cpp b/test/SIM_test_varserv/models/varserv/src/VS_commands.cpp index 9267b4cf..bf46ddda 100644 --- a/test/SIM_test_varserv/models/varserv/src/VS_commands.cpp +++ b/test/SIM_test_varserv/models/varserv/src/VS_commands.cpp @@ -41,7 +41,7 @@ int VSTest::vs_write(char* cmd_buffer) { int nbytes; nbytes = strlen(cmd_buffer); - tc_write(&bob, cmd_buffer, nbytes); + tc_write(&comm_device, cmd_buffer, nbytes); return(0); } @@ -65,16 +65,13 @@ int VSTest::vs_read() { break; } - num = tc_pending(&bob); + num = tc_pending(&comm_device); if (num) { - tc_read(&bob, read_buffer, num); + tc_read(&comm_device, read_buffer, num); get_line(read_buffer); break; } } - //std::cout << (cpu_t - cpu_st) << std::endl; - //std::cout << read_buffer << std::endl; - //printLine(); return(0); } diff --git a/test/SIM_test_varserv/models/varserv/src/VS_default_data.cpp b/test/SIM_test_varserv/models/varserv/src/VS_default_data.cpp index 09cd1244..18697d16 100644 --- a/test/SIM_test_varserv/models/varserv/src/VS_default_data.cpp +++ b/test/SIM_test_varserv/models/varserv/src/VS_default_data.cpp @@ -25,4 +25,7 @@ int VSTest::default_vars() { k = -12345678912345;//long long l = 12345678912345; //unsigned long m = false; //boolean + for (int i = 0; i < 5; i++) { + n[i] = i; + } } diff --git a/test/SIM_test_varserv/models/varserv/src/VS_init.cpp b/test/SIM_test_varserv/models/varserv/src/VS_init.cpp index 94439ffb..3d117024 100644 --- a/test/SIM_test_varserv/models/varserv/src/VS_init.cpp +++ b/test/SIM_test_varserv/models/varserv/src/VS_init.cpp @@ -15,21 +15,21 @@ int VSTest::init() { char msg[256]; port_num = var_server_get_port(); - hostest = var_server_get_hostname(); + hostest = "localhost"; - memset(&bob, '\0', sizeof(TCDevice)); + memset(&comm_device, '\0', sizeof(TCDevice)); - bob.hostname = const_cast(hostest); - bob.port = port_num; + comm_device.hostname = const_cast(hostest); + comm_device.port = port_num; //std::cout << bob.hostname << bob.port << std::endl; - bob.disable_handshaking = TC_COMM_TRUE; - bob.disabled = TC_COMM_FALSE; + comm_device.disable_handshaking = TC_COMM_TRUE; + comm_device.disabled = TC_COMM_FALSE; - tc_connect(&bob); + tc_connect(&comm_device); - if ( tc_isValid (&bob) ) { + if ( tc_isValid (&comm_device) ) { printf ("connection is valid\n"); } else { printf ("connection is NOT valid\n"); diff --git a/test/SIM_test_varserv/models/varserv/src/VS_shutdown.cpp b/test/SIM_test_varserv/models/varserv/src/VS_shutdown.cpp index f340c282..c2018438 100644 --- a/test/SIM_test_varserv/models/varserv/src/VS_shutdown.cpp +++ b/test/SIM_test_varserv/models/varserv/src/VS_shutdown.cpp @@ -11,7 +11,7 @@ PROGRAMMERS: ( (Lindsay Landry) (L3) (9-12-2013) ) int VSTest::shutdown() { - tc_disconnect(&bob); + tc_disconnect(&comm_device); return(0); } diff --git a/test/SIM_test_varserv/models/varserv/src/VS_tests.cpp b/test/SIM_test_varserv/models/varserv/src/VS_tests.cpp index 9dffc393..69ce5bfd 100644 --- a/test/SIM_test_varserv/models/varserv/src/VS_tests.cpp +++ b/test/SIM_test_varserv/models/varserv/src/VS_tests.cpp @@ -33,50 +33,38 @@ int VSTest::strcmp_IgnoringWhiteSpace(const char* s1, const char* s2) { } } - -// Expect cycle time of 0.01 s -int VSTest::testCycle() { +int VSTest::testUnits() { char msg[256]; char suite[] = "VariableServerTest"; -/* - int num, num2; - double cpu_t, cpu_st; - struct rusage cpu_usg; + int result; - sprintf(msg,"trick.var_add(\"vsx.vst.l\")\n"); + // INVALID UNIT CHANGE + sprintf(msg,"trick.var_add(\"vsx.vst.c\")\ntrick.var_units(\"vsx.vst.c\",\"g\")\n"); vs_write(msg); + std::cerr << "The purpose of this test is to cause an error. Error messages are expected." << std::endl; + vs_read(); + result = strcmp_IgnoringWhiteSpace("0 -1234", got_read); + TRICK_EXPECT_EQ(result, 0, suite, "VariableInvalidUnits") - // currently bad programming, could get stuck in this loop - while (true) { - getrusage(RUSAGE_SELF, &cpu_usg); - cpu_st = ((double) cpu_usg.ru_utime.tv_sec) + ((double) cpu_usg.ru_utime.tv_usec/1000000.0); + // ADD UNITS + sprintf(msg,"trick.var_add(\"vsx.vst.e\",\"m\")\n"); + vs_write(msg); + vs_read(); + result = strcmp_IgnoringWhiteSpace("0 -1234 -123456 {m}", got_read); + TRICK_EXPECT_EQ(result, 0, suite, "VariableAddUnits") - num = tc_pending(&bob); - //first read. - if (num) { - break; - } - } - - while (true) { - getrusage(RUSAGE_SELF, &cpu_usg); - cpu_t = ((double) cpu_usg.ru_utime.tv_sec) + ((double) cpu_usg.ru_utime.tv_usec/1000000.0); - - num2 = tc_pending(&bob); - - if (num2 == 2*num) { - break; - } - } - - //std::cout << cpu_t - cpu_st << std::endl; + // CHANGE UNITS + sprintf(msg,"trick.var_units(\"vsx.vst.e\",\"ft\")\n"); + vs_write(msg); + vs_read(); + result = strcmp_IgnoringWhiteSpace("0 -1234 -405039 {ft}", got_read); + TRICK_EXPECT_EQ(result, 0, suite, "VariableChangeUnits") + // CLEAR VARIABLE SERVER sprintf(msg,"trick.var_clear()\n"); vs_write(msg); -*/ } - int VSTest::testAddRemove() { char msg[256]; char suite[] = "VariableServerTest"; @@ -89,37 +77,10 @@ int VSTest::testAddRemove() { std::cout << got_read << std::endl; result = strcmp_IgnoringWhiteSpace("0 -1234", got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableAddNoUnits") - trick_test_add_parent( suite , "VariableAddNoUnits" , "3700107028"); vs_read(); result = strcmp_IgnoringWhiteSpace("0 -1234", got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableAddCyclic") - trick_test_add_parent( suite , "VariableAddCyclic" , "3700107028"); - - // INVALID UNIT CHANGE - sprintf(msg,"trick.var_units(\"vsx.vst.c\",\"g\")\n"); - vs_write(msg); - std::cerr << "The purpose of this test is to cause an error. Error messages are expected." << std::endl; - vs_read(); - result = strcmp_IgnoringWhiteSpace("0 -1234", got_read); - TRICK_EXPECT_EQ(result, 0, suite, "VariableInvalidUnits") - trick_test_add_parent( suite , "VariableInvalidUnits" , ""); - - // ADD UNITS - sprintf(msg,"trick.var_add(\"vsx.vst.e\",\"M\")\n"); - vs_write(msg); - vs_read(); - result = strcmp_IgnoringWhiteSpace("0 -1234 -123456 {M}", got_read); - TRICK_EXPECT_EQ(result, 0, suite, "VariableAddUnits") - trick_test_add_parent( suite , "VariableAddUnits" , "3700107028"); - - // CHANGE UNITS - sprintf(msg,"trick.var_units(\"vsx.vst.e\",\"ft\")\n"); - vs_write(msg); - vs_read(); - result = strcmp_IgnoringWhiteSpace("0 -1234 -405039 {ft}", got_read); - TRICK_EXPECT_EQ(result, 0, suite, "VariableChangeUnits") - trick_test_add_parent( suite , "VariableChangeUnits" , "2710769246"); // REMOVE SINGLE VARIABLE sprintf(msg,"trick.var_remove(\"vsx.vst.e\")\n"); @@ -127,18 +88,45 @@ int VSTest::testAddRemove() { vs_read(); result = strcmp_IgnoringWhiteSpace("0 -1234", got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableRemove") - trick_test_add_parent( suite , "VariableRemove" , "806750761"); // CLEAR VARIABLE SERVER sprintf(msg,"trick.var_clear()\n"); vs_write(msg); vs_read(); TRICK_EXPECT_EQ(strcmp(got_read, ""), 0, suite, "VariableClear") - trick_test_add_parent( suite , "VariableClear" , "835578702"); return(0); } +int VSTest::testSendOnce() { + char msg[256]; + char suite[] = "VariableServerTest"; + int result; + + // SEND ONCE + sprintf(msg,"trick.var_send_once(\"vsx.vst.e\")\n"); + vs_write(msg); + vs_read(); + result = strcmp_IgnoringWhiteSpace("5 -123456", got_read); + TRICK_EXPECT_EQ(result, 0, suite, "VariableSendOnce") + trick_test_add_parent( suite , "VariableSendOnce" , ""); + + // SEND ONCE LIST + sprintf(msg,"trick.var_send_once(\"vsx.vst.n[0], vsx.vst.n[1], vsx.vst.n[2],\", 3)\n"); + vs_write(msg); + vs_read(); + result = strcmp_IgnoringWhiteSpace("5 0 1 2", got_read); + TRICK_EXPECT_EQ(result, 0, suite, "VariableSendOnceList") + + // SEND ONCE LIST - WRONG INDICES + sprintf(msg,"trick.var_send_once(\"vsx.vst.n[0], vsx.vst.n[1], vsx.vst.n[2],\", 4)\n"); + vs_write(msg); + std::cerr << "The purpose of this test is to cause an error. Error messages are expected." << std::endl; + vs_read(); + result = strcmp_IgnoringWhiteSpace("", got_read); + TRICK_EXPECT_EQ(result, 0, suite, "VariableSendOnceListError") +} + int VSTest::testExists() { char msg[256]; char suite[] = "VariableServerTest"; @@ -156,9 +144,9 @@ int VSTest::testExists() { sprintf(msg,"trick.var_exists(\"vsx.vst.z\")\n"); vs_write(msg); vs_read(); + std::cout << "Check variable doesn't exist: " << got_read << std::endl; result = strcmp_IgnoringWhiteSpace("1 0",got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableNotExists") - trick_test_add_parent( suite , "VariableNotExists" , "3587464751"); sprintf(msg,"trick.var_clear()\n"); vs_write(msg); @@ -214,16 +202,3 @@ int VSTest::testPause() { return(0); } - -int VSTest::testOther() { - char msg[256]; - char suite[] = "VariableServerTest"; - - sprintf(msg,"trick.var_binary()\n"); - vs_write(msg); - sprintf(msg,"trick.var_add(\"vsx.vst.l\")\n"); - vs_write(msg); - vs_read(); - - return(0); -} diff --git a/test/SIM_test_varserv/models/varserv/src/VS_unittests.cpp b/test/SIM_test_varserv/models/varserv/src/VS_unittests.cpp deleted file mode 100644 index d3ab5cc5..00000000 --- a/test/SIM_test_varserv/models/varserv/src/VS_unittests.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/******************************TRICK HEADER************************************* -PURPOSE: ( Test variable server ) -REFERENCE: ( None ) -ASSUMPTIONS AND LIMITATIONS: ( None ) -CLASS: ( scheduled ) -LIBRARY DEPENDENCY: ( VS.o ) -PROGRAMMERS: ( (Lindsay Landry) (L3) (9-12-2013) ) -*******************************************************************************/ -#include "../include/VS.hh" -#include "sim_services/VariableServer/include/VariableServer.hh" -#include "sim_services/UnitTest/include/trick_tests.h" - -int VSTest::test() { - - var_ascii(); - - - - return(0); -} - diff --git a/test/makefile b/test/makefile index 61b0b2ca..1bb0136d 100644 --- a/test/makefile +++ b/test/makefile @@ -36,7 +36,8 @@ SIMS_TO_COMPILE_AND_RUN = \ SIM_test_sched \ SIM_test_templates \ SIM_threads \ - SIM_trickified + SIM_trickified \ + SIM_test_varserv # Sims with problems, no purpose, or maybe shouldn't be a test # SIM_leaks ( should be deleted ) diff --git a/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp b/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp index 003bc9ad..a444675c 100644 --- a/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp +++ b/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp @@ -1,5 +1,4 @@ #include -// #include #include #include #include @@ -13,6 +12,7 @@ #include "Socket.hh" +#define STR_MAX 1024 std::vector ball_colors = {Eigen::Vector3d(0.0,0.4,0.0), //green Eigen::Vector3d(1.0,1.0,0.0), //yellow @@ -153,7 +153,7 @@ class Circle : public Polygon { } bool isValid() const { - return points.size() == vertexMax; + return points.size() == 1 && radius >= 0; } RenderedShape *render() const { @@ -298,14 +298,11 @@ class Table { // Need to have an agreed upon way to send over variables int addShape(std::vector shapeData, Eigen::Vector3d color, bool isStatic, PolygonType type, double layer) { - // std::cout << "In AddShape" << std::endl; Polygon *shape; switch (type) { - case GENERIC: { // Number of points is just data / 2 i guess - // std::cout << "Creating generic polygon with " << shapeData.size()/2 << " points" << std::endl; Polygon *newPolygon = new Polygon(shapeData.size()/2, layer); for (int i = 0; i < shapeData.size(); i+=2) { double x = shapeData[i]; @@ -316,7 +313,6 @@ class Table { break; } case CIRCLE: { - // std::cout << "Adding circle" << std::endl; if (shapeData.size() != 3) { std::cout << "Bad shapedata size for circle" << std::endl; return -1; @@ -345,7 +341,6 @@ class Table { break; } case RECTANGLE: { - // std::cout << "In rectangle" << std::endl; Rectangle *newRectangle = new Rectangle(layer); if (shapeData.size() != 4) { std::cout << "Bad shapedata size for rectangle" << std::endl; @@ -481,14 +476,12 @@ class Table { private: std::vector staticShapes; + std::vector movingShapes; std::vector staticRenderedShapes; std::vector movingRenderedShapes; int numStaticVertices; int numStaticFaces; bool staticRendered = false; - - std::vector movingShapes; - }; void printUsage() { @@ -505,20 +498,76 @@ std::vector split (std::string& str, const char delim) { return ret; } -std::vector parseTrickResponse(std::vector list) { - std::vector ret; - for (int i = 1; i < list.size(); i++) { - ret.push_back(stod(list[i])); - } - return ret; +double totalTime = 0; +std::vector requestTime; + +template +T stringConvert (const std::string& str) +{ + std::istringstream ss(str); + T num; + ss >> num; + return num; } -std::vector parseTrickResponseInt(std::vector list) { - std::vector ret; - for (int i = 1; i < list.size(); i++) { - ret.push_back(stoi(list[i])); +template +std::vector trickResponseConvert (std::string& response) +{ + auto responseSplit = split(response, '\t'); + std::vector result; + // ignore index 0 + for (int i = 1; i < responseSplit.size(); i++) { + result.push_back(stringConvert(responseSplit[i])); + } + return result; +} + +template +T getVar(Socket& socket, std::string varName) { + std::string requestString = "trick.var_send_once(\"" + varName + "\")\n"; + std::string reply; + + socket << requestString; + socket >> reply; + + return stringConvert(split(reply, '\t')[1]); +} + +// Wrapper for sprintf use case bc im tired of dealing with std::string vs char* stuff +std::string format(const std::string& formatString, int num) { + char *buf = (char *)malloc(formatString.size() + 10); + sprintf(buf, formatString.c_str(), num); + + return std::string(buf); +} + +// Assumes the varName string has a %d in it +template +std::vector getVarList(Socket& socket, std::string varName, int num) { + std::string totalRequest = ""; + std::vector result; + totalRequest += format(varName, 0); + for (int i = 1; i < num; i++) { + totalRequest += ", "; + totalRequest += format(varName, i); } - return ret; + + std::string requestString = "trick.var_send_once(\"" + totalRequest + "\", " + std::to_string(num) + ")\n"; + + std::string reply; + socket << requestString; + socket >> reply; + return trickResponseConvert(reply); +} + +template +std::vector fold (const std::vector a, const std::vector b) { + std::vector result; + for (int i = 0; i < a.size() && i < b.size(); i++) { + result.emplace_back (a[i]); + result.emplace_back (b[i]); + } + return result; } int main(int argc, char *argv[]) @@ -543,52 +592,19 @@ int main(int argc, char *argv[]) std::string reply; socket << "trick.var_set_client_tag(\"PoolTableDisplay\") \n"; - socket << "trick.var_add(\"dyn.table.numBalls\")\ntrick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - auto parsed = split(reply, '\t'); - int numBalls = stoi(parsed[1]); - std::cout << "Number of balls received: " << numBalls << std::endl; - - std::string radiusRequest = ""; - char* templateString = "trick.var_add(\"dyn.table.balls[%d][0].radius\")\n"; - for (int i = 0; i < numBalls; i++) { - char buf[64]; - sprintf(buf, templateString, i); - radiusRequest += std::string(buf); - } - - socket << radiusRequest; - socket << "trick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - - auto radii = parseTrickResponse(split(reply, '\t')); + int numBalls = getVar(socket, "dyn.table.numBalls"); + // int numBalls = 16; + std::vector radii = getVarList(socket, "dyn.table.balls[%d][0].radius", numBalls); + int numTablePoints = getVar(socket, "dyn.table.numTablePoints"); + enum PolygonType tableShape = PolygonType(getVar(socket, "dyn.table.tableShapeType")); + std::vector table_x = getVarList(socket, "dyn.table.tableShape[%d][0]._x", numTablePoints); + std::vector table_y = getVarList(socket, "dyn.table.tableShape[%d][0]._y", numTablePoints); + std::vector tablePoints = fold(table_x, table_y); Table table; - - socket << "trick.var_add(\"dyn.table.numTablePoints\") \ntrick.var_add(\"dyn.table.tableShapeType\")\n \ntrick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - - std::vector tableData = parseTrickResponse(split(reply, '\t')); - int numTablePoints = tableData[0]; - enum PolygonType tableShape = PolygonType((int)tableData[1]); - - std::string pointRequest = ""; - for (int i = 0; i < numTablePoints; i++) { - templateString = "trick.var_add(\"dyn.table.tableShape[%d][0]._x\")\ntrick.var_add(\"dyn.table.tableShape[%d][0]._y\")\n"; - char buf[256]; - sprintf(buf, templateString, i, i); - pointRequest += std::string(buf); - } - - socket << pointRequest; - socket << "trick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - - std::vector tablePoints = parseTrickResponse(split(reply, '\t')); table.addShape(tablePoints, Eigen::Vector3d(0.2, 0.6, 0.2), true, tableShape, layer_TABLE); - // Make the rail - translate each point on the table out from center by railWidth std::vector railData; @@ -601,12 +617,13 @@ int main(int argc, char *argv[]) railData.push_back(tablePoints[3] + railWidth); } else { // If it's just a shape then rail is bigger shape - // Works with simple convex polygons + // Works with simple convex polygons centered at 0,0 + // Could probably calculate center and make it more general but i dont want to double railWidth = 0.15; for (int i = 0; i < tablePoints.size(); i+=2) { Eigen::Vector2d point(tablePoints[i], tablePoints[i+1]); Eigen::Vector2d railPoint(tablePoints[i], tablePoints[i+1]); - point *= railWidth; + point = point.normalized() * railWidth; railPoint = railPoint + point; railData.push_back(railPoint(0)); railData.push_back(railPoint(1)); @@ -615,82 +632,41 @@ int main(int argc, char *argv[]) table.addShape(railData, Eigen::Vector3d(.3, .2, .15), true, tableShape, layer_RAIL); - socket << "trick.var_add(\"dyn.table.numPockets\")\n \ntrick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - - int numPockets = stoi(split(reply, '\t')[1]); + // pockets + int numPockets = getVar(socket, "dyn.table.numPockets"); + + std::vector pocket_x = getVarList(socket, "dyn.table.pockets[%d][0].pos._x", numPockets); + std::vector pocket_y = getVarList(socket, "dyn.table.pockets[%d][0].pos._y", numPockets); + std::vector pocket_r = getVarList(socket, "dyn.table.pockets[%d][0].radius", numPockets); for (int i = 0; i < numPockets; i++) { - templateString = "trick.var_add(\"dyn.table.pockets[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.pockets[%d][0].pos._y\")\n\ntrick.var_add(\"dyn.table.pockets[%d][0].radius\")\n"; - char buf[256]; - sprintf(buf, templateString, i, i, i); - std::string pocketRequest = std::string(buf); - - socket << pocketRequest; - socket << "trick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - std::vector pocketData = parseTrickResponse(split(reply, '\t')); - table.addShape(pocketData, Eigen::Vector3d(0.0, 0.0, 0.0), true, CIRCLE, layer_POCKET); + table.addShape(std::vector({pocket_x[i],pocket_y[i],pocket_r[i]}), Eigen::Vector3d(0.0, 0.0, 0.0), true, CIRCLE, layer_POCKET); } - // Bumpers - socket << "trick.var_add(\"dyn.table.numBumpers\")\n \ntrick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - - int numBumpers = stoi(split(reply, '\t')[1]); - - std::cout << "Num bumpers: " << numBumpers << std::endl; - + // bumpers + int numBumpers = getVar(socket, "dyn.table.numBumpers"); for (int i = 0; i < numBumpers; i++) { - std::string bumperRequests = ""; - - templateString = "trick.var_add(\"dyn.table.bumpers[%d][0].numPoints\")\ntrick.var_add(\"dyn.table.bumpers[%d][0].shapeType\") \n"; - char buf[256]; - sprintf(buf, templateString, i, i); - bumperRequests += std::string(buf); - socket << bumperRequests; - socket << "trick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - std::vector bumperData = parseTrickResponseInt(split(reply, '\t')); - int bumperPoints = bumperData[0]; - enum PolygonType bumperShape = PolygonType((int)bumperData[1]); - - templateString = "trick.var_add(\"dyn.table.bumpers[%d][0].renderedShape[%d][0]._x\")\ntrick.var_add(\"dyn.table.bumpers[%d][0].renderedShape[%d][0]._y\")\n"; - bumperRequests = ""; - for (int j = 0; j < bumperPoints; j++) { - char buf[256]; - sprintf(buf, templateString, i, j, i, j); - bumperRequests += std::string(buf); - } - socket << bumperRequests; - socket << "trick.var_send() \ntrick.var_clear() \n"; - socket >> reply; + int numPoints = getVar(socket,format("dyn.table.bumpers[%d][0].numPoints", i)); + PolygonType bumperShapeType = PolygonType(getVar(socket,format("dyn.table.bumpers[%d][0].shapeType", i))); + + std::string request_bumper = format("dyn.table.bumpers[%d][0]", i); + + std::string request_x = request_bumper + ".renderedShape[%d][0]._x"; + std::string request_y = request_bumper + ".renderedShape[%d][0]._y"; + + std::vector list_x = getVarList(socket, request_x, numPoints); + std::vector list_y = getVarList(socket, request_y, numPoints); + std::vector bumperBorder = fold(list_x, list_y); + table.addShape(bumperBorder, Eigen::Vector3d(0.2,0.4,0.2), true, bumperShapeType, layer_BUMPER); - std::vector bumperBorder = parseTrickResponse(split(reply, '\t')); - table.addShape(bumperBorder, Eigen::Vector3d(0.2,0.4,0.2), true, bumperShape, layer_BUMPER); } - - // socket << "trick.var_pause()\n"; // Request all of the ball positions - std::string positionRequest = ""; - templateString = "trick.var_add(\"dyn.table.balls[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.balls[%d][0].pos._y\")\n"; + + std::vector ball_x = getVarList(socket, "dyn.table.balls[%d][0].pos._x", numBalls); + std::vector ball_y = getVarList(socket, "dyn.table.balls[%d][0].pos._y", numBalls); for (int i = 0; i < numBalls; i++) { - char buf[128]; - sprintf(buf, templateString, i, i); - positionRequest += std::string(buf); - } - - socket << positionRequest; - socket << "trick.var_send() \ntrick.var_clear() \n"; - socket >> reply; - - auto positions = parseTrickResponse(split(reply, '\t')); - - - for (int i = 0; i < numBalls; i++) { - std::vector circleData = {positions[(i*2)], positions[(i*2 + 1)], radii[i]}; Eigen::Vector3d circleColor = ball_colors[i % ball_colors.size()]; - table.addShape(circleData, circleColor, false, CIRCLE, layer_BALL); + table.addShape(std::vector({ball_x[i], ball_y[i], radii[i]}), circleColor, false, CIRCLE, layer_BALL); } bool mousePressed = false; @@ -740,7 +716,7 @@ int main(int argc, char *argv[]) view->callback_pre_draw = [&](igl::opengl::glfw::Viewer& viewer) -> bool { // Look for new data and redraw socket >> reply; - std::vector replyData = parseTrickResponse(split(reply, '\t')); + std::vector replyData = trickResponseConvert(reply); if (replyData.size() <= 1) { return false; @@ -824,8 +800,8 @@ int main(int argc, char *argv[]) // Need to get nBalls and positions every time socket << "trick.var_pause() \n"; socket << "trick.var_add(\"dyn.table.numBalls\")\n"; - positionRequest = ""; - templateString = "trick.var_add(\"dyn.table.balls[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.balls[%d][0].pos._y\")\ntrick.var_add(\"dyn.table.balls[%d][0].inPlay\")\n"; + std::string positionRequest = ""; + char * templateString = "trick.var_add(\"dyn.table.balls[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.balls[%d][0].pos._y\")\ntrick.var_add(\"dyn.table.balls[%d][0].inPlay\")\n"; for (int i = 0; i < numBalls; i++) { char buf[128]; sprintf(buf, templateString, i, i, i); diff --git a/trick_source/sim_services/DataRecord/DataRecordGroup.cpp b/trick_source/sim_services/DataRecord/DataRecordGroup.cpp index 0055bc93..8ccabf6b 100644 --- a/trick_source/sim_services/DataRecord/DataRecordGroup.cpp +++ b/trick_source/sim_services/DataRecord/DataRecordGroup.cpp @@ -579,7 +579,6 @@ int Trick::DataRecordGroup::data_record(double in_time) { bool change_detected = false ; //TODO: does not handle bitfields correctly! - if ( record == true ) { if ( freq != DR_Always ) { for (jj = 0; jj < change_buffer.size() ; jj++) { @@ -691,6 +690,7 @@ int Trick::DataRecordGroup::write_data(bool must_write) { // buffer_mutex is used in this one place to prevent forced calls of write_data // to not overwrite data being written by the asynchronous thread. pthread_mutex_lock(&buffer_mutex) ; + local_buffer_num = buffer_num ; if ( (local_buffer_num - writer_num) > max_num ) { num_to_write = max_num ; diff --git a/trick_source/sim_services/UnitTest/UnitTest.cpp b/trick_source/sim_services/UnitTest/UnitTest.cpp index 07137f80..0a4961f8 100644 --- a/trick_source/sim_services/UnitTest/UnitTest.cpp +++ b/trick_source/sim_services/UnitTest/UnitTest.cpp @@ -56,7 +56,7 @@ void Trick::TestSuite::delete_test_results() { Trick::UnitTest::UnitTest() { the_unit_test_output = this ; enabled = false ; - exit_code_enabled = false ; + exit_code_enabled = true ; file_name = std::string("test_details.xml") ; name = std::string("AllTests") ; } diff --git a/trick_source/sim_services/VariableServer/VariableServerThread_commands.cpp b/trick_source/sim_services/VariableServer/VariableServerThread_commands.cpp index 3d1ebd2c..87585492 100644 --- a/trick_source/sim_services/VariableServer/VariableServerThread_commands.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerThread_commands.cpp @@ -46,17 +46,18 @@ REF2* Trick::VariableServerThread::make_error_ref(std::string in_name) { return new_ref; } -int Trick::VariableServerThread::var_add(std::string in_name) { - - VariableReference * new_var ; +Trick::VariableReference* Trick::VariableServerThread::create_var_reference(std::string in_name) { REF2 * new_ref ; + // Time var is treated specially if ( in_name.compare("time") == 0 ) { new_ref = make_time_ref() ; } else { + // otherwise ref_attributes takes care of the hard part new_ref = ref_attributes(in_name.c_str()) ; } + // Check error cases if ( new_ref == NULL ) { message_publish(MSG_ERROR, "Variable Server could not find variable %s.\n", in_name.c_str()); new_ref = make_error_ref(in_name); @@ -81,7 +82,12 @@ int Trick::VariableServerThread::var_add(std::string in_name) { new_ref = make_error_ref(in_name); } - new_var = new VariableReference(new_ref) ; + // Actually constructs the variable reference in the success case + return new VariableReference(new_ref) ; +} + +int Trick::VariableServerThread::var_add(std::string in_name) { + VariableReference * new_var = create_var_reference(in_name); vars.push_back(new_var) ; return(0) ; @@ -93,6 +99,36 @@ int Trick::VariableServerThread::var_add(std::string var_name, std::string units return(0) ; } +// Helper function for var_send_once +std::vector split (const std::string& str, const char delim) { + std::stringstream ss(str); + std::string s; + std::vector ret; + while (std::getline(ss, s, delim)) { + ret.push_back(s); + } + return ret; +} + +int Trick::VariableServerThread::var_send_once(std::string in_name, int num_vars) { + std::vector var_names = split(in_name, ','); + + if (var_names.size() != num_vars) { + message_publish(MSG_ERROR, "Number of variables sent to var_send_once (%d) does not match num_vars (%d).\n", var_names.size(), num_vars); + return -1; + } + + std::vector given_vars; + for (auto& varName : var_names) { + given_vars.push_back(create_var_reference(varName)); + } + copy_sim_data(given_vars, false); + write_data(given_vars); + + return(0) ; +} + + int Trick::VariableServerThread::var_remove(std::string in_name) { unsigned int ii ; @@ -218,6 +254,7 @@ int Trick::VariableServerThread::var_clear() { return(0) ; } + int Trick::VariableServerThread::var_send() { copy_sim_data(); write_data(); diff --git a/trick_source/sim_services/VariableServer/VariableServerThread_copy_sim_data.cpp b/trick_source/sim_services/VariableServer/VariableServerThread_copy_sim_data.cpp index 26d77f2d..611825ea 100644 --- a/trick_source/sim_services/VariableServer/VariableServerThread_copy_sim_data.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerThread_copy_sim_data.cpp @@ -7,23 +7,24 @@ #include "trick/exec_proto.h" int Trick::VariableServerThread::copy_sim_data() { + return copy_sim_data(vars, true); +} - unsigned int ii ; - VariableReference * curr_var ; +int Trick::VariableServerThread::copy_sim_data(std::vector given_vars, bool cyclical) { - if ( vars.size() == 0 ) { - return 0 ; + if (given_vars.size() == 0) { + return 0; } if ( pthread_mutex_trylock(©_mutex) == 0 ) { // Get the simulation time we start this copy - time = (double)exec_get_time_tics() / exec_get_time_tic_value() ; + if (cyclical) { + time = (double)exec_get_time_tics() / exec_get_time_tic_value() ; + } - for ( ii = 0 ; ii < vars.size() ; ii++ ) { - curr_var = vars[ii] ; + for (auto curr_var : given_vars ) { - // if this variable is unresolved, try to resolve it if (curr_var->ref->address == &bad_ref_int) { REF2 *new_ref = ref_attributes(curr_var->ref->reference); if (new_ref != NULL) { @@ -45,9 +46,9 @@ int Trick::VariableServerThread::copy_sim_data() { // any of the memory blocks it knows of. Don't do this if we have a std::string or // wstring type, or we already are pointing to a bad ref. if ( (curr_var->string_type != TRICK_STRING) and - (curr_var->string_type != TRICK_WSTRING) and - (curr_var->ref->address != &bad_ref_int) and - (get_alloc_info_of(curr_var->address) == NULL) ) { + (curr_var->string_type != TRICK_WSTRING) and + (curr_var->ref->address != &bad_ref_int) and + (get_alloc_info_of(curr_var->address) == NULL) ) { std::string save_name(curr_var->ref->reference) ; free(curr_var->ref) ; curr_var->ref = make_error_ref(save_name) ; @@ -92,14 +93,13 @@ int Trick::VariableServerThread::copy_sim_data() { } // Indicate that sim data has been written and is now ready in the buffer_in's of the vars variable list. - var_data_staged = true; - packets_copied++ ; + if (cyclical) { + var_data_staged = true; + packets_copied++ ; + } pthread_mutex_unlock(©_mutex) ; } - - return (0) ; - + return 0; } - diff --git a/trick_source/sim_services/VariableServer/VariableServerThread_loop.cpp b/trick_source/sim_services/VariableServer/VariableServerThread_loop.cpp index 24c82b52..a5190eed 100644 --- a/trick_source/sim_services/VariableServer/VariableServerThread_loop.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerThread_loop.cpp @@ -179,8 +179,9 @@ void * Trick::VariableServerThread::thread_body() { } catch (...) { #ifdef __linux #ifdef __GNUC__ -#if __GNUC__ == 4 && __GNUC_MINOR__ == 1 - //for gcc 4.1.2 or whatever glib version in RHEL 5 that does not work with the abi::__forced_unwind +#if (__GNUC__ == 4 && __GNUC_MINOR__ == 1) || __GNUC__ == 12 + // for gcc 4.1.2 or whatever glib version in RHEL 5 that does not work with the abi::__forced_unwind + // Also seems to have a problem with gcc 12 throw; #else message_publish(MSG_ERROR, "\nVARIABLE SERVER caught unknown exception\n" ) ; diff --git a/trick_source/sim_services/VariableServer/VariableServerThread_write_data.cpp b/trick_source/sim_services/VariableServer/VariableServerThread_write_data.cpp index 57717271..59a064ec 100644 --- a/trick_source/sim_services/VariableServer/VariableServerThread_write_data.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerThread_write_data.cpp @@ -6,7 +6,6 @@ PROGRAMMERS: (((Alex Lin) (NASA) (8/06) (--))) #include #include #include "trick/VariableServer.hh" -#include "trick/variable_server_message_types.h" #include "trick/parameter_types.h" #include "trick/bitfield_proto.h" #include "trick/trick_byteswap.h" @@ -21,7 +20,9 @@ extern "C" { #define MAX_MSG_LEN 8192 -int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, int PacketNum ) { + +int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, const std::vector& given_vars, VS_MESSAGE_TYPE message_type) { + int vars = 0; int i; int ret ; int HeaderSize, MessageSize; @@ -32,27 +33,28 @@ int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, int P char * address = 0 ; char* param_name; - //remove warning for unused PacketNum... to be deleted. - (void)PacketNum ; - /* start the offset 4 bytes into the message, we'll subtract the sizeof offset at the end */ offset = sizeof(msg_type) + sizeof(offset) ; - /* if we are here the msg_type is good, so send a 0, swapped or not 0 is still 0 */ - msg_type = VS_VAR_LIST ; + if (byteswap) { + /* Swap message type bytes */ + msg_type = trick_byteswap_int((int)message_type) ; + } else { + msg_type = message_type; + } memcpy(buf1, &msg_type , sizeof(msg_type)) ; HeaderSize = sizeof(msg_type); offset += sizeof(unsigned int) ; HeaderSize += sizeof(unsigned int); - for (i = Start; i < (int)vars.size() ; i++) { + for (i = Start; i < (int)given_vars.size() ; i++) { // data to send was copied to buffer in copy_sim_data - address = (char *)vars[i]->buffer_out; - size = vars[i]->size ; + address = (char *)given_vars[i]->buffer_out; + size = given_vars[i]->size ; - param_name = vars[i]->ref->reference; + param_name = given_vars[i]->ref->reference; len = strlen(param_name) ; // when var_binary_nonames, do not put the variable names into the message to be sent if (binary_data_nonames) { @@ -66,7 +68,7 @@ int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, int P message_publish(MSG_WARNING, "%p Variable Server buffer[%d] too small (need %d) for symbol %s, SKIPPING IT.\n", &connection, MAX_MSG_LEN, (int)(HeaderSize + MessageSize), - vars[i]->ref->reference ); + given_vars[i]->ref->reference ); continue; } @@ -81,7 +83,7 @@ int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, int P offset += len ; } - swap_int = trick_byteswap_int(vars[i]->ref->attr->type) ; + swap_int = trick_byteswap_int(given_vars[i]->ref->attr->type) ; memcpy(&buf1[offset] , &swap_int , sizeof(int)) ; offset += sizeof(int) ; @@ -90,7 +92,7 @@ int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, int P offset += sizeof(size) ; /* TODO: There is a bug here, this call will want to swap the entire buffer, we may not have the whole buffer */ - trick_bswap_buffer(&buf1[offset], address, vars[i]->ref->attr, 1); + trick_bswap_buffer(&buf1[offset], address, given_vars[i]->ref->attr, 1); offset += size ; } else { @@ -105,21 +107,21 @@ int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, int P offset += len ; } - memcpy(&buf1[offset] , &vars[i]->ref->attr->type , sizeof(int)) ; + memcpy(&buf1[offset] , &given_vars[i]->ref->attr->type , sizeof(int)) ; offset += sizeof(int) ; memcpy(&buf1[offset] , &size , sizeof(size)) ; offset += sizeof(size) ; - switch ( vars[i]->ref->attr->type ) { + switch ( given_vars[i]->ref->attr->type ) { case TRICK_BITFIELD: - temp_i = GET_BITFIELD(address , vars[i]->ref->attr->size , - vars[i]->ref->attr->index[0].start, vars[i]->ref->attr->index[0].size) ; + temp_i = GET_BITFIELD(address , given_vars[i]->ref->attr->size , + given_vars[i]->ref->attr->index[0].start, given_vars[i]->ref->attr->index[0].size) ; memcpy(&buf1[offset] , &temp_i , (size_t)size) ; break ; case TRICK_UNSIGNED_BITFIELD: - temp_ui = GET_UNSIGNED_BITFIELD(address , vars[i]->ref->attr->size , - vars[i]->ref->attr->index[0].start, vars[i]->ref->attr->index[0].size) ; + temp_ui = GET_UNSIGNED_BITFIELD(address , given_vars[i]->ref->attr->size , + given_vars[i]->ref->attr->index[0].start, given_vars[i]->ref->attr->index[0].size) ; memcpy(&buf1[offset] , &temp_ui , (size_t)size) ; break ; case TRICK_NUMBER_OF_TYPES: @@ -176,6 +178,65 @@ int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, int P return i; } +int Trick::VariableServerThread::write_ascii_data(char * dest_buf, const std::vector& given_vars, VS_MESSAGE_TYPE message_type ) { + + sprintf(dest_buf, "%d\t", message_type) ; + + for (int i = 0; i < given_vars.size(); i++) { + char curr_buf[MAX_MSG_LEN]; + int ret = vs_format_ascii( given_vars[i] , curr_buf); + + if (ret < 0) { + message_publish(MSG_WARNING, "%p Variable Server string buffer[%d] too small for symbol %s, TRUNCATED IT.\n", + &connection, MAX_MSG_LEN, given_vars[i]->ref->reference ); + } + + /* make sure this message will fit in a packet by itself */ + if( strlen( curr_buf ) + 2 > MAX_MSG_LEN ) { + message_publish(MSG_WARNING, "%p Variable Server buffer[%d] too small for symbol %s, TRUNCATED IT.\n", + &connection, MAX_MSG_LEN, given_vars[i]->ref->reference ); + curr_buf[MAX_MSG_LEN - 1] = '\0'; + } + + int len = strlen(dest_buf) ; + + /* make sure there is space for the next tab or next newline and null */ + if( len + strlen( curr_buf ) + 2 > MAX_MSG_LEN ) { + // If there isn't, send incomplete message + if (debug >= 2) { + message_publish(MSG_DEBUG, "%p tag=<%s> var_server sending %d ascii bytes:\n%s\n", + &connection, connection.client_tag, (int)strlen(dest_buf), dest_buf) ; + } + + ret = tc_write(&connection, (char *) dest_buf, len); + if ( ret != len ) { + return(-1) ; + } + dest_buf[0] = '\0'; + } + + strcat(dest_buf, curr_buf); + strcat(dest_buf, "\t"); + } + + int len = strlen(dest_buf) ; + + if ( len > 0 ) { + dest_buf[ strlen(dest_buf) - 1 ] = '\n'; + + if (debug >= 2) { + message_publish(MSG_DEBUG, "%p tag=<%s> var_server sending %d ascii bytes:\n%s\n", + &connection, connection.client_tag, (int)strlen(dest_buf), dest_buf) ; + } + int ret = tc_write(&connection, (char *) dest_buf, (int)strlen(dest_buf)); + if ( ret != (int)strlen(dest_buf) ) { + return(-1) ; + } + } + + return 0; +} + int Trick::VariableServerThread::write_data() { int ret; @@ -185,7 +246,7 @@ int Trick::VariableServerThread::write_data() { // do not send anything when there are no variables! if ( vars.size() == 0 or packets_copied == 0 ) { - return(0); + return 0; } /* Acquire sole access to vars[ii]->buffer_in. */ @@ -204,77 +265,60 @@ int Trick::VariableServerThread::write_data() { pthread_mutex_unlock(©_mutex) ; if (binary_data) { - int Index = 0; - int PacketNumber = 0; + int index = 0; do { - ret = write_binary_data( Index, buf1, PacketNumber ); + ret = write_binary_data( index, buf1, vars, VS_VAR_LIST ); if ( ret >= 0 ) { - Index = ret ; + index = ret ; } else { return(-1) ; } - PacketNumber++; - } while( Index < (int)vars.size() ); + } while( index < (int)vars.size() ); + + return 0; } else { /* ascii mode */ - char val[MAX_MSG_LEN]; - - sprintf(buf1, "0\t") ; - - for (i = 0; i < vars.size(); i++) { - - ret = vs_format_ascii( vars[i] , val); - - if (ret < 0) { - message_publish(MSG_WARNING, "%p Variable Server string buffer[%d] too small for symbol %s, TRUNCATED IT.\n", - &connection, MAX_MSG_LEN, vars[i]->ref->reference ); - } - - /* make sure this message will fit in a packet by itself */ - if( strlen( val ) + 2 > MAX_MSG_LEN ) { - message_publish(MSG_WARNING, "%p Variable Server buffer[%d] too small for symbol %s, TRUNCATED IT.\n", - &connection, MAX_MSG_LEN, vars[i]->ref->reference ); - val[MAX_MSG_LEN - 1] = '\0'; - } - - len = strlen(buf1) ; - - /* make sure there is space for the next tab or next newline and null */ - if( len + strlen( val ) + 2 > MAX_MSG_LEN ) { - - if (debug >= 2) { - message_publish(MSG_DEBUG, "%p tag=<%s> var_server sending %d ascii bytes:\n%s\n", - &connection, connection.client_tag, (int)strlen(buf1), buf1) ; - } - - ret = tc_write(&connection, (char *) buf1, len); - if ( ret != len ) { - return(-1) ; - } - buf1[0] = '\0'; - } - - strcat(buf1, val); - strcat(buf1, "\t"); - } - - len = strlen(buf1) ; - - if ( len > 0 ) { - buf1[ strlen(buf1) - 1 ] = '\n'; - - if (debug >= 2) { - message_publish(MSG_DEBUG, "%p tag=<%s> var_server sending %d ascii bytes:\n%s\n", - &connection, connection.client_tag, (int)strlen(buf1), buf1) ; - } - ret = tc_write(&connection, (char *) buf1, (int)strlen(buf1)); - if ( ret != (int)strlen(buf1) ) { - return(-1) ; - } - } + return write_ascii_data(buf1, vars, VS_VAR_LIST ); + } + } +} + +int Trick::VariableServerThread::write_data(std::vector given_vars) { + // do not send anything when there are no variables! + if ( given_vars.size() == 0) { + return(0); + } + + /* Acquire sole access to vars[ii]->buffer_in. */ + if ( pthread_mutex_trylock(©_mutex) == 0 ) { + // Swap buffer_in and buffer_out for each vars[ii]. + for (int i = 0 ; i < given_vars.size() ; i++ ) { + void *temp_p = given_vars[i]->buffer_in; + given_vars[i]->buffer_in = given_vars[i]->buffer_out; + given_vars[i]->buffer_out = temp_p; + } + /* Relinquish sole access to vars[ii]->buffer_in. */ + pthread_mutex_unlock(©_mutex) ; + + char buf1[ MAX_MSG_LEN ]; + + if (binary_data) { + int index = 0; + + do { + int ret = write_binary_data( index, buf1, given_vars, VS_SEND_ONCE ); + if ( ret >= 0 ) { + index = ret ; + } else { + return(-1) ; + } + } while( index < (int)given_vars.size() ); + + return 0; + + } else { /* ascii mode */ + return write_ascii_data(buf1, given_vars, VS_SEND_ONCE); } } - - return (0); } diff --git a/trick_source/sim_services/VariableServer/var_server_ext.cpp b/trick_source/sim_services/VariableServer/var_server_ext.cpp index 5a569b02..dffa6ad9 100644 --- a/trick_source/sim_services/VariableServer/var_server_ext.cpp +++ b/trick_source/sim_services/VariableServer/var_server_ext.cpp @@ -60,6 +60,24 @@ int var_exists(std::string in_name) { return(0) ; } +int var_send_once(std::string in_name) { + Trick::VariableServerThread * vst ; + vst = get_vst() ; + if (vst != NULL ) { + vst->var_send_once(in_name, 1) ; + } + return(0) ; +} + +int var_send_once(std::string in_name, int num) { + Trick::VariableServerThread * vst ; + vst = get_vst() ; + if (vst != NULL ) { + vst->var_send_once(in_name, num) ; + } + return(0) ; +} + int var_send() { Trick::VariableServerThread * vst ; vst = get_vst() ; From 9495f3cd270fbe1a6675912a6ac87930bf5d2c89 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Mon, 22 Aug 2022 15:24:01 -0500 Subject: [PATCH 047/162] Document How to Dump a Core-file on MacOS #1334 --- docs/howto_guides/How-To-Guides.md | 1 + .../How-to-dump-core-file-on-MacOS.md | 66 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 docs/howto_guides/How-to-dump-core-file-on-MacOS.md diff --git a/docs/howto_guides/How-To-Guides.md b/docs/howto_guides/How-To-Guides.md index 66683f41..2f74874c 100644 --- a/docs/howto_guides/How-To-Guides.md +++ b/docs/howto_guides/How-To-Guides.md @@ -8,3 +8,4 @@ 01. [How do I create a model library to save compilation time?](/trick/documentation/building_a_simulation/Trickified-Project-Libraries) 01. [How do I use inherited templates in the input file?](How-To-Use-Inherited-Templates) 01. [How do I make a new Trick release on GitHub?](How-To-Make-A-Release) +01. [How to Dump a Core-file on MacOS](How-to-dump-core-file-on-MacOS) diff --git a/docs/howto_guides/How-to-dump-core-file-on-MacOS.md b/docs/howto_guides/How-to-dump-core-file-on-MacOS.md new file mode 100644 index 00000000..1fee6f77 --- /dev/null +++ b/docs/howto_guides/How-to-dump-core-file-on-MacOS.md @@ -0,0 +1,66 @@ +# How to Dump a Core File on MacOS (Monterey 12.5) + +A core dump (file) records the memory and state of a program at some moment in time, usually when it terminates abnormally. Core dumps can be useful in debugging in certain situations. + +On MacOS, the ability to dump a core file must be enabled. The following steps describe how. + +### 1. Ensure ```/cores``` Directory is Writable +Core-files are stored in the ```/cores``` directory on MacOS. You must have permission to write to it. To ensure this: + +```%``````sudo chmod 1777 /cores``` + +### 2. Set Kernel State to Allow Core-dumps +The kernel state variable ```kern.coredump``` must be set in order to dump core-files. This needs to be set only once; it is persistent between reboots. To set it: + +```%``````sudo sysctl kern.coredump=1``` + +To check its current value: + +```%``````sudo sysctl kern.coredump``` + +### 3. Code-sign the Executable + +For an executable to dump a core-file it must be signed. To do this, create an ```.entitlements``` file with the com.apple.security.get-task-allow entitlement set: + +```/usr/libexec/PlistBuddy -c "Add :com.apple.security.get-task-allow bool true" segv.entitlements``` + +Using this ```.entitlements``` file, sign the executable: + +```codesign -s - -f --entitlements segv.entitlements segv``` + +### 4. Set ```ulimit -c unlimited``` + +Before running the executable from which you want a core-dump run the following : + +```%``````ulimit -c unlimited``` + +This sets shell resources necessary for a core-dump. This setting is not persistent between shells. + +## Example Code: + + +### segv.c +```C +int main() { + int *p = (void*)0; + *p = 0; + return 0; +} +``` + +### makefile +```Makefile +all: segv + +segv: segv.c segv.entitlements + clang -g segv.c -o segv + codesign -s - -f --entitlements segv.entitlements segv + +segv.entitlements: + /usr/libexec/PlistBuddy -c "Add :com.apple.security.get-task-allow bool true" segv.entitlements + +clean: + rm segv + rm segv.entitlements + rm -rf segv.dSYM +``` \ No newline at end of file From 79916fcd0453d99b46d1deb3d7efe4c671845305 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Mon, 22 Aug 2022 15:29:15 -0500 Subject: [PATCH 048/162] Document Tweaks #1334 --- docs/howto_guides/How-to-dump-core-file-on-MacOS.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/howto_guides/How-to-dump-core-file-on-MacOS.md b/docs/howto_guides/How-to-dump-core-file-on-MacOS.md index 1fee6f77..82944322 100644 --- a/docs/howto_guides/How-to-dump-core-file-on-MacOS.md +++ b/docs/howto_guides/How-to-dump-core-file-on-MacOS.md @@ -7,16 +7,16 @@ On MacOS, the ability to dump a core file must be enabled. The following steps d ### 1. Ensure ```/cores``` Directory is Writable Core-files are stored in the ```/cores``` directory on MacOS. You must have permission to write to it. To ensure this: -```%``````sudo chmod 1777 /cores``` +```% sudo chmod 1777 /cores``` ### 2. Set Kernel State to Allow Core-dumps The kernel state variable ```kern.coredump``` must be set in order to dump core-files. This needs to be set only once; it is persistent between reboots. To set it: -```%``````sudo sysctl kern.coredump=1``` +```% sudo sysctl kern.coredump=1``` To check its current value: -```%``````sudo sysctl kern.coredump``` +```% sudo sysctl kern.coredump``` ### 3. Code-sign the Executable @@ -32,7 +32,7 @@ Using this ```.entitlements``` file, sign the executable: Before running the executable from which you want a core-dump run the following : -```%``````ulimit -c unlimited``` +```% ulimit -c unlimited``` This sets shell resources necessary for a core-dump. This setting is not persistent between shells. From 4c1271b43b09afd29e8b928840d7b5f1f1372ebd Mon Sep 17 00:00:00 2001 From: jmpenn Date: Mon, 22 Aug 2022 15:43:32 -0500 Subject: [PATCH 049/162] Update How-to-dump-core-file-on-MacOS.md Add lines between title and header in an attempt to fix the weird rendering problem in which '>' gets injected . --- docs/howto_guides/How-to-dump-core-file-on-MacOS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/howto_guides/How-to-dump-core-file-on-MacOS.md b/docs/howto_guides/How-to-dump-core-file-on-MacOS.md index 82944322..e9c43654 100644 --- a/docs/howto_guides/How-to-dump-core-file-on-MacOS.md +++ b/docs/howto_guides/How-to-dump-core-file-on-MacOS.md @@ -40,6 +40,7 @@ This sets shell resources necessary for a core-dump. This setting is not persist ### segv.c + ```C int main() { int *p = (void*)0; @@ -49,6 +50,7 @@ int main() { ``` ### makefile + ```Makefile all: segv @@ -63,4 +65,4 @@ clean: rm segv rm segv.entitlements rm -rf segv.dSYM -``` \ No newline at end of file +``` From 8132c00165c29aabb9ef34212c1452f4a93e5605 Mon Sep 17 00:00:00 2001 From: Thomas Brain Date: Wed, 24 Aug 2022 09:53:57 -0500 Subject: [PATCH 050/162] Fix issue with writing to an array of std::strings. Use sizeof(std::string) instead of sizeof(char *). --- .../sim_services/MemoryManager/MemoryManager_ref_assignment.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_ref_assignment.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_ref_assignment.cpp index 326e5f76..183a0fad 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_ref_assignment.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_ref_assignment.cpp @@ -251,7 +251,7 @@ int Trick::MemoryManager::assign_recursive(void* base_addr, ATTRIBUTES* attr, in } break; case TRICK_STRING : - assign_addr = (char*)base_addr + offset * sizeof(char*); + assign_addr = (char*)base_addr + offset * sizeof(std::string); if (v_tree && v_tree->v_data) { *(std::string*)assign_addr = vval_string(v_tree->v_data); } else { From 2deb7cd180772c4bfc8439a4c35d2eba5077ca59 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 24 Aug 2022 13:34:03 -0500 Subject: [PATCH 051/162] Sit out SIM_test_varserv SIM_test_varserv fails intermittently for no apparent reason; take it out of CI until it can be debugged. --- test/makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/makefile b/test/makefile index 1bb0136d..5ef52f11 100644 --- a/test/makefile +++ b/test/makefile @@ -36,12 +36,10 @@ SIMS_TO_COMPILE_AND_RUN = \ SIM_test_sched \ SIM_test_templates \ SIM_threads \ - SIM_trickified \ - SIM_test_varserv + SIM_trickified # Sims with problems, no purpose, or maybe shouldn't be a test # SIM_leaks ( should be deleted ) -# SIM_test_varserv ( not sure what it is testing ) # SIM_dynamic_sim_object ( not running, class won't instantiate ) # SIM_segments ( not a test, but a demo ) From 32c409e1392c91d2e1f7ce0b12c047d1d1498919 Mon Sep 17 00:00:00 2001 From: Thomas Brain Date: Wed, 24 Aug 2022 16:59:13 -0500 Subject: [PATCH 052/162] Fix clearing arrays of strings --- .../sim_services/MemoryManager/MemoryManager_clear_memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp index 32ff066c..46e17d36 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp @@ -92,7 +92,7 @@ void Trick::MemoryManager::clear_rvalue( void* base_address, ATTRIBUTES* attr, i *(void**)final_address = (void*)NULL; break; case TRICK_STRING : - final_address = (char*)base_address + offset * sizeof(void*); + final_address = (char*)base_address + offset * sizeof(std::string); *(std::string*)final_address = ""; break; case TRICK_STL : From 433ae34e557debd7d864590cae0ced57e7736c53 Mon Sep 17 00:00:00 2001 From: Thomas Brain Date: Thu, 25 Aug 2022 11:05:26 -0500 Subject: [PATCH 053/162] Fix clearing arrays of strings (#1337) #1335 --- .../sim_services/MemoryManager/MemoryManager_clear_memory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp index 32ff066c..46e17d36 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp @@ -92,7 +92,7 @@ void Trick::MemoryManager::clear_rvalue( void* base_address, ATTRIBUTES* attr, i *(void**)final_address = (void*)NULL; break; case TRICK_STRING : - final_address = (char*)base_address + offset * sizeof(void*); + final_address = (char*)base_address + offset * sizeof(std::string); *(std::string*)final_address = ""; break; case TRICK_STL : From bcaaeedd894cfef66e3958e9ec47ad82a4c8c654 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 26 Aug 2022 11:51:25 -0500 Subject: [PATCH 054/162] Fix syntax on job_class_order docs --- .../Simulation-Definition-File.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/documentation/building_a_simulation/Simulation-Definition-File.md b/docs/documentation/building_a_simulation/Simulation-Definition-File.md index c603e073..becbd673 100644 --- a/docs/documentation/building_a_simulation/Simulation-Definition-File.md +++ b/docs/documentation/building_a_simulation/Simulation-Definition-File.md @@ -381,11 +381,11 @@ in the table is the default ordering. ```C++ job_class_order { - my_job_class_1 ; - my_job_class_2 ; - scheduled ; - my_job_class_3 ; -} + my_job_class_1 , + my_job_class_2 , + scheduled , + my_job_class_3 +}; ``` ### Simulation Object C++ properties From e476f1fa9b5484cb201392249accb49bdf109d7a Mon Sep 17 00:00:00 2001 From: Thomas Brain Date: Thu, 1 Sep 2022 09:37:15 -0500 Subject: [PATCH 055/162] Destructor restart fixes --- .../core/src/base_integration_group.cc | 2 +- .../er7_utils/interface/include/alloc.hh | 5 +++- .../InputProcessor/IPPythonEvent.cpp | 28 +++++++++++++++---- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/trick_source/er7_utils/integration/core/src/base_integration_group.cc b/trick_source/er7_utils/integration/core/src/base_integration_group.cc index cf6b27fc..c3be8aff 100644 --- a/trick_source/er7_utils/integration/core/src/base_integration_group.cc +++ b/trick_source/er7_utils/integration/core/src/base_integration_group.cc @@ -97,7 +97,7 @@ BaseIntegrationGroup::swap ( BaseIntegrationGroup::~BaseIntegrationGroup ( void) { - Er7UtilsDeletable::delete_instance (integ_controls); + alloc::delete_object (integ_controls); } diff --git a/trick_source/er7_utils/interface/include/alloc.hh b/trick_source/er7_utils/interface/include/alloc.hh index 0bfa174e..2d26d06f 100644 --- a/trick_source/er7_utils/interface/include/alloc.hh +++ b/trick_source/er7_utils/interface/include/alloc.hh @@ -177,7 +177,10 @@ namespace er7_utils { template inline void delete_object (T*& obj) { if (obj) { - TMM_delete_var_a (type_traits::get_allocated_pointer (obj)); + if (get_alloc_info_of(obj) != 0x0) + { + TMM_delete_var_a (type_traits::get_allocated_pointer (obj)); + } obj = 0; } } diff --git a/trick_source/sim_services/InputProcessor/IPPythonEvent.cpp b/trick_source/sim_services/InputProcessor/IPPythonEvent.cpp index 6ea4e25c..3db54c32 100644 --- a/trick_source/sim_services/InputProcessor/IPPythonEvent.cpp +++ b/trick_source/sim_services/InputProcessor/IPPythonEvent.cpp @@ -72,15 +72,31 @@ Trick::IPPythonEvent::IPPythonEvent() { Trick::IPPythonEvent::~IPPythonEvent() { - for (int ii=0; ii Date: Fri, 2 Sep 2022 16:33:53 -0500 Subject: [PATCH 056/162] Document that Trick does not in fact yet support C++ STL types #1339 --- .../simulation_capabilities/STL-Checkpointing.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/documentation/simulation_capabilities/STL-Checkpointing.md b/docs/documentation/simulation_capabilities/STL-Checkpointing.md index 508bf8dc..18ee1b34 100644 --- a/docs/documentation/simulation_capabilities/STL-Checkpointing.md +++ b/docs/documentation/simulation_capabilities/STL-Checkpointing.md @@ -1,7 +1,9 @@ | [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → STL Checkpointing | |------------------------------------------------------------------| -Trick checkpoints the following STL types: array, vector, list, deque, set, multiset map, multimap, stack, queue, priority_queue, pair. +Trick does not currently support checkpointing C++ Standard Template Library (STL) types, although we working on it. + +For those data-structures you intend to checkpoint, you should avoid using STLs. [Continue to Threads](Threads) From 07b21fa4ae5085d39692bf3bfcd9801ed69cb091 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Fri, 2 Sep 2022 17:06:13 -0500 Subject: [PATCH 057/162] Modify configure.ac so Trick will not use er7utils by default. #1340 --- autoconf/configure.ac | 6 +++--- configure | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/autoconf/configure.ac b/autoconf/configure.ac index 83be0027..bce92142 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -215,12 +215,12 @@ AC_DEFUN([AX_JAVA],[ ],[]) ]) -dnl test if we want to use er7_utils, default to yes +dnl test if we want to use er7_utils, default to no AC_DEFUN([AX_ER7_UTILS],[ AC_ARG_ENABLE([er7utils], - AS_HELP_STRING([--enable-er7utils], [use er7_utils (default is yes)]), + AS_HELP_STRING([--enable-er7utils], [use er7_utils (default is no)]), AS_IF([test "x$enable_er7utils" = xyes], [USE_ER7_UTILS="1"], [USE_ER7_UTILS="0"]), - [USE_ER7_UTILS="1"] + [USE_ER7_UTILS="0"] ) AC_SUBST([USE_ER7_UTILS]) ]) diff --git a/configure b/configure index e0d8912e..09ba7fcc 100755 --- a/configure +++ b/configure @@ -1432,7 +1432,7 @@ Optional Features: trick-offline directory in TRICK_HOME to use this feature --enable-java use java (default is yes) - --enable-er7utils use er7_utils (default is yes) + --enable-er7utils use er7_utils (default is no) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -10252,7 +10252,7 @@ else $as_nop USE_ER7_UTILS="0" fi else $as_nop - USE_ER7_UTILS="1" + USE_ER7_UTILS="0" fi From acdd75b6c1df3cab03f039f3b30b08cb6f851a43 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Wed, 14 Sep 2022 16:30:48 -0500 Subject: [PATCH 058/162] Revert "Modify configure.ac so Trick will not use er7utils by default. #1340" This reverts commit 07b21fa4ae5085d39692bf3bfcd9801ed69cb091. --- autoconf/configure.ac | 6 +++--- configure | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/autoconf/configure.ac b/autoconf/configure.ac index bce92142..83be0027 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -215,12 +215,12 @@ AC_DEFUN([AX_JAVA],[ ],[]) ]) -dnl test if we want to use er7_utils, default to no +dnl test if we want to use er7_utils, default to yes AC_DEFUN([AX_ER7_UTILS],[ AC_ARG_ENABLE([er7utils], - AS_HELP_STRING([--enable-er7utils], [use er7_utils (default is no)]), + AS_HELP_STRING([--enable-er7utils], [use er7_utils (default is yes)]), AS_IF([test "x$enable_er7utils" = xyes], [USE_ER7_UTILS="1"], [USE_ER7_UTILS="0"]), - [USE_ER7_UTILS="0"] + [USE_ER7_UTILS="1"] ) AC_SUBST([USE_ER7_UTILS]) ]) diff --git a/configure b/configure index 09ba7fcc..e0d8912e 100755 --- a/configure +++ b/configure @@ -1432,7 +1432,7 @@ Optional Features: trick-offline directory in TRICK_HOME to use this feature --enable-java use java (default is yes) - --enable-er7utils use er7_utils (default is no) + --enable-er7utils use er7_utils (default is yes) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -10252,7 +10252,7 @@ else $as_nop USE_ER7_UTILS="0" fi else $as_nop - USE_ER7_UTILS="0" + USE_ER7_UTILS="1" fi From d5e8dae6dc4bd70cf1ec094bef229b77f2a06c0d Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 19 Sep 2022 15:10:32 -0500 Subject: [PATCH 059/162] #1344 increase retry count for maven (#1345) #1344 --- trick_source/java/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_source/java/Makefile b/trick_source/java/Makefile index 146cce0f..fe72a9e0 100644 --- a/trick_source/java/Makefile +++ b/trick_source/java/Makefile @@ -6,7 +6,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common all: @echo "Building java application..." - @${MVN} package -q -Dcmake=false + @${MVN} package -q -Dcmake=false -Dmaven.wagon.http.retryHandler.count=15 javadoc: ${MVN} javadoc:javadoc From d8df914ebf891e73ac37509c7fd3139c0d3f3736 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 26 Sep 2022 14:58:57 -0500 Subject: [PATCH 060/162] Add Environment section to Troubleshooting in Install Guide --- docs/documentation/install_guide/Install-Guide.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index 39684487..f13c724d 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -60,13 +60,23 @@ Trick runs on GNU/Linux and macOS, though any System V/POSIX compatible UNIX wor --- ### Troubleshooting + +#### Environment Variables +Sometimes environment variables affect the Trick build and can cause it to fail. If you find one that isn't listed here, please create an issue and we'll add it to the list. + + +``` +JAVA_HOME # Trick and Maven will use JAVA_HOME to build the GUIs instead of javac in PATH if it is set. +TRICK_HOME # This variable is optional but may cause a Trick build to fail if it is set to the wrong directory. +CFLAGS, CXXFLAGS, LDFLAGS # If these flags are set they may affect flags passed to your compiler and linker +``` +#### If You Think The Install Instructions Do Not Work Or Are Outdated If the Trick tests are passing, you can see *exactly* how we configure our test machines on Github's test integration platform, Github Actions. If logged into any github account on github.com, you can access the [Actions](https://github.com/nasa/trick/actions) tab on the Trick repo page. Go to [Trick-CI](https://github.com/nasa/trick/actions?query=workflow%3A%22Trick+CI%22), and click the latest passing run. Here you can access a log of our shell commands to configure each OS with dependencies and also the commands we use to install Trick. In fact, that is exactly where I go when I want to update the install guide! @spfennell The configuration for these tests can be found in the [trick/.github/workflow/test.yml](https://github.com/nasa/trick/blob/master/.github/workflows/test.yml) file. - --- From 550991669d82df8b27e87d5d1a1cccde4338fc96 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 26 Sep 2022 15:09:32 -0500 Subject: [PATCH 061/162] Add uninstall old trick to troubleshooting in install guide --- docs/documentation/install_guide/Install-Guide.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index f13c724d..cb63e7f4 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -47,6 +47,7 @@ Trick runs on GNU/Linux and macOS, though any System V/POSIX compatible UNIX wor | Quick Jump Menu | |---| +|[Troubleshooting](#trouble)| |[RedHat Enterprise Linux (RHEL) 8](#redhat8)| |[Oracle Linux 8](#redhat8)| |[AlmaLinux 8](#redhat8)| @@ -59,6 +60,7 @@ Trick runs on GNU/Linux and macOS, though any System V/POSIX compatible UNIX wor |[Windows 10 (Linux Subsystem Only)](#windows10)| --- + ### Troubleshooting #### Environment Variables @@ -75,6 +77,9 @@ If the Trick tests are passing, you can see *exactly* how we configure our test If logged into any github account on github.com, you can access the [Actions](https://github.com/nasa/trick/actions) tab on the Trick repo page. Go to [Trick-CI](https://github.com/nasa/trick/actions?query=workflow%3A%22Trick+CI%22), and click the latest passing run. Here you can access a log of our shell commands to configure each OS with dependencies and also the commands we use to install Trick. In fact, that is exactly where I go when I want to update the install guide! @spfennell +#### Weird Linker Error +It is possible you may have an old version of Trick installed, and Trick's libraries are on your LDPATH and interfering with your new build. The solution is to uninstall the old version before building the new one. Call `sudo make uninstall` from any Trick top level directory and it will remove the old libraries. + The configuration for these tests can be found in the [trick/.github/workflow/test.yml](https://github.com/nasa/trick/blob/master/.github/workflows/test.yml) file. --- From 4ac9777ab8b48213d410376dcade5c7323dd0542 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 26 Sep 2022 15:10:12 -0500 Subject: [PATCH 062/162] Move Troubleshooting link --- docs/documentation/install_guide/Install-Guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index cb63e7f4..a7ea8e78 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -47,7 +47,6 @@ Trick runs on GNU/Linux and macOS, though any System V/POSIX compatible UNIX wor | Quick Jump Menu | |---| -|[Troubleshooting](#trouble)| |[RedHat Enterprise Linux (RHEL) 8](#redhat8)| |[Oracle Linux 8](#redhat8)| |[AlmaLinux 8](#redhat8)| @@ -58,6 +57,7 @@ Trick runs on GNU/Linux and macOS, though any System V/POSIX compatible UNIX wor |[Ubuntu](#ubuntu)| |[macOS](#macos)| |[Windows 10 (Linux Subsystem Only)](#windows10)| +|[Troubleshooting](#trouble)| --- From 99bdf509b3691f62764e9ab414abc48c536d21df Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 26 Sep 2022 15:11:21 -0500 Subject: [PATCH 063/162] Update Install-Guide.md --- docs/documentation/install_guide/Install-Guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index a7ea8e78..3a9d4b63 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -77,11 +77,11 @@ If the Trick tests are passing, you can see *exactly* how we configure our test If logged into any github account on github.com, you can access the [Actions](https://github.com/nasa/trick/actions) tab on the Trick repo page. Go to [Trick-CI](https://github.com/nasa/trick/actions?query=workflow%3A%22Trick+CI%22), and click the latest passing run. Here you can access a log of our shell commands to configure each OS with dependencies and also the commands we use to install Trick. In fact, that is exactly where I go when I want to update the install guide! @spfennell +The configuration for these tests can be found in the [trick/.github/workflow/test.yml](https://github.com/nasa/trick/blob/master/.github/workflows/test.yml) file. + #### Weird Linker Error It is possible you may have an old version of Trick installed, and Trick's libraries are on your LDPATH and interfering with your new build. The solution is to uninstall the old version before building the new one. Call `sudo make uninstall` from any Trick top level directory and it will remove the old libraries. -The configuration for these tests can be found in the [trick/.github/workflow/test.yml](https://github.com/nasa/trick/blob/master/.github/workflows/test.yml) file. - --- From 1769bb7061855b79c11bc1a3d65b1c5722662fce Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 26 Sep 2022 15:15:03 -0500 Subject: [PATCH 064/162] Update Install-Guide.md --- docs/documentation/install_guide/Install-Guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index 3a9d4b63..a3c7cb87 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -77,7 +77,7 @@ If the Trick tests are passing, you can see *exactly* how we configure our test If logged into any github account on github.com, you can access the [Actions](https://github.com/nasa/trick/actions) tab on the Trick repo page. Go to [Trick-CI](https://github.com/nasa/trick/actions?query=workflow%3A%22Trick+CI%22), and click the latest passing run. Here you can access a log of our shell commands to configure each OS with dependencies and also the commands we use to install Trick. In fact, that is exactly where I go when I want to update the install guide! @spfennell -The configuration for these tests can be found in the [trick/.github/workflow/test.yml](https://github.com/nasa/trick/blob/master/.github/workflows/test.yml) file. +The configuration for these tests can be found in the [trick/.github/workflow/test_linux.yml](https://github.com/nasa/trick/blob/master/.github/workflows/test_linux.yml) file. #### Weird Linker Error It is possible you may have an old version of Trick installed, and Trick's libraries are on your LDPATH and interfering with your new build. The solution is to uninstall the old version before building the new one. Call `sudo make uninstall` from any Trick top level directory and it will remove the old libraries. From 8eea9e9ab990aa76bcd5dfbc2c1685d6c1d36981 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Mon, 26 Sep 2022 16:54:41 -0500 Subject: [PATCH 065/162] Make MemoryManager::reset_memory and class destructors coordinate the deletion of objects. #1348 --- include/trick/MemoryManager.hh | 3 ++ .../MemoryManager/MemoryManager.cpp | 1 + .../MemoryManager_clear_memory.cpp | 8 ++++ .../MemoryManager_delete_var.cpp | 40 +++++++++++++++++-- .../MemoryManager/MemoryManager_restore.cpp | 6 +++ 5 files changed, 54 insertions(+), 4 deletions(-) diff --git a/include/trick/MemoryManager.hh b/include/trick/MemoryManager.hh index dd63b3cc..09477362 100644 --- a/include/trick/MemoryManager.hh +++ b/include/trick/MemoryManager.hh @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -683,6 +684,8 @@ namespace Trick { std::vector dependencies; /**< ** list of allocations used in a checkpoint. */ std::vector stl_dependencies; /**< ** list of allocations known to be STL checkpoint allocations */ + bool resetting_memory; + std::list deleted_addr_list; /**< ** list of addresses that have been deleted during reset_memory(). */ void execute_checkpoint( std::ostream& out_s ); diff --git a/trick_source/sim_services/MemoryManager/MemoryManager.cpp b/trick_source/sim_services/MemoryManager/MemoryManager.cpp index 3326d82d..a4dc37df 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager.cpp @@ -23,6 +23,7 @@ Trick::MemoryManager::MemoryManager() debug_level = 0; hexfloat_checkpoint = 0; reduced_checkpoint = 1; + resetting_memory = false; expanded_arrays = 0; // start counter at 100mil. This (hopefully) ensures all alloc'ed ids are after external variables. alloc_info_map_counter = 100000000 ; diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp index 46e17d36..20f0fc1b 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_clear_memory.cpp @@ -295,6 +295,11 @@ void Trick::MemoryManager::reset_memory() { std::vector deletion_list; int ii, n_addrs; + // Clear the deleted_addr_list at the start of reset memory. As delete_var() is called, + // and resetting_memory == true, the deleted address will be added to the deleted_addr_list. + resetting_memory = true; + deleted_addr_list.clear(); + pthread_mutex_lock(&mm_mutex); for (pos=alloc_info_map.begin() ; pos!=alloc_info_map.end() ; pos++ ) { alloc_info = pos->second; @@ -310,6 +315,9 @@ void Trick::MemoryManager::reset_memory() { delete_var( deletion_list[ii]); } + resetting_memory = false; + deleted_addr_list.clear(); + // reset counter to 100mil. This (hopefully) ensures all alloc'ed ids are after external variables. alloc_info_map_counter = 100000000 ; } diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_delete_var.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_delete_var.cpp index 0c72f71d..a68630df 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_delete_var.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_delete_var.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include "trick/MemoryManager.hh" @@ -38,6 +39,14 @@ int Trick::MemoryManager::delete_var(void* address ) { if ( alloc_info->stcl == TRICK_LOCAL ) { if ( alloc_info->alloc_type == TRICK_ALLOC_MALLOC ) { io_src_destruct_class( alloc_info ); + + // The destructor that we just called MAY have deleted addresses + // that are already planned for deletion, say during reset_memory. + // So, keep a record of what we've recently deleted so we don't + // to warn that we can't find it, when reset_memory also tries to + // delete that same address. + deleted_addr_list.push_back(address); + free( address); } else if ( alloc_info->alloc_type == TRICK_ALLOC_NEW ) { io_src_delete_class( alloc_info ); @@ -64,10 +73,33 @@ int Trick::MemoryManager::delete_var(void* address ) { free(alloc_info); } else { - std::stringstream message; - message << "The MemoryManager cannot delete memory at address [" - << address << "] because it has no record of it."; - emitWarning(message.str()); + + // The allocation (address) we're tring to delete may have just been + // deleted by a user's destructor (using delete_var). Check the deleted_addr_list + // to see if the allocation was just deleted. If it was, then there's no + // problem. If it wasn't, then the MemoryManager never knew about it, and + // this call to delete_var() is a problem. + + if ( resetting_memory == true) { + // Check the deleted_addr_list to see whether we recently deleted this address. + std::list::iterator iter = + std::find( deleted_addr_list.begin(), deleted_addr_list.end(), address ); + // If we didn't recently delete it, then there's a problem. + if ( iter == deleted_addr_list.end() ) { + std::stringstream message; + message << "The MemoryManager cannot delete memory at address [" + << address << "] because it has no record of it. Furthermore," + << " the MemoryManager has not recently deleted it while" + << " resetting memory for a checkpoint reload."; + emitWarning(message.str()); + } + } else { + std::stringstream message; + message << "The MemoryManager cannot delete memory at address [" + << address << "] because it has no record of it."; + emitWarning(message.str()); + } + return 1 ; } diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp index c4a1e86a..afdced79 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp @@ -21,6 +21,7 @@ int Trick::MemoryManager::read_checkpoint( std::istream *is, bool do_restore_stl emitError("Checkpoint restore failed.") ; } + // Search for stls and restore them if(do_restore_stls) { for ( pos=alloc_info_map.begin() ; pos!=alloc_info_map.end() ; pos++ ) { @@ -102,6 +103,11 @@ int Trick::MemoryManager::init_from_checkpoint( std::istream *is) { reset_memory(); + if (debug_level) { + std::cout << std::endl << "- Reading checkpoint." << std::endl; + std::cout.flush(); + } + read_checkpoint( is); if (debug_level) { From c281be332656f3cf0db76787019218001bf054d8 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 6 Oct 2022 16:05:51 -0500 Subject: [PATCH 066/162] Update test_linux.yml --- .github/workflows/test_linux.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test_linux.yml b/.github/workflows/test_linux.yml index 013f0d85..636117ba 100644 --- a/.github/workflows/test_linux.yml +++ b/.github/workflows/test_linux.yml @@ -2,6 +2,8 @@ name: Linux on: push: + branches: + - master paths-ignore: - 'docs/**' - '.github/workflows/**' From 4e85b3d79d37493c5376599036ec2ad1c30b37b7 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 6 Oct 2022 16:06:16 -0500 Subject: [PATCH 067/162] Update test_macos.yml --- .github/workflows/test_macos.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test_macos.yml b/.github/workflows/test_macos.yml index d41a6e75..cb22ad17 100644 --- a/.github/workflows/test_macos.yml +++ b/.github/workflows/test_macos.yml @@ -2,6 +2,8 @@ name: macOS on: push: + branches: + - master paths-ignore: - 'docs/**' - '.github/workflows/**' From 0dbee658eee68bfe889216437fe0ae408039546d Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 6 Oct 2022 16:07:49 -0500 Subject: [PATCH 068/162] Update test_32.yml --- .github/workflows/test_32.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test_32.yml b/.github/workflows/test_32.yml index c00219f8..f3091e51 100644 --- a/.github/workflows/test_32.yml +++ b/.github/workflows/test_32.yml @@ -2,6 +2,8 @@ name: 32-bit on: push: + branches: + - master paths-ignore: - 'docs/**' - '.github/workflows/**' From 6d42ff2eb098213e578860e139d549f805375718 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 6 Oct 2022 16:08:06 -0500 Subject: [PATCH 069/162] Update test_32_oracle.yml --- .github/workflows/test_32_oracle.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test_32_oracle.yml b/.github/workflows/test_32_oracle.yml index 54c76670..322ab853 100644 --- a/.github/workflows/test_32_oracle.yml +++ b/.github/workflows/test_32_oracle.yml @@ -2,6 +2,8 @@ name: 32-bit Oracle on: push: + branches: + - master paths-ignore: - 'docs/**' - '.github/workflows/**' From 540bc7d96f161ab1b19b20f43853369f00b0ff8f Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 6 Oct 2022 16:08:30 -0500 Subject: [PATCH 070/162] Update trickops.yml --- .github/workflows/trickops.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/trickops.yml b/.github/workflows/trickops.yml index d22f053b..6347ff8a 100644 --- a/.github/workflows/trickops.yml +++ b/.github/workflows/trickops.yml @@ -2,6 +2,8 @@ name: TrickOps # This workflow is triggered on pushes to the repository. on: push: + branches: + - master paths-ignore: - 'docs/**' - '.github/workflows/**' From f19ba7df78ef0eb1dd383a27220a07779d84e0a9 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 7 Oct 2022 08:37:09 -0500 Subject: [PATCH 071/162] Test and Document STL Checkpointing (#1355) * Updates SIM_stl to include checkpoint writing and checkpoint restore, as well as adding more data structures to test * Thoroughly tests supported STL types with MM_stl_checkpoint and MM_stl_restore * Adds an option to enable or disable STL restore in accessible interfaces and changes default to true * Updates documentation on STL checkpointing to clearly state limitations and known bugs --- .../simulation_capabilities/Checkpoints.md | 8 + .../STL-Checkpointing.md | 9 - .../STL-capabilities.md | 130 ++ include/trick/CheckPointRestart.hh | 13 + include/trick/CheckPointRestart_c_intf.hh | 2 + include/trick/MemoryManager.hh | 14 +- include/trick/checkpoint_map.hh | 9 +- include/trick/memorymanager_c_intf.h | 4 +- test/SIM_stls/RUN_test/input.py | 10 - test/SIM_stls/RUN_test/setup.py | 15 + test/SIM_stls/RUN_test/unit_test.py | 18 +- test/SIM_stls/S_define | 9 +- test/SIM_stls/S_overrides.mk | 16 +- test/SIM_stls/models/STLCheckpoint.cpp | 469 ++++++- test/SIM_stls/models/STLCheckpoint.hh | 36 +- test/makefile | 3 + .../CheckPointRestart/CheckPointRestart.cpp | 5 + .../CheckPointRestart_c_intf.cpp | 24 + .../MemoryManager/MemoryManager.cpp | 2 +- .../MemoryManager/MemoryManager_C_Intf.cpp | 15 +- .../MemoryManager/MemoryManager_restore.cpp | 31 +- .../MemoryManager/test/.gitignore | 2 + .../MemoryManager/test/MM_read_checkpoint.cc | 74 +- .../MemoryManager/test/MM_stl_checkpoint.cc | 1121 +++++++++++++++++ .../MemoryManager/test/MM_stl_restore.cc | 1045 +++++++++++++++ .../MemoryManager/test/MM_stl_testbed.hh | 98 ++ .../MemoryManager/test/MM_test.hh | 56 + .../test/MM_user_defined_types.hh | 24 + .../MemoryManager/test/MM_write_checkpoint.cc | 27 + .../MemoryManager/test/MM_write_checkpoint.hh | 20 + .../sim_services/MemoryManager/test/Makefile | 36 +- 31 files changed, 3245 insertions(+), 100 deletions(-) delete mode 100644 docs/documentation/simulation_capabilities/STL-Checkpointing.md create mode 100644 docs/documentation/simulation_capabilities/STL-capabilities.md create mode 100644 test/SIM_stls/RUN_test/setup.py create mode 100644 trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc create mode 100644 trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc create mode 100644 trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh diff --git a/docs/documentation/simulation_capabilities/Checkpoints.md b/docs/documentation/simulation_capabilities/Checkpoints.md index 541b6013..de7a70ea 100644 --- a/docs/documentation/simulation_capabilities/Checkpoints.md +++ b/docs/documentation/simulation_capabilities/Checkpoints.md @@ -23,6 +23,14 @@ trick.checkpoint_cpu() trick.checkpoint_safestore_set_enabled(True|False) # Set the safestore checkpoint period. default 9x10e18 trick.checkpoint_safestore() + +# Load a checkpoint +trick.load_checkpoint() +# Load a checkpoint without restoring STLs +trick.load_checkpoint(, False) +# Force the load_checkpoint job to run immediately +trick.load_checkpoint_job() + ``` [Continue to Memory Manager](memory_manager/MemoryManager) diff --git a/docs/documentation/simulation_capabilities/STL-Checkpointing.md b/docs/documentation/simulation_capabilities/STL-Checkpointing.md deleted file mode 100644 index 18ee1b34..00000000 --- a/docs/documentation/simulation_capabilities/STL-Checkpointing.md +++ /dev/null @@ -1,9 +0,0 @@ -| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → STL Checkpointing | -|------------------------------------------------------------------| - - -Trick does not currently support checkpointing C++ Standard Template Library (STL) types, although we working on it. - -For those data-structures you intend to checkpoint, you should avoid using STLs. - -[Continue to Threads](Threads) diff --git a/docs/documentation/simulation_capabilities/STL-capabilities.md b/docs/documentation/simulation_capabilities/STL-capabilities.md new file mode 100644 index 00000000..0e99d321 --- /dev/null +++ b/docs/documentation/simulation_capabilities/STL-capabilities.md @@ -0,0 +1,130 @@ +| [Home](/trick) → [Documentation Home](../Documentation-Home) → [Simulation Capabilities](Simulation-Capabilities) → Using STLs in Trick Sims | +|------------------------------------------------------------------| + +# Standard Template Libraries (STL) in Trick + +STLs may be used in models. However, STL variables (currently) are not data recordable, visible in the variable server, nor directly accessible in the input file. Some STLs can be checkpointed: array, vector, list, deque, set, multiset, map, multimap, stack, queue, priority_queue, pair. + +STL classes cannot be directly registered with the memory manager, but they can be processed by the checkpoint agent when nested inside normal C++ classes (including sim objects). + +STL checkpoint restore may slow down the default data jobs of some sims. STL restore is on by default. To turn off STL restore: + +If using memory manager through the C interface: +``` +int TMM_set_stl_restore (int on_off); +``` + +If using the memory manager through the C++ interface, set the default or pass a parameter to your read_checkpoint function of choice: +``` +int set_restore_stls_default (bool on); +int read_checkpoint( std::istream* in_s, bool do_restore_stls = restore_stls_default); +int read_checkpoint_from_string( const char* s, bool do_restore_stls = restore_stls_default ); +int init_from_checkpoint( std::istream* in_s, bool do_restore_stls = restore_stls_default); +``` + +If using the checkpoint restart C interface: +``` +int load_checkpoint_stls( const char * file_name, int with_stls ) ; +``` + + + +## What works: + +To checkpoint an STL, it **must** be a member of a class or struct. +``` +class AnyClass { + std::vector vec; +} +``` +Declare an instance of this class with the memory manager in the usual way: +``` +AnyClass * my_class = tmm->declare_var("AnyClass my_alloc"); +``` + +If it is in a class that is nested in a `sim_object`, it will be registered with the memory manager automatically. + +You can nest an arbitrary amount of STLs, they will all be checkpointed as long as +the base is a member of a class that is registered with the memory manager. There +are a some [**limitations**](#limitations) and exceptions due to [**bugs**](#known_bugs) at the moment (but hopefully not forever!) + +``` +class AnyClass { + std::pair> +} +``` + + + +## Limitations + +The STL checkpointing feature can only handle simple types, pointers, and nested STL types. + +### An STL type within a user defined type within an STL will fail to checkpoint. + +For example: a user defined class with an STL in it: +``` +class VectorWrapper { + int a; + std::vector vec; +} +``` + +An outer class (which is registered with the memory manager, like a member of a sim_object or something that has been explicitly declared) that has an STL container of these objects: +``` +class MyObject { + std::vector vec_user_defined; +} +``` + +If MyObject is populated, it will be able to checkpoint and restore without throwing an error, and all the `VectorWrapper` objects will be present, but `vec` will not be restored (`a` will restore successfully). The contents of `vec` are never written out to the checkpoint file. + + +If `MyObject` instead has a vector of pointers to `VectorWrapper`, and each `VectorWrapper` is registered with the memory manager, `vec` will checkpoint and restore successfully. +``` +class MyObject { + std::vector vec_user_defined_ptr; +} +``` + +### You cannot directly create or register an external stl with the memory manager, you will get a parser error. + +STLs can't register it with the memory manager, so there's no way for the checkpoint to know where the memory is. + +``` +class AnyClass { + std::vector *anything; +} + +class AnyClass { + std::pair[5]; +} + + +memorymanager->declare_var("std::vector my_vector_allocation"); + +std::vector my_vector; +memorymanager->declare_var_extern(&my_vector, "std::vector my_vector_allocation"); + +``` + + + + +## Known bugs + +The types in an std::pair cannot be sequence STL types (vector, queue, stack, etc). +``` + // This will fail to checkpoint + std::pair> +``` + +The types inside an std::set cannot be any STL types (excluding strings). +``` + // This will fail to compile + std::set> +``` + +These bugs are being worked on. + +[Continue to Threads](Threads) diff --git a/include/trick/CheckPointRestart.hh b/include/trick/CheckPointRestart.hh index ca071c20..4201d746 100644 --- a/include/trick/CheckPointRestart.hh +++ b/include/trick/CheckPointRestart.hh @@ -247,6 +247,19 @@ namespace Trick { */ virtual void load_checkpoint(std::string file_name) ; + /** + @brief @userdesc Command to load a checkpoint file. (Calls the preload_checkpoint jobs, calls the MemoryManager restore_managed_memory + method, then calls the restart jobs.) + This is invoked when the user clicks the "Load ASCII Chkpnt" button on the sim control panel. + @par Python Usage: + @code trick.load_checkpoint("") @endcode + @param file_name - file to read checkpoint data from + @param stl_restore_on - toggle whether to restore STLs + @return always 0 + */ + virtual void load_checkpoint(std::string file_name, bool stl_restore_on) ; + + /** @brief @userdesc Command to load a checkpoint file. (Calls the preload_checkpoint jobs, calls the MemoryManager restore_managed_memory method, then calls the restart jobs.) diff --git a/include/trick/CheckPointRestart_c_intf.hh b/include/trick/CheckPointRestart_c_intf.hh index 58ccdf9b..6b33c81c 100644 --- a/include/trick/CheckPointRestart_c_intf.hh +++ b/include/trick/CheckPointRestart_c_intf.hh @@ -51,6 +51,8 @@ int checkpoint_objects( const char * file_name, const char * objects ) ; /* load_checkpoint call accessible from C code */ int load_checkpoint( const char * file_name ) ; +int load_checkpoint_stls( const char * file_name, int with_stls ) ; + int load_checkpoint_job() ; void * get_address( const char * var_name ) ; diff --git a/include/trick/MemoryManager.hh b/include/trick/MemoryManager.hh index 09477362..2ea62e21 100644 --- a/include/trick/MemoryManager.hh +++ b/include/trick/MemoryManager.hh @@ -371,32 +371,32 @@ namespace Trick { Restore a checkpoint from the given stream. @param in_s - input stream. */ - int read_checkpoint( std::istream* in_s, bool do_restore_stls=false); + int read_checkpoint( std::istream* in_s, bool do_restore_stls = restore_stls_default); /** Read a checkpoint from the file of the given name. @param filename - name of the checkpoint file to be read. */ - int read_checkpoint( const char* filename); + int read_checkpoint( const char* filename, bool do_restore_stls = restore_stls_default); /** Read a checkpoint from the given string. @param s - string containing the checkpoint info. */ - int read_checkpoint_from_string( const char* s ); + int read_checkpoint_from_string( const char* s, bool do_restore_stls = restore_stls_default ); /** Delete all TRICK_LOCAL variables and clear all TRICK_EXTERN variables. Then read and restore the checkpoint from the given stream. @param in_s - input stream. */ - int init_from_checkpoint( std::istream* in_s); + int init_from_checkpoint( std::istream* in_s, bool do_restore_stls = restore_stls_default); /** Delete all TRICK_LOCAL variables and clear all TRICK_EXTERN variables. Then read and restore the checkpoint of the given filename. */ - int init_from_checkpoint( const char* filename); + int init_from_checkpoint( const char* filename, bool do_restore_stls = restore_stls_default); /** Deallocate the memory for all TRICK_LOCAL variables and then forget about them. @@ -662,6 +662,10 @@ namespace Trick { void write_JSON_alloc_info( std::ostream& s, ALLOC_INFO *alloc_info) ; void write_JSON_alloc_list( std::ostream& s, int start_ix, int num) ; + int set_restore_stls_default (bool on); + static bool restore_stls_default; /**< -- true = restore STL variables on checkpoint restore if user does not specify option. false = don't */ + + private: static int instance_count; /**< -- Number of instances of MemoryManager. Not allowed to exceed 1.*/ diff --git a/include/trick/checkpoint_map.hh b/include/trick/checkpoint_map.hh index d52939cb..65916c38 100644 --- a/include/trick/checkpoint_map.hh +++ b/include/trick/checkpoint_map.hh @@ -317,17 +317,18 @@ int checkpoint_map_stl_sk_sd(STL & in_map , std::string object_name , std::strin /* copy the contents of the map the 2 arrays */ for ( iter = in_map.begin() , ii = 0 ; iter != in_map.end() ; iter++ , ii++ ) { - std::ostringstream sub_elements ; + std::stringstream sub_elements ; sub_elements << object_name << "_" << var_name << "_keys_" << ii ; keys[ii] = sub_elements.str() ; - std::ostringstream index_string ; + std::stringstream index_string ; index_string << ii ; checkpoint_stl( const_cast(iter->first) , object_name + "_" + var_name + "_keys", index_string.str() ) ; - sub_elements << object_name << "_" << var_name << "_data_" << ii ; - items[ii] = sub_elements.str() ; + std::stringstream sub_elements_data; + sub_elements_data << object_name << "_" << var_name << "_data_" << ii ; + items[ii] = sub_elements_data.str() ; checkpoint_stl( iter->second , object_name + "_" + var_name + "_data", index_string.str() ) ; diff --git a/include/trick/memorymanager_c_intf.h b/include/trick/memorymanager_c_intf.h index 0603dbaa..9c57fb7f 100644 --- a/include/trick/memorymanager_c_intf.h +++ b/include/trick/memorymanager_c_intf.h @@ -50,12 +50,14 @@ void TMM_delete_extern_var_a( void* address); void TMM_delete_extern_var_n( const char* var_name ); void TMM_write_checkpoint( const char* filename) ; + int TMM_read_checkpoint( const char* filename); int TMM_read_checkpoint_from_string( const char* str); - int TMM_init_from_checkpoint( const char* filename); + int TMM_add_shared_library_symbols( const char* filename); +int TMM_set_stl_restore (int on_off); REF2* ref_attributes(const char* name); int ref_var(REF2* R, char* name); diff --git a/test/SIM_stls/RUN_test/input.py b/test/SIM_stls/RUN_test/input.py index 458f7730..40dffd39 100644 --- a/test/SIM_stls/RUN_test/input.py +++ b/test/SIM_stls/RUN_test/input.py @@ -1,17 +1,7 @@ def main(): - #trick.echo_jobs_on() - #trick.sim_control_panel_set_enabled(True) - #trick.real_time_enable() - #trick.itimer_enable() - - trick.checkpoint_pre_init(True) - #trick.checkpoint_post_init(True) - #trick.checkpoint_end(True) - - #trick.freeze(2.0) trick.exec_set_software_frame(0.10) trick.exec_set_freeze_frame(0.10) diff --git a/test/SIM_stls/RUN_test/setup.py b/test/SIM_stls/RUN_test/setup.py new file mode 100644 index 00000000..208d871f --- /dev/null +++ b/test/SIM_stls/RUN_test/setup.py @@ -0,0 +1,15 @@ +import trick + +def main(): + trick.exec_set_job_onoff("the_object.stlc.addData", 1, True) + trick.exec_set_job_onoff("the_object.stlc.test", 1, False) + trick.exec_set_job_onoff("the_object.stlc.print", 1, False) + + trick.add_read( 0.5, 'trick.checkpoint("chkpnt_in")') + + trick.exec_set_freeze_frame(0.10) + trick.stop(1.0) + +if __name__ == "__main__": + main() + diff --git a/test/SIM_stls/RUN_test/unit_test.py b/test/SIM_stls/RUN_test/unit_test.py index 6f11ebd5..16c31069 100644 --- a/test/SIM_stls/RUN_test/unit_test.py +++ b/test/SIM_stls/RUN_test/unit_test.py @@ -1,12 +1,20 @@ +import trick +from trick.unit_test import * def main(): - trick.checkpoint_post_init(True) - trick.checkpoint_end(True) + trick.load_checkpoint("RUN_test/chkpnt_in") + trick.load_checkpoint_job() - # Data recording HDF5 test - trick.exec_set_freeze_frame(0.10) - trick.stop(5.0) + trick.exec_set_job_onoff("the_object.stlc.addData", 1, False) + trick.exec_set_job_onoff("the_object.stlc.test", 1, True) + trick.exec_set_job_onoff("the_object.stlc.print", 1, False) + + trick_utest.unit_tests.enable() + trick_utest.unit_tests.set_file_name( os.getenv("TRICK_HOME") + "/trick_test/SIM_stl.xml" ) + trick_utest.unit_tests.set_test_name( "STLCheckpointTest" ) + + trick.stop(1.0) if __name__ == "__main__": main() diff --git a/test/SIM_stls/S_define b/test/SIM_stls/S_define index 908cbe15..7e377dc6 100644 --- a/test/SIM_stls/S_define +++ b/test/SIM_stls/S_define @@ -8,10 +8,15 @@ class theSimObject : public Trick::SimObject { STLCheckpoint stlc ; /** Constructor to add the jobs */ - theSimObject() : stlc("Petunia") { - (1.0, "scheduled") stlc.speak() ; + theSimObject() : stlc() { + ("initialization") stlc.addData(); + (1.0, "scheduled") stlc.test () ; + (1.0, "scheduled") stlc.print () ; + } + + } ; theSimObject the_object ; diff --git a/test/SIM_stls/S_overrides.mk b/test/SIM_stls/S_overrides.mk index c4c9b818..b05ddfc7 100644 --- a/test/SIM_stls/S_overrides.mk +++ b/test/SIM_stls/S_overrides.mk @@ -2,4 +2,18 @@ TRICK_CFLAGS += -I./models TRICK_CXXFLAGS += -I./models -#TRICK_CXXFLAGS += -std=c++11 +TRICK_CXXFLAGS += -std=c++11 + +test: setup + +# This is a workaround so that the sim runs with RUN_test/setup.py before the actual unit test run. +# setup.py adds hardcoded data to the sim and dumps a checkpoint, and unit_test.py loads that checkpoint and checks all the values. + +setup: T_main_${TRICK_HOST_CPU}.exe + echo "Running Setup Job" + ./T_main_${TRICK_HOST_CPU}.exe RUN_test/setup.py + +clean: checkpoint_clean + +checkpoint_clean: + rm -f RUN_test/chkpnt_in diff --git a/test/SIM_stls/models/STLCheckpoint.cpp b/test/SIM_stls/models/STLCheckpoint.cpp index 1fcca9e9..45cc88f3 100644 --- a/test/SIM_stls/models/STLCheckpoint.cpp +++ b/test/SIM_stls/models/STLCheckpoint.cpp @@ -1,19 +1,34 @@ #include "sim_services/Message/include/message_proto.h" #include "STLCheckpoint.hh" - +#include "trick/memorymanager_c_intf.h" +#include +#include +#include "sim_services/UnitTest/include/trick_tests.h" /* These 2 constructors add different data to an STLCheckpoint. */ STLCheckpoint::STLCheckpoint() { return ; } -STLCheckpoint::STLCheckpoint(std::string in_name) : - vector_vector_double(4, std::vector(3)) , - vector_vector_vector_double(5, std::vector >(4, std::vector(3))) -{ +template +void compare_data_structures_with_top(T a, T b, std::string test_name) { + const char *test_suite = "STLCheckpoint"; - name = in_name ; + TRICK_EXPECT_EQ(a.size(), b.size(), test_suite, test_name.c_str()); + while (!a.empty()) { + TRICK_EXPECT_EQ(a.top(), b.top(), test_suite, test_name.c_str()); + a.pop(); + b.pop(); + } +} + +int STLCheckpoint::addData() { + dataJobRun = true; + vector_vector_double = std::vector< std::vector< double > >(4, std::vector(3)); + vector_vector_vector_double = std::vector< std::vector< std::vector< double > > >(5, std::vector >(4, std::vector(3))); + + std::cout << "Adding hardcoded data to sim" << std::endl; double_map[44.4] = 444.4 ; double_map[55.5] = 555.5 ; @@ -55,15 +70,24 @@ STLCheckpoint::STLCheckpoint(std::string in_name) : v.push_back(60) ; common_multiples.insert(std::pair< std::pair< int, int >, std::vector< int > >(p,v)) ; + p.first = 3 ; + p.second = 7 ; + v.clear() ; + v.push_back(21) ; + v.push_back(42) ; + v.push_back(84) ; + v.push_back(168) ; + common_multiples.insert(std::pair< std::pair< int, int >, std::vector< int > >(p,v)) ; + string_map[std::string("sister")] = std::string("Lisa") ; string_map[std::string("dog")] = std::string("Santa's Little Helper") ; int_multimap.insert(std::pair(44,444)) ; int_multimap.insert(std::pair(55,555)) ; int_multimap.insert(std::pair(66,666)) ; - int_multimap.insert(std::pair(44,444)) ; - int_multimap.insert(std::pair(55,555)) ; - int_multimap.insert(std::pair(66,666)) ; + int_multimap.insert(std::pair(44,4444)) ; + int_multimap.insert(std::pair(55,5555)) ; + int_multimap.insert(std::pair(66,6666)) ; string_key_multimap.insert(std::pair("four", 4)) ; string_key_multimap.insert(std::pair("five", 5)) ; @@ -118,6 +142,23 @@ STLCheckpoint::STLCheckpoint(std::string in_name) : string_set.insert("abc") ; string_set.insert("def") ; + // for (int j = 0; j < 5; j++) { + // std::vector temp; + // for (int i = j; i < 10; i++) { + // temp.push_back(i); + // } + // vector_set.insert(temp); + // } + + for (int j = 0; j < 5; j++) { + std::vector temp; + for (int i = j; i < 10; i++) { + temp.push_back(i); + } + vector_queue.push(temp); + } + + long_multiset.insert(8000) ; long_multiset.insert(4000) ; long_multiset.insert(4000) ; @@ -141,8 +182,10 @@ STLCheckpoint::STLCheckpoint(std::string in_name) : string_stack.push("with the bigger") ; string_stack.push("Gee Bees") ; - stack_vector_int.push(v) ; - stack_vector_int.push(v) ; + std::vector temp_v1 = {1, 2, 3, 4}; + std::vector temp_v2 = {5, 6, 7, 8}; + stack_vector_int.push(temp_v1) ; + stack_vector_int.push(temp_v2) ; int_queue.push(1) ; int_queue.push(2) ; @@ -164,11 +207,11 @@ STLCheckpoint::STLCheckpoint(std::string in_name) : string_priority_queue.push("an") ; string_priority_queue.push("iPhone 4") ; - queue_vector_int.push(v) ; - queue_vector_int.push(v) ; + queue_vector_int.push(temp_v1) ; + queue_vector_int.push(temp_v2) ; - priority_queue_vector_int.push(v) ; - priority_queue_vector_int.push(v) ; + priority_queue_vector_int.push(temp_v1) ; + priority_queue_vector_int.push(temp_v2) ; int_pair.first = 10 ; int_pair.second = 20 ; @@ -197,6 +240,27 @@ STLCheckpoint::STLCheckpoint(std::string in_name) : pair_pair_pair.second.first = 53 ; pair_pair_pair.second.second = 54 ; + int_vec_pair.first = 5; + int_vec_pair.second.push_back(5); + int_vec_pair.second.push_back(10); + int_vec_pair.second.push_back(15); + int_vec_pair.second.push_back(20); + + vec_int_pair.second = 5; + vec_int_pair.first.push_back(5); + vec_int_pair.first.push_back(10); + vec_int_pair.first.push_back(15); + vec_int_pair.first.push_back(20); + + vec_vec_pair.first.push_back(5); + vec_vec_pair.first.push_back(10); + vec_vec_pair.first.push_back(15); + vec_vec_pair.first.push_back(20); + vec_vec_pair.second.push_back(5); + vec_vec_pair.second.push_back(10); + vec_vec_pair.second.push_back(15); + vec_vec_pair.second.push_back(20); + vector_vector_double[0][0] = 100 ; vector_vector_double[0][1] = 101 ; vector_vector_double[0][2] = 102 ; @@ -275,30 +339,363 @@ STLCheckpoint::STLCheckpoint(std::string in_name) : vector_vector_vector_double[4][3][1] = 4010 ; vector_vector_vector_double[4][3][2] = 4011 ; - return ; + for (int i = 0; i < 10; i++) { + UserClass temp; + for (int j = 0; j < 5; j++) { + temp.a[j] = i+j; + } + temp.b = 8888888888; + temp.c = "Here is a test string"; + + // We'll just make a pointer to the same stuff + + UserClass * user_class_ptr = (UserClass *) TMM_declare_var_s("UserClass"); + for (int j = 0; j < 5; j++) { + user_class_ptr->a[j] = i+j; + } + user_class_ptr->b = 8888888888; + user_class_ptr->c = "Here is a test string"; + + temp.d = user_class_ptr; + + vec_user_simple.emplace_back(temp); + } + + for (int i = 0; i < 10; i++) { + SimpleWrapper temp_wrapper; + temp_wrapper.a = 888; + for (int j = i; j < i+10; j++) { + temp_wrapper.vec.push_back(j); + } + vec_user_defined.emplace_back(temp_wrapper); + } + + for (int i = 0; i < 10; i++) { + SimpleWrapper * temp_wrapper = (SimpleWrapper *) TMM_declare_var_s("SimpleWrapper"); + temp_wrapper->a = 888; + for (int j = i; j < i+10; j++) { + temp_wrapper->vec.push_back(j); + } + vec_user_defined_ptr.push_back(temp_wrapper); + } + + + + return 0; } -int STLCheckpoint::speak() { - //message_publish(1,"Quack!\n") ; - //message_publish(1,"double_vector: %f %f %f\n", double_vector[0], double_vector[1], double_vector[2]) ; - //message_publish(1,"vector_vector_double[1]: %f %f %f\n", - // vector_vector_double[1][0], vector_vector_double[1][1], vector_vector_double[1][2]) ; - //message_publish(1,"vector_vector_vector_double[4][2]: %f %f %f\n", - // vector_vector_vector_double[4][2][0], vector_vector_vector_double[4][2][1], vector_vector_vector_double[4][2][2]) ; - //message_publish(1,"string_vector[0]: %s\n", string_vector[0].c_str()) ; - //message_publish(1,"map_int_vector_int[1][1] = %d\n", map_int_vector_int[1][1]) ; - //message_publish(1,"gcd = %d\n", gcd[std::pair(24,30)]) ; - //message_publish(1,"common_multiples = %d\n", common_multiples[std::pair(3,5)][1]) ; - //message_publish(1,"common_multiples = %d\n", common_multiples[std::pair(3,5)][1]) ; - //message_publish(1,"int_pair_int_int.second.second = %d\n", int_pair_int_int.second.second) ; - //message_publish(1,"pair_int_int_int.first.second = %d\n", pair_int_int_int.first.second) ; - //message_publish(1,"pair_pair_pair.second.first = %d\n", pair_pair_pair.second.first) ; - //message_publish(1,"int_queue.front = %d\n", int_queue.front()) ; - //message_publish(1,"int_priority_queue.top = %d\n", int_priority_queue.top()) ; - //message_publish(1,"uint_stack.top = %d\n", uint_stack.top()) ; - //message_publish(1,"queue_vector_int.front()[3] = %d\n", queue_vector_int.front()[3]) ; - //message_publish(1,"priority_queue_vector_int.top()[2] = %d\n", priority_queue_vector_int.top()[2]) ; +int STLCheckpoint::print() { + message_publish(1,"Quack!\n") ; + message_publish(1, "Double vector size: %d", double_vector.size() ); + message_publish(1,"double_vector: %f %f %f\n", double_vector[0], double_vector[1], double_vector[2]) ; + message_publish(1,"vector_vector_double[1]: %f %f %f\n", + vector_vector_double[1][0], vector_vector_double[1][1], vector_vector_double[1][2]) ; + message_publish(1,"vector_vector_vector_double[4][2]: %f %f %f\n", + vector_vector_vector_double[4][2][0], vector_vector_vector_double[4][2][1], vector_vector_vector_double[4][2][2]) ; + message_publish(1,"string_vector[0]: %s\n", string_vector[0].c_str()) ; + message_publish(1,"map_int_vector_int[1][1] = %d\n", map_int_vector_int[1][1]) ; + message_publish(1,"gcd = %d\n", gcd[std::pair(24,30)]) ; + message_publish(1,"common_multiples = %d\n", common_multiples[std::pair(3,5)][1]) ; + message_publish(1,"common_multiples = %d\n", common_multiples[std::pair(3,5)][1]) ; + message_publish(1,"int_pair_int_int.second.second = %d\n", int_pair_int_int.second.second) ; + message_publish(1,"pair_int_int_int.first.second = %d\n", pair_int_int_int.first.second) ; + message_publish(1,"pair_pair_pair.second.first = %d\n", pair_pair_pair.second.first) ; + message_publish(1,"int_queue.front = %d\n", int_queue.front()) ; + message_publish(1,"int_priority_queue.top = %d\n", int_priority_queue.top()) ; + message_publish(1,"uint_stack.top = %d\n", uint_stack.top()) ; + message_publish(1,"queue_vector_int.front()[3] = %d\n", queue_vector_int.front()[3]) ; + message_publish(1,"priority_queue_vector_int.top()[2] = %d\n", priority_queue_vector_int.top()[2]) ; message_publish(1,"stack_vector_int.top()[1] = %d\n", stack_vector_int.top()[1]) ; return 0 ; } +int STLCheckpoint::test() { + std::cout << "Running test jobs" << std::endl; + const char *test_suite = "STLCheckpoint"; + + TRICK_EXPECT_EQ( double_vector.size(), 3, test_suite, "double_vector size"); + TRICK_EXPECT_EQ( double_vector[0], 4, test_suite, "double_vector[0]"); + TRICK_EXPECT_EQ( double_vector[1], 5, test_suite, "double_vector[1]"); + TRICK_EXPECT_EQ( double_vector[2], 6, test_suite, "double_vector[2]"); + TRICK_EXPECT_EQ( vector_vector_double[1][0], 103, test_suite, "vector_vector_double[1][0]"); + TRICK_EXPECT_EQ( vector_vector_double[1][1], 104, test_suite, "vector_vector_double[1][1]"); + TRICK_EXPECT_EQ( vector_vector_double[1][2], 105, test_suite, "vector_vector_double[1][2]"); + TRICK_EXPECT_EQ( vector_vector_vector_double[4][2][0], 4006, test_suite, "vector_vector_vector_double[4][2][0]"); + TRICK_EXPECT_EQ( vector_vector_vector_double[4][2][1], 4007, test_suite, "vector_vector_vector_double[4][2][1]"); + TRICK_EXPECT_EQ( vector_vector_vector_double[4][2][2], 4008, test_suite, "vector_vector_vector_double[4][2][2]"); + TRICK_EXPECT_EQ( string_vector[0], std::string("It"), test_suite, "string_vector"); + + TRICK_EXPECT_EQ( double_map[44.4], 444.4, test_suite, "double_map[44.4]" ); + + TRICK_EXPECT_EQ( string_data_map[7], std::string("seiben"), test_suite, "string_data_map[7]" ); + TRICK_EXPECT_EQ( string_data_map[9], std::string("neun") , test_suite, "string_data_map[9]"); + + std::vector< int > v ; + v.push_back(2) ; + v.push_back(4) ; + v.push_back(6) ; + v.push_back(8) ; + TRICK_EXPECT_EQ( map_int_vector_int[1], v, test_suite, "map_int_vector_int[1]"); + + std::pair< int , int > p ; + p.first = 24 ; + p.second = 30 ; + TRICK_EXPECT_EQ(gcd[p], 6, test_suite, "gcd[p]" ); + + p.first = 50 ; + p.second = 60 ; + std::pair< int , int > q ; + q.first = 70 ; + q.second = 80 ; + TRICK_EXPECT_EQ( map_pair_pair[p], q, test_suite, "map_pair_pair[p]" ); + + p.first = 3 ; + p.second = 5 ; + v.clear() ; + v.push_back(15) ; + v.push_back(30) ; + v.push_back(45) ; + v.push_back(60) ; + TRICK_EXPECT_EQ( common_multiples[p], v, test_suite, "common_multiples" ); + + p.first = 3 ; + p.second = 7 ; + v.clear() ; + v.push_back(21) ; + v.push_back(42) ; + v.push_back(84) ; + v.push_back(168) ; + TRICK_EXPECT_EQ( common_multiples[p], v, test_suite, "common_multiples" ); + + + TRICK_EXPECT_EQ( string_map["sister"], "Lisa", test_suite, "string_map[sister]" ); + TRICK_EXPECT_EQ( string_map["dog"], "Santa's Little Helper", test_suite, "string_map[dog]" ); + + + // The easiest way to test the multimaps is to just rebuild copies and compare + std::multimap int_multimap_copy; + int_multimap_copy.insert(std::pair(44,444)) ; + int_multimap_copy.insert(std::pair(55,555)) ; + int_multimap_copy.insert(std::pair(66,666)) ; + int_multimap_copy.insert(std::pair(44,4444)) ; + int_multimap_copy.insert(std::pair(55,5555)) ; + int_multimap_copy.insert(std::pair(66,6666)) ; + TRICK_EXPECT_EQ(int_multimap, int_multimap_copy , test_suite, "int_multimap"); + + int_multimap_copy.insert(std::pair(66,66666)) ; + TRICK_EXPECT_NE(int_multimap, int_multimap_copy , test_suite, "int_multimap_fail"); + + std::multimap string_key_multimap_copy; + string_key_multimap_copy.insert(std::pair("four", 4)) ; + string_key_multimap_copy.insert(std::pair("five", 5)) ; + string_key_multimap_copy.insert(std::pair("six", 6)) ; + string_key_multimap_copy.insert(std::pair("four", 44)) ; + string_key_multimap_copy.insert(std::pair("five", 55)) ; + string_key_multimap_copy.insert(std::pair("six", 66)) ; + TRICK_EXPECT_EQ(string_key_multimap, string_key_multimap_copy , test_suite, "string_key_multimap"); + + std::multimap string_data_multimap_copy; + string_data_multimap_copy.insert(std::pair(7, "seiben")) ; + string_data_multimap_copy.insert(std::pair(8, "acht")) ; + string_data_multimap_copy.insert(std::pair(9, "neun")) ; + string_data_multimap_copy.insert(std::pair(7, "seven")) ; + string_data_multimap_copy.insert(std::pair(8, "eight")) ; + string_data_multimap_copy.insert(std::pair(9, "nine")) ; + TRICK_EXPECT_EQ(string_data_multimap, string_data_multimap_copy , test_suite, "string_data_multimap"); + + std::multimap string_multimap_copy; + string_multimap_copy.insert(std::pair("sister","Lisa")) ; + string_multimap_copy.insert(std::pair("dog","Santa's Little Helper")) ; + string_multimap_copy.insert(std::pair("sister","Meg")) ; + string_multimap_copy.insert(std::pair("dog","Brian")) ; + TRICK_EXPECT_EQ(string_multimap, string_multimap_copy , test_suite, "string_multimap"); + + + // TODO: fix this case + // TRICK_EXPECT_EQ(vec_user_defined.size(), 10, test_suite, "vec_user_defined"); + // for (int i = 0; i < vec_user_defined.size(); i++) { + // TRICK_EXPECT_EQ(vec_user_defined[i].vec.size(), 10, test_suite, "vec_user_defined"); + // TRICK_EXPECT_EQ(vec_user_defined[i].a, 888, test_suite, "vec_user_defined"); + // for (int j = i; j < i+vec_user_defined[i].vec.size(); j++) { + // TRICK_EXPECT_EQ(vec_user_defined[i].vec[j-i], j, test_suite, "vec_user_defined"); + // } + // } + + TRICK_EXPECT_EQ(vec_user_defined_ptr.size(), 10, test_suite, "vec_user_defined_ptr"); + for (int i = 0; i < vec_user_defined_ptr.size(); i++) { + TRICK_EXPECT_EQ(vec_user_defined_ptr[i]->vec.size(), 10, test_suite, "vec_user_defined_ptr"); + TRICK_EXPECT_EQ(vec_user_defined_ptr[i]->a, 888, test_suite, "vec_user_defined_ptr"); + std::vector test_vec; + for (int j = i; j < i+vec_user_defined_ptr[i]->vec.size(); j++) { + test_vec.push_back(j); + } + TRICK_EXPECT_EQ(vec_user_defined_ptr[i]->vec, test_vec, test_suite, "vec_user_defined_ptr"); + } + + + std::vector string_vector_copy = {"It", "has", "the", "Wi-Fies"}; + TRICK_EXPECT_EQ(string_vector, string_vector_copy, test_suite, "string_vector"); + + std::list short_list_copy = {400, 401, 402}; + int list_index = 0; + TRICK_EXPECT_EQ(short_list, short_list_copy, test_suite, "short_list"); + + std::list string_list_copy = {"I", "don't", "care"}; + TRICK_EXPECT_EQ(string_list, string_list_copy, test_suite, "string_list"); + + std::deque float_deque_copy = {98.7, 65.4, 32.1}; + TRICK_EXPECT_EQ(float_deque, float_deque_copy, test_suite, "float_deque"); + + std::deque string_deque_copy = {"Welcome", "to", "PhoneMart"}; + TRICK_EXPECT_EQ(string_deque, string_deque_copy, test_suite, "string_deque"); + + std::set int_set_copy = {8000, 4000, 2000, 1000}; + TRICK_EXPECT_EQ(int_set, int_set_copy, test_suite, "int_set"); + + std::set string_set_copy = {"efg", "abc", "def"}; + TRICK_EXPECT_EQ(string_set, string_set_copy, test_suite, "string_set"); + + std::queue> vector_queue_copy; + for (int j = 0; j < 5; j++) { + std::vector temp; + for (int i = j; i < 10; i++) { + temp.push_back(i); + } + vector_queue_copy.push(temp); + } + TRICK_EXPECT_EQ(vector_queue, vector_queue_copy, test_suite, "vector_queue"); + + std::multiset long_multiset_copy = {8000, 4000, 4000, 2000, 1000}; + TRICK_EXPECT_EQ(long_multiset, long_multiset_copy, test_suite, "long_multiset"); + + std::multiset string_multiset_copy = {"efg", "abc", "def", "efg", "abc", "def"}; + TRICK_EXPECT_EQ(string_multiset, string_multiset_copy, test_suite, "string_multiset"); + + std::stack uint_stack_copy; + uint_stack_copy.push(1) ; + uint_stack_copy.push(2) ; + uint_stack_copy.push(3) ; + uint_stack_copy.push(4) ; + TRICK_EXPECT_EQ(uint_stack, uint_stack_copy, test_suite, "uint_stack"); + + std::stack string_stack_copy; + string_stack_copy.push("I") ; + string_stack_copy.push("want the one") ; + string_stack_copy.push("with the bigger") ; + string_stack_copy.push("Gee Bees") ; + TRICK_EXPECT_EQ(string_stack, string_stack_copy, test_suite, "string_stack"); + + std::stack> stack_vector_int_copy; + std::vector temp_v1 = {1, 2, 3, 4}; + std::vector temp_v2 = {5, 6, 7, 8}; + stack_vector_int_copy.emplace(temp_v1) ; + stack_vector_int_copy.emplace(temp_v2) ; + TRICK_EXPECT_EQ(stack_vector_int, stack_vector_int_copy, test_suite, "stack_vector_int"); + + std::queue int_queue_copy; + int_queue_copy.push(1) ; + int_queue_copy.push(2) ; + int_queue_copy.push(3) ; + int_queue_copy.push(4) ; + TRICK_EXPECT_EQ(int_queue, int_queue_copy, test_suite, "int_queue"); + + std::queue string_queue_copy; + string_queue_copy.push("I") ; + string_queue_copy.push("want") ; + string_queue_copy.push("an") ; + string_queue_copy.push("iPhone 4") ; + TRICK_EXPECT_EQ(string_queue, string_queue_copy, test_suite, "string_queue"); + + // Why doesn't priority_queue have the == operator but literally everything else does >:( + std::priority_queue int_priority_queue_copy; + int_priority_queue_copy.push(3) ; + int_priority_queue_copy.push(2) ; + int_priority_queue_copy.push(4) ; + int_priority_queue_copy.push(1) ; + compare_data_structures_with_top(int_priority_queue_copy, int_priority_queue, "int_priority_queue"); + + std::priority_queue string_priority_queue_copy; + string_priority_queue_copy.push("I") ; + string_priority_queue_copy.push("want") ; + string_priority_queue_copy.push("an") ; + string_priority_queue_copy.push("iPhone 4") ; + compare_data_structures_with_top(string_priority_queue_copy, string_priority_queue, "string_priority_queue"); + + std::queue> queue_vector_int_copy; + queue_vector_int_copy.emplace(temp_v1) ; + queue_vector_int_copy.emplace(temp_v2) ; + TRICK_EXPECT_EQ(queue_vector_int, queue_vector_int_copy, test_suite, "queue_vector_int"); + + std::priority_queue> priority_queue_vector_int_copy; + priority_queue_vector_int_copy.emplace(temp_v1) ; + priority_queue_vector_int_copy.emplace(temp_v2) ; + compare_data_structures_with_top(priority_queue_vector_int_copy, priority_queue_vector_int, "priority_queue_vector_int"); + + std::pair int_pair_copy(10,20); + TRICK_EXPECT_EQ(int_pair, int_pair_copy, test_suite, "int_pair"); + + std::pair< std::string , int > string_first_pair_copy ("string first", 25); + TRICK_EXPECT_EQ(string_first_pair, string_first_pair_copy, test_suite, "string_first_pair"); + + std::pair< int , std::string > string_second_pair_copy (25, "string second"); + TRICK_EXPECT_EQ(string_second_pair_copy, string_second_pair, test_suite, "string_second_pair"); + + std::pair< std::string , std::string > string_pair_copy ("pair first string", "pair second string"); + TRICK_EXPECT_EQ(string_pair_copy, string_pair, test_suite, "string_pair"); + + + std::pair< int , std::pair< int, int > > int_pair_int_int_copy; + int_pair_int_int_copy.first = 200 ; + p.first = 10 ; + p.second = 20 ; + int_pair_int_int_copy.second = p ; + TRICK_EXPECT_EQ(int_pair_int_int_copy, int_pair_int_int, test_suite, "int_pair_int_int"); + + std::pair< std::pair< int, int > , int > pair_int_int_int_copy; + p.first = 15 ; + p.second = 12 ; + pair_int_int_int_copy.first = p ; + pair_int_int_int_copy.second = 180 ; + TRICK_EXPECT_EQ(pair_int_int_int_copy, pair_int_int_int, test_suite, "pair_int_int_int"); + + std::pair< std::pair< int, int > , std::pair< int, int > > pair_pair_pair_copy ; + pair_pair_pair_copy.first.first = 51 ; + pair_pair_pair_copy.first.second = 52 ; + pair_pair_pair_copy.second.first = 53 ; + pair_pair_pair_copy.second.second = 54 ; + TRICK_EXPECT_EQ(pair_pair_pair_copy, pair_pair_pair, test_suite, "pair_pair_pair"); + + // TODO: fix this case + // Check all the int/vec combo pairs together, for laziness + // TRICK_EXPECT_EQ(int_vec_pair.first, 5, test_suite, "int_vec_pair.first"); + // TRICK_EXPECT_EQ(vec_int_pair.second, 5, test_suite, "vec_int_pair.second"); + + // TRICK_EXPECT_EQ(int_vec_pair.second.size(), 4, test_suite, "int_vec_pair.second.size"); + // TRICK_EXPECT_EQ(vec_int_pair.first.size(), 4, test_suite, "vec_int_pair.first.size"); + // TRICK_EXPECT_EQ(vec_vec_pair.first.size(), 4, test_suite, "vec_vec_pair.first.size"); + // TRICK_EXPECT_EQ(vec_vec_pair.second.size(), 4, test_suite, "vec_vec_pair.second.size"); + + // for (int i = 0; i < int_vec_pair.second.size(); i++) { + // TRICK_EXPECT_EQ(int_vec_pair.second[i], (i+1)*5, test_suite, "int_vec_pair.second elems"); + // TRICK_EXPECT_EQ(vec_int_pair.first[i], (i+1)*5, test_suite, "vec_int_pair.first elems"); + // TRICK_EXPECT_EQ(vec_vec_pair.first[i], (i+1)*5, test_suite, "vec_vec_pair.first elems"); + // TRICK_EXPECT_EQ(vec_vec_pair.second[i], (i+1)*5, test_suite, "vec_vec_pair.second elems"); + + // } + + TRICK_EXPECT_EQ(vec_user_simple.size(), 10, test_suite, "vec_user_simple") + for (int i = 0; i < 10; i++) { + for (int j = 0; j < 5; j++) { + TRICK_EXPECT_EQ(vec_user_simple[i].a[j], i+j, test_suite, "vec_user_simple"); + TRICK_EXPECT_EQ(vec_user_simple[i].d->a[j], i+j, test_suite, "vec_user_simple"); + } + + TRICK_EXPECT_EQ(vec_user_simple[i].b, 8888888888, test_suite, "vec_user_simple"); + TRICK_EXPECT_EQ(vec_user_simple[i].d->b, 8888888888, test_suite, "vec_user_simple"); + + TRICK_EXPECT_EQ(vec_user_simple[i].c, "Here is a test string", test_suite, "vec_user_simple"); + TRICK_EXPECT_EQ(vec_user_simple[i].d->c, "Here is a test string", test_suite, "vec_user_simple"); + } + + +} diff --git a/test/SIM_stls/models/STLCheckpoint.hh b/test/SIM_stls/models/STLCheckpoint.hh index aca8de93..328615fe 100644 --- a/test/SIM_stls/models/STLCheckpoint.hh +++ b/test/SIM_stls/models/STLCheckpoint.hh @@ -18,13 +18,31 @@ #include #include + +class SimpleWrapper { + public: + int a; + std::vector vec; +}; + +class UserClass { + public: + int a[5]; + long long b; + std::string c; + UserClass * d; +}; + class STLCheckpoint { public: STLCheckpoint() ; - STLCheckpoint(std::string in_name) ; - int speak() ; + int addData() ; + int print() ; + int test() ; + + bool dataJobRun; std::string name ; @@ -54,6 +72,10 @@ class STLCheckpoint { std::set< int > int_set ; std::set< std::string > string_set ; + // std::set< std::vector > vector_set; + + std::queue< std::vector > vector_queue; + std::multiset< long > long_multiset ; std::multiset< std::string > string_multiset ; @@ -76,6 +98,10 @@ class STLCheckpoint { std::pair< int , std::string > string_second_pair ; std::pair< std::string , std::string > string_pair ; + std::pair< int, std::vector > int_vec_pair; + std::pair< std::vector, int > vec_int_pair; + std::pair< std::vector, std::vector > vec_vec_pair; + std::pair< int , std::pair< int, int > > int_pair_int_int ; std::pair< std::pair< int, int > , int > pair_int_int_int ; @@ -84,6 +110,12 @@ class STLCheckpoint { std::vector< std::vector< double > > vector_vector_double ; std::vector< std::vector< std::vector< double > > > vector_vector_vector_double ; //std::vector< std::list< double > > vector_list_double ; + + std::vector vec_user_simple; + std::vector vec_user_defined; + std::vector vec_user_defined_ptr; + + } ; #endif diff --git a/test/makefile b/test/makefile index 5ef52f11..f68e4f08 100644 --- a/test/makefile +++ b/test/makefile @@ -38,6 +38,9 @@ SIMS_TO_COMPILE_AND_RUN = \ SIM_threads \ SIM_trickified +# SIM_stls will run twice. First run is RUN_test/setup.py, which is added as a dependency to test in its S_overrides.mk file +# The second run is the normal RUN_test/unit_test.py which is run through this makefile. + # Sims with problems, no purpose, or maybe shouldn't be a test # SIM_leaks ( should be deleted ) # SIM_dynamic_sim_object ( not running, class won't instantiate ) diff --git a/trick_source/sim_services/CheckPointRestart/CheckPointRestart.cpp b/trick_source/sim_services/CheckPointRestart/CheckPointRestart.cpp index 4cf37280..002f1289 100644 --- a/trick_source/sim_services/CheckPointRestart/CheckPointRestart.cpp +++ b/trick_source/sim_services/CheckPointRestart/CheckPointRestart.cpp @@ -296,6 +296,11 @@ void Trick::CheckPointRestart::load_checkpoint(std::string file_name) { load_checkpoint_file_name = file_name ; } +void Trick::CheckPointRestart::load_checkpoint(std::string file_name, bool stls_on) { + trick_MM->set_restore_stls_default(stls_on); + load_checkpoint(file_name); +} + int Trick::CheckPointRestart::load_checkpoint_job() { JobData * curr_job ; diff --git a/trick_source/sim_services/CheckPointRestart/CheckPointRestart_c_intf.cpp b/trick_source/sim_services/CheckPointRestart/CheckPointRestart_c_intf.cpp index 20127bcc..71215aef 100644 --- a/trick_source/sim_services/CheckPointRestart/CheckPointRestart_c_intf.cpp +++ b/trick_source/sim_services/CheckPointRestart/CheckPointRestart_c_intf.cpp @@ -158,6 +158,30 @@ extern "C" int load_checkpoint( const char * file_name ) { } +/** + * @relates Trick::CheckPointRestart + * @copydoc Trick::CheckPointRestart::load_checkpoint + */ +extern "C" int load_checkpoint_stls( const char * file_name, int on_off ) { + + the_cpr->load_checkpoint(std::string(file_name), (bool) on_off) ; + + return(0) ; + +} + +/** + * @relates Trick::CheckPointRestart + * @copydoc Trick::CheckPointRestart::load_checkpoint + */ +extern "C" int load_checkpoint_objects( const char * file_name ) { + + the_cpr->load_checkpoint(std::string(file_name)) ; + + return(0) ; + +} + /** * @relates Trick::CheckPointRestart * @copydoc Trick::CheckPointRestart::load_checkpoint_job diff --git a/trick_source/sim_services/MemoryManager/MemoryManager.cpp b/trick_source/sim_services/MemoryManager/MemoryManager.cpp index a4dc37df..f6c5c497 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager.cpp @@ -7,7 +7,7 @@ Trick::MemoryManager * trick_MM = NULL; // CLASS VARIABLE INITIALIZATION int Trick::MemoryManager::instance_count = 0; - +bool Trick::MemoryManager::restore_stls_default = true; // CONSTRUCTOR Trick::MemoryManager::MemoryManager() diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_C_Intf.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_C_Intf.cpp index 48511468..527ded9e 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_C_Intf.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_C_Intf.cpp @@ -364,7 +364,7 @@ extern "C" void TMM_write_checkpoint(const char* filename) { */ extern "C" int TMM_read_checkpoint(const char* filename) { if (trick_MM != NULL) { - return ( trick_MM->read_checkpoint( filename)); + return ( trick_MM->read_checkpoint( filename )); } else { Trick::MemoryManager::emitError("TMM_read_checkpoint() called before MemoryManager instantiation.\n") ; return(1); @@ -377,7 +377,7 @@ extern "C" int TMM_read_checkpoint(const char* filename) { */ extern "C" int TMM_read_checkpoint_from_string(const char* str) { if (trick_MM != NULL) { - return ( trick_MM->read_checkpoint_from_string( str)); + return ( trick_MM->read_checkpoint_from_string( str )); } else { Trick::MemoryManager::emitError("TMM_read_checkpoint_from_string() called before MemoryManager instantiation.\n") ; return(1); @@ -390,13 +390,22 @@ extern "C" int TMM_read_checkpoint_from_string(const char* str) { */ extern "C" int TMM_init_from_checkpoint(const char* filename) { if (trick_MM != NULL) { - return ( trick_MM->init_from_checkpoint( filename)); + return ( trick_MM->init_from_checkpoint( filename )); } else { Trick::MemoryManager::emitError("TMM_init_from_checkpoint() called before MemoryManager instantiation.\n") ; return(1); } } +extern "C" int TMM_set_stl_restore (int on_off) { + if (trick_MM != NULL) { + return ( trick_MM->set_restore_stls_default( (bool) on_off )); + } else { + Trick::MemoryManager::emitError("TMM_set_stl_restore() called before MemoryManager instantiation.\n") ; + return(1); + } +} + /** @relates Trick::MemoryManager This is the C Language version of Trick::MemoryManager::add_shared_library_symbols( filename). diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp index afdced79..51f7106b 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp @@ -7,7 +7,12 @@ #include "trick/MemoryManager.hh" #include "trick/ClassicCheckPointAgent.hh" -int Trick::MemoryManager::read_checkpoint( std::istream *is, bool do_restore_stls /* default is false */) { +int Trick::MemoryManager::set_restore_stls_default (bool on_off) { + restore_stls_default = on_off; + return 0; +} + +int Trick::MemoryManager::read_checkpoint( std::istream *is, bool do_restore_stl) { ALLOC_INFO_MAP::iterator pos; ALLOC_INFO* alloc_info; @@ -23,7 +28,7 @@ int Trick::MemoryManager::read_checkpoint( std::istream *is, bool do_restore_stl // Search for stls and restore them - if(do_restore_stls) { + if(do_restore_stl) { for ( pos=alloc_info_map.begin() ; pos!=alloc_info_map.end() ; pos++ ) { restore_stls(pos->second) ; } @@ -59,12 +64,12 @@ int Trick::MemoryManager::read_checkpoint( std::istream *is, bool do_restore_stl return(0); } -int Trick::MemoryManager::read_checkpoint(const char* filename ) { +int Trick::MemoryManager::read_checkpoint( const char* filename, bool restore_stls ) { // Create a stream from the named file. std::ifstream infile(filename , std::ios::in); if (infile.is_open()) { - return ( read_checkpoint( &infile, true )) ; + return ( read_checkpoint( &infile, restore_stls )) ; } else { std::stringstream message; message << "Couldn't open \"" << filename << "\"." ; @@ -73,7 +78,7 @@ int Trick::MemoryManager::read_checkpoint(const char* filename ) { return 1; } -int Trick::MemoryManager::read_checkpoint_from_string(const char* s ) { +int Trick::MemoryManager::read_checkpoint_from_string(const char* s, bool restore_stls ) { // Create a stream from the string argument. std::stringstream ss; @@ -86,14 +91,14 @@ int Trick::MemoryManager::read_checkpoint_from_string(const char* s ) { */ ss << ";" ; } - return ( read_checkpoint( &ss )); + return ( read_checkpoint( &ss, restore_stls)); } else { emitError("Checkpoint string is NULL.") ; } return 1; } -int Trick::MemoryManager::init_from_checkpoint( std::istream *is) { +int Trick::MemoryManager::init_from_checkpoint(const char* filename, bool restore_stls ) { if (debug_level) { std::cout << std::endl << "Initializing from checkpoint" << std::endl; @@ -108,7 +113,8 @@ int Trick::MemoryManager::init_from_checkpoint( std::istream *is) { std::cout.flush(); } - read_checkpoint( is); + read_checkpoint( filename, restore_stls); + if (debug_level) { std::cout << std::endl << "Initialization from checkpoint finished." << std::endl; @@ -118,7 +124,7 @@ int Trick::MemoryManager::init_from_checkpoint( std::istream *is) { return 0 ; } -int Trick::MemoryManager::init_from_checkpoint(const char* filename ) { +int Trick::MemoryManager::init_from_checkpoint( std::istream *is, bool restore_stls) { if (debug_level) { std::cout << std::endl << "Initializing from checkpoint" << std::endl; @@ -128,12 +134,7 @@ int Trick::MemoryManager::init_from_checkpoint(const char* filename ) { reset_memory(); - if (debug_level) { - std::cout << std::endl << "- Reading checkpoint." << std::endl; - std::cout.flush(); - } - - read_checkpoint( filename); + read_checkpoint( is, restore_stls ); if (debug_level) { std::cout << std::endl << "Initialization from checkpoint finished." << std::endl; diff --git a/trick_source/sim_services/MemoryManager/test/.gitignore b/trick_source/sim_services/MemoryManager/test/.gitignore index 0495036d..ac11cb7b 100644 --- a/trick_source/sim_services/MemoryManager/test/.gitignore +++ b/trick_source/sim_services/MemoryManager/test/.gitignore @@ -18,3 +18,5 @@ MM_strdup_unittest MM_write_checkpoint MM_write_checkpoint_hexfloat MM_write_var_unittest +MM_stl_checkpoint +MM_stl_restore \ No newline at end of file diff --git a/trick_source/sim_services/MemoryManager/test/MM_read_checkpoint.cc b/trick_source/sim_services/MemoryManager/test/MM_read_checkpoint.cc index fc251cc4..8d1a0619 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_read_checkpoint.cc +++ b/trick_source/sim_services/MemoryManager/test/MM_read_checkpoint.cc @@ -262,8 +262,74 @@ TEST_F(MM_read_checkpoint, 2D_char_array) { EXPECT_EQ(result, 0); } - - - - +} + +TEST_F(MM_read_checkpoint, WrappedStl) { + memmgr->read_checkpoint_from_string( + "VectorWrapper my_vec;" + "int my_vec_vec[4];" + "clear_all_vars();" + "my_vec_vec = " + "{10, 20, 30, 40};"); + + VectorWrapper * vector = (VectorWrapper *) memmgr->ref_attributes("my_vec")->address; + + ASSERT_EQ(vector->vec.size(), 4); + for (int i = 0; i < 4; i++) { + EXPECT_EQ(vector->vec[i], (i+1)*10); + } +} + +TEST_F(MM_read_checkpoint, WrappedStlPreDeclared) { + VectorWrapper * vector = (VectorWrapper *) memmgr->declare_var("VectorWrapper my_vec"); + + memmgr->read_checkpoint_from_string( + "int my_vec_vec[4];" + "clear_all_vars();" + "my_vec_vec = " + "{10, 20, 30, 40};"); + + ASSERT_EQ(vector->vec.size(), 4); + for (int i = 0; i < 4; i++) { + EXPECT_EQ(vector->vec[i], (i+1)*10); + } +} + +TEST_F(MM_read_checkpoint, encapsulated_stl_test) { + + // std::vector my_vector; + Foo * my_foo_ptr = (Foo *) memmgr->declare_var("Foo my_foo"); + + memmgr->read_checkpoint_from_string( + "int my_foo_c[3];" + "my_foo.a = 5;" + "my_foo.b = 5.5;" + "my_foo_c = {1, 2, 3, 4};" + ); + + EXPECT_EQ(my_foo_ptr->a, 5); + EXPECT_EQ(my_foo_ptr->b, 5.5); + + ASSERT_EQ(my_foo_ptr->c.size(), 3); + EXPECT_EQ(my_foo_ptr->c[0], 1); + EXPECT_EQ(my_foo_ptr->c[1], 2); + EXPECT_EQ(my_foo_ptr->c[2], 3); +} + +TEST_F(MM_read_checkpoint, encapsulated_stl_test_stl_disabled) { + + // std::vector my_vector; + Foo * my_foo_ptr = (Foo *) memmgr->declare_var("Foo my_foo"); + + memmgr->read_checkpoint_from_string( + "int my_foo_c[3];" + "my_foo.a = 5;" + "my_foo.b = 5.5;" + "my_foo_c = {1, 2, 3, 4};", false); + + EXPECT_EQ(my_foo_ptr->a, 5); + EXPECT_EQ(my_foo_ptr->b, 5.5); + + // c should not be restored + ASSERT_EQ(my_foo_ptr->c.size(), 0); } diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc b/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc new file mode 100644 index 00000000..2640e63f --- /dev/null +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc @@ -0,0 +1,1121 @@ +#include "gtest/gtest.h" +#define private public + +#include "trick/MemoryManager.hh" +#include "trick/memorymanager_c_intf.h" +#include "MM_test.hh" +#include "MM_stl_testbed.hh" + +/* + This tests the implementations of checkpoint_stl + */ +class MM_stl_checkpoint : public ::testing::Test { + +protected: + Trick::MemoryManager *memmgr; + + MM_stl_checkpoint() { + try { + memmgr = new Trick::MemoryManager; + } catch (std::logic_error e) { + memmgr = NULL; + } + } + ~MM_stl_checkpoint() { + delete memmgr; + } + void SetUp() {} + void TearDown() {} +}; + +template +void validate_single (Trick::MemoryManager * memmgr, std::string object_name, std::string var_name, T expected_data) { + std::string temp_name = object_name + "_" + var_name; + ASSERT_TRUE(memmgr->var_exists(temp_name) == 1); + + REF2 * data_ref = memmgr->ref_attributes(temp_name.c_str()); + T * data = (T *) data_ref->address; + + ASSERT_TRUE(data != NULL); + + EXPECT_EQ(*data, expected_data); + + free (data_ref); +} + +template +void validate_temp_sequence (Trick::MemoryManager * memmgr, std::string object_name, std::string var_name, std::vector expected_data) { + std::string temp_name = object_name + "_" + var_name; + ASSERT_TRUE(memmgr->var_exists(temp_name) == 1); + + REF2 * data_ref = memmgr->ref_attributes(temp_name.c_str()); + T * data = (T *) data_ref->address; + + ASSERT_TRUE(data != NULL); + EXPECT_EQ(data_ref->attr->num_index, 1); + ASSERT_EQ(data_ref->attr->index[0].size, expected_data.size()); + + for (int i = 0; i < expected_data.size(); i++) { + EXPECT_EQ(data[i], expected_data[i]); + } + + free (data_ref); + +} + +void validate_links (Trick::MemoryManager * memmgr, std::string object_name, std::string top_level_name, std::vector lengths) { + std::string temp_name = object_name + "_" + top_level_name; + ASSERT_TRUE(memmgr->var_exists(temp_name) == 1); + + REF2 * data_ref = memmgr->ref_attributes(temp_name.c_str()); + std::string * data = (std::string *) data_ref->address; + ASSERT_EQ(data_ref->attr->index[0].size, lengths.size()); + + for (int i = 0; i < lengths.size(); i++) { + std::string inner_name = temp_name + "_" + std::to_string(i); + EXPECT_EQ(inner_name, data[i]); + REF2 * ref = memmgr->ref_attributes(inner_name.c_str()); + ASSERT_EQ(ref->attr->index[0].size, lengths[i]); + } +} + +void validate_links_pairs (Trick::MemoryManager * memmgr, std::string object_name, std::string top_level_name, int num_pairs) { + std::string temp_name = object_name + "_" + top_level_name; + ASSERT_TRUE(memmgr->var_exists(temp_name) == 1); + + REF2 * data_ref = memmgr->ref_attributes(temp_name.c_str()); + std::string * data = (std::string *) data_ref->address; + ASSERT_EQ(data_ref->attr->index[0].size, num_pairs); + + for (int i = 0; i < num_pairs; i++) { + std::string inner_name = temp_name + "_" + std::to_string(i); + EXPECT_EQ(inner_name, data[i]); + std::string first_name = inner_name + "_first"; + std::string second_name = inner_name + "_second"; + + ASSERT_TRUE(memmgr->var_exists(first_name) == 1); + ASSERT_TRUE(memmgr->var_exists(second_name) == 1); + } +} + +template +void validate_temp_set (Trick::MemoryManager * memmgr, std::string object_name, std::string var_name, std::set expected_data) { + std::string temp_name = object_name + "_" + var_name; + ASSERT_TRUE(memmgr->var_exists(temp_name) == 1); + + REF2 * data_ref = memmgr->ref_attributes(temp_name.c_str()); + T * data = (T *) data_ref->address; + + ASSERT_TRUE(data != NULL); + EXPECT_EQ(data_ref->attr->num_index, 1); + ASSERT_EQ(data_ref->attr->index[0].size, expected_data.size()); + + std::set reconstructed; + for (int i = 0; i < expected_data.size(); i++) { + reconstructed.insert(data[i]); + } + + EXPECT_EQ(reconstructed, expected_data); + + free (data_ref); + +} + + +template +void validate_temp_pair (Trick::MemoryManager * memmgr, std::string object_name, std::string var_name, std::pair expected_data) { + std::string temp_name = object_name + "_" + var_name; + std::string first_name = temp_name + "_first"; + std::string second_name = temp_name + "_second"; + + ASSERT_TRUE(memmgr->var_exists(first_name) == 1); + ASSERT_TRUE(memmgr->var_exists(second_name) == 1); + + REF2 * first_data_ref = memmgr->ref_attributes(first_name.c_str()); + First * first_data = (First *) first_data_ref->address; + + REF2 * second_data_ref = memmgr->ref_attributes(second_name.c_str()); + Second * second_data = (Second *) second_data_ref->address; + + ASSERT_TRUE(first_data != NULL); + ASSERT_TRUE(second_data != NULL); + + EXPECT_EQ(expected_data.first, *first_data); + EXPECT_EQ(expected_data.second, *second_data); + + free (first_data_ref); + free (second_data_ref); +} + + +template +void validate_temp_map (Trick::MemoryManager * memmgr, std::string object_name, std::string var_name, std::map expected_data) { + std::string temp_name = object_name + "_" + var_name; + std::string keys_name = temp_name + "_keys"; + std::string vals_name = temp_name + "_data"; + + ASSERT_TRUE(memmgr->var_exists(keys_name) == 1); + ASSERT_TRUE(memmgr->var_exists(vals_name) == 1); + + REF2 * keys_data_ref = memmgr->ref_attributes(keys_name.c_str()); + Key * keys_data = (Key *) keys_data_ref->address; + + REF2 * vals_data_ref = memmgr->ref_attributes(vals_name.c_str()); + Val * vals_data = (Val *) vals_data_ref->address; + + ASSERT_TRUE(keys_data != NULL); + ASSERT_TRUE(vals_data != NULL); + + EXPECT_EQ(keys_data_ref->attr->num_index, 1); + EXPECT_EQ(vals_data_ref->attr->num_index, 1); + + ASSERT_EQ(keys_data_ref->attr->index[0].size, expected_data.size()); + ASSERT_EQ(vals_data_ref->attr->index[0].size, expected_data.size()); + + // This is a little tricky - i don't think we can rely on the order being + // the same, but want to check that the data is exactly the same. + // Lazy way - make a set of all the keys that were accessed in our expected + // map, and make sure that the size is the same. + std::set keySet; + for (int i = 0; i < expected_data.size(); i++) { + Key k = keys_data[i]; + Val v = vals_data[i]; + + // To check for completeness, like if we accidentally wrote out duplicate keys but the size was the same + keySet.insert(k); + + // These should be a pair in the expected map + auto result = expected_data.find(k); + ASSERT_TRUE(result != expected_data.end()); + EXPECT_EQ(result->second, v); + } + + ASSERT_EQ(keySet.size(), expected_data.size()); + + free (keys_data_ref); + free (vals_data_ref); +} + +// Vectors + +TEST_F(MM_stl_checkpoint, i_vec ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(10); + + // Prepare the STL to be tested + for (int i = 0; i < test_data.size(); i++) { + testbed->i_vec.push_back(test_data[i]); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_vec")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_vec, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_vec"), test_data); +} + +TEST_F(MM_stl_checkpoint, i_s_vec ) { + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector> test_data; + for (int i = 0; i < 10; i++) { + std::vector test_data_inner = get_test_data(10); + testbed->i_s_vec.emplace_back(test_data_inner); + test_data.emplace_back(test_data_inner); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_s_vec")->attr; + + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_s_vec, "my_alloc", vec_attr->name) ; + + for (int i = 0; i < test_data.size(); i++) { + std::string var_name = "i_s_vec_" + std::to_string(i); + validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, test_data[i]); + } + + validate_links(memmgr, std::string("my_alloc"), std::string("i_s_vec"), std::vector(10, 10)); +} + +TEST_F(MM_stl_checkpoint, string_vec ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(20); + for (int i = 0; i < test_data.size(); i++) { + testbed->string_vec.emplace_back(test_data[i]); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.string_vec")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->string_vec, "my_alloc", vec_attr->name) ; + std::string var_name = "string_vec"; + + // ASSERT + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("string_vec"), test_data); +} + +TEST_F(MM_stl_checkpoint, s_vec ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(20); + for (int i = 0; i < test_data.size(); i+=2) { + testbed->s_vec.emplace_back(test_data[i], test_data[i+1]); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_vec")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->s_vec, "my_alloc", vec_attr->name) ; + + // ASSERT + for (int i = 0; i < test_data.size()/2; i++) { + std::string var_name = "s_vec_" + std::to_string(i); + validate_temp_pair(memmgr, std::string("my_alloc"), var_name, std::pair(test_data[i*2], test_data[i*2+1])); + } + + validate_links_pairs(memmgr, std::string("my_alloc"), std::string("s_vec"), test_data.size()/2); +} + + +// Pairs +// TODO: Nested sequences do not work + +TEST_F(MM_stl_checkpoint, i_i_pair ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(2); + testbed->i_i_pair.first = test_data[0]; + testbed->i_i_pair.second = (float) test_data[1]; + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_i_pair")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_i_pair, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_pair(memmgr, std::string("my_alloc"), vec_attr->name, std::pair(test_data[0], test_data[1])); +} + +TEST_F(MM_stl_checkpoint, DISABLED_i_s_pair ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_key = get_test_data(1); + std::vector test_val = get_test_data(20); + + testbed->i_s_pair.first = test_key[0]; + for (bool val : test_val) { + testbed->i_s_pair.second.push(val); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_s_pair")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_s_pair, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_links(memmgr, std::string("my_alloc"), std::string("i_s_pair_second"), std::vector(1, test_val.size())); + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_s_pair_second_inner"), test_val); + // Oh boy this one actually doesn't work!!!!! + // TODO: fix i_s_pair +} + +TEST_F(MM_stl_checkpoint, DISABLED_s_i_pair ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_val = get_test_data(1); + std::vector test_key = get_test_data(20); + + testbed->s_i_pair.second = test_val[0]; + for (bool val : test_key) { + testbed->s_i_pair.first.push(val); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_i_pair")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->s_i_pair, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("s_i_pair_first_inner"), test_key); + + // Oh boy this one actually doesn't work!!!!! + // Same as the other one + // TODO: fix s_i_pair +} + + + +TEST_F(MM_stl_checkpoint, DISABLED_i_v_pair ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_key = get_test_data(1); + std::vector test_val = get_test_data(20); + + testbed->i_v_pair.first = test_key[0]; + for (bool val : test_val) { + testbed->i_v_pair.second.push_back(val); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_v_pair")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_v_pair, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_v_pair_second"), test_val); + + // Oh boy this one actually doesn't work!!!!! + // TODO: fix i_s_pair +} + + +TEST_F(MM_stl_checkpoint, pair_pair ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + testbed->pair_pair.first.first = 1; + testbed->pair_pair.first.second = 2; + + testbed->pair_pair.second = 3; + + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.pair_pair")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->pair_pair, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_single(memmgr, std::string("my_alloc"), std::string("pair_pair_second"), 3); + validate_temp_pair(memmgr, std::string("my_alloc"), std::string("pair_pair_first"), std::pair(1, 2)); +} + + + +// Maps + +TEST_F(MM_stl_checkpoint, i_i_map ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_keys = get_test_data(20); + std::vector test_vals = get_test_data(20); + std::map test_map; + + for (int i = 0; i < test_keys.size(); i++) { + test_map[test_keys[i]] = test_vals[i]; + testbed->i_i_map[test_keys[i]] = test_vals[i]; + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_i_map")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_i_map, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_map(memmgr, std::string("my_alloc"), std::string("i_i_map"), test_map); +} + +TEST_F(MM_stl_checkpoint, i_s_map ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_keys = get_test_data(3); + std::vector test_strings = get_test_data(20); + std::map> test_map; + + int start_index = 0; + std::vector lengths = {7, 1, 12}; + for (int i = 0; i < lengths.size(); i++) { + for (int j = 0; j < lengths[i]; j++) { + testbed->i_s_map[test_keys[i]].push(test_strings[start_index + j]); + test_map[test_keys[i]].push(test_strings[start_index + j]); + } + start_index += lengths[i]; + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_s_map")->attr; + std::set keyset (test_keys.begin(), test_keys.end()); + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_s_map, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_set(memmgr, std::string("my_alloc"), std::string("i_s_map_keys"), keyset); + + std::vector sorted_lengths; + int i = 0; + for (auto it : test_map) { + std::vector expected_data; + while (!it.second.empty()) { + expected_data.push_back(it.second.top()); + it.second.pop(); + } + std::string var_name = "i_s_map_data_" + std::to_string(i++); + validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, expected_data); + sorted_lengths.push_back(expected_data.size()); + } + + validate_links(memmgr, std::string("my_alloc"), std::string("i_s_map_data"), sorted_lengths); +} + + +TEST_F(MM_stl_checkpoint, s_i_map ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_keys = get_test_data(20); + std::vector test_vals = get_test_data(3); + + std::map, std::string> test_map; + + std::vector lengths = {7, 1, 12}; + + int start_index = 0; + for (int i = 0; i < lengths.size(); i++) { + test_map[std::set(test_keys.begin()+start_index, test_keys.begin()+start_index+lengths[i])] = test_vals[i]; + testbed->s_i_map[std::set(test_keys.begin()+start_index, test_keys.begin()+start_index+lengths[i])] = test_vals[i]; + start_index += lengths[i]; + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_i_map")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->s_i_map, "my_alloc", vec_attr->name) ; + + + // the ordering of the map is making life hard + // ASSERT + int i = 0; + std::vector values_in_the_right_order; + std::vector lengths_in_the_right_order; + + for (auto it : test_map) { + std::string var_name = "s_i_map_keys_" + std::to_string(i++); + validate_temp_set(memmgr, std::string("my_alloc"), var_name, it.first); + values_in_the_right_order.push_back(it.second); + lengths_in_the_right_order.push_back(it.first.size()); + } + validate_links(memmgr, std::string("my_alloc"), std::string("s_i_map_keys"), lengths_in_the_right_order); + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("s_i_map_data"), values_in_the_right_order); +} + +TEST_F(MM_stl_checkpoint, s_s_map ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_keys = get_test_data(20); + std::vector test_vals = get_test_data(40); + + std::map, std::vector> test_map; + + for (int i = 0; i < 10; i++) { + testbed->s_s_map[std::pair(test_keys[i*2], test_keys[(i*2)+1])] = std::vector(test_vals.begin() + (i*4), test_vals.begin() + (i+1)*4); + test_map[std::pair(test_keys[i*2], test_keys[(i*2)+1])] = std::vector(test_vals.begin() + (i*4), test_vals.begin() + (i+1)*4); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_s_map")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->s_s_map, "my_alloc", vec_attr->name) ; + + // the ordering of the map is making life hard + // ASSERT + int i = 0; + std::vector data_lengths; + for (auto it : test_map) { + std::pair expected_key = it.first; + std::string key_name = "s_s_map_keys_" + std::to_string(i); + validate_temp_pair(memmgr, std::string("my_alloc"), key_name, expected_key); + + std::vector expected_data = it.second; + std::string data_name = "s_s_map_data_" + std::to_string(i); + validate_temp_sequence(memmgr, std::string("my_alloc"), data_name, expected_data); + + data_lengths.push_back(expected_data.size()); + i++; + } + + validate_links_pairs(memmgr, std::string("my_alloc"), std::string("s_s_map_keys"), test_map.size()); + validate_links(memmgr, std::string("my_alloc"), std::string("s_s_map_data"), data_lengths); +} + + +// Queue + + +TEST_F(MM_stl_checkpoint, i_queue ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(10); + + // Prepare the STL to be tested + for (int i = 0; i < test_data.size(); i++) { + testbed->i_queue.push(test_data[i]); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_queue")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_queue, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_queue"), test_data); +} + +TEST_F(MM_stl_checkpoint, s_queue ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_first = get_test_data(10); + std::vector test_second = get_test_data(10); + + // Prepare the STL to be tested + for (int i = 0; i < test_first.size(); i++) { + testbed->s_queue.push(std::pair(test_first[i], test_second[i])); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_queue")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->s_queue, "my_alloc", vec_attr->name) ; + + // ASSERT + for (int i = 0; i < test_first.size(); i++) { + std::string var_name = "s_queue_" + std::to_string(i); + validate_temp_pair(memmgr, std::string("my_alloc"), var_name, std::pair(test_first[i], test_second[i])); + } + validate_links_pairs(memmgr, std::string("my_alloc"), std::string("s_queue"), test_first.size()); +} + + +TEST_F(MM_stl_checkpoint, nested_list_queue ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(10); + std::vector list_sizes = {2, 7, 1}; + // Prepare the STL to be tested + + int data_index = 0; + for (int i = 0; i < list_sizes.size(); i++) { + testbed->nested_list_queue.push(std::list(test_data.begin() + data_index, test_data.begin() + data_index + list_sizes[i])); + data_index += list_sizes[i]; + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.nested_list_queue")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->nested_list_queue, "my_alloc", vec_attr->name) ; + + // ASSERT + data_index = 0; + for (int i = 0; i < list_sizes.size(); i++) { + std::string var_name = "nested_list_queue_" + std::to_string(i); + validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, std::vector(test_data.begin() + data_index, test_data.begin() + data_index + list_sizes[i])); + data_index += list_sizes[i]; + } + + validate_links(memmgr, std::string("my_alloc"), std::string("nested_list_queue"), list_sizes); +} + + + +// Stacks + +TEST_F(MM_stl_checkpoint, i_stack ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(10); + + // Prepare the STL to be tested + for (int i = 0; i < test_data.size(); i++) { + testbed->i_stack.push(test_data[i]); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_stack")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_stack, "my_alloc", vec_attr->name) ; + + // ASSERT + // Have the pass the test data in reverse order + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_stack"), std::vector (test_data.rbegin(), test_data.rend())); +} + +TEST_F(MM_stl_checkpoint, s_stack ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_first = get_test_data(10); + std::vector test_second = get_test_data(10); + + // Prepare the STL to be tested + for (int i = 0; i < test_first.size(); i++) { + testbed->s_stack.push(std::pair(test_first[i], test_second[i])); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_stack")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->s_stack, "my_alloc", vec_attr->name) ; + + // ASSERT + for (int i = 0; i < test_first.size(); i++) { + std::string var_name = "s_stack_" + std::to_string(i); + // data in reverse order + validate_temp_pair(memmgr, std::string("my_alloc"), var_name, std::pair(test_first[test_first.size()-1-i], test_second[test_first.size()-1-i])); + } + + validate_links_pairs(memmgr, std::string("my_alloc"), std::string("s_stack"), test_first.size()); +} + + +TEST_F(MM_stl_checkpoint, nested_list_stack ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(10); + std::vector list_sizes = {2, 7, 1}; + // Prepare the STL to be tested + + int data_index = 0; + for (int i = 0; i < list_sizes.size(); i++) { + testbed->nested_list_stack.push(std::list(test_data.begin() + data_index, test_data.begin() + data_index + list_sizes[i])); + data_index += list_sizes[i]; + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.nested_list_stack")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->nested_list_stack, "my_alloc", vec_attr->name) ; + + // ASSERT + data_index = 0; + for (int i = 0; i < list_sizes.size(); i++) { + // reverse data - just go through the lists backwards + std::string var_name = "nested_list_stack_" + std::to_string(list_sizes.size()-1-i); + validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, std::vector(test_data.begin() + data_index, test_data.begin() + data_index + list_sizes[i])); + data_index += list_sizes[i]; + } + + validate_links(memmgr, std::string("my_alloc"), std::string("nested_list_stack"), std::vector(list_sizes.rbegin(), list_sizes.rend())); +} + + + +// Sets TODO: No support for nested STLs in sets. +// These will fail to compile + + +TEST_F(MM_stl_checkpoint, DISABLED_i_set ) { + // ARRANGE + // Make a testbed + // STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + // // Likely to be some repeats in here + // std::vector test_data = get_test_data(1000); + + // // Prepare the STL to be tested + // for (int i = 0; i < test_data.size(); i++) { + // testbed->i_set.insert(test_data[i]); + // } + + // ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_set")->attr; + + // // ACT + // // Call the checkpoint function that is being tested + // (vec_attr->checkpoint_stl)((void *) &testbed->i_set, "my_alloc", vec_attr->name) ; + + // // ASSERT + // validate_temp_set(memmgr, std::string("my_alloc"), std::string("i_set"), std::set (test_data.begin(), test_data.end())); +} + +TEST_F(MM_stl_checkpoint, DISABLED_s_set ) { + // ARRANGE + // Make a testbed + // STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + // std::vector test_first = get_test_data(10); + // std::vector test_second = get_test_data(10); + + // // Prepare the STL to be tested + // for (int i = 0; i < test_first.size(); i++) { + // testbed->s_set.insert(std::pair(test_first[i], test_second[i])); + // } + + // ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_set")->attr; + + // // ACT + // // Call the checkpoint function that is being tested + // (vec_attr->checkpoint_stl)((void *) &testbed->s_set, "my_alloc", vec_attr->name) ; + + // // ASSERT + // for (int i = 0; i < test_first.size(); i++) { + // std::string var_name = "s_set_" + std::to_string(i); + // validate_temp_pair(memmgr, std::string("my_alloc"), var_name, std::pair(test_first[i], test_second[i])); + // } +} + + +TEST_F(MM_stl_checkpoint, DISABLED_nested_list_set ) { + // // ARRANGE + // // Make a testbed + // STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + // std::vector test_data = get_test_data(10); + // std::vector list_sizes = {2, 7, 1}; + // // Prepare the STL to be tested + + // int data_index = 0; + // for (int i = 0; i < list_sizes.size(); i++) { + // testbed->nested_list_stack.push(std::list(test_data.begin() + data_index, test_data.begin() + data_index + list_sizes[i])); + // data_index += list_sizes[i]; + // } + + // ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.nested_list_stack")->attr; + + // // ACT + // // Call the checkpoint function that is being tested + // (vec_attr->checkpoint_stl)((void *) &testbed->nested_list_stack, "my_alloc", vec_attr->name) ; + + // // ASSERT + // data_index = 0; + // for (int i = 0; i < list_sizes.size(); i++) { + // // reverse data - just go through the lists backwards + // std::string var_name = "nested_list_stack_" + std::to_string(list_sizes.size()-1-i); + // validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, std::vector(test_data.begin() + data_index, test_data.begin() + data_index + list_sizes[i])); + // data_index += list_sizes[i]; + // } +} + + + +// Arrays + + +TEST_F(MM_stl_checkpoint, i_array ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(10); + + // Prepare the STL to be tested + for (int i = 0; i < test_data.size(); i++) { + testbed->i_array[i] = test_data[i]; + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_array")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_array, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_array"), test_data); +} + + +TEST_F(MM_stl_checkpoint, pair_array ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(20); + + // Prepare the STL to be tested + for (int i = 0; i < test_data.size(); i+=2) { + testbed->pair_array[i/2] = std::pair(test_data[i],test_data[i+1]); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.pair_array")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->pair_array, "my_alloc", vec_attr->name) ; + + // ASSERT + for (int i = 0; i < test_data.size(); i+=2) { + std::string var_name = "pair_array_" + std::to_string(i/2); + validate_temp_pair(memmgr, std::string("my_alloc"), var_name, std::pair(test_data[i],test_data[i+1])); + } + + validate_links_pairs(memmgr, std::string("my_alloc"), std::string("pair_array"), test_data.size()/2); +} + + +TEST_F(MM_stl_checkpoint, string_array ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(10); + + // Prepare the STL to be tested + for (int i = 0; i < test_data.size(); i++) { + testbed->string_array[i] = test_data[i]; + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.string_array")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->string_array, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("string_array"), test_data); +} + + +TEST_F(MM_stl_checkpoint, vec_array ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(100); + + // Prepare the STL to be tested + for (int i = 0; i < 10; i++) { + // testbed->vec_array[i] = std::vector(test_data.begin() + (i*10), test_data.begin()+(i+1)*10); + testbed->vec_array[i].insert(testbed->vec_array[i].end(), test_data.begin() + (i*10), test_data.begin() +((i+1)*10)); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.vec_array")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->vec_array, "my_alloc", vec_attr->name) ; + + // ASSERT + for (int i = 0; i < 10; i++) { + std::string var_name = "vec_array_" + std::to_string(i); + validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, std::vector(test_data.begin() + (i*10), test_data.begin() +((i+1)*10))); + } + + validate_links(memmgr, std::string("my_alloc"), std::string("vec_array"), std::vector(10, 10)); +} + +TEST_F(MM_stl_checkpoint, vec_user_defined ) { + // Make a testbed + // ARRANGE + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.vec_user_defined")->attr; + + int numObj = 10; + std::vector test_ints = get_test_data(5 * numObj); + std::vector test_longs = get_test_data(numObj); + std::vector test_strings = get_test_data(numObj); + + for (int i = 0; i < numObj; i++) { + UserClass temp; + for (int j = 0; j < 5; j++) { + temp.a[j] = test_ints[i*5+j]; + } + temp.b = test_longs[i]; + temp.c = test_strings[i]; + + // just make a pointer to another one with the same data + std::string var_decl = "UserClass ptr_" + std::to_string(i); + UserClass * user_class_ptr = (UserClass *) memmgr->declare_var(var_decl.c_str()); + for (int j = 0; j < 5; j++) { + user_class_ptr->a[j] = test_ints[i*5+j]; + } + user_class_ptr->b = test_longs[i]; + user_class_ptr->c = test_strings[i]; + + temp.d = user_class_ptr; + + testbed->vec_user_defined.emplace_back(temp); + } + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->vec_user_defined, "my_alloc", vec_attr->name) ; + + // ASSERT + ASSERT_TRUE(memmgr->var_exists("my_alloc_vec_user_defined") == 1); + + REF2 * data_ref = memmgr->ref_attributes("my_alloc_vec_user_defined"); + UserClass * data = (UserClass *) data_ref->address; + + ASSERT_TRUE(data != NULL); + EXPECT_EQ(data_ref->attr->num_index, 1); + ASSERT_EQ(data_ref->attr->index[0].size, numObj); + + for (int i = 0; i < numObj; i++) { + std::string var_name = "ptr_" + std::to_string(i); + ASSERT_TRUE(memmgr->var_exists(var_name)); + REF2 * ptr_ref = memmgr->ref_attributes(var_name.c_str()); + UserClass * ptr_data = (UserClass *) ptr_ref->address; + + for (int j = 0; j < 5; j++) { + EXPECT_EQ(data[i].a[j], test_ints[i*5+j]); + EXPECT_EQ(ptr_data->a[j], test_ints[i*5+j]); + } + + EXPECT_EQ(data[i].b, test_longs[i]); + EXPECT_EQ(ptr_data->b, test_longs[i]); + + EXPECT_EQ(data[i].c, test_strings[i]); + EXPECT_EQ(ptr_data->c, test_strings[i]); + } +} + +TEST_F(MM_stl_checkpoint, DISABLED_vec_user_defined_stl ) { + // Make a testbed + // ARRANGE + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector> test_data; + for (int i = 0; i < 10; i++) { + std::vector test_data_inner = get_test_data(10); + UserClassStl temp_wrapper; + temp_wrapper.vec = std::vector(test_data_inner); + testbed->vec_user_defined_stl.emplace_back(temp_wrapper); + test_data.emplace_back(test_data_inner); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.vec_user_defined_stl")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->vec_user_defined_stl, "my_alloc", vec_attr->name) ; + + // ASSERT + +} + + +// If this ridiculous data structure can be checkpointed, then I will +// have faith that any arbitrary nesting of STLs can be checkpointed +TEST_F(MM_stl_checkpoint, recursive_nightmare ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(50); + std::vector test_strings = get_test_data(100); + + // Just build another one alongside and check the data inside? + // TODO: still need to figure out how to check the links between the datastructures in checkpointed form + std::array,std::vector>>, 5> recursive_nightmare_copy; + + // Prepare the STL to be tested + for (int i = 0; i < 5; i++) { + // iterate through array + + std::vector> keys; + // Make pairs as keys + for (int j = i*10; j < (i+1)*10; j+=2) { + keys.emplace_back(test_data[i], test_data[i+1]); + } + + std::vector>> vals; + + // Make vectors of stacks of strings as values + for (int j = i * 20; j < (i+1) * 20; j+=4) { + std::vector> val; + std::stack inner1; + std::stack inner2; + + inner1.push(test_strings[j]); + inner1.push(test_strings[j+1]); + inner2.push(test_strings[j+2]); + inner2.push(test_strings[j+3]); + + val.emplace_back(inner1); + val.emplace_back(inner2); + + vals.emplace_back(val); + } + + // Make the map + for (int m = 0; m < keys.size(); m++) { + testbed->recursive_nightmare[i].insert(std::pair,std::vector>>(keys[m], vals[m])); + recursive_nightmare_copy[i].insert(std::pair,std::vector>>(keys[m], vals[m])); + } + + } + + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.recursive_nightmare")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->recursive_nightmare, "my_alloc", vec_attr->name) ; + + // ASSERT + for (int i = 0; i < 5; i++) { + + int j = 0; + for (auto it = recursive_nightmare_copy[i].begin(); it != recursive_nightmare_copy[i].end(); it++, j++) { + std::pair key = it->first; + std::vector> val = it->second; + + // keys first + std::string key_var_name = "recursive_nightmare_" + std::to_string(i) + "_keys_" + std::to_string(j); + validate_temp_pair(memmgr, std::string("my_alloc"), key_var_name, key); + + for (int k = 0; k < val.size(); k++) { + std::string val_var_name = "recursive_nightmare_" + std::to_string(i) + "_data_" + std::to_string(j) + "_" + std::to_string(k); + std::vector val_expected; + while (!val[k].empty()) { + val_expected.push_back(val[k].top()); + val[k].pop(); + } + validate_temp_sequence(memmgr, std::string("my_alloc"), val_var_name, val_expected); + } + } + } +} diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc b/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc new file mode 100644 index 00000000..fcc7ca3b --- /dev/null +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc @@ -0,0 +1,1045 @@ +#include "gtest/gtest.h" +#define private public + +#include "trick/MemoryManager.hh" +#include "trick/memorymanager_c_intf.h" +#include "MM_stl_testbed.hh" +#include "MM_test.hh" + +/* + This tests the allocation of user-defined types using MemoryManager::declare_var(). + */ +class MM_stl_restore : public ::testing::Test { + + protected: + Trick::MemoryManager *memmgr; + + MM_stl_restore() { + try { + memmgr = new Trick::MemoryManager; + } catch (std::logic_error e) { + memmgr = NULL; + } + } + ~MM_stl_restore() { + delete memmgr; + } + void SetUp() {} + void TearDown() {} +}; + + + +TEST_F(MM_stl_restore, i_vec ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_vec")->attr; + + + std::vector test_data = get_test_data(20); + // Register the expected temporary variables with the memory manager + int * temp_data = (int *) memmgr->declare_var("int my_alloc_i_vec[20]"); + for (int i = 0; i < 20; i++) { + temp_data[i] = test_data[i]; + } + + // ACT + (attr->restore_stl)((void *) &testbed->i_vec, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_vec, test_data); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_vec"), 0); +} + +TEST_F(MM_stl_restore, i_s_vec ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_s_vec")->attr; + + + std::vector test_data = get_test_data(50); + std::vector lengths = {20, 4, 1, 1, 14, 10}; + + // Register the expected temporary variables with the memory manager + std::string my_alloc_i_s_vec[6]; + int start_index = 0; + memmgr->declare_extern_var(&my_alloc_i_s_vec, "std::string my_alloc_i_s_vec[6]"); + for (int i = 0; i < lengths.size(); i++) { + // std::string var_name = + my_alloc_i_s_vec[i] = "my_alloc_i_s_vec_" + std::to_string(i); + + std::string temp_var_name = "int my_alloc_i_s_vec_" + std::to_string(i) + "[" + std::to_string(lengths[i]) + "]"; + int * temp_arr = (int *)memmgr->declare_var(temp_var_name.c_str()); + for (int j = 0; j < lengths[i]; j++) { + temp_arr[j] = test_data[start_index + j]; + } + + start_index += lengths[i]; + } + + // ACT + (attr->restore_stl)((void *) &testbed->i_s_vec, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + ASSERT_EQ(testbed->i_s_vec.size(), lengths.size()); + start_index = 0; + for (int i = 0; i < lengths.size(); i++) { + ASSERT_EQ(testbed->i_s_vec[i].size(), lengths[i]); + EXPECT_EQ(testbed->i_s_vec[i], std::vector(test_data.begin()+start_index, test_data.begin()+start_index+lengths[i])); + start_index += lengths[i]; + } + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_vec"), 0); + for (int i = 0; i < test_data.size()/2; i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_vec_" + std::to_string(i)), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_vec_" + std::to_string(i)), 0); + } +} + +TEST_F(MM_stl_restore, s_vec ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(40); + + // Register the expected temporary variables with the memory manager + std::string my_alloc_s_vec[20]; + memmgr->declare_extern_var(&my_alloc_s_vec, "std::string my_alloc_s_vec[20]"); + for (int i = 0; i < test_data.size()/2; i++) { + my_alloc_s_vec[i] = "my_alloc_s_vec_" + std::to_string(i); + + std::string first_var_name = "int my_alloc_s_vec_" + std::to_string(i) + "_first"; + std::string second_var_name = "int my_alloc_s_vec_" + std::to_string(i) + "_second"; + + int * temp_first = (int *)memmgr->declare_var(first_var_name.c_str()); + *temp_first = test_data[i*2]; + int * temp_second = (int *)memmgr->declare_var(second_var_name.c_str()); + *temp_second = test_data[i*2+1]; + } + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.s_vec")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->s_vec, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + ASSERT_EQ(testbed->s_vec.size(), test_data.size()/2); + for (int i = 0; i < test_data.size()/2; i++) { + EXPECT_EQ(testbed->s_vec[i].first, test_data[i*2]); + EXPECT_EQ(testbed->s_vec[i].second, test_data[i*2+1]); + } + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_vec"), 0); + for (int i = 0; i < test_data.size()/2; i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_s_vec_" + std::to_string(i) + "_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_vec_" + std::to_string(i) + "_second"), 0); + } +} + +TEST_F(MM_stl_restore, string_vec ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(20); + + // Register the expected temporary variables with the memory manager + std::string * temp_data = (std::string *) memmgr->declare_var("std::string my_alloc_string_vec[20]"); + for (int i = 0; i < 20; i++) { + temp_data[i] = std::string(test_data[i]); + } + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.string_vec")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->string_vec, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->string_vec, test_data); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_string_vec"), 0); +} + +TEST_F(MM_stl_restore, i_i_pair ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + double test_first = random(); + float test_second = random (); + + // Register the expected temporary variables with the memory manager + double * first_data = (double *) memmgr->declare_var("double my_alloc_i_i_pair_first"); + float * second_data = (float *) memmgr->declare_var("float my_alloc_i_i_pair_second"); + + *first_data = test_first; + *second_data = test_second; + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_i_pair")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->i_i_pair, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_i_pair.first, test_first); + EXPECT_EQ(testbed->i_i_pair.second, test_second); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_i_pair_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_i_i_pair_second"), 0); +} + +TEST_F(MM_stl_restore, DISABLED_i_s_pair ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + double test_first = random(); + std::vector test_second = get_test_data(20); + + // Register the expected temporary variables with the memory manager + double * first_data = (double *) memmgr->declare_var("double my_alloc_i_s_pair_first"); + bool * second_data = (bool *) memmgr->declare_var("bool my_alloc_i_s_pair_second[20]"); + + *first_data = test_first; + for (int i = 0; i < test_second.size(); i++) { + second_data[i] = test_second[i]; + } + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_s_pair")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->i_s_pair, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_s_pair.first, test_first); + EXPECT_EQ(testbed->i_s_pair.second.size(), test_second.size()); + for (int i = 0; i < test_second.size(); i++) { + EXPECT_EQ(testbed->i_s_pair.second.front(), test_second[i]); + testbed->i_s_pair.second.pop(); + } + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_pair_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_pair_second"), 0); +} + +TEST_F(MM_stl_restore, DISABLED_s_i_pair ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_first = get_test_data(20); + double test_second = random(); + + // Register the expected temporary variables with the memory manager + bool * first_data = (bool *) memmgr->declare_var("bool my_alloc_s_i_pair_first[20]"); + double * second_data = (double *) memmgr->declare_var("double my_alloc_s_i_pair_second"); + + for (int i = 0; i < test_first.size(); i++) { + first_data[i] = test_first[i]; + } + *second_data = test_second; + + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.s_i_pair")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->s_i_pair, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->s_i_pair.second, test_second); + EXPECT_EQ(testbed->s_i_pair.first.size(), test_first.size()); + for (int i = 0; i < test_first.size(); i++) { + EXPECT_EQ(testbed->s_i_pair.first.front(), test_first[i]); + testbed->s_i_pair.first.pop(); + } + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_i_pair_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_i_pair_second"), 0); +} + +TEST_F(MM_stl_restore, DISABLED_s_s_pair ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_first = get_test_data(20); + std::vector test_second = get_test_data(20); + + // Register the expected temporary variables with the memory manager + bool * first_data = (bool *) memmgr->declare_var("bool my_alloc_s_s_pair_first[20]"); + double * second_data = (double *) memmgr->declare_var("double my_alloc_s_s_pair_second"); + + for (int i = 0; i < test_first.size(); i++) { + first_data[i] = test_first[i]; + } + for (int i = 0; i < test_second.size(); i++) { + second_data[i] = test_second[i]; + } + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.s_s_pair")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->s_s_pair, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->s_s_pair.first.size(), test_first.size()); + EXPECT_EQ(testbed->s_s_pair.second.size(), test_second.size()); + for (int i = 0; i < test_first.size(); i++) { + EXPECT_EQ(testbed->s_s_pair.first[i], test_first[i]); + EXPECT_EQ(testbed->s_s_pair.second.top(), test_second[test_second.size()-1-i]); + testbed->s_s_pair.second.pop(); + } + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_s_pair_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_s_pair_second"), 0); +} + +TEST_F(MM_stl_restore, pair_pair ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + int test_first_first = random(); + int test_first_second = random(); + int test_second = random(); + + // Register the expected temporary variables with the memory manager + int * first_first_data = (int *) memmgr->declare_var("int my_alloc_pair_pair_first_first"); + int * first_second_data = (int *) memmgr->declare_var("int my_alloc_pair_pair_first_second"); + int * second_data = (int *) memmgr->declare_var("int my_alloc_pair_pair_second"); + + (void) memmgr->declare_var("std::string my_alloc_pair_pair_first[1]"); + + *first_first_data = test_first_first; + *first_second_data = test_first_second; + *second_data = test_second; + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.pair_pair")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->pair_pair, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->pair_pair.first.first, test_first_first); + EXPECT_EQ(testbed->pair_pair.first.second, test_first_second); + EXPECT_EQ(testbed->pair_pair.second, test_second); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_first_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_first_second"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_second"), 0); +} + +TEST_F(MM_stl_restore, i_i_map ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_keys = get_test_data(20); + std::vector test_data = get_test_data(20); + std::map test_map; + + int * key_data = (int *) memmgr->declare_var("int my_alloc_i_i_map_keys[20]"); + double * val_data = (double *) memmgr->declare_var("double my_alloc_i_i_map_data[20]"); + for (int i = 0; i < test_keys.size(); i++) { + key_data[i] = test_keys[i]; + val_data[i] = test_data[i]; + + // Create a map of expected data along side so that we don't have to deal with ordering stuff + test_map[test_keys[i]] = test_data[i]; + } + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_i_map")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->i_i_map, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_i_map, test_map); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_i_map_keys"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_i_i_map_data"), 0); +} + +TEST_F(MM_stl_restore, i_s_map ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_keys = get_test_data(10); + std::vector test_data = get_test_data(60); + std::map> test_map; + + int * key_data = (int *) memmgr->declare_var("int my_alloc_i_s_map_keys[10]"); + std::string * val_data = (std::string *) memmgr->declare_var("std::string my_alloc_i_s_map_data[10]"); + for (int i = 0; i < test_keys.size(); i++) { + key_data[i] = test_keys[i]; + val_data[i] = std::string("my_alloc_i_s_map_data_" + std::to_string(i)); + + std::string var_name = "std::string my_alloc_i_s_map_data_" + std::to_string(i) + "[" + std::to_string(6) + "]"; + std::string * val_temp = (std::string *) memmgr->declare_var(var_name.c_str()); + + for (int j = 0; j < 6; j++) { + val_temp[j] = test_data[(i*6) + j]; + + // Create a map of expected data along side so that we don't have to deal with ordering stuff + // Reverse order of the data since it's a stack + test_map[test_keys[i]].push(test_data[((i+1)*6)-1-j]); + } + } + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_s_map")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->i_s_map, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_s_map, test_map); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_map_keys"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_map_data"), 0); + for (int i = 0; i < testbed->i_s_map.size(); i++) { + std::string var_name_test = "my_alloc_i_s_map_data_" + std::to_string(i); + EXPECT_EQ(memmgr->var_exists(var_name_test.c_str()), 0); + } +} + +TEST_F(MM_stl_restore, s_i_map ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_keys = get_test_data(30); + std::vector test_data = get_test_data(10); + std::map, std::string> test_map; + + std::string * key_data = (std::string *) memmgr->declare_var("std::string my_alloc_s_i_map_keys[10]"); + std::string * val_data = (std::string *) memmgr->declare_var("std::string my_alloc_s_i_map_data[10]"); + for (int i = 0; i < test_data.size(); i++) { + key_data[i] = std::string("my_alloc_s_i_map_keys_" + std::to_string(i)); + + std::string var_name = "int my_alloc_s_i_map_keys_" + std::to_string(i) + "[" + std::to_string(3) + "]"; + int * val_temp = (int *) memmgr->declare_var(var_name.c_str()); + + std::set temp_set; + for (int j = 0; j < 3; j++) { + val_temp[j] = test_keys[(i*3) + j]; + + // Create a map of expected data along side so that we don't have to deal with ordering stuff + temp_set.insert(test_keys[(i*3) + j]); + } + + val_data[i] = test_data[i]; + + // insert into the test map + test_map[temp_set] = test_data[i]; + } + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.s_i_map")->attr; + + // ACT + (attr->restore_stl)((void *) &testbed->s_i_map, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->s_i_map, test_map); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_i_map_keys"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_i_map_data"), 0); + for (int i = 0; i < testbed->i_s_map.size(); i++) { + std::string var_name_test = "my_alloc_s_i_map_keys_" + std::to_string(i); + EXPECT_EQ(memmgr->var_exists(var_name_test.c_str()), 0); + } +} + + +TEST_F(MM_stl_restore, s_s_map ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + int map_size = 10; + std::vector test_keys = get_test_data(20); + std::vector test_data = get_test_data(40); + std::map, std::vector> test_map; + + // Make the top level key and data structures + // These will just have strings that point to where the actual data is + std::string * key_data = (std::string *) memmgr->declare_var("std::string my_alloc_s_s_map_keys[10]"); + std::string * val_data = (std::string *) memmgr->declare_var("std::string my_alloc_s_s_map_data[10]"); + for (int i = 0; i < map_size; i++) { + // This is the string that lives in the my_alloc_s_s_map_keys structure + key_data[i] = std::string("my_alloc_s_s_map_keys_" + std::to_string(i)); + + // These first and second variables hold the actual data for index i + std::string first_name = "int my_alloc_s_s_map_keys_" + std::to_string(i) + "_first"; + int * val_first = (int *) memmgr->declare_var(first_name.c_str()); + *val_first = test_keys[i*2]; + + std::string second_name = "int my_alloc_s_s_map_keys_" + std::to_string(i) + "_second"; + int * val_second = (int *) memmgr->declare_var(second_name.c_str()); + *val_second = test_keys[i*2+1]; + + // This is the string that lives in the my_alloc_s_s_map_data structure + val_data[i] = std::string("my_alloc_s_s_map_data_" + std::to_string(i)); + + // This is the array that holds the actual data for index i + std::string data_name = "int my_alloc_s_s_map_data_" + std::to_string(i) + "[" + std::to_string(4) + "]"; + int * data_values = (int *) memmgr->declare_var(data_name.c_str()); + + for (int j = 0; j < 4; j++) { + data_values[j] = test_data[(i*4) + j]; + + // Create a map of expected data along side so that we don't have to deal with ordering stuff + test_map[std::pair(test_keys[i*2], test_keys[i*2+1])].push_back(test_data[(i*4) + j]); + } + } + + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.s_s_map")->attr; + + + + // ACT + (attr->restore_stl)((void *) &testbed->s_s_map, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->s_s_map, test_map); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_s_map_keys"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_s_map_data"), 0); + for (int i = 0; i < map_size; i++) { + std::string var_name_test = "my_alloc_s_s_map_keys_" + std::to_string(i) + "_first"; + EXPECT_EQ(memmgr->var_exists(var_name_test.c_str()), 0); + var_name_test = "my_alloc_s_s_map_keys_" + std::to_string(i) + "_second"; + EXPECT_EQ(memmgr->var_exists(var_name_test.c_str()), 0); + var_name_test = "my_alloc_s_s_map_data_" + std::to_string(i); + EXPECT_EQ(memmgr->var_exists(var_name_test.c_str()), 0); + } +} + + +TEST_F(MM_stl_restore, i_queue ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_queue")->attr; + + + std::vector test_data = get_test_data(20); + std::queue expected_data; + // Register the expected temporary variables with the memory manager + int * temp_data = (int *) memmgr->declare_var("int my_alloc_i_queue[20]"); + for (int i = 0; i < 20; i++) { + temp_data[i] = test_data[i]; + expected_data.push(test_data[i]); + } + + // ACT + (attr->restore_stl)((void *) &testbed->i_queue, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_queue, expected_data); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_queue"), 0); +} + + +TEST_F(MM_stl_restore, s_queue ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES * attr = memmgr->ref_attributes("my_alloc.s_queue")->attr; + + std::vector test_first= get_test_data(20); + std::vector test_second = get_test_data(20); + + std::queue> expected; + + std::string * data_links = (std::string *) memmgr->declare_var("std::string my_alloc_s_queue[20]"); + + for (int i = 0; i < test_first.size(); i++) { + data_links[i] = "my_alloc_s_queue_" + std::to_string(i); + + std::string first_var_name = "int my_alloc_s_queue_" + std::to_string(i) + "_first"; + std::string second_var_name = "double my_alloc_s_queue_" + std::to_string(i) + "_second"; + + int * temp_first = (int *)memmgr->declare_var(first_var_name.c_str()); + *temp_first = test_first[i]; + double * temp_second = (double *)memmgr->declare_var(second_var_name.c_str()); + *temp_second = test_second[i]; + + // Build a copy of the expected data + expected.push(std::pair(test_first[i], test_second[i])); + } + + // ACT + (attr->restore_stl)((void *) &testbed->s_queue, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->s_queue, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_queue"), 0); + for (int i = 0; i < test_first.size(); i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_s_queue_" + std::to_string(i) + "_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_queue_" + std::to_string(i) + "_second"), 0); + } +} + +TEST_F(MM_stl_restore, nested_list_queue ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.nested_list_queue")->attr; + + std::vector test_data = get_test_data(50); + // Make sure we can handle lists of different sizes + std::vector lengths = {20, 4, 1, 1, 14, 10}; + + // Register the expected temporary variables with the memory manager + std::queue> expected; + + int start_index = 0; + std::string * nested_list_links = (std::string *) memmgr->declare_var( "std::string my_alloc_nested_list_queue[6]"); + for (int i = 0; i < lengths.size(); i++) { + nested_list_links[i] = "my_alloc_nested_list_queue_" + std::to_string(i); + + std::string temp_var_name = "float my_alloc_nested_list_queue_" + std::to_string(i) + "[" + std::to_string(lengths[i]) + "]"; + std::list temp_expected; + float * temp_arr = (float *)memmgr->declare_var(temp_var_name.c_str()); + for (int j = 0; j < lengths[i]; j++) { + temp_arr[j] = test_data[start_index + j]; + temp_expected.push_back(test_data[start_index + j]); + } + + expected.push(temp_expected); + + start_index += lengths[i]; + } + + // ACT + (attr->restore_stl)((void *) &testbed->nested_list_queue, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + ASSERT_EQ(testbed->nested_list_queue, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_list_queue"), 0); + for (int i = 0; i < test_data.size()/2; i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_list_queue_" + std::to_string(i)), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_list_queue_" + std::to_string(i)), 0); + } +} + +TEST_F(MM_stl_restore, i_stack ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_stack")->attr; + + + std::vector test_data = get_test_data(20); + std::stack expected_data; + // Register the expected temporary variables with the memory manager + long long * temp_data = (long long *) memmgr->declare_var("long long my_alloc_i_stack[20]"); + for (int i = 0; i < test_data.size(); i++) { + temp_data[i] = test_data[i]; + + // push backwards bc stack + expected_data.push(test_data[test_data.size()-1-i]); + } + + // ACT + (attr->restore_stl)((void *) &testbed->i_stack, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_stack, expected_data); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_stack"), 0); +} + +TEST_F(MM_stl_restore, s_stack ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES * attr = memmgr->ref_attributes("my_alloc.s_stack")->attr; + + std::vector test_first= get_test_data(20); + std::vector test_second = get_test_data(20); + + std::stack> expected; + + std::string * data_links = (std::string *) memmgr->declare_var("std::string my_alloc_s_stack[20]"); + + for (int i = 0; i < test_first.size(); i++) { + data_links[i] = "my_alloc_s_stack_" + std::to_string(i); + + std::string first_var_name = "short my_alloc_s_stack_" + std::to_string(i) + "_first"; + std::string second_var_name = "double my_alloc_s_stack_" + std::to_string(i) + "_second"; + + short * temp_first = (short *)memmgr->declare_var(first_var_name.c_str()); + *temp_first = test_first[i]; + double * temp_second = (double *)memmgr->declare_var(second_var_name.c_str()); + *temp_second = test_second[i]; + + // Build a copy of the expected data + // Backwards because stack + expected.push(std::pair(test_first[test_first.size()-1-i], test_second[test_first.size()-1-i])); + } + + // ACT + (attr->restore_stl)((void *) &testbed->s_stack, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->s_stack, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_stack"), 0); + for (int i = 0; i < test_first.size(); i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_s_stack_" + std::to_string(i) + "_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_stack_" + std::to_string(i) + "_second"), 0); + } +} + +TEST_F(MM_stl_restore, nested_list_stack ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.nested_list_stack")->attr; + + std::vector test_data = get_test_data(50); + // Make sure we can handle lists of different sizes + std::vector lengths = {20, 4, 1, 1, 14, 10}; + + // Just build the stack backwards and flip it + std::stack> expected; + std::stack> reverse_expected; + + // Register the expected temporary variables with the memory manager + int start_index = 0; + std::string * nested_list_links = (std::string *) memmgr->declare_var( "std::string my_alloc_nested_list_stack[6]"); + for (int i = 0; i < lengths.size(); i++) { + nested_list_links[i] = "my_alloc_nested_list_stack_" + std::to_string(i); + + std::string temp_var_name = "float my_alloc_nested_list_stack_" + std::to_string(i) + "[" + std::to_string(lengths[i]) + "]"; + std::list temp_expected; + float * temp_arr = (float *)memmgr->declare_var(temp_var_name.c_str()); + for (int j = 0; j < lengths[i]; j++) { + temp_arr[j] = test_data[start_index + j]; + temp_expected.push_back(test_data[start_index + j]); + } + + reverse_expected.push(temp_expected); + + start_index += lengths[i]; + } + + // flip the stack so we have expected in the right order + while (!reverse_expected.empty()) { + expected.push(reverse_expected.top()); + reverse_expected.pop(); + } + + // ACT + (attr->restore_stl)((void *) &testbed->nested_list_stack, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + ASSERT_EQ(testbed->nested_list_stack, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_list_stack"), 0); + for (int i = 0; i < test_data.size()/2; i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_list_stack_" + std::to_string(i)), 0); + } +} + +TEST_F(MM_stl_restore, i_set ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_set")->attr; + + + std::vector test_data = get_test_data(100); + std::set expected; + + // Make the expected structure first + for (char val : test_data) { + expected.insert(val); + } + + // Register the expected temporary variables with the memory manager + std::string var_name = "char my_alloc_i_set[" + std::to_string(expected.size()) + "]"; + char * temp_data = (char *) memmgr->declare_var(var_name.c_str()); + int index = 0; + for (const char val : expected) { + temp_data[index++] = val; + } + + // ACT + (attr->restore_stl)((void *) &testbed->i_set, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_set, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_set"), 0); +} + +// These can't be written yet since the data structures will fail at compile time + +TEST_F(MM_stl_restore, DISABLED_s_set ) { } + +TEST_F(MM_stl_restore, DISABLED_nested_map_set ) { } + +TEST_F(MM_stl_restore, DISABLED_i_multiset ) { } + + +TEST_F(MM_stl_restore, i_array ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_array")->attr; + + std::vector test_data = get_test_data(10); + std::array expected; + + // Register the expected temporary variables with the memory manager + char * temp_data = (char *) memmgr->declare_var("char my_alloc_i_array[10]"); + for (int i = 0; i < test_data.size(); i++) { + temp_data[i] = test_data[i]; + expected[i] = test_data[i]; + } + + // ACT + (attr->restore_stl)((void *) &testbed->i_array, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_array, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_array"), 0); +} + +TEST_F(MM_stl_restore, pair_array ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES * attr = memmgr->ref_attributes("my_alloc.pair_array")->attr; + + std::vector test_first= get_test_data(10); + std::vector test_second = get_test_data(10); + + std::array, 10> expected; + + std::string * data_links = (std::string *) memmgr->declare_var("std::string my_alloc_pair_array[10]"); + + for (int i = 0; i < test_first.size(); i++) { + data_links[i] = "my_alloc_pair_array_" + std::to_string(i); + + std::string first_var_name = "int my_alloc_pair_array_" + std::to_string(i) + "_first"; + std::string second_var_name = "int my_alloc_pair_array_" + std::to_string(i) + "_second"; + + int * temp_first = (int *)memmgr->declare_var(first_var_name.c_str()); + *temp_first = test_first[i]; + int * temp_second = (int *)memmgr->declare_var(second_var_name.c_str()); + *temp_second = test_second[i]; + + // Build a copy of the expected data + expected[i] = std::pair(test_first[i], test_second[i]); + } + + // ACT + (attr->restore_stl)((void *) &testbed->pair_array, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->pair_array, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_array"), 0); + for (int i = 0; i < test_first.size(); i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_array_" + std::to_string(i) + "_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_array_" + std::to_string(i) + "_second"), 0); + } +} + +TEST_F(MM_stl_restore, string_array ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.string_array")->attr; + + std::vector test_data = get_test_data(10); + std::array expected; + + // Register the expected temporary variables with the memory manager + std::string * temp_data = (std::string *) memmgr->declare_var("std::string my_alloc_string_array[10]"); + for (int i = 0; i < test_data.size(); i++) { + temp_data[i] = std::string(test_data[i]); + expected[i] = std::string(test_data[i]); + } + + // ACT + (attr->restore_stl)((void *) &testbed->string_array, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->string_array, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_string_array"), 0); +} + +TEST_F(MM_stl_restore, vec_array ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.vec_array")->attr; + + + std::vector test_data = get_test_data(50); + std::vector lengths = {12, 4, 1, 1, 14, 10, 2, 2, 2, 2}; + + // Register the expected temporary variables with the memory manager + std::string my_alloc_vec_array[10]; + int start_index = 0; + memmgr->declare_extern_var(&my_alloc_vec_array, "std::string my_alloc_vec_array[10]"); + for (int i = 0; i < lengths.size(); i++) { + // std::string var_name = + my_alloc_vec_array[i] = "my_alloc_vec_array_" + std::to_string(i); + + std::string temp_var_name = "int my_alloc_vec_array_" + std::to_string(i) + "[" + std::to_string(lengths[i]) + "]"; + int * temp_arr = (int *)memmgr->declare_var(temp_var_name.c_str()); + for (int j = 0; j < lengths[i]; j++) { + temp_arr[j] = test_data[start_index + j]; + } + + start_index += lengths[i]; + } + + // ACT + (attr->restore_stl)((void *) &testbed->vec_array, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + ASSERT_EQ(testbed->vec_array.size(), lengths.size()); + start_index = 0; + for (int i = 0; i < lengths.size(); i++) { + ASSERT_EQ(testbed->vec_array[i].size(), lengths[i]); + EXPECT_EQ(testbed->vec_array[i], std::vector(test_data.begin()+start_index, test_data.begin()+start_index+lengths[i])); + start_index += lengths[i]; + } + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_vec_array"), 0); + for (int i = 0; i < test_data.size()/2; i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_vec_array_" + std::to_string(i)), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_vec_array_" + std::to_string(i)), 0); + } +} + +TEST_F(MM_stl_restore, vec_user_defined ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.vec_user_defined")->attr; + + int numObj = 10; + std::vector test_ints = get_test_data(5 * numObj); + std::vector test_longs = get_test_data(numObj); + std::vector test_strings = get_test_data(numObj); + + // Register the expected temporary variables with the memory manager + UserClass * data = (UserClass *) memmgr->declare_var("UserClass my_alloc_vec_user_defined[10]"); + + // Create an structure holding the expected final container + std::vector expected; + + for (int i = 0; i < numObj; i++) { + UserClass temp; + for (int j = 0; j < 5; j++) { + temp.a[j] = test_ints[i*5+j]; + data[i].a[j] = test_ints[i*5+j]; + } + data[i].b = test_longs[i]; + data[i].c = test_strings[i]; + + temp.b = test_longs[i]; + temp.c = test_strings[i]; + + // just make a pointer to another one with the same data + std::string var_decl = "UserClass ptr_" + std::to_string(i); + UserClass * user_class_ptr = (UserClass *) memmgr->declare_var(var_decl.c_str()); + UserClass * expected_ptr = new UserClass(); + + for (int j = 0; j < 5; j++) { + user_class_ptr->a[j] = test_ints[i*5+j]; + expected_ptr->a[j] = test_ints[i*5+j]; + + } + user_class_ptr->b = test_longs[i]; + user_class_ptr->c = test_strings[i]; + + expected_ptr->b = test_longs[i]; + expected_ptr->c = test_strings[i]; + + data[i].d = user_class_ptr; + temp.d = expected_ptr; + + expected.emplace_back(temp); + } + + + // ACT + (attr->restore_stl)((void *) &testbed->vec_user_defined, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->vec_user_defined, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_vec_user_defined"), 0); +} + + +TEST_F(MM_stl_restore, recursive_nightmare ) { +} diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh b/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh new file mode 100644 index 00000000..5e87785f --- /dev/null +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh @@ -0,0 +1,98 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +class UserClassStl { + public: + int a; + std::vector vec; +}; + +class UserClass { + public: + UserClass () : d(NULL) {} + int a[5]; + long long b; + std::string c; + UserClass * d = NULL; + + bool operator== (const UserClass& other) const { + for (int i = 0; i < 5; i++) { + if (a[i] != other.a[i]) + return false; + } + + if (d == NULL ^ other.d == NULL) return false; + return b == other.b && c == other.c && (d == NULL || *d == *(other.d)); + } + + bool operator != (const UserClass& other) const { + return !(*this == other); + } + +}; + +class STLTestbed { +public: + // This class is intended to test the checkpoint, restore, and delete functions for each of the supported STL types. + // These live in the include/trick directory in checkpoint_.hh + // Each STL type has its own implementation of each function, so they must be tested separately. + // In addition, if the template argument is another STL container, a separate implementation is enabled to + // support recursion. (intrinsic:i vs stl:s in var names here) + // Therefore, each of the 11 supported types presents 3 * 2^(num template args) implementations to test, + // plus strings and pairs are sometimes handled strangely so those should probably be included here too + + std::vector i_vec; + std::vector> i_s_vec; + std::vector> s_vec; + std::vector string_vec; + + std::pair i_i_pair; + std::pair> i_s_pair; + std::pair,double> s_i_pair; + std::pair,std::stack> s_s_pair; + std::pair> i_v_pair; + std::pair, int> pair_pair; + + std::map i_i_map; + std::map> i_s_map; + std::map, std::string> s_i_map; + std::map, std::vector> s_s_map; + + std::queue i_queue; + std::queue> s_queue; + std::queue> nested_list_queue; + + std::stack i_stack; + std::stack> s_stack; + std::stack> nested_list_stack; + + std::set i_set; + // These fail in CP right now + // std::set > s_set; + // std::set> nested_map_set; + + // this one will as well, if we put any STL containers in there + std::multiset i_multiset; + + std::array i_array; + std::array, 10> pair_array; + std::array string_array; + std::array, 10> vec_array; + + std::vector vec_user_defined; + + // This does not currently work in the unit tests + std::vector vec_user_defined_stl; + + + std::array,std::vector>>, 5> recursive_nightmare; +}; diff --git a/trick_source/sim_services/MemoryManager/test/MM_test.hh b/trick_source/sim_services/MemoryManager/test/MM_test.hh index 7f8f5031..a62c9770 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_test.hh +++ b/trick_source/sim_services/MemoryManager/test/MM_test.hh @@ -95,4 +95,60 @@ void validate_alloc_info(Trick::MemoryManager *memmgr, validate_alloc_info(alloc_info, test_var, trick_type, type_name, var_name, num, num_index, extent); } + + + +// This one is for anything integral +// char, short, int, long, long long +template ::value>::type* = nullptr> +T random() { + return (T) (rand() % 1000); +} + +// This should just catch bools +// Template specialization! +template<> +bool random () { + return (bool) (rand() & 1); +} + +// This is for floats and doubles +template ::value>::type* = nullptr> +T random() { + T divisor = (T) rand(); + + // for this one in 2 billion chance + if (divisor == 0) { + divisor += 1; + } + + return ((T) rand()) / divisor; +} + +// This should just catch strings +// Template specialization! +template<> +std::string random () { + static const char characters[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz .,-=_+/?!@#$%^&*()<>\\\"\'\n\t\r"; + static const int max_string_len = 32; + + std::string random_str;; + int len = rand() % max_string_len; + for (int j = 0; j < len; j++) { + random_str += characters[rand() % sizeof(characters)]; + } + + return random_str; +} + +// generate some random data +template +std::vector get_test_data(int num) { + std::vector ret; + for (int i = 0; i < num; i++) { + ret.push_back(random()); + } + return ret; +} + #endif diff --git a/trick_source/sim_services/MemoryManager/test/MM_user_defined_types.hh b/trick_source/sim_services/MemoryManager/test/MM_user_defined_types.hh index 54a3aab8..b5d723e7 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_user_defined_types.hh +++ b/trick_source/sim_services/MemoryManager/test/MM_user_defined_types.hh @@ -2,6 +2,7 @@ PURPOSE: (Testing) */ #include +#include typedef struct { unsigned int a :3; @@ -93,3 +94,26 @@ class UDT7 { char B[32][4]; }; +class Foo { + public: + int a; + double b; + std::vector c; +}; + +class VectorWrapper { + public: + int operator[] (int index) { + return vec[index]; + } + + void push_back(int val) { + vec.push_back(val); + } + + int size() { + return vec.size(); + } + std::vector vec; + +}; diff --git a/trick_source/sim_services/MemoryManager/test/MM_write_checkpoint.cc b/trick_source/sim_services/MemoryManager/test/MM_write_checkpoint.cc index 5cec4ffc..5f0a1c9c 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_write_checkpoint.cc +++ b/trick_source/sim_services/MemoryManager/test/MM_write_checkpoint.cc @@ -1104,3 +1104,30 @@ TEST_F(MM_write_checkpoint, ptr_to_array_of_ptrs_to_objects ) { EXPECT_EQ( udt7_p->udt3pp[2]->b , 8); } +TEST_F(MM_write_checkpoint, WrappedStl ) { + VectorWrapper * vector = (VectorWrapper *) memmgr->declare_var("VectorWrapper vec_allocation"); + vector->push_back(10); + vector->push_back(20); + vector->push_back(30); + vector->push_back(40); + + std::stringstream ss; + memmgr->write_checkpoint(ss, "vec_allocation"); + + std::string result= ss.str(); + ASSERT_NE (result.size(), 0); + + EXPECT_EQ( strcmp_IgnoringWhiteSpace( + "// Variable Declarations." + "VectorWrapper vec_allocation;" + "int vec_allocation_vec[4];" + "// Clear all allocations to 0." + "clear_all_vars();" + "// Variable Assignments." + "// STL: vec_allocation.vec" + "vec_allocation_vec = " + "{10, 20, 30, 40};", result.c_str()), 0); +} + + + diff --git a/trick_source/sim_services/MemoryManager/test/MM_write_checkpoint.hh b/trick_source/sim_services/MemoryManager/test/MM_write_checkpoint.hh index 8a21cec2..d1cf6567 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_write_checkpoint.hh +++ b/trick_source/sim_services/MemoryManager/test/MM_write_checkpoint.hh @@ -1,6 +1,8 @@ /* PURPOSE: (Testing) */ +#include +#include typedef enum { JANUARY = 1, FEBRUARY = 2, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER @@ -42,3 +44,21 @@ class UDT7 { double A; UDT3** udt3pp; }; + +class VectorWrapper { + public: + int operator[] (int index) { + return vec[index]; + } + + void push_back(int val) { + vec.push_back(val); + } + + int size() { + return vec.size(); + } + + private: + std::vector vec; +}; diff --git a/trick_source/sim_services/MemoryManager/test/Makefile b/trick_source/sim_services/MemoryManager/test/Makefile index 6ffd6553..f9b5df08 100644 --- a/trick_source/sim_services/MemoryManager/test/Makefile +++ b/trick_source/sim_services/MemoryManager/test/Makefile @@ -14,10 +14,21 @@ TRICK_SYSTEM_CXXFLAGS := $(subst -isystem,-I,$(TRICK_SYSTEM_CXXFLAGS)) #TRICK_SYSTEM_LDFLAGS += ${COVERAGE_FLAGS} # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${COVERAGE_FLAGS} -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -Wno-sign-compare ${COVERAGE_FLAGS} -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick_mm -ltrick_units -ltrick -ltrick_mm -ltrick_units -ltrick TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread +# This is supposed to be a development hack so that I don't have to clean rebuild Trick every time I change the stl_checkpoint files. +# This should be deleted before it is merged into master. +STL_CHECKPOINT_FILES = checkpoint_pair.hh \ + checkpoint_sequence_stl.hh \ + checkpoint_map.hh \ + checkpoint_queue.hh \ + checkpoint_stack.hh + +STL_CHECKPOINT_DEPS = $(addprefix $(TRICK_HOME)/include/trick/, $(STL_CHECKPOINT_FILES)) + + # All tests produced by this Makefile. Remember to add new tests you # created to the list. TESTS = MM_creation_unittest \ @@ -37,7 +48,9 @@ TESTS = MM_creation_unittest \ MM_write_checkpoint_hexfloat \ MM_get_enumerated\ MM_ref_name_from_address \ - Bitfield_tests + Bitfield_tests \ + MM_stl_checkpoint \ + MM_stl_restore #OTHER_OBJECTS = ../../include/object_${TRICK_HOST_CPU}/io_JobData.o \ # ../../include/object_${TRICK_HOST_CPU}/io_SimObject.o @@ -65,6 +78,9 @@ test: $(TESTS) ./MM_get_enumerated --gtest_output=xml:${TRICK_HOME}/trick_test/MM_get_enumerated.xml ./MM_ref_name_from_address --gtest_output=xml:${TRICK_HOME}/trick_test/MM_ref_name_from_address.xml ./Bitfield_tests --gtest_output=xml:${TRICK_HOME}/trick_test/Bitfield_tests.xml + ./MM_stl_checkpoint --gtest_output=xml:${TRICK_HOME}/trick_test/MM_stl_checkpoint.xml + ./MM_stl_restore --gtest_output=xml:${TRICK_HOME}/trick_test/MM_stl_restore.xml + code-coverage: test # Give rid of any old code-coverage HTML we may have. @@ -112,6 +128,10 @@ io_MM_ref_name_from_address.o : MM_ref_name_from_address.hh ${TRICK_HOME}/bin/trick-ICG -sim_services -o ./io_src $(TRICK_CPPFLAGS) $< $(TRICK_CXX) $(TRICK_CPPFLAGS) -c io_src/io_MM_ref_name_from_address.cpp +io_MM_stl_testbed.o : MM_stl_testbed.hh + ${TRICK_HOME}/bin/trick-ICG -sim_services -o ./io_src $(TRICK_CPPFLAGS) $< + $(TRICK_CXX) $(TRICK_CPPFLAGS) -c io_src/io_MM_stl_testbed.cpp + MM_creation_unittest.o : MM_creation_unittest.cc $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< @@ -166,6 +186,12 @@ MM_write_checkpoint_hexfloat.o : MM_write_checkpoint_hexfloat.cc Bitfield_tests.o : Bitfield_tests.cpp $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< +MM_stl_restore.o : MM_stl_restore.cc MM_stl_testbed.hh MM_test.hh $(STL_CHECKPOINT_DEPS) + $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< + +MM_stl_checkpoint.o : MM_stl_checkpoint.cc MM_stl_testbed.hh MM_test.hh $(STL_CHECKPOINT_DEPS) + $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< + MM_creation_unittest : MM_creation_unittest.o $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) -o $@ $^ -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) @@ -219,3 +245,9 @@ MM_write_checkpoint_hexfloat : MM_write_checkpoint_hexfloat.o io_MM_write_checkp Bitfield_tests : Bitfield_tests.o $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) -o $@ $^ -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) + +MM_stl_restore : MM_stl_restore.o io_MM_stl_testbed.o + $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) -o $@ $^ -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) + +MM_stl_checkpoint : MM_stl_checkpoint.o io_MM_stl_testbed.o + $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) -o $@ $^ -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) From 3d2e8e52cadce4d8eeaa12b48db8ad698a89b341 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 7 Oct 2022 14:24:21 -0500 Subject: [PATCH 072/162] Set checkpointing fix (#1357) * Fix set checkpointing, add tests * Documentation update --- .../STL-capabilities.md | 8 - include/trick/checkpoint_sequence_stl.hh | 3 +- test/SIM_stls/models/STLCheckpoint.cpp | 80 ++++- test/SIM_stls/models/STLCheckpoint.hh | 8 +- .../MemoryManager/MemoryManager_restore.cpp | 1 - .../MemoryManager/test/MM_stl_checkpoint.cc | 302 ++++++++++++++--- .../MemoryManager/test/MM_stl_restore.cc | 318 +++++++++++++++++- .../MemoryManager/test/MM_stl_testbed.hh | 12 +- .../MemoryManager/test/MM_test.hh | 2 +- 9 files changed, 650 insertions(+), 84 deletions(-) diff --git a/docs/documentation/simulation_capabilities/STL-capabilities.md b/docs/documentation/simulation_capabilities/STL-capabilities.md index 0e99d321..48f902b0 100644 --- a/docs/documentation/simulation_capabilities/STL-capabilities.md +++ b/docs/documentation/simulation_capabilities/STL-capabilities.md @@ -119,12 +119,4 @@ The types in an std::pair cannot be sequence STL types (vector, queue, stack, et std::pair> ``` -The types inside an std::set cannot be any STL types (excluding strings). -``` - // This will fail to compile - std::set> -``` - -These bugs are being worked on. - [Continue to Threads](Threads) diff --git a/include/trick/checkpoint_sequence_stl.hh b/include/trick/checkpoint_sequence_stl.hh index bb6f5918..ce616692 100644 --- a/include/trick/checkpoint_sequence_stl.hh +++ b/include/trick/checkpoint_sequence_stl.hh @@ -111,7 +111,8 @@ int checkpoint_sequence_s(STL & in_stl , std::string object_name , std::string v std::ostringstream index_string ; index_string << ii ; //message_publish(1, "recursive call to checkpoint_stl %s\n", __PRETTY_FUNCTION__) ; - checkpoint_stl( (*it) , object_name + "_" + var_name , index_string.str() ) ; + checkpoint_stl( const_cast(*it) , object_name + "_" + var_name , index_string.str() ) ; + } } } diff --git a/test/SIM_stls/models/STLCheckpoint.cpp b/test/SIM_stls/models/STLCheckpoint.cpp index 45cc88f3..82fd4f06 100644 --- a/test/SIM_stls/models/STLCheckpoint.cpp +++ b/test/SIM_stls/models/STLCheckpoint.cpp @@ -142,13 +142,27 @@ int STLCheckpoint::addData() { string_set.insert("abc") ; string_set.insert("def") ; - // for (int j = 0; j < 5; j++) { - // std::vector temp; - // for (int i = j; i < 10; i++) { - // temp.push_back(i); - // } - // vector_set.insert(temp); - // } + for (int j = 0; j < 5; j++) { + std::vector temp; + for (int i = j; i < 10; i++) { + temp.push_back(i); + } + vector_set.insert(temp); + } + + pair_set.emplace("One", 1); + pair_set.emplace("Two", 2); + pair_set.emplace("Three", 3); + + std::map m; + m[5] = 500.5; + m[1] = 100.1; + std::map m2; + m2[5] = 5000.5; + m2[1] = 1000.1; + + nested_map_set.insert(m); + nested_map_set.insert(m2); for (int j = 0; j < 5; j++) { std::vector temp; @@ -172,6 +186,16 @@ int STLCheckpoint::addData() { string_multiset.insert("abc") ; string_multiset.insert("def") ; + pair_multiset.emplace(5, 5); + pair_multiset.emplace(5, 5); + pair_multiset.emplace(5, 4); + pair_multiset.emplace(4, 4); + + vec_multiset.emplace(std::vector({1,2,3,4})); + vec_multiset.emplace(std::vector({1,2,3,4})); + vec_multiset.emplace(std::vector({1,2,3,4,5})); + + uint_stack.push(1) ; uint_stack.push(2) ; uint_stack.push(3) ; @@ -379,8 +403,6 @@ int STLCheckpoint::addData() { vec_user_defined_ptr.push_back(temp_wrapper); } - - return 0; } @@ -555,6 +577,33 @@ int STLCheckpoint::test() { std::set string_set_copy = {"efg", "abc", "def"}; TRICK_EXPECT_EQ(string_set, string_set_copy, test_suite, "string_set"); + std::set> vector_set_copy; + for (int j = 0; j < 5; j++) { + std::vector temp; + for (int i = j; i < 10; i++) { + temp.push_back(i); + } + vector_set_copy.insert(temp); + } + TRICK_EXPECT_EQ(vector_set, vector_set_copy, test_suite, "vector_set"); + + std::set> pair_set_copy; + pair_set_copy.emplace("One", 1); + pair_set_copy.emplace("Two", 2); + pair_set_copy.emplace("Three", 3); + TRICK_EXPECT_EQ(pair_set, pair_set_copy, test_suite, "pair_set"); + + std::set> nested_map_set_copy; + std::map m; + m[5] = 500.5; + m[1] = 100.1; + std::map m2; + m2[5] = 5000.5; + m2[1] = 1000.1; + nested_map_set_copy.insert(m); + nested_map_set_copy.insert(m2); + TRICK_EXPECT_EQ(nested_map_set, nested_map_set_copy, test_suite, "nested_map_set"); + std::queue> vector_queue_copy; for (int j = 0; j < 5; j++) { std::vector temp; @@ -571,6 +620,19 @@ int STLCheckpoint::test() { std::multiset string_multiset_copy = {"efg", "abc", "def", "efg", "abc", "def"}; TRICK_EXPECT_EQ(string_multiset, string_multiset_copy, test_suite, "string_multiset"); + std::multiset> pair_multiset_copy; + pair_multiset_copy.emplace(5, 5); + pair_multiset_copy.emplace(5, 5); + pair_multiset_copy.emplace(5, 4); + pair_multiset_copy.emplace(4, 4); + TRICK_EXPECT_EQ(pair_multiset, pair_multiset_copy, test_suite, "pair_multiset"); + + std::multiset> vec_multiset_copy; + vec_multiset_copy.emplace(std::vector({1,2,3,4})); + vec_multiset_copy.emplace(std::vector({1,2,3,4})); + vec_multiset_copy.emplace(std::vector({1,2,3,4,5})); + TRICK_EXPECT_EQ(vec_multiset, vec_multiset_copy, test_suite, "vec_multiset"); + std::stack uint_stack_copy; uint_stack_copy.push(1) ; uint_stack_copy.push(2) ; diff --git a/test/SIM_stls/models/STLCheckpoint.hh b/test/SIM_stls/models/STLCheckpoint.hh index 328615fe..be61a8c0 100644 --- a/test/SIM_stls/models/STLCheckpoint.hh +++ b/test/SIM_stls/models/STLCheckpoint.hh @@ -72,13 +72,19 @@ class STLCheckpoint { std::set< int > int_set ; std::set< std::string > string_set ; - // std::set< std::vector > vector_set; + std::set< std::vector > vector_set; + std::set< std::pair > pair_set; + std::set> nested_map_set; + std::queue< std::vector > vector_queue; std::multiset< long > long_multiset ; std::multiset< std::string > string_multiset ; + std::multiset< std::pair< int,int > > pair_multiset ; + std::multiset< std::vector< int > > vec_multiset ; + std::stack< unsigned int > uint_stack ; std::stack< std::string > string_stack ; diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp index 51f7106b..c1077b53 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_restore.cpp @@ -115,7 +115,6 @@ int Trick::MemoryManager::init_from_checkpoint(const char* filename, bool restor read_checkpoint( filename, restore_stls); - if (debug_level) { std::cout << std::endl << "Initialization from checkpoint finished." << std::endl; std::cout.flush(); diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc b/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc index 2640e63f..a7f1f012 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc @@ -757,88 +757,284 @@ TEST_F(MM_stl_checkpoint, nested_list_stack ) { // These will fail to compile -TEST_F(MM_stl_checkpoint, DISABLED_i_set ) { +TEST_F(MM_stl_checkpoint, i_set ) { // ARRANGE // Make a testbed - // STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); - // // Likely to be some repeats in here - // std::vector test_data = get_test_data(1000); + // Likely to be some repeats in here + std::vector test_data = get_test_data(1000); - // // Prepare the STL to be tested - // for (int i = 0; i < test_data.size(); i++) { - // testbed->i_set.insert(test_data[i]); - // } + // Prepare the STL to be tested + for (int i = 0; i < test_data.size(); i++) { + testbed->i_set.insert(test_data[i]); + } - // ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_set")->attr; + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_set")->attr; - // // ACT - // // Call the checkpoint function that is being tested - // (vec_attr->checkpoint_stl)((void *) &testbed->i_set, "my_alloc", vec_attr->name) ; + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_set, "my_alloc", vec_attr->name) ; - // // ASSERT - // validate_temp_set(memmgr, std::string("my_alloc"), std::string("i_set"), std::set (test_data.begin(), test_data.end())); + // ASSERT + validate_temp_set(memmgr, std::string("my_alloc"), std::string("i_set"), std::set (test_data.begin(), test_data.end())); } -TEST_F(MM_stl_checkpoint, DISABLED_s_set ) { +TEST_F(MM_stl_checkpoint, vector_set ) { // ARRANGE // Make a testbed - // STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); - // std::vector test_first = get_test_data(10); - // std::vector test_second = get_test_data(10); + std::vector test_data = get_test_data(1000); + std::vector sizes = {500, 250, 125, 62, 31, 15, 7, 3, 1, 6}; + // The ordering is confusing on these, so just make a copy and use that + std::set> expected_data; + // Prepare the STL to be tested + int start_index = 0; + for (int i = 0; i < sizes.size(); i++) { + std::vector temp_vec; + for (int j = 0; j < sizes[i]; j++) { + temp_vec.push_back(test_data[start_index+j]); + } + testbed->vector_set.insert(std::vector(temp_vec)); + expected_data.insert(std::vector(temp_vec)); - // // Prepare the STL to be tested - // for (int i = 0; i < test_first.size(); i++) { - // testbed->s_set.insert(std::pair(test_first[i], test_second[i])); - // } + start_index += sizes[i]; + } - // ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_set")->attr; + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.vector_set")->attr; - // // ACT - // // Call the checkpoint function that is being tested - // (vec_attr->checkpoint_stl)((void *) &testbed->s_set, "my_alloc", vec_attr->name) ; + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->vector_set, "my_alloc", vec_attr->name) ; - // // ASSERT - // for (int i = 0; i < test_first.size(); i++) { - // std::string var_name = "s_set_" + std::to_string(i); - // validate_temp_pair(memmgr, std::string("my_alloc"), var_name, std::pair(test_first[i], test_second[i])); - // } + // ASSERT + int index = 0; + std::vector sizes_in_right_order; + for (std::vector vec : expected_data) { + std::string var_name = "vector_set_" + std::to_string(index++); + validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, vec); + sizes_in_right_order.push_back(vec.size()); + } + validate_links(memmgr, std::string("my_alloc"), std::string("vector_set"), sizes_in_right_order); + // validate_temp_set(memmgr, std::string("my_alloc"), std::string("vector_set"), std::set (test_data.begin(), test_data.end())); +} + +TEST_F(MM_stl_checkpoint, s_set ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_first = get_test_data(10); + std::vector test_second = get_test_data(10); + + // make a copy to deal with ordering + std::set> expected; + + // Prepare the STL to be tested + for (int i = 0; i < test_first.size(); i++) { + testbed->s_set.insert(std::pair(test_first[i], test_second[i])); + expected.insert(std::pair(test_first[i], test_second[i])); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_set")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->s_set, "my_alloc", vec_attr->name) ; + + // ASSERT + int index = 0; + for (std::pair expected_pair : expected) { + std::string var_name = "s_set_" + std::to_string(index++); + validate_temp_pair(memmgr, std::string("my_alloc"), var_name, std::pair(expected_pair.first, expected_pair.second)); + } + validate_links_pairs(memmgr, "my_alloc", "s_set", test_first.size()); } -TEST_F(MM_stl_checkpoint, DISABLED_nested_list_set ) { +TEST_F(MM_stl_checkpoint, nested_map_set ) { // // ARRANGE // // Make a testbed - // STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); - // std::vector test_data = get_test_data(10); - // std::vector list_sizes = {2, 7, 1}; - // // Prepare the STL to be tested + std::vector test_keys = get_test_data(100); + std::vector test_vals = get_test_data(100); + // Prepare the STL to be tested + + // Make a copy to deal with ordering mess + std::set> expected; - // int data_index = 0; - // for (int i = 0; i < list_sizes.size(); i++) { - // testbed->nested_list_stack.push(std::list(test_data.begin() + data_index, test_data.begin() + data_index + list_sizes[i])); - // data_index += list_sizes[i]; - // } + for (int i = 0; i < 10; i++) { + std::map temp_map; + for (int j = 0; j < 10; j++) { + temp_map[test_keys[i*10+j]] = test_vals[i*10+j]; + } + expected.emplace(temp_map); + testbed->nested_map_set.emplace(temp_map); + } - // ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.nested_list_stack")->attr; + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.nested_map_set")->attr; - // // ACT - // // Call the checkpoint function that is being tested - // (vec_attr->checkpoint_stl)((void *) &testbed->nested_list_stack, "my_alloc", vec_attr->name) ; + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->nested_map_set, "my_alloc", vec_attr->name) ; - // // ASSERT - // data_index = 0; - // for (int i = 0; i < list_sizes.size(); i++) { - // // reverse data - just go through the lists backwards - // std::string var_name = "nested_list_stack_" + std::to_string(list_sizes.size()-1-i); - // validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, std::vector(test_data.begin() + data_index, test_data.begin() + data_index + list_sizes[i])); - // data_index += list_sizes[i]; - // } + // ASSERT + int index = 0; + for (std::map expected_map : expected) { + std::string var_name = "nested_map_set_" + std::to_string(index++); + validate_temp_map(memmgr, "my_alloc", var_name, expected_map); + } + + // Validate links? +} + +// Multisets + +TEST_F(MM_stl_checkpoint, i_multiset ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + // Likely to be some repeats in here + std::vector test_data = get_test_data(1000); + + std::multiset expected; + + // Prepare the STL to be tested + for (int i = 0; i < test_data.size(); i++) { + testbed->i_multiset.insert(test_data[i]); + testbed->i_multiset.insert(test_data[i]); + expected.insert(test_data[i]); + expected.insert(test_data[i]); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.i_multiset")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->i_multiset, "my_alloc", vec_attr->name) ; + + // ASSERT + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_multiset"), std::vector (expected.begin(), expected.end())); +} + +TEST_F(MM_stl_checkpoint, vector_multiset ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_data = get_test_data(1000); + std::vector sizes = {500, 250, 125, 62, 31, 15, 7, 3, 1, 6}; + // The ordering is confusing on these, so just make a copy and use that + std::multiset> expected_data; + // Prepare the STL to be tested + int start_index = 0; + for (int i = 0; i < sizes.size(); i++) { + std::vector temp_vec; + for (int j = 0; j < sizes[i]; j++) { + temp_vec.push_back(test_data[start_index+j]); + } + // just add 2? + testbed->vector_multiset.insert(std::vector(temp_vec)); + testbed->vector_multiset.insert(std::vector(temp_vec)); + expected_data.insert(std::vector(temp_vec)); + expected_data.insert(std::vector(temp_vec)); + + start_index += sizes[i]; + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.vector_multiset")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->vector_multiset, "my_alloc", vec_attr->name) ; + + // ASSERT + int index = 0; + std::vector sizes_in_right_order; + for (std::vector vec : expected_data) { + std::string var_name = "vector_multiset_" + std::to_string(index++); + validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, vec); + sizes_in_right_order.push_back(vec.size()); + } + validate_links(memmgr, std::string("my_alloc"), std::string("vector_multiset"), sizes_in_right_order); +} + +TEST_F(MM_stl_checkpoint, s_multiset ) { + // ARRANGE + // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_first = get_test_data(10); + std::vector test_second = get_test_data(10); + + // make a copy to deal with ordering + std::multiset> expected; + + // Prepare the STL to be tested + for (int i = 0; i < test_first.size(); i++) { + testbed->s_multiset.insert(std::pair(test_first[i], test_second[i])); + testbed->s_multiset.insert(std::pair(test_first[i], test_second[i])); + expected.insert(std::pair(test_first[i], test_second[i])); + expected.insert(std::pair(test_first[i], test_second[i])); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.s_multiset")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->s_multiset, "my_alloc", vec_attr->name) ; + + // ASSERT + int index = 0; + for (std::pair expected_pair : expected) { + std::string var_name = "s_multiset_" + std::to_string(index++); + validate_temp_pair(memmgr, std::string("my_alloc"), var_name, std::pair(expected_pair.first, expected_pair.second)); + } + validate_links_pairs(memmgr, "my_alloc", "s_multiset", expected.size()); } +TEST_F(MM_stl_checkpoint, nested_map_multiset ) { + // // ARRANGE + // // Make a testbed + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + + std::vector test_keys = get_test_data(100); + std::vector test_vals = get_test_data(100); + // Prepare the STL to be tested + + // Make a copy to deal with ordering mess + std::multiset> expected; + + for (int i = 0; i < 10; i++) { + std::map temp_map; + for (int j = 0; j < 10; j++) { + temp_map[test_keys[i*10+j]] = test_vals[i*10+j]; + } + expected.emplace(temp_map); + expected.emplace(temp_map); + testbed->nested_map_multiset.emplace(temp_map); + testbed->nested_map_multiset.emplace(temp_map); + } + + ATTRIBUTES* vec_attr = memmgr->ref_attributes("my_alloc.nested_map_multiset")->attr; + + // ACT + // Call the checkpoint function that is being tested + (vec_attr->checkpoint_stl)((void *) &testbed->nested_map_multiset, "my_alloc", vec_attr->name) ; + + // ASSERT + int index = 0; + for (std::map expected_map : expected) { + std::string var_name = "nested_map_multiset_" + std::to_string(index++); + validate_temp_map(memmgr, "my_alloc", var_name, expected_map); + } + + // Validate links? +} // Arrays diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc b/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc index fcc7ca3b..8d05d14f 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc @@ -823,14 +823,322 @@ TEST_F(MM_stl_restore, i_set ) { EXPECT_EQ(memmgr->var_exists("my_alloc_i_set"), 0); } -// These can't be written yet since the data structures will fail at compile time -TEST_F(MM_stl_restore, DISABLED_s_set ) { } +TEST_F(MM_stl_restore, s_set ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES * attr = memmgr->ref_attributes("my_alloc.s_set")->attr; -TEST_F(MM_stl_restore, DISABLED_nested_map_set ) { } + std::vector test_first= get_test_data(20); + std::vector test_second = get_test_data(20); -TEST_F(MM_stl_restore, DISABLED_i_multiset ) { } + std::set> expected; + std::string * data_links = (std::string *) memmgr->declare_var("std::string my_alloc_s_set[20]"); + + for (int i = 0; i < test_first.size(); i++) { + data_links[i] = "my_alloc_s_set_" + std::to_string(i); + + std::string first_var_name = "int my_alloc_s_set_" + std::to_string(i) + "_first"; + std::string second_var_name = "int my_alloc_s_set_" + std::to_string(i) + "_second"; + + int * temp_first = (int *)memmgr->declare_var(first_var_name.c_str()); + *temp_first = test_first[i]; + int * temp_second = (int *)memmgr->declare_var(second_var_name.c_str()); + *temp_second = test_second[i]; + + // Build a copy of the expected data + expected.insert(std::pair(test_first[i], test_second[i])); + } + + // ACT + (attr->restore_stl)((void *) &testbed->s_set, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->s_set, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_set"), 0); + for (int i = 0; i < test_first.size(); i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_s_set_" + std::to_string(i) + "_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_set_" + std::to_string(i) + "_second"), 0); + } +} + +TEST_F(MM_stl_restore, vector_set ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.vector_set")->attr; + + std::vector test_data = get_test_data(50); + // Make sure we can handle lists of different sizes + std::vector lengths = {20, 4, 1, 1, 14, 10}; + + // Build a copy of the expected data + std::set> expected; + + // Register the expected temporary variables with the memory manager + int start_index = 0; + std::string * nested_list_links = (std::string *) memmgr->declare_var( "std::string my_alloc_vector_set[6]"); + for (int i = 0; i < lengths.size(); i++) { + nested_list_links[i] = "my_alloc_vector_set_" + std::to_string(i); + + std::string temp_var_name = "int my_alloc_vector_set_" + std::to_string(i) + "[" + std::to_string(lengths[i]) + "]"; + std::vector temp_expected; + int * temp_arr = (int *)memmgr->declare_var(temp_var_name.c_str()); + for (int j = 0; j < lengths[i]; j++) { + temp_arr[j] = test_data[start_index + j]; + temp_expected.push_back(test_data[start_index + j]); + } + + expected.insert(temp_expected); + + start_index += lengths[i]; + } + + // ACT + (attr->restore_stl)((void *) &testbed->vector_set, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + ASSERT_EQ(testbed->vector_set, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_vector_set"), 0); + for (int i = 0; i < test_data.size()/2; i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_vector_set_" + std::to_string(i)), 0); + } +} + +TEST_F(MM_stl_restore, nested_map_set ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.nested_map_set")->attr; + + std::vector test_keys = get_test_data(60); + std::vector test_vals = get_test_data(60); + + std::set> expected; + + std::string * nested_map_links = (std::string *) memmgr->declare_var( "std::string my_alloc_nested_map_set[6]"); + for (int i = 0; i < 6; i++) { + nested_map_links[i] = "my_alloc_nested_map_set_" + std::to_string(i); + + std::string keys_var_name = "short my_alloc_nested_map_set_" + std::to_string(i) + "_keys[10]"; + std::string vals_var_name = "double my_alloc_nested_map_set_" + std::to_string(i) + "_data[10]"; + + short * map_keys_temp = (short *) memmgr->declare_var( keys_var_name.c_str() ); + double * map_vals_temp = (double *) memmgr->declare_var( vals_var_name.c_str() ); + + std::map temp_map; + for (int j = 0; j < 10; j++) { + map_keys_temp[j] = test_keys[(i*10) + j]; + map_vals_temp[j] = test_vals[(i*10) + j]; + + temp_map[test_keys[(i*10) + j]] = test_vals[(i*10) + j]; + } + + expected.emplace(temp_map); + } + + // ACT + (attr->restore_stl)((void *) &testbed->nested_map_set, "my_alloc", attr->name) ; + + // ASSERT + ASSERT_EQ(testbed->nested_map_set, expected); + + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_map_set"), 0); + for (int i = 0; i < expected.size(); i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_map_set_" + std::to_string(i) + "_data"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_map_set_" + std::to_string(i) + "_vals"), 0); + } +} + +// Multiset + +TEST_F(MM_stl_restore, i_multiset ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.i_multiset")->attr; + + + std::vector test_data = get_test_data(100); + std::multiset expected; + + // Make the expected structure first + for (int val : test_data) { + expected.insert(val); + expected.insert(val); + } + + // Register the expected temporary variables with the memory manager + std::string var_name = "int my_alloc_i_multiset[" + std::to_string(expected.size()) + "]"; + int * temp_data = (int *) memmgr->declare_var(var_name.c_str()); + int index = 0; + for (const int val : expected) { + temp_data[index++] = val; + } + + // ACT + (attr->restore_stl)((void *) &testbed->i_multiset, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->i_multiset, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_i_multiset"), 0); +} + + +TEST_F(MM_stl_restore, s_multiset ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES * attr = memmgr->ref_attributes("my_alloc.s_multiset")->attr; + + std::vector test_first= get_test_data(20); + std::vector test_second = get_test_data(20); + + std::multiset> expected; + + std::string * data_links = (std::string *) memmgr->declare_var("std::string my_alloc_s_multiset[40]"); + + for (int i = 0; i < test_first.size(); i++) { + // just insert the same thing twice + for (int j = 0; j < 2; j++) { + data_links[i*2+j] = "my_alloc_s_multiset_" + std::to_string(i*2+j); + + std::string first_var_name = "int my_alloc_s_multiset_" + std::to_string(i*2+j) + "_first"; + std::string second_var_name = "int my_alloc_s_multiset_" + std::to_string(i*2+j) + "_second"; + + int * temp_first = (int *)memmgr->declare_var(first_var_name.c_str()); + *temp_first = test_first[i]; + int * temp_second = (int *)memmgr->declare_var(second_var_name.c_str()); + *temp_second = test_second[i]; + + // Build a copy of the expected data + expected.insert(std::pair(test_first[i], test_second[i])); + } + } + + // ACT + (attr->restore_stl)((void *) &testbed->s_multiset, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + EXPECT_EQ(testbed->s_multiset, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_s_multiset"), 0); + for (int i = 0; i < expected.size(); i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_s_multiset_" + std::to_string(i) + "_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_multiset_" + std::to_string(i) + "_second"), 0); + } +} + +TEST_F(MM_stl_restore, vector_multiset ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.vector_multiset")->attr; + + std::vector test_data = get_test_data(50); + // Make sure we can handle lists of different sizes + std::vector lengths = {20, 4, 1, 1, 14, 10}; + + // Build a copy of the expected data + std::multiset> expected; + + // Register the expected temporary variables with the memory manager + int start_index = 0; + std::string * nested_list_links = (std::string *) memmgr->declare_var( "std::string my_alloc_vector_multiset[12]"); + for (int i = 0; i < lengths.size(); i++) { + for (int j = 0; j < 2; j++) { + nested_list_links[i*2+j] = "my_alloc_vector_multiset_" + std::to_string(i*2+j); + + std::string temp_var_name = "int my_alloc_vector_multiset_" + std::to_string(i*2+j) + "[" + std::to_string(lengths[i]) + "]"; + std::vector temp_expected; + int * temp_arr = (int *)memmgr->declare_var(temp_var_name.c_str()); + for (int k = 0; k < lengths[i]; k++) { + temp_arr[k] = test_data[start_index + k]; + temp_expected.push_back(test_data[start_index + k]); + } + + expected.insert(temp_expected); + + } + start_index += lengths[i]; + } + + // ACT + (attr->restore_stl)((void *) &testbed->vector_multiset, "my_alloc", attr->name) ; + + // ASSERT + // Make sure the STL has been populated + ASSERT_EQ(testbed->vector_multiset, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_vector_multiset"), 0); + for (int i = 0; i < expected.size(); i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_vector_multiset_" + std::to_string(i)), 0); + } +} + +TEST_F(MM_stl_restore, nested_map_multiset ) { + // ARRANGE + // make a testbed object + STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); + ATTRIBUTES* attr = memmgr->ref_attributes("my_alloc.nested_map_multiset")->attr; + + std::vector test_keys = get_test_data(60); + std::vector test_vals = get_test_data(60); + + std::multiset> expected; + + std::string * nested_map_links = (std::string *) memmgr->declare_var( "std::string my_alloc_nested_map_multiset[12]"); + for (int i = 0; i < 6; i++) { + for (int k = 0; k < 2; k++) { + nested_map_links[i] = "my_alloc_nested_map_multiset_" + std::to_string(i*2+k); + + std::string keys_var_name = "short my_alloc_nested_map_multiset_" + std::to_string(i*2+k) + "_keys[10]"; + std::string vals_var_name = "double my_alloc_nested_map_multiset_" + std::to_string(i*2+k) + "_data[10]"; + + short * map_keys_temp = (short *) memmgr->declare_var( keys_var_name.c_str() ); + double * map_vals_temp = (double *) memmgr->declare_var( vals_var_name.c_str() ); + + std::map temp_map; + for (int j = 0; j < 10; j++) { + map_keys_temp[j] = test_keys[(i*10) + j]; + map_vals_temp[j] = test_vals[(i*10) + j]; + + temp_map[test_keys[(i*10) + j]] = test_vals[(i*10) + j]; + } + + expected.emplace(temp_map); + } + } + + // ACT + (attr->restore_stl)((void *) &testbed->nested_map_multiset, "my_alloc", attr->name) ; + + // ASSERT + ASSERT_EQ(testbed->nested_map_multiset, expected); + + // Check that all the temporary variables have been deleted + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_map_multiset"), 0); + for (int i = 0; i < expected.size(); i++) { + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_map_multiset_" + std::to_string(i) + "_data"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_nested_map_multiset_" + std::to_string(i) + "_vals"), 0); + } +} TEST_F(MM_stl_restore, i_array ) { // ARRANGE @@ -884,7 +1192,7 @@ TEST_F(MM_stl_restore, pair_array ) { *temp_second = test_second[i]; // Build a copy of the expected data - expected[i] = std::pair(test_first[i], test_second[i]); + expected[i] = std::pair(test_first[i], test_second[i]); } // ACT diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh b/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh index 5e87785f..6a4a72ef 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh @@ -8,8 +8,6 @@ #include #include -#include - class UserClassStl { public: int a; @@ -61,6 +59,7 @@ public: std::pair,std::stack> s_s_pair; std::pair> i_v_pair; std::pair, int> pair_pair; + std::pair< int , std::pair< int, int > > int_pair_pair; std::map i_i_map; std::map> i_s_map; @@ -76,12 +75,15 @@ public: std::stack> nested_list_stack; std::set i_set; - // These fail in CP right now - // std::set > s_set; - // std::set> nested_map_set; + std::set> vector_set; + std::set > s_set; + std::set> nested_map_set; // this one will as well, if we put any STL containers in there std::multiset i_multiset; + std::multiset> vector_multiset; + std::multiset > s_multiset; + std::multiset> nested_map_multiset; std::array i_array; std::array, 10> pair_array; diff --git a/trick_source/sim_services/MemoryManager/test/MM_test.hh b/trick_source/sim_services/MemoryManager/test/MM_test.hh index a62c9770..2319e383 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_test.hh +++ b/trick_source/sim_services/MemoryManager/test/MM_test.hh @@ -102,7 +102,7 @@ void validate_alloc_info(Trick::MemoryManager *memmgr, // char, short, int, long, long long template ::value>::type* = nullptr> T random() { - return (T) (rand() % 1000); + return (T) (rand()); } // This should just catch bools From 2519c914a5e6553dba3a8032cee38de0ca08a77b Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 7 Oct 2022 17:00:09 -0500 Subject: [PATCH 073/162] Pair checkpointing fix (#1356) * Fix pair checkpointing bug, add tests * Documentation update --- .../STL-capabilities.md | 11 +--- include/trick/checkpoint_pair.hh | 39 ++++++------ test/SIM_stls/models/STLCheckpoint.cpp | 26 ++++---- .../MemoryManager/test/MM_read_checkpoint.cc | 2 +- .../MemoryManager/test/MM_stl_checkpoint.cc | 59 +++++++++--------- .../MemoryManager/test/MM_stl_restore.cc | 61 +++++++++++++------ .../MemoryManager/test/MM_stl_testbed.hh | 1 - 7 files changed, 106 insertions(+), 93 deletions(-) diff --git a/docs/documentation/simulation_capabilities/STL-capabilities.md b/docs/documentation/simulation_capabilities/STL-capabilities.md index 48f902b0..d8737a93 100644 --- a/docs/documentation/simulation_capabilities/STL-capabilities.md +++ b/docs/documentation/simulation_capabilities/STL-capabilities.md @@ -46,7 +46,7 @@ If it is in a class that is nested in a `sim_object`, it will be registered with You can nest an arbitrary amount of STLs, they will all be checkpointed as long as the base is a member of a class that is registered with the memory manager. There -are a some [**limitations**](#limitations) and exceptions due to [**bugs**](#known_bugs) at the moment (but hopefully not forever!) +are a some known [**limitations**](#limitations). ``` class AnyClass { @@ -109,14 +109,5 @@ memorymanager->declare_var_extern(&my_vector, "std::vector my_vector_alloca ``` - - -## Known bugs - -The types in an std::pair cannot be sequence STL types (vector, queue, stack, etc). -``` - // This will fail to checkpoint - std::pair> -``` [Continue to Threads](Threads) diff --git a/include/trick/checkpoint_pair.hh b/include/trick/checkpoint_pair.hh index badaf33a..c4fc014d 100644 --- a/include/trick/checkpoint_pair.hh +++ b/include/trick/checkpoint_pair.hh @@ -82,7 +82,6 @@ int checkpoint_stl(std::pair & in_pair , std::string object_name int status ; std::string temp_str; - FIRST * first = nullptr ; std::string * second = nullptr ; std::replace_if(object_name.begin(), object_name.end(), static_cast(std::ispunct), '_'); @@ -109,9 +108,10 @@ int checkpoint_stl(std::pair & in_pair , std::string object_name temp_str = var_declare.str(); second = (std::string *)TMM_declare_var_s(temp_str.c_str()) ; if ( second ) { + *second = std::string("inner"); temp_str = std::string(object_name + "_" + var_name + "_second"); TMM_add_checkpoint_alloc_dependency(temp_str.c_str()) ; - checkpoint_stl( in_pair.second , object_name + "_" + var_name , "second" ) ; + checkpoint_stl( in_pair.second , object_name + "_" + var_name , "second_inner" ) ; } } @@ -136,9 +136,10 @@ int checkpoint_stl(std::pair & in_pair , std::string object_name << object_name << "_" << var_name << "_first[1]" ; temp_str = var_declare.str() ; first = (std::string *)TMM_declare_var_s(temp_str.c_str()) ; + *first = std::string("inner"); temp_str = std::string(object_name + "_" + var_name + "_first"); TMM_add_checkpoint_alloc_dependency(temp_str.c_str()) ; - checkpoint_stl( in_pair.first , object_name + "_" + var_name , "first" ) ; + checkpoint_stl( in_pair.first , object_name + "_" + var_name , "first_inner" ) ; var_declare.str("") ; var_declare.clear() ; @@ -178,9 +179,10 @@ int checkpoint_stl(std::pair & in_pair , std::string object_name << object_name << "_" << var_name << "_first[1]" ; temp_str = var_declare.str(); first = (std::string *)TMM_declare_var_s(temp_str.c_str()) ; + *first = std::string("inner"); temp_str = std::string(object_name + "_" + var_name + "_first"); TMM_add_checkpoint_alloc_dependency(temp_str.c_str()) ; - checkpoint_stl( in_pair.first , object_name + "_" + var_name , "first" ) ; + checkpoint_stl( in_pair.first , object_name + "_" + var_name , "first_inner" ) ; var_declare.str("") ; var_declare.clear() ; @@ -188,9 +190,10 @@ int checkpoint_stl(std::pair & in_pair , std::string object_name << object_name << "_" << var_name << "_second[1]" ; temp_str = var_declare.str(); second = (std::string *)TMM_declare_var_s(temp_str.c_str()) ; + *second = std::string("inner"); temp_str = std::string(object_name + "_" + var_name + "_second"); TMM_add_checkpoint_alloc_dependency(temp_str.c_str()) ; - checkpoint_stl( in_pair.second , object_name + "_" + var_name , "second" ) ; + checkpoint_stl( in_pair.second , object_name + "_" + var_name , "second_inner" ) ; return 0 ; } @@ -256,7 +259,7 @@ int restore_stl(std::pair & in_pair , std::string object_name , REF2 * second_ref ; FIRST * first ; - std::string * second ; + std::string * second_inner ; std::string temp_str; @@ -269,10 +272,10 @@ int restore_stl(std::pair & in_pair , std::string object_name , if ( first_ref != NULL && second_ref != NULL ) { first = (FIRST *)first_ref->address ; - second = (std::string *)second_ref->address ; - + second_inner = (std::string *)second_ref->address ; + temp_str = object_name + "_" + var_name + "_second"; in_pair.first = first[0] ; - restore_stl( in_pair.second , object_name + "_" + var_name , "second" ) ; + restore_stl( in_pair.second , temp_str , *second_inner ) ; delete_stl( in_pair , object_name , var_name ) ; } @@ -288,7 +291,7 @@ int restore_stl(std::pair & in_pair , std::string object_name , REF2 * first_ref ; REF2 * second_ref ; - std::string * first ; + std::string * first_inner ; SECOND * second ; std::string temp_str; @@ -300,10 +303,10 @@ int restore_stl(std::pair & in_pair , std::string object_name , second_ref = ref_attributes((char *)temp_str.c_str()) ; if ( first_ref != NULL && second_ref != NULL ) { - first = (std::string *)first_ref->address ; + first_inner = (std::string *)first_ref->address ; second = (SECOND *)second_ref->address ; - restore_stl( in_pair.first , object_name + "_" + var_name , "first" ) ; + restore_stl( in_pair.first , object_name + "_" + var_name + "_first", *first_inner ) ; in_pair.second = second[0] ; delete_stl( in_pair , object_name , var_name ) ; @@ -319,8 +322,8 @@ int restore_stl(std::pair & in_pair , std::string object_name , REF2 * first_ref ; REF2 * second_ref ; - std::string * first ; - std::string * second ; + std::string * first_inner ; + std::string * second_inner ; std::string temp_str; @@ -332,11 +335,11 @@ int restore_stl(std::pair & in_pair , std::string object_name , second_ref = ref_attributes((char *)temp_str.c_str()) ; if ( first_ref != NULL && second_ref != NULL ) { - first = (std::string *)first_ref->address ; - second = (std::string *)second_ref->address ; + first_inner = (std::string *)first_ref->address ; + second_inner = (std::string *)second_ref->address ; - restore_stl( in_pair.first , object_name + "_" + var_name , "first" ) ; - restore_stl( in_pair.second , object_name + "_" + var_name , "second" ) ; + restore_stl( in_pair.first , object_name + "_" + var_name + "_first" , *first_inner ) ; + restore_stl( in_pair.second , object_name + "_" + var_name + "_second", *second_inner ) ; delete_stl( in_pair , object_name , var_name ) ; } diff --git a/test/SIM_stls/models/STLCheckpoint.cpp b/test/SIM_stls/models/STLCheckpoint.cpp index 82fd4f06..1e9839dc 100644 --- a/test/SIM_stls/models/STLCheckpoint.cpp +++ b/test/SIM_stls/models/STLCheckpoint.cpp @@ -727,23 +727,23 @@ int STLCheckpoint::test() { pair_pair_pair_copy.second.second = 54 ; TRICK_EXPECT_EQ(pair_pair_pair_copy, pair_pair_pair, test_suite, "pair_pair_pair"); - // TODO: fix this case // Check all the int/vec combo pairs together, for laziness - // TRICK_EXPECT_EQ(int_vec_pair.first, 5, test_suite, "int_vec_pair.first"); - // TRICK_EXPECT_EQ(vec_int_pair.second, 5, test_suite, "vec_int_pair.second"); + TRICK_EXPECT_EQ(int_vec_pair.first, 5, test_suite, "int_vec_pair.first"); + TRICK_EXPECT_EQ(vec_int_pair.second, 5, test_suite, "vec_int_pair.second"); - // TRICK_EXPECT_EQ(int_vec_pair.second.size(), 4, test_suite, "int_vec_pair.second.size"); - // TRICK_EXPECT_EQ(vec_int_pair.first.size(), 4, test_suite, "vec_int_pair.first.size"); - // TRICK_EXPECT_EQ(vec_vec_pair.first.size(), 4, test_suite, "vec_vec_pair.first.size"); - // TRICK_EXPECT_EQ(vec_vec_pair.second.size(), 4, test_suite, "vec_vec_pair.second.size"); + TRICK_EXPECT_EQ(int_vec_pair.second.size(), 4, test_suite, "int_vec_pair.second.size"); + TRICK_EXPECT_EQ(vec_int_pair.first.size(), 4, test_suite, "vec_int_pair.first.size"); + TRICK_EXPECT_EQ(vec_vec_pair.first.size(), 4, test_suite, "vec_vec_pair.first.size"); + TRICK_EXPECT_EQ(vec_vec_pair.second.size(), 4, test_suite, "vec_vec_pair.second.size"); - // for (int i = 0; i < int_vec_pair.second.size(); i++) { - // TRICK_EXPECT_EQ(int_vec_pair.second[i], (i+1)*5, test_suite, "int_vec_pair.second elems"); - // TRICK_EXPECT_EQ(vec_int_pair.first[i], (i+1)*5, test_suite, "vec_int_pair.first elems"); - // TRICK_EXPECT_EQ(vec_vec_pair.first[i], (i+1)*5, test_suite, "vec_vec_pair.first elems"); - // TRICK_EXPECT_EQ(vec_vec_pair.second[i], (i+1)*5, test_suite, "vec_vec_pair.second elems"); + for (int i = 0; i < int_vec_pair.second.size(); i++) { + TRICK_EXPECT_EQ(int_vec_pair.second[i], (i+1)*5, test_suite, "int_vec_pair.second elems"); + TRICK_EXPECT_EQ(vec_int_pair.first[i], (i+1)*5, test_suite, "vec_int_pair.first elems"); + TRICK_EXPECT_EQ(vec_vec_pair.first[i], (i+1)*5, test_suite, "vec_vec_pair.first elems"); + TRICK_EXPECT_EQ(vec_vec_pair.second[i], (i+1)*5, test_suite, "vec_vec_pair.second elems"); + + } - // } TRICK_EXPECT_EQ(vec_user_simple.size(), 10, test_suite, "vec_user_simple") for (int i = 0; i < 10; i++) { diff --git a/trick_source/sim_services/MemoryManager/test/MM_read_checkpoint.cc b/trick_source/sim_services/MemoryManager/test/MM_read_checkpoint.cc index 8d1a0619..df30185f 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_read_checkpoint.cc +++ b/trick_source/sim_services/MemoryManager/test/MM_read_checkpoint.cc @@ -332,4 +332,4 @@ TEST_F(MM_read_checkpoint, encapsulated_stl_test_stl_disabled) { // c should not be restored ASSERT_EQ(my_foo_ptr->c.size(), 0); -} +} \ No newline at end of file diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc b/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc index a7f1f012..871c246b 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_checkpoint.cc @@ -63,7 +63,7 @@ void validate_temp_sequence (Trick::MemoryManager * memmgr, std::string object_n } -void validate_links (Trick::MemoryManager * memmgr, std::string object_name, std::string top_level_name, std::vector lengths) { +void validate_links_sequences (Trick::MemoryManager * memmgr, std::string object_name, std::string top_level_name, std::vector lengths) { std::string temp_name = object_name + "_" + top_level_name; ASSERT_TRUE(memmgr->var_exists(temp_name) == 1); @@ -98,6 +98,16 @@ void validate_links_pairs (Trick::MemoryManager * memmgr, std::string object_nam } } +void validate_link_from_pair (Trick::MemoryManager * memmgr, std::string object_name, std::string top_level_name) { + std::string temp_name = object_name + "_" + top_level_name; + ASSERT_TRUE(memmgr->var_exists(temp_name) == 1); + + REF2 * link_ref = memmgr->ref_attributes(temp_name.c_str()); + std::string * link_name = (std::string *) link_ref->address; + EXPECT_EQ(link_name[0], "inner"); +} + + template void validate_temp_set (Trick::MemoryManager * memmgr, std::string object_name, std::string var_name, std::set expected_data) { std::string temp_name = object_name + "_" + var_name; @@ -241,7 +251,7 @@ TEST_F(MM_stl_checkpoint, i_s_vec ) { validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, test_data[i]); } - validate_links(memmgr, std::string("my_alloc"), std::string("i_s_vec"), std::vector(10, 10)); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("i_s_vec"), std::vector(10, 10)); } TEST_F(MM_stl_checkpoint, string_vec ) { @@ -313,7 +323,7 @@ TEST_F(MM_stl_checkpoint, i_i_pair ) { validate_temp_pair(memmgr, std::string("my_alloc"), vec_attr->name, std::pair(test_data[0], test_data[1])); } -TEST_F(MM_stl_checkpoint, DISABLED_i_s_pair ) { +TEST_F(MM_stl_checkpoint, i_s_pair ) { // ARRANGE // Make a testbed STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); @@ -333,13 +343,11 @@ TEST_F(MM_stl_checkpoint, DISABLED_i_s_pair ) { (vec_attr->checkpoint_stl)((void *) &testbed->i_s_pair, "my_alloc", vec_attr->name) ; // ASSERT - validate_links(memmgr, std::string("my_alloc"), std::string("i_s_pair_second"), std::vector(1, test_val.size())); validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_s_pair_second_inner"), test_val); - // Oh boy this one actually doesn't work!!!!! - // TODO: fix i_s_pair + validate_link_from_pair(memmgr, std::string("my_alloc"), std::string("i_s_pair_second")); } -TEST_F(MM_stl_checkpoint, DISABLED_s_i_pair ) { +TEST_F(MM_stl_checkpoint, s_i_pair ) { // ARRANGE // Make a testbed STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); @@ -360,15 +368,12 @@ TEST_F(MM_stl_checkpoint, DISABLED_s_i_pair ) { // ASSERT validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("s_i_pair_first_inner"), test_key); - - // Oh boy this one actually doesn't work!!!!! - // Same as the other one - // TODO: fix s_i_pair + validate_link_from_pair(memmgr, std::string("my_alloc"), std::string("s_i_pair_first")); } -TEST_F(MM_stl_checkpoint, DISABLED_i_v_pair ) { +TEST_F(MM_stl_checkpoint, i_v_pair ) { // ARRANGE // Make a testbed STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); @@ -388,10 +393,8 @@ TEST_F(MM_stl_checkpoint, DISABLED_i_v_pair ) { (vec_attr->checkpoint_stl)((void *) &testbed->i_v_pair, "my_alloc", vec_attr->name) ; // ASSERT - validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_v_pair_second"), test_val); - - // Oh boy this one actually doesn't work!!!!! - // TODO: fix i_s_pair + validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("i_v_pair_second_inner"), test_val); + validate_link_from_pair(memmgr, std::string("my_alloc"), std::string("i_v_pair_second")); } @@ -414,7 +417,8 @@ TEST_F(MM_stl_checkpoint, pair_pair ) { // ASSERT validate_single(memmgr, std::string("my_alloc"), std::string("pair_pair_second"), 3); - validate_temp_pair(memmgr, std::string("my_alloc"), std::string("pair_pair_first"), std::pair(1, 2)); + validate_temp_pair(memmgr, std::string("my_alloc"), std::string("pair_pair_first_inner"), std::pair(1, 2)); + validate_link_from_pair(memmgr, std::string("my_alloc"), std::string("pair_pair_first")); } @@ -487,7 +491,7 @@ TEST_F(MM_stl_checkpoint, i_s_map ) { sorted_lengths.push_back(expected_data.size()); } - validate_links(memmgr, std::string("my_alloc"), std::string("i_s_map_data"), sorted_lengths); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("i_s_map_data"), sorted_lengths); } @@ -529,7 +533,7 @@ TEST_F(MM_stl_checkpoint, s_i_map ) { values_in_the_right_order.push_back(it.second); lengths_in_the_right_order.push_back(it.first.size()); } - validate_links(memmgr, std::string("my_alloc"), std::string("s_i_map_keys"), lengths_in_the_right_order); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("s_i_map_keys"), lengths_in_the_right_order); validate_temp_sequence(memmgr, std::string("my_alloc"), std::string("s_i_map_data"), values_in_the_right_order); } @@ -572,7 +576,7 @@ TEST_F(MM_stl_checkpoint, s_s_map ) { } validate_links_pairs(memmgr, std::string("my_alloc"), std::string("s_s_map_keys"), test_map.size()); - validate_links(memmgr, std::string("my_alloc"), std::string("s_s_map_data"), data_lengths); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("s_s_map_data"), data_lengths); } @@ -658,7 +662,7 @@ TEST_F(MM_stl_checkpoint, nested_list_queue ) { data_index += list_sizes[i]; } - validate_links(memmgr, std::string("my_alloc"), std::string("nested_list_queue"), list_sizes); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("nested_list_queue"), list_sizes); } @@ -748,15 +752,10 @@ TEST_F(MM_stl_checkpoint, nested_list_stack ) { data_index += list_sizes[i]; } - validate_links(memmgr, std::string("my_alloc"), std::string("nested_list_stack"), std::vector(list_sizes.rbegin(), list_sizes.rend())); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("nested_list_stack"), std::vector(list_sizes.rbegin(), list_sizes.rend())); } - -// Sets TODO: No support for nested STLs in sets. -// These will fail to compile - - TEST_F(MM_stl_checkpoint, i_set ) { // ARRANGE // Make a testbed @@ -816,7 +815,7 @@ TEST_F(MM_stl_checkpoint, vector_set ) { validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, vec); sizes_in_right_order.push_back(vec.size()); } - validate_links(memmgr, std::string("my_alloc"), std::string("vector_set"), sizes_in_right_order); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("vector_set"), sizes_in_right_order); // validate_temp_set(memmgr, std::string("my_alloc"), std::string("vector_set"), std::set (test_data.begin(), test_data.end())); } @@ -959,7 +958,7 @@ TEST_F(MM_stl_checkpoint, vector_multiset ) { validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, vec); sizes_in_right_order.push_back(vec.size()); } - validate_links(memmgr, std::string("my_alloc"), std::string("vector_multiset"), sizes_in_right_order); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("vector_multiset"), sizes_in_right_order); } TEST_F(MM_stl_checkpoint, s_multiset ) { @@ -1138,7 +1137,7 @@ TEST_F(MM_stl_checkpoint, vec_array ) { validate_temp_sequence(memmgr, std::string("my_alloc"), var_name, std::vector(test_data.begin() + (i*10), test_data.begin() +((i+1)*10))); } - validate_links(memmgr, std::string("my_alloc"), std::string("vec_array"), std::vector(10, 10)); + validate_links_sequences(memmgr, std::string("my_alloc"), std::string("vec_array"), std::vector(10, 10)); } TEST_F(MM_stl_checkpoint, vec_user_defined ) { diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc b/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc index 8d05d14f..059507dc 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_restore.cc @@ -6,6 +6,12 @@ #include "MM_stl_testbed.hh" #include "MM_test.hh" +#include "trick/checkpoint_sequence_stl.hh" +#include "trick/checkpoint_map.hh" +#include "trick/checkpoint_stack.hh" +#include "trick/checkpoint_queue.hh" +#include "trick/checkpoint_pair.hh" + /* This tests the allocation of user-defined types using MemoryManager::declare_var(). */ @@ -201,7 +207,7 @@ TEST_F(MM_stl_restore, i_i_pair ) { EXPECT_EQ(memmgr->var_exists("my_alloc_i_i_pair_second"), 0); } -TEST_F(MM_stl_restore, DISABLED_i_s_pair ) { +TEST_F(MM_stl_restore, i_s_pair ) { // ARRANGE // make a testbed object STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); @@ -211,9 +217,11 @@ TEST_F(MM_stl_restore, DISABLED_i_s_pair ) { // Register the expected temporary variables with the memory manager double * first_data = (double *) memmgr->declare_var("double my_alloc_i_s_pair_first"); - bool * second_data = (bool *) memmgr->declare_var("bool my_alloc_i_s_pair_second[20]"); + std::string * second_link = (std::string *) memmgr->declare_var("std::string my_alloc_i_s_pair_second"); + bool * second_data = (bool *) memmgr->declare_var("bool my_alloc_i_s_pair_second_inner[20]"); *first_data = test_first; + *second_link = std::string("inner"); for (int i = 0; i < test_second.size(); i++) { second_data[i] = test_second[i]; } @@ -234,10 +242,10 @@ TEST_F(MM_stl_restore, DISABLED_i_s_pair ) { // Check that all the temporary variables have been deleted EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_pair_first"), 0); - EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_pair_second"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_i_s_pair_second_inner"), 0); } -TEST_F(MM_stl_restore, DISABLED_s_i_pair ) { +TEST_F(MM_stl_restore, s_i_pair ) { // ARRANGE // make a testbed object STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); @@ -246,7 +254,9 @@ TEST_F(MM_stl_restore, DISABLED_s_i_pair ) { double test_second = random(); // Register the expected temporary variables with the memory manager - bool * first_data = (bool *) memmgr->declare_var("bool my_alloc_s_i_pair_first[20]"); + bool * first_data = (bool *) memmgr->declare_var("bool my_alloc_s_i_pair_first_inner[20]"); + std::string * first_link = (std::string *) memmgr->declare_var("std::string my_alloc_s_i_pair_first"); + *first_link = "inner"; double * second_data = (double *) memmgr->declare_var("double my_alloc_s_i_pair_second"); for (int i = 0; i < test_first.size(); i++) { @@ -263,18 +273,18 @@ TEST_F(MM_stl_restore, DISABLED_s_i_pair ) { // ASSERT // Make sure the STL has been populated EXPECT_EQ(testbed->s_i_pair.second, test_second); - EXPECT_EQ(testbed->s_i_pair.first.size(), test_first.size()); + ASSERT_EQ(testbed->s_i_pair.first.size(), test_first.size()); for (int i = 0; i < test_first.size(); i++) { EXPECT_EQ(testbed->s_i_pair.first.front(), test_first[i]); testbed->s_i_pair.first.pop(); } // Check that all the temporary variables have been deleted - EXPECT_EQ(memmgr->var_exists("my_alloc_s_i_pair_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_i_pair_first_inner"), 0); EXPECT_EQ(memmgr->var_exists("my_alloc_s_i_pair_second"), 0); } -TEST_F(MM_stl_restore, DISABLED_s_s_pair ) { +TEST_F(MM_stl_restore, s_s_pair ) { // ARRANGE // make a testbed object STLTestbed * testbed = (STLTestbed *) memmgr->declare_var("STLTestbed my_alloc"); @@ -283,8 +293,15 @@ TEST_F(MM_stl_restore, DISABLED_s_s_pair ) { std::vector test_second = get_test_data(20); // Register the expected temporary variables with the memory manager - bool * first_data = (bool *) memmgr->declare_var("bool my_alloc_s_s_pair_first[20]"); - double * second_data = (double *) memmgr->declare_var("double my_alloc_s_s_pair_second"); + int * first_data = (int *) memmgr->declare_var("int my_alloc_s_s_pair_first_inner[20]"); + float * second_data = (float *) memmgr->declare_var("float my_alloc_s_s_pair_second_inner[20]"); + + std::string * first_link = (std::string *) memmgr->declare_var("std::string my_alloc_s_s_pair_first"); + std::string * second_link = (std::string *) memmgr->declare_var("std::string my_alloc_s_s_pair_second"); + *first_link = std::string("inner"); + *second_link = std::string("inner"); + + for (int i = 0; i < test_first.size(); i++) { first_data[i] = test_first[i]; @@ -304,13 +321,13 @@ TEST_F(MM_stl_restore, DISABLED_s_s_pair ) { EXPECT_EQ(testbed->s_s_pair.second.size(), test_second.size()); for (int i = 0; i < test_first.size(); i++) { EXPECT_EQ(testbed->s_s_pair.first[i], test_first[i]); - EXPECT_EQ(testbed->s_s_pair.second.top(), test_second[test_second.size()-1-i]); + EXPECT_EQ(testbed->s_s_pair.second.top(), test_second[i]); testbed->s_s_pair.second.pop(); } // Check that all the temporary variables have been deleted - EXPECT_EQ(memmgr->var_exists("my_alloc_s_s_pair_first"), 0); - EXPECT_EQ(memmgr->var_exists("my_alloc_s_s_pair_second"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_s_pair_first_inner"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_s_s_pair_second_inner"), 0); } TEST_F(MM_stl_restore, pair_pair ) { @@ -323,11 +340,12 @@ TEST_F(MM_stl_restore, pair_pair ) { int test_second = random(); // Register the expected temporary variables with the memory manager - int * first_first_data = (int *) memmgr->declare_var("int my_alloc_pair_pair_first_first"); - int * first_second_data = (int *) memmgr->declare_var("int my_alloc_pair_pair_first_second"); + int * first_first_data = (int *) memmgr->declare_var("int my_alloc_pair_pair_first_inner_first"); + int * first_second_data = (int *) memmgr->declare_var("int my_alloc_pair_pair_first_inner_second"); int * second_data = (int *) memmgr->declare_var("int my_alloc_pair_pair_second"); - (void) memmgr->declare_var("std::string my_alloc_pair_pair_first[1]"); + std::string * first_link = (std::string *) memmgr->declare_var("std::string my_alloc_pair_pair_first[1]"); + *first_link = std::string ("inner"); *first_first_data = test_first_first; *first_second_data = test_first_second; @@ -346,8 +364,8 @@ TEST_F(MM_stl_restore, pair_pair ) { // Check that all the temporary variables have been deleted EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_first"), 0); - EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_first_first"), 0); - EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_first_second"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_first_inner_first"), 0); + EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_first_inner_second"), 0); EXPECT_EQ(memmgr->var_exists("my_alloc_pair_pair_second"), 0); } @@ -402,12 +420,15 @@ TEST_F(MM_stl_restore, i_s_map ) { std::string var_name = "std::string my_alloc_i_s_map_data_" + std::to_string(i) + "[" + std::to_string(6) + "]"; std::string * val_temp = (std::string *) memmgr->declare_var(var_name.c_str()); + std::vector test_strings_easy = {"a", "b", "c", "d", "e", "f"}; for (int j = 0; j < 6; j++) { - val_temp[j] = test_data[(i*6) + j]; + // val_temp[j] = std::string(test_data[(i*6) + j]); + val_temp[j] = std::string(test_strings_easy[j]); + // Create a map of expected data along side so that we don't have to deal with ordering stuff // Reverse order of the data since it's a stack - test_map[test_keys[i]].push(test_data[((i+1)*6)-1-j]); + test_map[test_keys[i]].push(std::string(test_strings_easy[5-j])); } } diff --git a/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh b/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh index 6a4a72ef..99130bae 100644 --- a/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh +++ b/trick_source/sim_services/MemoryManager/test/MM_stl_testbed.hh @@ -59,7 +59,6 @@ public: std::pair,std::stack> s_s_pair; std::pair> i_v_pair; std::pair, int> pair_pair; - std::pair< int , std::pair< int, int > > int_pair_pair; std::map i_i_map; std::map> i_s_map; From ff04d211eeaabf80d65e7248ecec0b65b4fa8469 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 7 Oct 2022 17:03:04 -0500 Subject: [PATCH 074/162] Fix broken link in docs --- docs/documentation/Documentation-Home.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/Documentation-Home.md b/docs/documentation/Documentation-Home.md index b18374bb..fd6e12d3 100644 --- a/docs/documentation/Documentation-Home.md +++ b/docs/documentation/Documentation-Home.md @@ -48,7 +48,7 @@ The user guide contains information pertinent to Trick users. These pages will h 01. [Status Message System](simulation_capabilities/Status-Message-System) 01. [Command Line Arguments](simulation_capabilities/Command-Line-Arguments) 01. [Environment](simulation_capabilities/Environment) - 01. [Standard Template Library Checkpointing](simulation_capabilities/STL-Checkpointing) + 01. [Standard Template Library Checkpointing](simulation_capabilities/STL-Capabilities) 01. [Threads](simulation_capabilities/Threads) 01. [Web Server](web/Webserver) From bb34c37de732cf2b18a6536018002e757e7aa5c7 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 7 Oct 2022 17:03:47 -0500 Subject: [PATCH 075/162] Fix broken link in docs --- docs/documentation/simulation_capabilities/Environment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/simulation_capabilities/Environment.md b/docs/documentation/simulation_capabilities/Environment.md index 6d3ac0ab..f29aab0a 100644 --- a/docs/documentation/simulation_capabilities/Environment.md +++ b/docs/documentation/simulation_capabilities/Environment.md @@ -9,4 +9,4 @@ are compiled into the sim. const char * get_trick_env( char * variable_name ) ``` -[Continue to STL Checkpointing](STL-Checkpointing) +[Continue to STL Checkpointing](STL-Capabilities) From 1da5092ac87ba285779c0cb25a0cfa8287d93c8d Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 7 Oct 2022 17:10:16 -0500 Subject: [PATCH 076/162] Update Documentation-Home.md --- docs/documentation/Documentation-Home.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/Documentation-Home.md b/docs/documentation/Documentation-Home.md index fd6e12d3..f2eed8ac 100644 --- a/docs/documentation/Documentation-Home.md +++ b/docs/documentation/Documentation-Home.md @@ -48,7 +48,7 @@ The user guide contains information pertinent to Trick users. These pages will h 01. [Status Message System](simulation_capabilities/Status-Message-System) 01. [Command Line Arguments](simulation_capabilities/Command-Line-Arguments) 01. [Environment](simulation_capabilities/Environment) - 01. [Standard Template Library Checkpointing](simulation_capabilities/STL-Capabilities) + 01. [Standard Template Library Checkpointing](simulation_capabilities/STL-capabilities) 01. [Threads](simulation_capabilities/Threads) 01. [Web Server](web/Webserver) From 900f7b18be1919612e83c97e139652b59a349f18 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Thu, 13 Oct 2022 14:23:16 -0500 Subject: [PATCH 077/162] Generate test coverage and use Coveralls for tracking and visualization (#1366) * Add code-coverage make target and github actions workflow * Upload coverage to coveralls * Add coverage badge to readme * Fix some test makefiles to correctly propagate flags --- .github/workflows/code_coverage.yml | 69 +++++++++++++++++++ Makefile | 5 ++ README.md | 10 ++- share/trick/makefiles/config_Linux.mk | 2 +- trick_source/.gitignore | 2 + trick_source/sim_services/Clock/test/Makefile | 8 +-- .../sim_services/Executive/test/Makefile | 4 +- .../sim_services/MemoryManager/test/Makefile | 4 +- .../trick_utils/interpolator/test/Makefile | 6 +- .../trick_utils/unicode/test/Makefile | 6 +- 10 files changed, 95 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/code_coverage.yml diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml new file mode 100644 index 00000000..59fadd1a --- /dev/null +++ b/.github/workflows/code_coverage.yml @@ -0,0 +1,69 @@ +name: Code Coverage + +on: + push: + branches: + - master + paths-ignore: + - 'docs/**' + - '.github/workflows/**' + - '!.github/workflows/code_coverage.yml' + pull_request: + +jobs: + code-coverage: + runs-on: ubuntu-latest + container: docker://oraclelinux:8 + steps: + - name: Update Package Manager + run: | + dnf -y install epel-release + dnf -y update + dnf install -y 'dnf-command(config-manager)' + + - name: Install Dependencies + run: | + dnf install -y bison clang flex git llvm make maven cmake zip clang-devel gcc gcc-c++ java-11-openjdk-devel libxml2-devel llvm-devel llvm-static ncurses-devel openmotif openmotif-devel perl perl-Digest-MD5 udunits2 udunits2-devel which zlib-devel python2-devel python3-devel swig diffutils lcov + + - name: Install GTest + run: | + dnf config-manager --enable ol8_codeready_builder + dnf install -y gtest-devel + + - name: Checkout repository + uses: actions/checkout@master + + - name: Configure Trick + run: | + export MAKEFLAGS=-j`nproc` + export PYTHON_VERSION=3 + ./configure + - name: Build Trick + run: | + export MAKEFLAGS=-j`nproc` + export CFLAGS="-fprofile-arcs -ftest-coverage -O0" + export CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" + export LDFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_CFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_SYSTEM_LDFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_SYSTEM_CFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_SYSTEM_CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" + make + - name: Generate Code Coverage + run: | + export MAKEFLAGS=-j`nproc` + export CFLAGS="-fprofile-arcs -ftest-coverage -O0" + export CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" + export LDFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_CFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_SYSTEM_LDFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_SYSTEM_CFLAGS="-fprofile-arcs -ftest-coverage -O0" + export TRICK_SYSTEM_CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" + make code-coverage + - name: Upload to Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + path-to-lcov: "./coverage.info" diff --git a/Makefile b/Makefile index 4efba252..071946d4 100644 --- a/Makefile +++ b/Makefile @@ -307,6 +307,11 @@ sim_test: pytest: make -C share/trick/pymods/trick +code-coverage: test + lcov --capture --directory trick_source/sim_services --output-file coverage_large.info + lcov --remove coverage_large.info '/Library/*' '/usr/*' '*/io_src/*' '*/test/*' -o coverage.info + rm coverage_large.info + lcov --list coverage.info #requirements: # @ $(MAKE) -C trick_test/requirements_docs install diff --git a/README.md b/README.md index dcce16a9..d83bb195 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,18 @@ Linux -

- -

macOS -

- -

macOS + +Coverage Status +

+

The Trick Simulation Environment, developed at the NASA Johnson Space Center, is a powerful simulation development framework that enables users to build applications for all phases of space vehicle development. Trick expedites the creation of simulations for early vehicle design, performance evaluation, flight software development, flight vehicle dynamic load analysis, and virtual/hardware in the loop training. Trick's purpose is to provide a common set of simulation capabilities that allow users to concentrate on their domain specific models, rather than simulation-specific functions like job ordering, input file processing, or data recording.

diff --git a/share/trick/makefiles/config_Linux.mk b/share/trick/makefiles/config_Linux.mk index 4a6b6745..bcd966bd 100644 --- a/share/trick/makefiles/config_Linux.mk +++ b/share/trick/makefiles/config_Linux.mk @@ -24,7 +24,7 @@ endif SHARED_LIB_OPT := -shared RPATH = -Wl,-rpath=${TRICK_LIB_DIR} -TRICK_SYSTEM_LDFLAGS = -Wl,--export-dynamic +TRICK_SYSTEM_LDFLAGS += -Wl,--export-dynamic PLATFORM_LIBS = -lrt LD_WHOLE_ARCHIVE := -Wl,-whole-archive diff --git a/trick_source/.gitignore b/trick_source/.gitignore index e69de29b..853fc650 100644 --- a/trick_source/.gitignore +++ b/trick_source/.gitignore @@ -0,0 +1,2 @@ +*.gcda +*.gcno \ No newline at end of file diff --git a/trick_source/sim_services/Clock/test/Makefile b/trick_source/sim_services/Clock/test/Makefile index 8d00cd53..be4f65dc 100644 --- a/trick_source/sim_services/Clock/test/Makefile +++ b/trick_source/sim_services/Clock/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} LIBS = -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main @@ -38,10 +38,10 @@ clean : rm -f $(TESTS) *.o GetTimeOfDayClock_test.o : GetTimeOfDayClock_test.cpp - $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< + $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< GetTimeOfDayClock_test : ${GETTIMEOFDAY_CLOCK_OBJECTS} - $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) -o $@ $^ ${LIBS} + $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) $(TRICK_CXXFLAGS) -o $@ $^ ${LIBS} exec_get_rt_nap_stub.o : exec_get_rt_nap_stub.cpp - $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< + $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< diff --git a/trick_source/sim_services/Executive/test/Makefile b/trick_source/sim_services/Executive/test/Makefile index 0f032a43..94cf5cc8 100644 --- a/trick_source/sim_services/Executive/test/Makefile +++ b/trick_source/sim_services/Executive/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = -L ${TRICK_LIB_DIR} -ltrick_mm -ltrick_units -ltrick TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main @@ -31,7 +31,7 @@ clean : rm -f $(TESTS) *.o Executive_test.o : Executive_test.cpp - $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< + $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< Executive_test : Executive_test.o $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) -o $@ $^ $(OTHER_OBJECTS) $(TRICK_LIBS) $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) diff --git a/trick_source/sim_services/MemoryManager/test/Makefile b/trick_source/sim_services/MemoryManager/test/Makefile index f9b5df08..dd729046 100644 --- a/trick_source/sim_services/MemoryManager/test/Makefile +++ b/trick_source/sim_services/MemoryManager/test/Makefile @@ -10,8 +10,8 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Mak # Replace -isystem with -I so ICG doesn't skip Trick headers TRICK_SYSTEM_CXXFLAGS := $(subst -isystem,-I,$(TRICK_SYSTEM_CXXFLAGS)) -#COVERAGE_FLAGS += -fprofile-arcs -ftest-coverage -O0 -#TRICK_SYSTEM_LDFLAGS += ${COVERAGE_FLAGS} +COVERAGE_FLAGS += -fprofile-arcs -ftest-coverage -O0 +TRICK_SYSTEM_LDFLAGS += ${COVERAGE_FLAGS} # Flags passed to the preprocessor. TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -Wno-sign-compare ${COVERAGE_FLAGS} -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} diff --git a/trick_source/trick_utils/interpolator/test/Makefile b/trick_source/trick_utils/interpolator/test/Makefile index 376371a6..05ff5f11 100644 --- a/trick_source/trick_utils/interpolator/test/Makefile +++ b/trick_source/trick_utils/interpolator/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread @@ -34,8 +34,8 @@ clean : rm -rf io_src xml Interpolator_unittest.o : Interpolator_unittest.cc - $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< + $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< Interpolator_unittest : Interpolator_unittest.o - $(TRICK_CXX) $(TRICK_CPPFLAGS) -o $@ $^ $(OTHER_OBJECTS) -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) + $(TRICK_CXX) $(TRICK_CXXFLAGS) -o $@ $^ $(OTHER_OBJECTS) -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) diff --git a/trick_source/trick_utils/unicode/test/Makefile b/trick_source/trick_utils/unicode/test/Makefile index f63c944b..64af3645 100644 --- a/trick_source/trick_utils/unicode/test/Makefile +++ b/trick_source/trick_utils/unicode/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lpthread @@ -34,8 +34,8 @@ clean : rm -rf io_src xml unicode_utils_test.o : unicode_utils_test.cpp - $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< + $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< unicode_utils_test : unicode_utils_test.o - $(TRICK_CXX) $(TRICK_CPPFLAGS) -o $@ $^ $(OTHER_OBJECTS) -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) + $(TRICK_CXX) $(TRICK_CXXFLAGS) -o $@ $^ $(OTHER_OBJECTS) -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) From 48bd2bb05b4374248e6eb3f955d00036b4d834f8 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Thu, 13 Oct 2022 16:25:30 -0500 Subject: [PATCH 078/162] Make trick logo look better in dark mode --- README.md | 7 ++++--- TrickLogo_darkmode.png | Bin 0 -> 112671 bytes 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 TrickLogo_darkmode.png diff --git a/README.md b/README.md index d83bb195..f7051060 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@

- -Trick Logo - + + + Trick logo +

diff --git a/TrickLogo_darkmode.png b/TrickLogo_darkmode.png new file mode 100644 index 0000000000000000000000000000000000000000..b9436fd01f64c84f61b39b31879b9593086fbe89 GIT binary patch literal 112671 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 u%?Ie5u&-4tBIL&bg7=a@dzv;UKcmbV? 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�o_YTfWK#0hEaW!O$6T{cs6d{ta(o){!WDI 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 literal 0 HcmV?d00001 From c58852072723eef085e3363d3a79217a0b3d0ea1 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Tue, 25 Oct 2022 11:41:49 -0500 Subject: [PATCH 079/162] Autoconf Update & Refactor (#1347) Refactor autoconf, use best practices --- autoconf/config.guess | 1690 ++++++++++-------- autoconf/config.sub | 2946 ++++++++++++++++--------------- autoconf/configure.ac | 331 +--- autoconf/install-sh | 414 ++--- autoconf/m4/tr_civetweb_home.m4 | 32 + autoconf/m4/tr_clang_version.m4 | 11 + autoconf/m4/tr_er7_utils.m4 | 11 + autoconf/m4/tr_gcc_version.m4 | 17 + autoconf/m4/tr_gsl_home.m4 | 26 + autoconf/m4/tr_gtest_home.m4 | 19 + autoconf/m4/tr_hdf5_home.m4 | 28 + autoconf/m4/tr_java.m4 | 25 + autoconf/m4/tr_jsc_dirs.m4 | 16 + autoconf/m4/tr_llvm_home.m4 | 16 + autoconf/m4/tr_mac_darwin.m4 | 13 + autoconf/m4/tr_prepend_path.m4 | 19 + autoconf/m4/tr_swig_bin.m4 | 14 + autoconf/m4/tr_udunits_home.m4 | 10 + autoconf/m4/tr_x11.m4 | 16 + autoconf/m4/tr_xwindows.m4 | 19 + autoconf/missing | 18 +- configure | 205 +-- 22 files changed, 3068 insertions(+), 2828 deletions(-) mode change 100755 => 100644 autoconf/config.guess mode change 100755 => 100644 autoconf/config.sub create mode 100644 autoconf/m4/tr_civetweb_home.m4 create mode 100644 autoconf/m4/tr_clang_version.m4 create mode 100644 autoconf/m4/tr_er7_utils.m4 create mode 100644 autoconf/m4/tr_gcc_version.m4 create mode 100644 autoconf/m4/tr_gsl_home.m4 create mode 100644 autoconf/m4/tr_gtest_home.m4 create mode 100644 autoconf/m4/tr_hdf5_home.m4 create mode 100644 autoconf/m4/tr_java.m4 create mode 100644 autoconf/m4/tr_jsc_dirs.m4 create mode 100644 autoconf/m4/tr_llvm_home.m4 create mode 100644 autoconf/m4/tr_mac_darwin.m4 create mode 100644 autoconf/m4/tr_prepend_path.m4 create mode 100644 autoconf/m4/tr_swig_bin.m4 create mode 100644 autoconf/m4/tr_udunits_home.m4 create mode 100644 autoconf/m4/tr_x11.m4 create mode 100644 autoconf/m4/tr_xwindows.m4 mode change 100755 => 100644 autoconf/missing diff --git a/autoconf/config.guess b/autoconf/config.guess old mode 100755 new mode 100644 index b79252d6..a419d864 --- a/autoconf/config.guess +++ b/autoconf/config.guess @@ -1,12 +1,14 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2013-06-10' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-08-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -15,7 +17,7 @@ timestamp='2013-06-10' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -24,12 +26,20 @@ timestamp='2013-06-10' # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # -# Originally written by Per Bothner. +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess # -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. me=`echo "$0" | sed -e 's,.*/,,'` @@ -39,7 +49,7 @@ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -50,7 +60,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -84,7 +94,8 @@ if test $# != 0; then exit 1 fi -trap 'exit 1' 1 2 15 +# Just in case it came from the environment. +GUESS= # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires @@ -96,66 +107,90 @@ trap 'exit 1' 1 2 15 # Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "${UNAME_SYSTEM}" in +case $UNAME_SYSTEM in Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu + LIBC=unknown - eval $set_cc_for_build - cat <<-EOF > $dummy.c + set_cc_for_build + cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc - #else + #elif defined(__GLIBC__) LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -167,22 +202,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -197,45 +242,80 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in + case $UNAME_VERSION in Debian*) release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; + GUESS=$machine-${os}${release}${abi-} + ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` @@ -249,163 +329,158 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in + case $ALPHA_CPU_TYPE in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; + GUESS=m68k-unknown-sysv4 + ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; + GUESS=$UNAME_MACHINE-unknown-morphos + ;; *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; + GUESS=i370-ibm-openedition + ;; *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; + GUESS=s390-ibm-zvmoe + ;; *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; + GUESS=powerpc-ibm-os400 + ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; + GUESS=arm-unknown-riscos + ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; + GUESS=hppa1.1-hitachi-hiuxmpp + ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; + GUESS=pyramid-pyramid-svr4 + ;; DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; + GUESS=sparc-icl-nx6 + ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" + set_cc_for_build + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in + case `/usr/bin/arch -k` in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in sun3) - echo m68k-sun-sunos${UNAME_RELEASE} + GUESS=m68k-sun-sunos$UNAME_RELEASE ;; sun4) - echo sparc-sun-sunos${UNAME_RELEASE} + GUESS=sparc-sun-sunos$UNAME_RELEASE ;; esac - exit ;; + ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -415,44 +490,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; + GUESS=mips-dec-mach_bsd4.3 + ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -461,95 +536,96 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; + GUESS=powerpc-motorola-powermax + ;; Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; + GUESS=powerpc-harris-powermax + ;; Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; + GUESS=powerpc-harris-powerunix + ;; m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; + GUESS=m88k-harris-cxux7 + ;; m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; + GUESS=m88k-motorola-sysv4 + ;; m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x then - echo m88k-dg-dgux${UNAME_RELEASE} + GUESS=m88k-dg-dgux$UNAME_RELEASE else - echo m88k-dg-dguxbcs${UNAME_RELEASE} + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE fi else - echo i586-dg-dgux${UNAME_RELEASE} + GUESS=i586-dg-dgux$UNAME_RELEASE fi - exit ;; + ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; + GUESS=m88k-dolphin-sysv3 + ;; M88*:*:R3*:*) # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; + GUESS=m88k-motorola-sysv3 + ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; + GUESS=m88k-tektronix-sysv3 + ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; + GUESS=m68k-tektronix-bsd + ;; *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; + GUESS=i386-ibm-aix + ;; ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then + if test -x /usr/bin/oslevel ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include main() @@ -560,76 +636,77 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then - echo "$SYSTEM_NAME" + GUESS=$SYSTEM_NAME else - echo rs6000-ibm-aix3.2.5 + GUESS=rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 + GUESS=rs6000-ibm-aix3.2.4 else - echo rs6000-ibm-aix3.2 + GUESS=rs6000-ibm-aix3.2 fi - exit ;; + ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; + GUESS=rs6000-bull-bosx + ;; DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; + GUESS=m68k-bull-sysv3 + ;; 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; + GUESS=m68k-hp-bsd + ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; + GUESS=m68k-hp-bsd4.4 + ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then + if test -x /usr/bin/getconf; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include @@ -662,13 +739,13 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if test "$HP_ARCH" = hppa2.0w then - eval $set_cc_for_build + set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -679,23 +756,23 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include int main () @@ -720,38 +797,38 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; + GUESS=hppa1.0-hp-bsd + ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; + GUESS=hppa1.0-hp-osf + ;; i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + GUESS=$UNAME_MACHINE-unknown-osf1 fi - exit ;; + ;; parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; + GUESS=hppa1.1-hp-lites + ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; + GUESS=c1-convex-bsd + ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd @@ -759,139 +836,148 @@ EOF fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; + GUESS=c34-convex-bsd + ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; + GUESS=c38-convex-bsd + ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; + GUESS=c4-convex-bsd + ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in + case $UNAME_PROCESSOR in amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; esac - exit ;; + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; + GUESS=$UNAME_MACHINE-pc-cygwin + ;; *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:SerenityOS:*:*) + GUESS=$UNAME_MACHINE-pc-serenity + ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case $UNAME_MACHINE in x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; + GUESS=i586-pc-interix$UNAME_RELEASE + ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; + GUESS=$UNAME_MACHINE-pc-uwin + ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; + GUESS=x86_64-pc-cygwin + ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; @@ -901,172 +987,237 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; arm*:Linux:*:*) - eval $set_cc_for_build + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf fi fi - exit ;; + ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; - or1k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; + GUESS=sparc-unknown-linux-$LIBC + ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; + GUESS=hppa64-unknown-linux-$LIBC + ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; esac - exit ;; + ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; + GUESS=powerpc64-unknown-linux-$LIBC + ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; + GUESS=powerpc-unknown-linux-$LIBC + ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; + GUESS=powerpc64le-unknown-linux-$LIBC + ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __i386__ + ABI=x86 + #else + #ifdef __ILP32__ + ABI=x32 + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + x86) CPU=i686 ;; + x32) LIBCABI=${LIBC}x32 ;; + esac + fi + GUESS=$CPU-pc-linux-$LIBCABI + ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; + GUESS=i386-sequent-sysv4 + ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; + GUESS=$UNAME_MACHINE-unknown-stop + ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; + GUESS=$UNAME_MACHINE-unknown-atheos + ;; i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; + GUESS=$UNAME_MACHINE-pc-syllable + ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL fi - exit ;; + ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in @@ -1074,12 +1225,12 @@ EOF *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1089,43 +1240,43 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL else - echo ${UNAME_MACHINE}-pc-sysv32 + GUESS=$UNAME_MACHINE-pc-sysv32 fi - exit ;; + ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; + GUESS=i586-pc-msdosdjgpp + ;; Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; + GUESS=i386-pc-mach3 + ;; paragon:*:*:*) - echo i860-intel-osf1 - exit ;; + GUESS=i860-intel-osf1 + ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 fi - exit ;; + ;; mini*:CTIX:SYS*5:*) # "miniframe" - echo m68010-convergent-sysv - exit ;; + GUESS=m68010-convergent-sysv + ;; mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; + GUESS=m68k-convergent-sysv + ;; M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; + GUESS=m68k-diab-dnix + ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) @@ -1133,9 +1284,9 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; @@ -1144,228 +1295,287 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; + GUESS=m68k-atari-sysv4 + ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; + GUESS=mips-sni-sysv4 + ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 + GUESS=$UNAME_MACHINE-sni-sysv4 else - echo ns32k-sni-sysv + GUESS=ns32k-sni-sysv fi - exit ;; + ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says - echo i586-unisys-sysv4 - exit ;; + GUESS=i586-unisys-sysv4 + ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; + GUESS=hppa1.1-stratus-sysv4 + ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; + GUESS=i860-stratus-sysv4 + ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; + GUESS=$UNAME_MACHINE-stratus-vos + ;; *:VOS:*:*) # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; + GUESS=hppa1.1-stratus-vos + ;; mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; + GUESS=mips-sony-newsos6 + ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE else - echo mips-unknown-sysv${UNAME_RELEASE} + GUESS=mips-unknown-sysv$UNAME_RELEASE fi - exit ;; + ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; + GUESS=powerpc-be-beos + ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; + GUESS=powerpc-apple-beos + ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; + GUESS=i586-pc-beos + ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; + GUESS=i586-pc-haiku + ;; + ppc:Haiku:*:*) # Haiku running on Apple PowerPC + GUESS=powerpc-apple-haiku + ;; + *:Haiku:*:*) # Haiku modern gcc (not bound by BeOS compat) + GUESS=$UNAME_MACHINE-unknown-haiku + ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build fi - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if test "$CC_FOR_BUILD" != no_compiler_found; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; + GUESS=mips-compaq-nonstopux + ;; BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; + GUESS=bs2000-siemens-sysv + ;; DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "${cputype-}" = 386; then UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; + GUESS=pdp10-unknown-tops10 + ;; *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; + GUESS=pdp10-unknown-tenex + ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; + GUESS=pdp10-dec-tops20 + ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; + GUESS=pdp10-xkl-tops20 + ;; *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; + GUESS=pdp10-unknown-tops20 + ;; *:ITS:*:*) - echo pdp10-unknown-its - exit ;; + GUESS=pdp10-unknown-its + ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; esac ;; *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; + GUESS=i386-pc-xenix + ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; + GUESS=$UNAME_MACHINE-pc-rdos + ;; + i*86:Fiwix:*:*) + GUESS=$UNAME_MACHINE-pc-fiwix + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; esac -eval $set_cc_for_build -cat >$dummy.c < "$dummy.c" < -# include +#include +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif #endif main () { @@ -1378,22 +1588,14 @@ main () #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" @@ -1433,39 +1635,54 @@ main () #endif #if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); + struct utsname un; + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif #endif #if defined (alliant) && defined (i860) @@ -1476,54 +1693,46 @@ main () } EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } +echo "$0: unable to guess system type" >&2 -# Convex versions that predate uname can use getsysinfo(1) +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 < in order to provide the needed -information to handle your system. +our_year=`echo $timestamp | sed 's,-.*,,'` +thisyear=`date +%Y` +# shellcheck disable=SC2003 +script_age=`expr "$thisyear" - "$our_year"` +if test "$script_age" -lt 3 ; then + cat >&2 </dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" EOF +fi exit 1 # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/autoconf/config.sub b/autoconf/config.sub old mode 100755 new mode 100644 index c765b34b..fbaa37f2 --- a/autoconf/config.sub +++ b/autoconf/config.sub @@ -1,12 +1,14 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2013 Free Software Foundation, Inc. +# Copyright 1992-2022 Free Software Foundation, Inc. -timestamp='2013-04-24' +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2022-08-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -15,7 +17,7 @@ timestamp='2013-04-24' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -25,7 +27,7 @@ timestamp='2013-04-24' # of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -33,7 +35,7 @@ timestamp='2013-04-24' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -50,15 +52,21 @@ timestamp='2013-04-24' # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -68,7 +76,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2022 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -90,12 +98,12 @@ while test $# -gt 0 ; do - ) # Use stdin as input. break ;; -* ) - echo "$me: invalid option $1$help" + echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. - echo $1 + echo "$1" exit ;; * ) @@ -111,1209 +119,1186 @@ case $# in exit 1;; esac -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 ;; - -bluegene*) - os=-cnk + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + basic_os=$field2 + ;; + zephyr*) + basic_machine=$field1-unknown + basic_os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + basic_machine=arm-unknown + basic_os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + basic_os=bsd + ;; + convex-c2) + basic_machine=c2-convex + basic_os=bsd + ;; + convex-c32) + basic_machine=c32-convex + basic_os=bsd + ;; + convex-c34) + basic_machine=c34-convex + basic_os=bsd + ;; + convex-c38) + basic_machine=c38-convex + basic_os=bsd + ;; + cray) + basic_machine=j90-cray + basic_os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac ;; esac -# Decode aliases for certain CPU-COMPANY combinations. +# Decode 1-component or ad-hoc basic machines case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 \ - | or1k | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond ;; - c54x) - basic_machine=tic54x-unknown + op50n) + cpu=hppa1.1 + vendor=oki ;; - c55x) - basic_machine=tic55x-unknown + op60c) + cpu=hppa1.1 + vendor=oki ;; - c6x) - basic_machine=tic6x-unknown + ibm*) + cpu=i370 + vendor=ibm ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) - basic_machine=$basic_machine-unknown - os=-none + orion105) + cpu=clipper + vendor=highlevel ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple ;; - ms1) - basic_machine=mt-unknown + pmac | pmac-mpw) + cpu=powerpc + vendor=apple ;; - strongarm | thumb | xscale) - basic_machine=arm-unknown + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none + 3b*) + cpu=we32k + vendor=att ;; - xscaleeb) - basic_machine=armeb-unknown + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; - xscaleel) - basic_machine=armel-unknown + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i386-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 + cpu=$basic_machine + vendor=pc ;; + # These rules are duplicated from below for sake of the special case above; + # i.e. things that normalized to x86 arches should also default to "pc" pc98) - basic_machine=i386-pc + cpu=i386 + vendor=pc ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + x64 | amd64) + cpu=x86_64 + vendor=pc ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc + # Recognize the basic CPU types without company name. + *) + cpu=$basic_machine + vendor=unknown ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc +esac + +unset -v basic_machine + +# Decode basic machines in the full and proper CPU-Company form. +case $cpu-$vendor in + # Here we handle the default manufacturer of certain CPU types in canonical form. It is in + # some cases the only manufacturer, in others, it is the most popular. + craynv-unknown) + vendor=cray + basic_os=${basic_os:-unicosmp} ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc + c90-unknown | c90-cray) + vendor=cray + basic_os=${Basic_os:-unicos} ;; - pentium4) - basic_machine=i786-pc + fx80-unknown) + vendor=alliant ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + romp-unknown) + vendor=ibm ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + mmix-unknown) + vendor=knuth ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + microblaze-unknown | microblazeel-unknown) + vendor=xilinx ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + rs6000-unknown) + vendor=ibm ;; - pn) - basic_machine=pn-gould + vax-unknown) + vendor=dec ;; - power) basic_machine=power-ibm + pdp11-unknown) + vendor=dec ;; - ppc | ppcbe) basic_machine=powerpc-unknown + we32k-unknown) + vendor=att ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + cydra-unknown) + vendor=cydrome ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown + i370-ibm*) + vendor=ibm ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + orion-unknown) + vendor=highlevel ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none + xps-unknown | xps100-unknown) + cpu=xps100 + vendor=honeywell ;; -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond + # Here we normalize CPU types with a missing or matching vendor + armh-unknown | armh-alt) + cpu=armv7l + vendor=alt + basic_os=${basic_os:-linux-gnueabihf} ;; - op50n) - basic_machine=hppa1.1-oki + dpx20-unknown | dpx20-bull) + cpu=rs6000 + vendor=bull + basic_os=${basic_os:-bosx} ;; - op60c) - basic_machine=hppa1.1-oki + + # Here we normalize CPU types irrespective of the vendor + amd64-*) + cpu=x86_64 ;; - romp) - basic_machine=romp-ibm + blackfin-*) + cpu=bfin + basic_os=linux ;; - mmix) - basic_machine=mmix-knuth + c54x-*) + cpu=tic54x ;; - rs6000) - basic_machine=rs6000-ibm + c55x-*) + cpu=tic55x ;; - vax) - basic_machine=vax-dec + c6x-*) + cpu=tic6x ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown + e500v[12]-*) + cpu=powerpc + basic_os=${basic_os}"spe" ;; - pdp11) - basic_machine=pdp11-dec + mips3*-*) + cpu=mips64 ;; - we32k) - basic_machine=we32k-att + ms1-*) + cpu=mt ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown + m68knommu-*) + cpu=m68k + basic_os=linux ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun + m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*) + cpu=s12z ;; - cydra) - basic_machine=cydra-cydrome + openrisc-*) + cpu=or32 ;; - orion) - basic_machine=orion-highlevel + parisc-*) + cpu=hppa + basic_os=linux ;; - orion105) - basic_machine=clipper-highlevel + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + cpu=i586 ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple + pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) + cpu=i686 ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + cpu=i686 ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. + pentium4-*) + cpu=i786 ;; + pc98-*) + cpu=i386 + ;; + ppc-* | ppcbe-*) + cpu=powerpc + ;; + ppcle-* | powerpclittle-*) + cpu=powerpcle + ;; + ppc64-*) + cpu=powerpc64 + ;; + ppc64le-* | powerpc64little-*) + cpu=powerpc64le + ;; + sb1-*) + cpu=mipsisa64sb1 + ;; + sb1el-*) + cpu=mipsisa64sb1el + ;; + sh5e[lb]-*) + cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'` + ;; + spur-*) + cpu=spur + ;; + strongarm-* | thumb-*) + cpu=arm + ;; + tx39-*) + cpu=mipstx39 + ;; + tx39el-*) + cpu=mipstx39el + ;; + x64-*) + cpu=x86_64 + ;; + xscale-* | xscalee[bl]-*) + cpu=`echo "$cpu" | sed 's/^xscale/arm/'` + ;; + arm64-* | aarch64le-*) + cpu=aarch64 + ;; + + # Recognize the canonical CPU Types that limit and/or modify the + # company names they are paired with. + cr16-*) + basic_os=${basic_os:-elf} + ;; + crisv32-* | etraxfs*-*) + cpu=crisv32 + vendor=axis + ;; + cris-* | etrax*-*) + cpu=cris + vendor=axis + ;; + crx-*) + basic_os=${basic_os:-elf} + ;; + neo-tandem) + cpu=neo + vendor=tandem + ;; + nse-tandem) + cpu=nse + vendor=tandem + ;; + nsr-tandem) + cpu=nsr + vendor=tandem + ;; + nsv-tandem) + cpu=nsv + vendor=tandem + ;; + nsx-tandem) + cpu=nsx + vendor=tandem + ;; + mipsallegrexel-sony) + cpu=mipsallegrexel + vendor=sony + ;; + tile*-*) + basic_os=${basic_os:-linux-gnu} + ;; + *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 + # Recognize the canonical CPU types that are allowed with any + # company name. + case $cpu in + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | abacus \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ + | alphapca5[67] | alpha64pca5[67] \ + | am33_2.0 \ + | amdgcn \ + | arc | arceb | arc32 | arc64 \ + | arm | arm[lb]e | arme[lb] | armv* \ + | avr | avr32 \ + | asmjs \ + | ba \ + | be32 | be64 \ + | bfin | bpf | bs2000 \ + | c[123]* | c30 | [cjt]90 | c4x \ + | c8051 | clipper | craynv | csky | cydra \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | elxsi | epiphany \ + | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ + | h8300 | h8500 \ + | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i*86 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | loongarch32 | loongarch64 \ + | m32c | m32r | m32rle \ + | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ + | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ + | m88110 | m88k | maxq | mb | mcore | mep | metag \ + | microblaze | microblazeel \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64eb | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r3 | mipsisa32r3el \ + | mipsisa32r5 | mipsisa32r5el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r3 | mipsisa64r3el \ + | mipsisa64r5 | mipsisa64r5el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mmix \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nfp \ + | nios | nios2 | nios2eb | nios2el \ + | none | np1 | ns16k | ns32k | nvptx \ + | open8 \ + | or1k* \ + | or32 \ + | orion \ + | picochip \ + | pdp10 | pdp11 | pj | pjl | pn | power \ + | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ + | pru \ + | pyramid \ + | riscv | riscv32 | riscv32be | riscv64 | riscv64be \ + | rl78 | romp | rs6000 | rx \ + | s390 | s390x \ + | score \ + | sh | shl \ + | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ + | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ + | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ + | spu \ + | tahoe \ + | thumbv7* \ + | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ + | tron \ + | ubicom32 \ + | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ + | vax \ + | visium \ + | w65 \ + | wasm32 | wasm64 \ + | we32k \ + | x86 | x86_64 | xc16x | xgate | xps100 \ + | xstormy16 | xtensa* \ + | ymp \ + | z8k | z80) + ;; + + *) + echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 + exit 1 + ;; + esac ;; esac # Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` +case $vendor in + digital*) + vendor=dec ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + commodore*) + vendor=cbm ;; *) ;; @@ -1321,200 +1306,215 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if [ x"$os" != x"" ] +if test x$basic_os != x then + +# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just +# set os. +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 - exit 1 + # No normalization, but not necessarily accepted, that comes below. ;; esac + else # Here we handle the default operating systems that come with various machines. @@ -1527,261 +1527,363 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -case $basic_machine in +kernel= +case $cpu-$vendor in score-*) - os=-elf + os=elf ;; spu-*) - os=-elf + os=elf ;; *-acorn) - os=-riscix1.2 + os=riscix1.2 ;; arm*-rebel) - os=-linux + kernel=linux + os=gnu ;; arm*-semi) - os=-aout + os=aout ;; c4x-* | tic4x-*) - os=-coff + os=coff + ;; + c8051-*) + os=elf + ;; + clipper-intergraph) + os=clix ;; hexagon-*) - os=-elf + os=elf ;; tic54x-*) - os=-coff + os=coff ;; tic55x-*) - os=-coff + os=coff ;; tic6x-*) - os=-coff + os=coff ;; # This must come before the *-dec entry. pdp10-*) - os=-tops20 + os=tops20 ;; pdp11-*) - os=-none + os=none ;; *-dec | vax-*) - os=-ultrix4.2 + os=ultrix4.2 ;; m68*-apollo) - os=-domain + os=domain ;; i386-sun) - os=-sunos4.0.2 + os=sunos4.0.2 ;; m68000-sun) - os=-sunos3 + os=sunos3 ;; m68*-cisco) - os=-aout + os=aout ;; mep-*) - os=-elf + os=elf ;; mips*-cisco) - os=-elf + os=elf ;; mips*-*) - os=-elf - ;; - or1k-*) - os=-elf + os=elf ;; or32-*) - os=-coff + os=coff ;; *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 + os=sysv3 ;; sparc-* | *-sun) - os=-sunos4.1.1 + os=sunos4.1.1 + ;; + pru-*) + os=elf ;; *-be) - os=-beos - ;; - *-haiku) - os=-haiku + os=beos ;; *-ibm) - os=-aix + os=aix ;; *-knuth) - os=-mmixware + os=mmixware ;; *-wec) - os=-proelf + os=proelf ;; *-winbond) - os=-proelf + os=proelf ;; *-oki) - os=-proelf + os=proelf ;; *-hp) - os=-hpux + os=hpux ;; *-hitachi) - os=-hiux + os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv + os=sysv ;; *-cbm) - os=-amigaos + os=amigaos ;; *-dg) - os=-dgux + os=dgux ;; *-dolphin) - os=-sysv3 + os=sysv3 ;; m68k-ccur) - os=-rtu + os=rtu ;; m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs + os=luna ;; *-next) - os=-nextstep3 + os=nextstep + ;; + *-sequent) + os=ptx + ;; + *-crds) + os=unos + ;; + *-ns) + os=genix + ;; + i370-*) + os=mvs ;; *-gould) - os=-sysv + os=sysv ;; *-highlevel) - os=-bsd + os=bsd ;; *-encore) - os=-bsd + os=bsd ;; *-sgi) - os=-irix + os=irix ;; *-siemens) - os=-sysv4 + os=sysv4 ;; *-masscomp) - os=-rtu + os=rtu ;; f30[01]-fujitsu | f700-fujitsu) - os=-uxpv + os=uxpv ;; *-rom68k) - os=-coff + os=coff ;; *-*bug) - os=-coff + os=coff ;; *-apple) - os=-macos + os=macos ;; *-atari*) - os=-mint + os=mint + ;; + *-wrs) + os=vxworks ;; *) - os=-none + os=none ;; esac + fi +# Now, validate our (potentially fixed-up) OS. +case $os in + # Sometimes we do "kernel-libc", so those need to count as OSes. + musl* | newlib* | relibc* | uclibc*) + ;; + # Likewise for "kernel-abi" + eabi* | gnueabi*) + ;; + # VxWorks passes extra cpu info in the 4th filed. + simlinux | simwindows | spe) + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ + | hiux* | abug | nacl* | netware* | windows* \ + | os9* | macos* | osx* | ios* \ + | mpw* | magic* | mmixware* | mon960* | lnews* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | mirbsd* | netbsd* | dicos* | openedition* | ose* \ + | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* | serenity* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | mint* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \ + | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ + | fiwix* ) + ;; + # This one is extra strict with allowed versions + sco3.2v2 | sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + none) + ;; + *) + echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ + | linux-musl* | linux-relibc* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) vendor=acorn ;; - -sunos*) + *-sunos*) vendor=sun ;; - -cnk*|-aix*) + *-cnk* | *-aix*) vendor=ibm ;; - -beos*) + *-beos*) vendor=be ;; - -hpux*) + *-hpux*) vendor=hp ;; - -mpeix*) + *-mpeix*) vendor=hp ;; - -hiux*) + *-hiux*) vendor=hitachi ;; - -unos*) + *-unos*) vendor=crds ;; - -dgux*) + *-dgux*) vendor=dg ;; - -luna*) + *-luna*) vendor=omron ;; - -genix*) + *-genix*) vendor=ns ;; - -mvs* | -opened*) + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) vendor=ibm ;; - -os400*) + *-os400*) vendor=ibm ;; - -ptx*) + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) vendor=sequent ;; - -tpf*) + *-tpf*) vendor=ibm ;; - -vxsim* | -vxworks* | -windiss*) + *-vxsim* | *-vxworks* | *-windiss*) vendor=wrs ;; - -aux*) + *-aux*) vendor=apple ;; - -hms*) + *-hms*) vendor=hitachi ;; - -mpw* | -macos*) + *-mpw* | *-macos*) vendor=apple ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) vendor=atari ;; - -vos*) + *-vos*) vendor=stratus ;; esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac -echo $basic_machine$os +echo "$cpu-$vendor-${kernel:+$kernel-}$os" exit # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/autoconf/configure.ac b/autoconf/configure.ac index 83be0027..b9100718 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -1,307 +1,25 @@ dnl To generate a new top level configure script from this autoconf directory dnl 1. aclocal dnl 2. autoconf -o ../configure -dnl If you run into "configure.ac:15: error: possibly undefined macro: AC_MSG_ERROR", -dnl try: -dnl autoreconf -fi AC_INIT([Trick],[17+]) AC_LANG(C++) AC_CONFIG_AUX_DIR([autoconf]) - -AC_DEFUN([AX_LLVM_HOME],[ - AC_ARG_WITH([llvm], - AS_HELP_STRING([--with-llvm@<:@=DIR@:>@], [LLVM root directory]), - [LLVM_HOME="$withval" - AC_PATH_PROG(LLVM_CONFIG, llvm-config, no-llvm-config, "$LLVM_HOME/bin") - AS_IF([test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config"],AC_MSG_ERROR([could not find llvm-config]),[]) - ], - [ - AC_PATH_PROG(LLVM_CONFIG, llvm-config, no-llvm-config, "/bin:/usr/bin:/usr/local/bin:/sw/bin:/usr/local/opt/llvm/bin") - AS_IF([test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config"],AC_MSG_ERROR([could not find llvm-config]),[]) - LLVM_HOME=`$LLVM_CONFIG --prefix` - ] - ) -]) - -AC_DEFUN([AX_HDF5_HOME],[ - AC_ARG_WITH([hdf5], - AS_HELP_STRING([--with-hdf5@<:@=DIR@:>@], [HDF5 root directory]), - [HDF5_HOME="$withval" - AS_IF([test "$HDF5_HOME" = "yes"], - AC_CHECK_HEADER(hdf5.h,[HDF5_HOME="/usr"],AC_MSG_ERROR([could not find hdf5.h])), - AS_IF([test "$HDF5_HOME" = "no"],[HDF5_HOME=""], - AC_CHECK_FILE([$HDF5_HOME/include/hdf5.h], - [], - AC_MSG_ERROR([could not find $HDF5_HOME/include/hdf5.h]) - ) - ) - )], - [ - AC_CHECK_HEADER(hdf5.h, [HDF5_HOME="/usr"], [HDF5_HOME=""]) - ] - ) - AS_IF([test "$HDF5_HOME" != ""], - [ - LDFLAGS="${LDFLAGS} -L${HDF5_HOME}/lib" - AC_CHECK_LIB(hdf5, main, [],AC_MSG_ERROR([could not find libhdf5])) - ] - [] - ) - AC_SUBST([HDF5_HOME]) -]) - -AC_DEFUN([AX_GSL_HOME],[ - AC_ARG_WITH([gsl], - AS_HELP_STRING([--with-gsl@<:@=DIR@:>@], [GSL root directory]), - [GSL_HOME="$withval" - AS_IF([test "$GSL_HOME" = "yes"], - AC_CHECK_HEADER(gsl/gsl_rng.h,[GSL_HOME="/usr"],AC_MSG_ERROR([could not find gsl/gsl_rng.h])), - AS_IF([test "$GSL_HOME" = "no"],[GSL_HOME=""], - AC_CHECK_FILE([$GSL_HOME/include/gsl], - [], - AC_MSG_ERROR([could not find $GSL_HOME/include/gsl]) - ) - ) - )], - [AC_CHECK_HEADER(gsl/gsl_rng.h, [GSL_HOME="/usr"], [GSL_HOME=""])] - ) - AS_IF([test "$GSL_HOME" != ""], - [ - LDFLAGS="${LDFLAGS} -L${GSL_HOME}/lib" - AC_CHECK_LIB(gsl, main, [],AC_MSG_ERROR([could not find libgsl]),[-lgslcblas]) - ], - [] - ) - AC_SUBST([GSL_HOME]) -]) - -AC_DEFUN([AX_GTEST_HOME],[ - AC_ARG_WITH([gtest], - AS_HELP_STRING([--with-gtest@<:@=DIR@:>@], [GTEST root directory]), - [GTEST_HOME="$withval" - AS_IF([test "$GTEST_HOME" = "yes"], - AC_CHECK_HEADER(gtest/gtest.h,[GTEST_HOME="/usr"],AC_MSG_ERROR([could not find gtest/gtest.h])), - AS_IF([test "$GTEST_HOME" = "no"],[GTEST_HOME=""], - AC_CHECK_FILE([$GTEST_HOME/include/gtest], - [], - AC_MSG_ERROR([could not find $GTEST_HOME/include/gtest]) - ) - ) - )], - [AC_CHECK_HEADER(gtest/gtest.h, [GTEST_HOME="/usr"], [GTEST_HOME=""])] - ) - AC_SUBST([GTEST_HOME]) -]) - -AC_DEFUN([AX_CIVETWEB_HOME],[ - AC_ARG_WITH([civetweb], - AS_HELP_STRING([--with-civetweb@<:@=DIR@:>@], - [CIVETWEB root directory]), - # --with option was provided. - [CIVETWEB_HOME="$withval" - USE_CIVETWEB="0" - # check whether directory arg was also provided. - AS_IF([test "$CIVETWEB_HOME" = "yes"], - AC_CHECK_HEADER(civetweb.h, - [CIVETWEB_HOME="/usr"; USE_CIVETWEB="1"], - AC_MSG_ERROR([could not find civetweb.h])), - # else check whether --without-civet or --with-civet=no specified. - AS_IF([test "$CIVETWEB_HOME" = "no"], - [CIVETWEB_HOME=""], - # else --with-civet was provided with a directory path. - AC_CHECK_FILES([$CIVETWEB_HOME/include/civetweb.h $CIVETWEB_HOME/lib/libcivetweb.a], - [USE_CIVETWEB="1"], - AC_MSG_ERROR([Could not find all of the civetweb files.])) - )) - ], - # --with option not provided. - [AC_CHECK_HEADER(civetweb.h, - [CIVETWEB_HOME="/usr"; USE_CIVETWEB="1"], - [CIVETWEB_HOME=""; USE_CIVETWEB="0"]) - ] - ) - AC_SUBST([CIVETWEB_HOME]) - AC_SUBST([USE_CIVETWEB]) -]) - - -AC_DEFUN([AX_SWIG_BIN],[ - AC_ARG_WITH([swig], - [AS_HELP_STRING([--with-swig@<:@=DIR@:>@], [path of directory containing the SWIG executable.])], - [ - TEMP_PATH="${PATH}" - PATH="$withval:${PATH}" - AX_PKG_SWIG($1, [], [AC_MSG_ERROR([Trick requires SWIG version >= 2.0])]) - PATH="${TEMP_PATH}" - ], - [AX_PKG_SWIG($1, [], [AC_MSG_ERROR([Trick requires SWIG version >= 2.0])])] - ) -]) - -AC_DEFUN([AX_UDUNITS_HOME],[ - AC_ARG_WITH([udunits], - AS_HELP_STRING([--with-udunits@<:@=DIR@:>@], [UDUnits root directory]), - [UDUNITS_HOME="$withval"], - [UDUNITS_HOME=""] - ) - AC_SUBST([UDUNITS_HOME]) -]) - -dnl SOURCE: https://stackoverflow.com/a/59191148 - -dnl NA_HELP_STRINGS(list1, help1[, list2, help2[, ... listN, helpN]]) -dnl ************************************************************************** -dnl -dnl Similar to `AS_HELP_STRING()`, but with support for multiple strings, each -dnl one associated with one or more options -dnl -dnl From: https://github.com/madmurphy/not-autotools -dnl -dnl ************************************************************************** -m4_define([NA_HELP_STRINGS], - [m4_if(m4_count($1), [1], - [m4_if([$#], [0], [], [$#], [1], - [m4_text_wrap($1, [ ])], - [AS_HELP_STRING(m4_normalize($1), [$2])m4_if([$#], [2], [], [m4_newline()NA_HELP_STRINGS(m4_shift2($@))])])], - [m4_text_wrap(m4_argn(1, $1)[,], [ ])m4_newline()NA_HELP_STRINGS(m4_dquote(m4_shift($1))m4_if([$#], [1], [], [, m4_shift($@)]))])]) - - - -dnl test if want to prepend /usr/local/bin to PATH -dnl AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given]) -AC_DEFUN( - [AX_PREPEND_PATH], - [AC_ARG_WITH( - [prepend-path], - [NA_HELP_STRINGS( -[--without-prepend-path], [do not prepend to path (this is default)], [--with-prepend-path@<:@=DIR@:>@], [specify a directory to prepend to PATH (default is /usr/local/bin)])], - [AS_IF( - [test "x${with_prepend_path}" = xyes], - [PATH="/usr/local/bin:${PATH}"], - [AS_IF( - [test "x${with_prepend_path}" != xno], - [PATH="${withval}:${PATH}"], - [] - )] - )], - [] - )] -) - - -dnl test if we want to use java, default to yes -AC_DEFUN([AX_JAVA],[ - AC_ARG_ENABLE([java], - AS_HELP_STRING([--enable-java], [use java (default is yes)]), - AS_IF([test "x$enable_java" = xyes], [USE_JAVA="1"], [USE_JAVA="0"]), - [USE_JAVA="1"] - ) - AC_SUBST([USE_JAVA]) - AS_IF([test "$USE_JAVA" = "1"],[ - AC_PROG_AWK - AX_PROG_JAVA_CC(javac) - JAVA_VER=`$JAVA_CC -version 2>&1 | $ac_cv_path_PERL -ne 'print $& if /\d+(\.\d+)?/'` - AC_MSG_CHECKING([$JAVA_CC version >= 1.8]) - AX_COMPARE_VERSION([$JAVA_VER],[ge],[1.8], [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([Trick requires javac version >= 1.8]) - ]) - AS_IF([test "$TRICK_OFFLINE" = "0"], [ - AC_PATH_PROG(MVN, mvn, nomvn) - AS_IF([test "$ac_cv_path_MVN" = "nomvn"],AC_MSG_ERROR([could not find maven]),[]) - ], []) - ],[]) -]) - -dnl test if we want to use er7_utils, default to yes -AC_DEFUN([AX_ER7_UTILS],[ - AC_ARG_ENABLE([er7utils], - AS_HELP_STRING([--enable-er7utils], [use er7_utils (default is yes)]), - AS_IF([test "x$enable_er7utils" = xyes], [USE_ER7_UTILS="1"], [USE_ER7_UTILS="0"]), - [USE_ER7_UTILS="1"] - ) - AC_SUBST([USE_ER7_UTILS]) -]) - -dnl if fermi-ware directory exists, test for motif. -AC_DEFUN([AX_JSC_DIRS],[ - AC_CHECK_FILE([trick_source/data_products/fermi-ware], - [ - AC_CHECK_HEADER(Xm/Xm.h, [MOTIF_HOME="/usr"], - AC_CHECK_FILE(/usr/local/include/Xm/Xm.h, [MOTIF_HOME="/usr/local"], - AC_CHECK_FILE(/sw/include/Xm/Xm.h, [MOTIF_HOME="/sw"],AC_MSG_ERROR([could not find Xm/Xm.h])))) - ], - [ - MOTIF_HOME="" - ] - ) - AC_SUBST([MOTIF_HOME]) -]) - -AC_DEFUN([AX_GCC_VERSION], [ - GCC_VERSION="" - AS_IF([test "x$GCC" = "xyes"],[ - AS_IF([test "x$ax_gcc_version_option" != "xno"],[ - AC_CACHE_CHECK([gcc version],[ax_cv_gcc_version],[ - ax_cv_gcc_version="`$CC -dumpfullversion -dumpversion`" - AS_IF([test "x$ax_cv_gcc_version" = "x"],[ - ax_cv_gcc_version="" - ]) - ]) - GCC_VERSION=$ax_cv_gcc_version - ]) - ]) - AC_SUBST([GCC_VERSION]) -]) +AC_CONFIG_MACRO_DIRS([m4]) dnl get the host and build. AC_CANONICAL_HOST AC_CANONICAL_BUILD -dnl AC_CANONICAL_HOST provides platform. MacOSX is diverging... have to do special things -ON_MAC=no -case "${host_os}" in - darwin*) - ON_MAC=yes - ;; - *) - ;; -esac - - -dnl add extra paths to find xml headers and X headers on the mac. -AS_IF([test "$ON_MAC" = "yes"], -[ - AC_PATH_PROG(XCRUN, xcrun, noxcrun) - AS_IF([test "$ac_cv_path_XCRUN" = "norun"],AC_MSG_ERROR([could not find xcrun - install Xcode command line tools]),[]) - XCODE_SDK_PATH=`$XCRUN --show-sdk-path` - XTRAINCPATHS="-I/usr/X11/include -I${XCODE_SDK_PATH}/usr/include -I${XCODE_SDK_PATH}/usr/include/libxml2" -], -[ - XTRAINCPATHS="-I/usr/include/libxml2/" -]) -CFLAGS="$CFLAGS $XTRAINCPATHS" -CPPFLAGS="$CPPFLAGS $XTRAINCPATHS" +dnl check if we are on a mac +TR_MAC_DARWIN() +dnl add x11 libs to environment +TR_X11() dnl look for X windows libraries and headers we need to compile dnl these checks must be done before we force 32bit mode. -AC_PATH_X -AS_IF([test "$no_x" = "yes"], - [ - USE_X_WINDOWS=0 - ], - [ - USE_X_WINDOWS=1 - AS_IF([test "x$x_includes" = "x"],[],[X_INCLUDE_DIR=-I$x_includes]) - AS_IF([test "x$x_libraries" = "x"],[],[X_LIB_DIR=-L$x_libraries]) - AC_CHECK_HEADER([X11/Intrinsic.h],[],AC_MSG_ERROR([could not find libxt development headers])) - AX_JSC_DIRS([]) - ] -) -AC_SUBST([USE_X_WINDOWS]) -AC_SUBST([X_LIB_DIR]) +TR_XWINDOWS() dnl TODO Need to check 64bit only! AC_CHECK_LIB(xml2, main, @@ -377,7 +95,7 @@ AC_PROG_CC AC_PROG_CXX dnl do not test gcc version on mac. clang as gcc will return version and it's not >= 4.8 -AS_IF([test "$ON_MAC" = "no"],[AX_GCC_VERSION],[]) +AS_IF([test "$ON_MAC" = "no"],[TR_GCC_VERSION],[]) dnl if the compiler is gcc, test for gcc >= 4.8 AS_IF([test "x$GCC_VERSION" = "x"],[], [AC_MSG_CHECKING([gcc version >= 4.8]) @@ -394,7 +112,7 @@ AC_PATH_PROG(TEE, tee, notee) AS_IF([test "$ac_cv_path_TEE" = "notee"],AC_MSG_ERROR([could not find tee]),[]) AC_PATH_PROG(LD, ld, nold) AS_IF([test "$ac_cv_path_LD" = "nold"],AC_MSG_ERROR([could not find ld]),[]) -AC_PROG_LEX +AC_PROG_LEX([noyywrap]) AS_IF([test "x$LEX" = "x:"],AC_MSG_ERROR([could not find flex]),[]) AC_PATH_PROG(BISON, bison, nobison) AS_IF([test "$ac_cv_path_BISON" = "nobison"],AC_MSG_ERROR([could not find bison]),[]) @@ -463,21 +181,22 @@ AX_COMPARE_VERSION( PYTHON_CPPFLAGS=`${PYTHON_CONFIG} --includes | sed 's/-I/-isystem/g'` PYTHON_LIBS=`${PYTHON_LIBS_COMMAND} | tr '\r\n' ' '` + AC_SUBST([PYTHON_CPPFLAGS]) AC_SUBST([PYTHON_LIBS]) AC_SUBST([PYTHON_EXTRA_LIBS]) -AX_PREPEND_PATH +TR_PREPEND_PATH() AC_PATH_PROG(GNUPLOT, gnuplot, nognuplot) AS_IF([test "$ac_cv_path_GNUPLOT" = "nognuplot"],AC_MSG_NOTICE([could not find gnuplot]),[]) -AX_SWIG_BIN([2.0]) -AX_JAVA +TR_SWIG_BIN([2.0]) +TR_JAVA AX_PTHREAD() AX_PROG_PERL_MODULES( Text::Balanced ,[],AC_MSG_ERROR([could not find perl modules Text::Balanced])) AX_PROG_PERL_MODULES( Digest::MD5,[],AC_MSG_ERROR([could not find perl module Digest::MD5])) dnl process the optional --with-llvm command line arguments -AX_LLVM_HOME([]) +TR_LLVM_HOME([]) LLVM_LIB_DIR=`$LLVM_CONFIG --libdir` LLVM_BIN_DIR=`$LLVM_CONFIG --bindir` LLVM_INCLUDE_DIR=`$LLVM_CONFIG --includedir` @@ -516,17 +235,7 @@ AC_CHECK_FILE([$LLVM_LIB_DIR/libclangFrontend.a], AC_SUBST([ICG_CLANGLIBS]) - -AC_DEFUN([AX_CLANG_VERSION], [ - CLANG_VERSION="" - ax_cv_clang_version="`$CLANG --version | grep "version" | sed "s/.*version \([0-9]*\.[0-9]*\.[0-9]*\).*/\1/"`" - AS_IF([test "x$ax_cv_clang_version" = "x"],[ - ax_cv_clang_version="" - ]) - CLANG_VERSION=$ax_cv_clang_version - AC_SUBST([CLANG_VERSION]) -]) -AX_CLANG_VERSION +TR_CLANG_VERSION dnl if llvm/clang, test for version >= 3.4.2 AS_IF([test "x$CLANG_VERSION" = "x"],[], [AC_MSG_CHECKING([clang version >= 3.4.2]) @@ -539,7 +248,7 @@ AS_IF([test "x$CLANG_VERSION" = "x"],[], AX_CHECK_ZLIB([],AC_MSG_ERROR([could not find zlib])) dnl look for udunits in /usr/include and /usr/include/udunits2 -AX_UDUNITS_HOME([]) +TR_UDUNITS_HOME([]) AS_IF([test "$UDUNITS_HOME" = ""], [ AC_CHECK_HEADER([udunits2.h], @@ -571,11 +280,11 @@ AC_SUBST([UDUNITS_LDFLAGS]) AC_SUBST([UDUNITS_EXCLUDE]) dnl process the other optional command line arguments -AX_HDF5_HOME([]) -AX_GSL_HOME([]) -AX_GTEST_HOME([]) -AX_CIVETWEB_HOME([]) -AX_ER7_UTILS([]) +TR_HDF5_HOME([]) +TR_GSL_HOME([]) +TR_GTEST_HOME([]) +TR_CIVETWEB_HOME([]) +TR_ER7_UTILS([]) AC_CONFIG_FILES([share/trick/makefiles/config_user.mk]) AC_OUTPUT diff --git a/autoconf/install-sh b/autoconf/install-sh index 377bb868..ec298b53 100755 --- a/autoconf/install-sh +++ b/autoconf/install-sh @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2011-11-20.07; # UTC +scriptversion=2020-11-14.01; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC # This script is compatible with the BSD install script, but was written # from scratch. +tab=' ' nl=' ' -IFS=" "" $nl" +IFS=" $tab$nl" -# set DOITPROG to echo to test this script +# Set DOITPROG to "echo" to test this script. -# Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi +doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. @@ -68,22 +64,16 @@ mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - posix_mkdir= # Desired mode of installed file. mode=0755 +# Create dirs (including intermediate dirs) using mode 755. +# This is like GNU 'install' as of coreutils 8.32 (2020). +mkdir_umask=22 + +backupsuffix= chgrpcmd= chmodcmd=$chmodprog chowncmd= @@ -97,7 +87,7 @@ dir_arg= dst_arg= copy_on_change=false -no_target_directory= +is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE @@ -114,18 +104,28 @@ Options: --version display version info and exit. -c (ignored) - -C install only if different (preserve the last data modification time) + -C install only if different (preserve data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. + -p pass -p to $cpprog. -s $stripprog installed files. + -S SUFFIX attempt to back up existing files, with suffix SUFFIX. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + +By default, rm is invoked with -f; when overridden with RMPROG, +it's up to you to specify -f if you want it. + +If -S is not specified, no backups are attempted. + +Email bug reports to bug-automake@gnu.org. +Automake home page: https://www.gnu.org/software/automake/ " while test $# -ne 0; do @@ -137,46 +137,62 @@ while test $# -ne 0; do -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift;; + shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; + + -p) cpprog="$cpprog -p";; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -S) backupsuffix="$2" + shift;; - -T) no_target_directory=true;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -207,6 +223,15 @@ if test $# -eq 0; then exit 0 fi +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 @@ -223,16 +248,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -250,6 +275,10 @@ do dstdir=$dst test -d "$dstdir" dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command @@ -266,178 +295,148 @@ do fi dst=$dst_arg - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. + # If destination is a directory, append the input filename. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst - dst=$dstdir/`basename "$src"` + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else - mkdir_mode= + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + trap '' 0;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else - # The umask is ridiculous, or mkdir does not conform to POSIX, + # mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue + test X"$d" = X && continue - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -450,14 +449,25 @@ do else # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # @@ -472,20 +482,24 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || @@ -493,24 +507,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 @@ -519,9 +533,9 @@ do done # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/autoconf/m4/tr_civetweb_home.m4 b/autoconf/m4/tr_civetweb_home.m4 new file mode 100644 index 00000000..5ed7ff1f --- /dev/null +++ b/autoconf/m4/tr_civetweb_home.m4 @@ -0,0 +1,32 @@ + + +AC_DEFUN([TR_CIVETWEB_HOME],[ + AC_ARG_WITH([civetweb], + AS_HELP_STRING([--with-civetweb@<:@=DIR@:>@], + [CIVETWEB root directory]), + # --with option was provided. + [CIVETWEB_HOME="$withval" + USE_CIVETWEB="0" + # check whether directory arg was also provided. + AS_IF([test "$CIVETWEB_HOME" = "yes"], + AC_CHECK_HEADER(civetweb.h, + [CIVETWEB_HOME="/usr"; USE_CIVETWEB="1"], + AC_MSG_ERROR([could not find civetweb.h])), + # else check whether --without-civet or --with-civet=no specified. + AS_IF([test "$CIVETWEB_HOME" = "no"], + [CIVETWEB_HOME=""], + # else --with-civet was provided with a directory path. + AC_CHECK_FILES([$CIVETWEB_HOME/include/civetweb.h $CIVETWEB_HOME/lib/libcivetweb.a], + [USE_CIVETWEB="1"], + AC_MSG_ERROR([Could not find all of the civetweb files.])) + )) + ], + # --with option not provided. + [AC_CHECK_HEADER(civetweb.h, + [CIVETWEB_HOME="/usr"; USE_CIVETWEB="1"], + [CIVETWEB_HOME=""; USE_CIVETWEB="0"]) + ] + ) + AC_SUBST([CIVETWEB_HOME]) + AC_SUBST([USE_CIVETWEB]) +]) diff --git a/autoconf/m4/tr_clang_version.m4 b/autoconf/m4/tr_clang_version.m4 new file mode 100644 index 00000000..99b0aac8 --- /dev/null +++ b/autoconf/m4/tr_clang_version.m4 @@ -0,0 +1,11 @@ + + +AC_DEFUN([TR_CLANG_VERSION], [ + CLANG_VERSION="" + ax_cv_clang_version="`$CLANG --version | grep "version" | sed "s/.*version \([0-9]*\.[0-9]*\.[0-9]*\).*/\1/"`" + AS_IF([test "x$ax_cv_clang_version" = "x"],[ + ax_cv_clang_version="" + ]) + CLANG_VERSION=$ax_cv_clang_version + AC_SUBST([CLANG_VERSION]) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_er7_utils.m4 b/autoconf/m4/tr_er7_utils.m4 new file mode 100644 index 00000000..574ad8e1 --- /dev/null +++ b/autoconf/m4/tr_er7_utils.m4 @@ -0,0 +1,11 @@ + + +dnl test if we want to use er7_utils, default to yes +AC_DEFUN([TR_ER7_UTILS],[ + AC_ARG_ENABLE([er7utils], + AS_HELP_STRING([--enable-er7utils], [use er7_utils (default is yes)]), + AS_IF([test "x$enable_er7utils" = xyes], [USE_ER7_UTILS="1"], [USE_ER7_UTILS="0"]), + [USE_ER7_UTILS="1"] + ) + AC_SUBST([USE_ER7_UTILS]) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_gcc_version.m4 b/autoconf/m4/tr_gcc_version.m4 new file mode 100644 index 00000000..0b9c96fb --- /dev/null +++ b/autoconf/m4/tr_gcc_version.m4 @@ -0,0 +1,17 @@ + + +AC_DEFUN([TR_GCC_VERSION], [ + GCC_VERSION="" + AS_IF([test "x$GCC" = "xyes"],[ + AS_IF([test "x$ax_gcc_version_option" != "xno"],[ + AC_CACHE_CHECK([gcc version],[ax_cv_gcc_version],[ + ax_cv_gcc_version="`$CC -dumpfullversion -dumpversion`" + AS_IF([test "x$ax_cv_gcc_version" = "x"],[ + ax_cv_gcc_version="" + ]) + ]) + GCC_VERSION=$ax_cv_gcc_version + ]) + ]) + AC_SUBST([GCC_VERSION]) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_gsl_home.m4 b/autoconf/m4/tr_gsl_home.m4 new file mode 100644 index 00000000..d0e51536 --- /dev/null +++ b/autoconf/m4/tr_gsl_home.m4 @@ -0,0 +1,26 @@ + + +AC_DEFUN([TR_GSL_HOME],[ + AC_ARG_WITH([gsl], + AS_HELP_STRING([--with-gsl@<:@=DIR@:>@], [GSL root directory]), + [GSL_HOME="$withval" + AS_IF([test "$GSL_HOME" = "yes"], + AC_CHECK_HEADER(gsl/gsl_rng.h,[GSL_HOME="/usr"],AC_MSG_ERROR([could not find gsl/gsl_rng.h])), + AS_IF([test "$GSL_HOME" = "no"],[GSL_HOME=""], + AC_CHECK_FILE([$GSL_HOME/include/gsl], + [], + AC_MSG_ERROR([could not find $GSL_HOME/include/gsl]) + ) + ) + )], + [AC_CHECK_HEADER(gsl/gsl_rng.h, [GSL_HOME="/usr"], [GSL_HOME=""])] + ) + AS_IF([test "$GSL_HOME" != ""], + [ + LDFLAGS="${LDFLAGS} -L${GSL_HOME}/lib" + AC_CHECK_LIB(gsl, main, [],AC_MSG_ERROR([could not find libgsl]),[-lgslcblas]) + ], + [] + ) + AC_SUBST([GSL_HOME]) +]) diff --git a/autoconf/m4/tr_gtest_home.m4 b/autoconf/m4/tr_gtest_home.m4 new file mode 100644 index 00000000..312c227a --- /dev/null +++ b/autoconf/m4/tr_gtest_home.m4 @@ -0,0 +1,19 @@ + + +AC_DEFUN([TR_GTEST_HOME],[ + AC_ARG_WITH([gtest], + AS_HELP_STRING([--with-gtest@<:@=DIR@:>@], [GTEST root directory]), + [GTEST_HOME="$withval" + AS_IF([test "$GTEST_HOME" = "yes"], + AC_CHECK_HEADER(gtest/gtest.h,[GTEST_HOME="/usr"],AC_MSG_ERROR([could not find gtest/gtest.h])), + AS_IF([test "$GTEST_HOME" = "no"],[GTEST_HOME=""], + AC_CHECK_FILE([$GTEST_HOME/include/gtest], + [], + AC_MSG_ERROR([could not find $GTEST_HOME/include/gtest]) + ) + ) + )], + [AC_CHECK_HEADER(gtest/gtest.h, [GTEST_HOME="/usr"], [GTEST_HOME=""])] + ) + AC_SUBST([GTEST_HOME]) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_hdf5_home.m4 b/autoconf/m4/tr_hdf5_home.m4 new file mode 100644 index 00000000..09ff850b --- /dev/null +++ b/autoconf/m4/tr_hdf5_home.m4 @@ -0,0 +1,28 @@ + + +AC_DEFUN([TR_HDF5_HOME],[ + AC_ARG_WITH([hdf5], + AS_HELP_STRING([--with-hdf5@<:@=DIR@:>@], [HDF5 root directory]), + [HDF5_HOME="$withval" + AS_IF([test "$HDF5_HOME" = "yes"], + AC_CHECK_HEADER(hdf5.h,[HDF5_HOME="/usr"],AC_MSG_ERROR([could not find hdf5.h])), + AS_IF([test "$HDF5_HOME" = "no"],[HDF5_HOME=""], + AC_CHECK_FILE([$HDF5_HOME/include/hdf5.h], + [], + AC_MSG_ERROR([could not find $HDF5_HOME/include/hdf5.h]) + ) + ) + )], + [ + AC_CHECK_HEADER(hdf5.h, [HDF5_HOME="/usr"], [HDF5_HOME=""]) + ] + ) + AS_IF([test "$HDF5_HOME" != ""], + [ + LDFLAGS="${LDFLAGS} -L${HDF5_HOME}/lib" + AC_CHECK_LIB(hdf5, main, [],AC_MSG_ERROR([could not find libhdf5])) + ] + [] + ) + AC_SUBST([HDF5_HOME]) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_java.m4 b/autoconf/m4/tr_java.m4 new file mode 100644 index 00000000..e4f1e5bb --- /dev/null +++ b/autoconf/m4/tr_java.m4 @@ -0,0 +1,25 @@ + + +dnl test if we want to use java, default to yes +AC_DEFUN([TR_JAVA],[ + AC_ARG_ENABLE([java], + AS_HELP_STRING([--enable-java], [use java (default is yes)]), + AS_IF([test "x$enable_java" = xyes], [USE_JAVA="1"], [USE_JAVA="0"]), + [USE_JAVA="1"] + ) + AC_SUBST([USE_JAVA]) + AS_IF([test "$USE_JAVA" = "1"],[ + AC_PROG_AWK + AX_PROG_JAVA_CC(javac) + JAVA_VER=`$JAVA_CC -version 2>&1 | $ac_cv_path_PERL -ne 'print $& if /\d+(\.\d+)?/'` + AC_MSG_CHECKING([$JAVA_CC version >= 1.8]) + AX_COMPARE_VERSION([$JAVA_VER],[ge],[1.8], [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_ERROR([Trick requires javac version >= 1.8]) + ]) + AS_IF([test "$TRICK_OFFLINE" = "0"], [ + AC_PATH_PROG(MVN, mvn, nomvn) + AS_IF([test "$ac_cv_path_MVN" = "nomvn"],AC_MSG_ERROR([could not find maven]),[]) + ], []) + ],[]) +]) diff --git a/autoconf/m4/tr_jsc_dirs.m4 b/autoconf/m4/tr_jsc_dirs.m4 new file mode 100644 index 00000000..696a582f --- /dev/null +++ b/autoconf/m4/tr_jsc_dirs.m4 @@ -0,0 +1,16 @@ + + +dnl if fermi-ware directory exists, test for motif. +AC_DEFUN([TR_JSC_DIRS],[ + AC_CHECK_FILE([trick_source/data_products/fermi-ware], + [ + AC_CHECK_HEADER(Xm/Xm.h, [MOTIF_HOME="/usr"], + AC_CHECK_FILE(/usr/local/include/Xm/Xm.h, [MOTIF_HOME="/usr/local"], + AC_CHECK_FILE(/sw/include/Xm/Xm.h, [MOTIF_HOME="/sw"],AC_MSG_ERROR([could not find Xm/Xm.h])))) + ], + [ + MOTIF_HOME="" + ] + ) + AC_SUBST([MOTIF_HOME]) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_llvm_home.m4 b/autoconf/m4/tr_llvm_home.m4 new file mode 100644 index 00000000..005d4cd1 --- /dev/null +++ b/autoconf/m4/tr_llvm_home.m4 @@ -0,0 +1,16 @@ + + +AC_DEFUN([TR_LLVM_HOME],[ + AC_ARG_WITH([llvm], + AS_HELP_STRING([--with-llvm@<:@=DIR@:>@], [LLVM root directory]), + [LLVM_HOME="$withval" + AC_PATH_PROG(LLVM_CONFIG, llvm-config, no-llvm-config, "$LLVM_HOME/bin") + AS_IF([test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config"],AC_MSG_ERROR([could not find llvm-config]),[]) + ], + [ + AC_PATH_PROG(LLVM_CONFIG, llvm-config, no-llvm-config, "/bin:/usr/bin:/usr/local/bin:/sw/bin:/usr/local/opt/llvm/bin") + AS_IF([test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config"],AC_MSG_ERROR([could not find llvm-config]),[]) + LLVM_HOME=`$LLVM_CONFIG --prefix` + ] + ) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_mac_darwin.m4 b/autoconf/m4/tr_mac_darwin.m4 new file mode 100644 index 00000000..fecbbbce --- /dev/null +++ b/autoconf/m4/tr_mac_darwin.m4 @@ -0,0 +1,13 @@ + +dnl Set ON_MAC=yes if we are on a mac (darwin host) +AC_DEFUN([TR_MAC_DARWIN], [ + dnl AC_CANONICAL_HOST provides platform. MacOSX is diverging... have to do special things + ON_MAC=no + case "${host_os}" in + darwin*) + ON_MAC=yes + ;; + *) + ;; + esac +]) \ No newline at end of file diff --git a/autoconf/m4/tr_prepend_path.m4 b/autoconf/m4/tr_prepend_path.m4 new file mode 100644 index 00000000..87b0b533 --- /dev/null +++ b/autoconf/m4/tr_prepend_path.m4 @@ -0,0 +1,19 @@ + +dnl test if want to prepend /usr/local/bin to PATH +dnl AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given]) +AC_DEFUN([TR_PREPEND_PATH], + [AC_ARG_WITH( + [prepend-path], + [AS_HELP_STRING([--with-prepend-path@<:@=DIR@:>@], [specify a directory to prepend to PATH (default is /usr/local/bin). Use --without-prepend-path for no directory.])], + [AS_IF( + [test "x${with_prepend_path}" = xyes], + [PATH="/usr/local/bin:${PATH}"], + [AS_IF( + [test "x${with_prepend_path}" != xno], + [PATH="${withval}:${PATH}"], + [] + )] + )], + [] + )] +) diff --git a/autoconf/m4/tr_swig_bin.m4 b/autoconf/m4/tr_swig_bin.m4 new file mode 100644 index 00000000..d9bbfc1c --- /dev/null +++ b/autoconf/m4/tr_swig_bin.m4 @@ -0,0 +1,14 @@ + + +AC_DEFUN([TR_SWIG_BIN],[ + AC_ARG_WITH([swig], + [AS_HELP_STRING([--with-swig@<:@=DIR@:>@], [path of directory containing the SWIG executable.])], + [ + TEMP_PATH="${PATH}" + PATH="$withval:${PATH}" + AX_PKG_SWIG($1, [], [AC_MSG_ERROR([Trick requires SWIG version >= 2.0])]) + PATH="${TEMP_PATH}" + ], + [AX_PKG_SWIG($1, [], [AC_MSG_ERROR([Trick requires SWIG version >= 2.0])])] + ) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_udunits_home.m4 b/autoconf/m4/tr_udunits_home.m4 new file mode 100644 index 00000000..9979eb20 --- /dev/null +++ b/autoconf/m4/tr_udunits_home.m4 @@ -0,0 +1,10 @@ + + +AC_DEFUN([TR_UDUNITS_HOME],[ + AC_ARG_WITH([udunits], + AS_HELP_STRING([--with-udunits@<:@=DIR@:>@], [UDUnits root directory]), + [UDUNITS_HOME="$withval"], + [UDUNITS_HOME=""] + ) + AC_SUBST([UDUNITS_HOME]) +]) \ No newline at end of file diff --git a/autoconf/m4/tr_x11.m4 b/autoconf/m4/tr_x11.m4 new file mode 100644 index 00000000..9f787336 --- /dev/null +++ b/autoconf/m4/tr_x11.m4 @@ -0,0 +1,16 @@ + +dnl find xml headers based on host type +AC_DEFUN([TR_X11], [ + AS_IF([test "$ON_MAC" = "yes"], + [ + AC_PATH_PROG(XCRUN, xcrun, noxcrun) + AS_IF([test "$ac_cv_path_XCRUN" = "norun"],AC_MSG_ERROR([could not find xcrun - install Xcode command line tools]),[]) + XCODE_SDK_PATH=`$XCRUN --show-sdk-path` + XTRAINCPATHS="-I/usr/X11/include -I${XCODE_SDK_PATH}/usr/include -I${XCODE_SDK_PATH}/usr/include/libxml2" + ], + [ + XTRAINCPATHS="-I/usr/include/libxml2/" + ]) + CFLAGS="$CFLAGS $XTRAINCPATHS" + CPPFLAGS="$CPPFLAGS $XTRAINCPATHS" +]) \ No newline at end of file diff --git a/autoconf/m4/tr_xwindows.m4 b/autoconf/m4/tr_xwindows.m4 new file mode 100644 index 00000000..00af2b3c --- /dev/null +++ b/autoconf/m4/tr_xwindows.m4 @@ -0,0 +1,19 @@ + +dnl look for X windows libraries and headers we need to compile +AC_DEFUN([TR_XWINDOWS], [ + AC_PATH_X + AS_IF([test "$no_x" = "yes"], + [ + USE_X_WINDOWS=0 + ], + [ + USE_X_WINDOWS=1 + AS_IF([test "x$x_includes" = "x"],[],[X_INCLUDE_DIR=-I$x_includes]) + AS_IF([test "x$x_libraries" = "x"],[],[X_LIB_DIR=-L$x_libraries]) + AC_CHECK_HEADER([X11/Intrinsic.h],[],AC_MSG_ERROR([could not find libxt development headers])) + TR_JSC_DIRS([]) + ] + ) + AC_SUBST([USE_X_WINDOWS]) + AC_SUBST([X_LIB_DIR]) +]) \ No newline at end of file diff --git a/autoconf/missing b/autoconf/missing old mode 100755 new mode 100644 index cdea5149..74eaae7c --- a/autoconf/missing +++ b/autoconf/missing @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2012-06-26.16; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2022 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ scriptversion=2012-06-26.16; # UTC # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -101,9 +101,9 @@ else exit $st fi -perl_URL=http://www.perl.org/ -flex_URL=http://flex.sourceforge.net/ -gnu_software_URL=http://www.gnu.org/software +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software program_details () { @@ -160,7 +160,7 @@ give_advice () ;; autom4te*) echo "You might have modified some maintainer files that require" - echo "the 'automa4te' program to be rebuilt." + echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) @@ -207,9 +207,9 @@ give_advice "$1" | sed -e '1s/^/WARNING: /' \ exit $st # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/configure b/configure index e0d8912e..528ae116 100755 --- a/configure +++ b/configure @@ -1439,10 +1439,10 @@ Optional Packages: --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-x use the X Window System --with-python[=DIR] python root directory - --without-prepend-path do not prepend to path (this is default) --with-prepend-path[=DIR] specify a directory to prepend to PATH (default is - /usr/local/bin) + /usr/local/bin). Use --without-prepend-path for no + directory. --with-swig[=DIR] path of directory containing the SWIG executable. --with-llvm[=DIR] LLVM root directory --with-zlib=DIR root directory path of zlib installation [defaults to @@ -2876,36 +2876,6 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 @@ -2981,20 +2951,21 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -ON_MAC=no -case "${host_os}" in - darwin*) - ON_MAC=yes - ;; - *) - ;; -esac + + ON_MAC=no + case "${host_os}" in + darwin*) + ON_MAC=yes + ;; + *) + ;; + esac -if test "$ON_MAC" = "yes" + if test "$ON_MAC" = "yes" then : - # Extract the first word of "xcrun", so it can be a program name with args. + # Extract the first word of "xcrun", so it can be a program name with args. set dummy xcrun; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } @@ -3040,20 +3011,21 @@ printf "%s\n" "no" >&6; } fi - if test "$ac_cv_path_XCRUN" = "norun" + if test "$ac_cv_path_XCRUN" = "norun" then : as_fn_error $? "could not find xcrun - install Xcode command line tools" "$LINENO" 5 fi - XCODE_SDK_PATH=`$XCRUN --show-sdk-path` - XTRAINCPATHS="-I/usr/X11/include -I${XCODE_SDK_PATH}/usr/include -I${XCODE_SDK_PATH}/usr/include/libxml2" + XCODE_SDK_PATH=`$XCRUN --show-sdk-path` + XTRAINCPATHS="-I/usr/X11/include -I${XCODE_SDK_PATH}/usr/include -I${XCODE_SDK_PATH}/usr/include/libxml2" else $as_nop - XTRAINCPATHS="-I/usr/include/libxml2/" + XTRAINCPATHS="-I/usr/include/libxml2/" fi -CFLAGS="$CFLAGS $XTRAINCPATHS" -CPPFLAGS="$CPPFLAGS $XTRAINCPATHS" + CFLAGS="$CFLAGS $XTRAINCPATHS" + CPPFLAGS="$CPPFLAGS $XTRAINCPATHS" + @@ -4555,7 +4527,37 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X" >&5 +ac_header= ac_cache= +for ac_item in $ac_header_cxx_list +do + if test $ac_cache; then + ac_fn_cxx_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi +done + + + + + + + + +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h + +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X" >&5 printf %s "checking for X... " >&6; } @@ -4784,56 +4786,27 @@ else printf "%s\n" "libraries $x_libraries, headers $x_includes" >&6; } fi -ac_header= ac_cache= -for ac_item in $ac_header_cxx_list -do - if test $ac_cache; then - ac_fn_cxx_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" - if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h - fi - ac_header= ac_cache= - elif test $ac_header; then - ac_cache=$ac_item - else - ac_header=$ac_item - fi -done - - - - - - - - -if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes + if test "$no_x" = "yes" then : -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - -fi -if test "$no_x" = "yes" -then : - - USE_X_WINDOWS=0 + USE_X_WINDOWS=0 else $as_nop - USE_X_WINDOWS=1 - if test "x$x_includes" = "x" + USE_X_WINDOWS=1 + if test "x$x_includes" = "x" then : else $as_nop X_INCLUDE_DIR=-I$x_includes fi - if test "x$x_libraries" = "x" + if test "x$x_libraries" = "x" then : else $as_nop X_LIB_DIR=-L$x_libraries fi - ac_fn_cxx_check_header_compile "$LINENO" "X11/Intrinsic.h" "ac_cv_header_X11_Intrinsic_h" "$ac_includes_default" + ac_fn_cxx_check_header_compile "$LINENO" "X11/Intrinsic.h" "ac_cv_header_X11_Intrinsic_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Intrinsic_h" = xyes then : @@ -4929,6 +4902,7 @@ fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lxml2" >&5 printf %s "checking for main in -lxml2... " >&6; } if test ${ac_cv_lib_xml2_main+y} @@ -6595,67 +6569,7 @@ then : else $as_nop LEXLIB=$ac_cv_lib_lex fi - ac_save_LIBS="$LIBS" - LIBS= - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing yywrap" >&5 -printf %s "checking for library containing yywrap... " >&6; } -if test ${ac_cv_search_yywrap+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -namespace conftest { - extern "C" int yywrap (); -} -int -main (void) -{ -return conftest::yywrap (); - ; - return 0; -} -_ACEOF -for ac_lib in '' fl l -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_cxx_try_link "$LINENO" -then : - ac_cv_search_yywrap=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_yywrap+y} -then : - break -fi -done -if test ${ac_cv_search_yywrap+y} -then : - -else $as_nop - ac_cv_search_yywrap=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_yywrap" >&5 -printf "%s\n" "$ac_cv_search_yywrap" >&6; } -ac_res=$ac_cv_search_yywrap -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - LEXLIB="$LIBS" -fi - - LIBS="$ac_save_LIBS" fi @@ -7403,6 +7317,7 @@ PYTHON_LIBS=`${PYTHON_LIBS_COMMAND} | tr '\r\n' ' '` + # Check whether --with-prepend-path was given. if test ${with_prepend_path+y} then : @@ -9497,8 +9412,6 @@ fi - - CLANG_VERSION="" ax_cv_clang_version="`$CLANG --version | grep "version" | sed "s/.*version \(0-9*\.0-9*\.0-9*\).*/\1/"`" if test "x$ax_cv_clang_version" = "x" From cbe2b7fe32d5ae24dd636e5ab3f6f6e7f2315170 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 26 Oct 2022 13:53:53 -0500 Subject: [PATCH 080/162] Update Checkpoints.md --- docs/documentation/simulation_capabilities/Checkpoints.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/documentation/simulation_capabilities/Checkpoints.md b/docs/documentation/simulation_capabilities/Checkpoints.md index de7a70ea..0f9aedb3 100644 --- a/docs/documentation/simulation_capabilities/Checkpoints.md +++ b/docs/documentation/simulation_capabilities/Checkpoints.md @@ -28,8 +28,6 @@ trick.checkpoint_safestore() trick.load_checkpoint() # Load a checkpoint without restoring STLs trick.load_checkpoint(, False) -# Force the load_checkpoint job to run immediately -trick.load_checkpoint_job() ``` From ce419f11eec45d336d066bd9744b62a9f8aeb437 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 27 Oct 2022 15:55:08 -0500 Subject: [PATCH 081/162] add hyperlink to documentation to logo [skip ci] --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f7051060..de7cb76f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@

+ Trick logo From 63e9c32416794d944c58d2f89979a472882cc0e2 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Fri, 28 Oct 2022 12:56:41 -0500 Subject: [PATCH 082/162] update llvm in macOS CI from 11 to 14 --- .github/workflows/test_macos.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_macos.yml b/.github/workflows/test_macos.yml index cb22ad17..e1727b69 100644 --- a/.github/workflows/test_macos.yml +++ b/.github/workflows/test_macos.yml @@ -24,11 +24,13 @@ jobs: run: | # sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.15.pkg -target / brew install --cask xquartz - brew install llvm@11 swig udunits openmotif maven + brew install swig udunits openmotif maven + wget https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.6/clang+llvm-14.0.6-x86_64-apple-darwin.tar.xz + tar -xvf clang+llvm-14.0.6-x86_64-apple-darwin.tar.xz - name: Build Trick run: | export MAKEFLAGS=-j4 - ./configure --with-llvm=/usr/local/opt/llvm@11 + ./configure --with-llvm=${GITHUB_WORKSPACE}/clang+llvm-14.0.6-x86_64-apple-darwin make - name: Run tests run: | From d0511e8fb9120d61fc10057c17300804c27e0424 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Fri, 28 Oct 2022 17:19:54 -0500 Subject: [PATCH 083/162] 1372 use temporary job pointer instead of modifying curr_job in exec_set_time_tic_value * add integration test sim SIM_exec_set_time_tic_value * use temporary job pointer instead of modifying curr_job in exec_set_time_tic_value closes #1372 --- include/trick/Executive.hh | 2 +- .../RUN_test/unit_test.py | 4 ++++ test/SIM_exec_set_time_tic_value/S_define | 21 +++++++++++++++++++ .../S_overrides.mk | 3 +++ .../models/ttvtest.cpp | 6 ++++++ .../models/ttvtest.h | 12 +++++++++++ test/makefile | 1 + .../Executive_set_time_tic_value.cpp | 6 ++++-- 8 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 test/SIM_exec_set_time_tic_value/RUN_test/unit_test.py create mode 100644 test/SIM_exec_set_time_tic_value/S_define create mode 100644 test/SIM_exec_set_time_tic_value/S_overrides.mk create mode 100644 test/SIM_exec_set_time_tic_value/models/ttvtest.cpp create mode 100644 test/SIM_exec_set_time_tic_value/models/ttvtest.h diff --git a/include/trick/Executive.hh b/include/trick/Executive.hh index 4b849581..b7f89b85 100644 --- a/include/trick/Executive.hh +++ b/include/trick/Executive.hh @@ -207,7 +207,7 @@ namespace Trick { /** Queue to hold unfreeze jobs.\n */ Trick::ScheduledJobQueue unfreeze_queue ; /**< trick_io(**) */ - /** Queue to hold unfreeze jobs.\n */ + /** Queue to hold time_tic_changed jobs.\n */ Trick::ScheduledJobQueue time_tic_changed_queue ; /**< trick_io(**) */ /** Enough threads to accomodate the number of children specified in the S_define file.\n */ diff --git a/test/SIM_exec_set_time_tic_value/RUN_test/unit_test.py b/test/SIM_exec_set_time_tic_value/RUN_test/unit_test.py new file mode 100644 index 00000000..5b5b48ba --- /dev/null +++ b/test/SIM_exec_set_time_tic_value/RUN_test/unit_test.py @@ -0,0 +1,4 @@ + + +trick.stop(1.0); +trick.exec_set_time_tic_value(10000000) diff --git a/test/SIM_exec_set_time_tic_value/S_define b/test/SIM_exec_set_time_tic_value/S_define new file mode 100644 index 00000000..261f24a4 --- /dev/null +++ b/test/SIM_exec_set_time_tic_value/S_define @@ -0,0 +1,21 @@ +/************************TRICK HEADER************************* +PURPOSE: + () +LIBRARY DEPENDENCIES: +*************************************************************/ + +#include "sim_objects/default_trick_sys.sm" + +##include "ttvtest.h" + +class TTVTestSimObject : public Trick::SimObject { + + public: + TTVTest ttvtest; + + TTVTestSimObject() { + (0.0078125, "scheduled") trick_ret = ttvtest.scheduled(); + } +}; + +TTVTestSimObject ttvtestSimObject; diff --git a/test/SIM_exec_set_time_tic_value/S_overrides.mk b/test/SIM_exec_set_time_tic_value/S_overrides.mk new file mode 100644 index 00000000..6ca9ea96 --- /dev/null +++ b/test/SIM_exec_set_time_tic_value/S_overrides.mk @@ -0,0 +1,3 @@ + +TRICK_CFLAGS += -I./models +TRICK_CXXFLAGS += -I./models diff --git a/test/SIM_exec_set_time_tic_value/models/ttvtest.cpp b/test/SIM_exec_set_time_tic_value/models/ttvtest.cpp new file mode 100644 index 00000000..4b343eb5 --- /dev/null +++ b/test/SIM_exec_set_time_tic_value/models/ttvtest.cpp @@ -0,0 +1,6 @@ +#include +#include "ttvtest.h" +int TTVTest::scheduled() { + //message_publish(MSG_NORMAL, "Hello World!\n"); + return 0; +} diff --git a/test/SIM_exec_set_time_tic_value/models/ttvtest.h b/test/SIM_exec_set_time_tic_value/models/ttvtest.h new file mode 100644 index 00000000..e5ab5fed --- /dev/null +++ b/test/SIM_exec_set_time_tic_value/models/ttvtest.h @@ -0,0 +1,12 @@ +/************************************************************************* +PURPOSE: (Starter class) +LIBRARY DEPENDENCY: + ( + (ttvtest.cpp) + ) +**************************************************************************/ + +class TTVTest { +public: + int scheduled(); +}; \ No newline at end of file diff --git a/test/makefile b/test/makefile index f68e4f08..8daf93fb 100644 --- a/test/makefile +++ b/test/makefile @@ -25,6 +25,7 @@ SIMS_TO_COMPILE_ONLY = \ SIMS_TO_COMPILE_AND_RUN = \ SIM_demo_sdefine \ SIM_events \ + SIM_exec_set_time_tic_value \ SIM_python_namespace \ SIM_rti \ SIM_stls \ diff --git a/trick_source/sim_services/Executive/Executive_set_time_tic_value.cpp b/trick_source/sim_services/Executive/Executive_set_time_tic_value.cpp index d90b5c51..0806c78d 100644 --- a/trick_source/sim_services/Executive/Executive_set_time_tic_value.cpp +++ b/trick_source/sim_services/Executive/Executive_set_time_tic_value.cpp @@ -50,8 +50,10 @@ int Trick::Executive::set_time_tic_value(int in_tics) { /* call jobs for other objects that need to know the time_tic changed. */ time_tic_changed_queue.reset_curr_index() ; - while ( (curr_job = time_tic_changed_queue.get_next_job()) != NULL ) { - ret = curr_job->call() ; + /* job pointer for each job in time_tic_changed_queue */ + JobData* next_job; + while ( (next_job = time_tic_changed_queue.get_next_job()) != NULL ) { + ret = next_job->call() ; if ( ret != 0 ) { message_publish(MSG_ERROR, "ERROR: time_tic_changed job: %s FAILED.\n", curr_job->name.c_str()) ; return(ret) ; From f8acca0f346c8cf3faf1d1e4f95def686dbcaccf Mon Sep 17 00:00:00 2001 From: William Zijie Zhang <89562186+Transurgeon@users.noreply.github.com> Date: Mon, 31 Oct 2022 06:35:35 -0400 Subject: [PATCH 084/162] fix typo monte carlo tutorial (#1377) [no ci] closes #1377 --- docs/tutorial/ATutMonteCarlo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/ATutMonteCarlo.md b/docs/tutorial/ATutMonteCarlo.md index ee25b200..ed8961a1 100644 --- a/docs/tutorial/ATutMonteCarlo.md +++ b/docs/tutorial/ATutMonteCarlo.md @@ -416,7 +416,7 @@ trick.stop(15) ``` ### Simulation Definition -The last the we need to do is modify our simulation definition file and add the two new Trick jobs. As you can see, we have added a new library dependency, a new ## inclusion, and two new constructor jobs. +The last thing that we need to do is modify our simulation definition file and add the two new Trick jobs. As you can see, we have added a new library dependency, a new ## inclusion, and two new constructor jobs. ```C++ /* PURPOSE: Monte tutorial simulation definition. From 3b5d03fa140a7b6bd53a9c8f6e37bc580c202010 Mon Sep 17 00:00:00 2001 From: Deans Date: Tue, 1 Nov 2022 10:36:15 -0500 Subject: [PATCH 085/162] Add section for developer docs --- README.md | 20 ++++++++++++++++++++ docs/developer_docs/Developer-Docs-Home.md | 4 ++++ 2 files changed, 24 insertions(+) create mode 100644 docs/developer_docs/Developer-Docs-Home.md diff --git a/README.md b/README.md index de7cb76f..9b43eae9 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,26 @@ The Trick Simulation Environment, developed at the NASA Johnson Space Center, is + + + + + + + + + + + + + + + + + + +
Developer Docs
Read detailed documentation for various Trick internals and processes.
+ --- Trick is released under the NASA Open Source Agreement Version 1.3 [license](https://github.com/nasa/trick/blob/master/LICENSE). diff --git a/docs/developer_docs/Developer-Docs-Home.md b/docs/developer_docs/Developer-Docs-Home.md new file mode 100644 index 00000000..307d18e9 --- /dev/null +++ b/docs/developer_docs/Developer-Docs-Home.md @@ -0,0 +1,4 @@ +# Developer Documentation + +Link documentation for Trick internals, processes, and plans here. + From e65a0b078362e1cdcb7418867b4b278840baef51 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Fri, 4 Nov 2022 09:20:09 -0500 Subject: [PATCH 086/162] Add python 2 instructions to install guide --- docs/documentation/install_guide/Install-Guide.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index a3c7cb87..4b23d065 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -365,3 +365,12 @@ cp prebuiltTrick/libexec/trick/java/build/*.jar trick/trick-offline ``` 4. Follow regular install instructions above. + +### Python Version + +If you would like to use Python 2 with Trick please first make sure Python 2 and the Python 2 libs are installed. Then you will likely need to set `PYTHON_VERSION=2` in your shell environment before executing the `configure` script so that Trick will use Python 2 instead of Python 3. This can be done in bash or zsh with the following commands: + +``` +export PYTHON_VERSION=2 +./configure +``` From 1cf4ef58adceeace3776c2f1147f4a91612f40b5 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Mon, 7 Nov 2022 15:27:00 -0600 Subject: [PATCH 087/162] Stop attaching a debugger on segfault on Mac (#1383) --- .../Executive/Executive_signal_handler.cpp | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/trick_source/sim_services/Executive/Executive_signal_handler.cpp b/trick_source/sim_services/Executive/Executive_signal_handler.cpp index 22c9fbea..fb0502f6 100644 --- a/trick_source/sim_services/Executive/Executive_signal_handler.cpp +++ b/trick_source/sim_services/Executive/Executive_signal_handler.cpp @@ -69,22 +69,6 @@ void Trick::Executive::signal_handler(int sig) { "/proc/%d/exe %d", debugger_command.c_str(), getpid(), getpid()); system(command); } -#elif __APPLE__ - char command[2048]; - char path[1024] ; - uint32_t size = sizeof(path) ; - if (_NSGetExecutablePath(path, &size) == 0 ) { - if (attach_debugger == true) { - write( 2 , "Attempting to attach debugger... standby.\n" , 41 ) ; - sprintf(command, "%s -silent %s %d", debugger_command.c_str(), path, getpid()); - system(command); - } else if (stack_trace == true ) { - write( 2 , "Attempting to generate stack trace... standby.\n" , 47 ) ; - sprintf(command, "%s -batch -s ${TRICK_HOME}/share/trick/lldb_commands -p %d", - debugger_command.c_str(), getpid()); - system(command); - } - } #endif } From 4cd6da34d8a3110b2b5e4d3f58511ac1f78372e4 Mon Sep 17 00:00:00 2001 From: Isaac Rowe Date: Mon, 7 Nov 2022 16:32:53 -0500 Subject: [PATCH 088/162] Ensure MC slaves are set to ready after timeouts (#1370) Co-authored-by: Isaac Rowe --- .../MonteCarlo/MonteCarlo_receive_results.cpp | 140 +++++++++--------- 1 file changed, 69 insertions(+), 71 deletions(-) diff --git a/trick_source/sim_services/MonteCarlo/MonteCarlo_receive_results.cpp b/trick_source/sim_services/MonteCarlo/MonteCarlo_receive_results.cpp index 963dceb6..3823ae4a 100644 --- a/trick_source/sim_services/MonteCarlo/MonteCarlo_receive_results.cpp +++ b/trick_source/sim_services/MonteCarlo/MonteCarlo_receive_results.cpp @@ -103,78 +103,76 @@ void Trick::MonteCarlo::handle_run_data(Trick::MonteSlave& slave) { "Monte [Master] Run %d has already been resolved. Discarding results.\n", slave.current_run->id) ; } - tc_disconnect(&connection_device); - return; + } else { + /**

  • Otherwise, check the exit status: */ + int exit_status; + int size = sizeof(exit_status); + if (tc_read(&connection_device, (char*)&exit_status, size) != size) { + set_disconnected_state(slave) ; + return; + } + exit_status = ntohl(exit_status); + + switch (exit_status) { + + case MonteRun::MC_RUN_COMPLETE: + case MonteRun::MC_RUN_FAILED: + resolve_run(slave, static_cast(exit_status)); + run_queue(&master_post_queue, "in master_post queue") ; + break; + + case MonteRun::MC_PROBLEM_PARSING_INPUT: + if (verbosity >= MC_ERROR) { + message_publish( + MSG_ERROR, + "Monte [Master] %s:%d reported bad input for run %d. Skipping.\n", + slave.machine_name.c_str(), slave.id, slave.current_run->id) ; + } + resolve_run(slave, MonteRun::MC_PROBLEM_PARSING_INPUT); + break; + + case MonteRun::MC_RUN_DUMPED_CORE: + if (verbosity >= MC_ERROR) { + message_publish( + MSG_ERROR, + "Monte [Master] %s:%d reported core dump for run %d. Skipping.\n", + slave.machine_name.c_str(), slave.id, slave.current_run->id) ; + } + resolve_run(slave, MonteRun::MC_RUN_DUMPED_CORE); + break; + + case MonteRun::MC_CANT_CREATE_OUTPUT_DIR: + if (verbosity >= MC_ERROR) { + message_publish( + MSG_ERROR, + "Monte [Master] %s:%d reported a failure to create output directories for run %d.\n", + slave.machine_name.c_str(), slave.id, slave.current_run->id); + } + handle_retry(slave, MonteRun::MC_CANT_CREATE_OUTPUT_DIR); + break; + + case MonteRun::MC_RUN_TIMED_OUT: + if (verbosity >= MC_ERROR) { + message_publish( + MSG_ERROR, + "Monte [Master] %s:%d reported a timeout for run %d.\n", + slave.machine_name.c_str(), slave.id, slave.current_run->id); + } + handle_retry(slave, MonteRun::MC_RUN_TIMED_OUT); + break; + + default: + if (verbosity >= MC_ERROR) { + message_publish( + MSG_ERROR, + "Monte [Master] %s:%d reported unrecognized exit status (%d) for run %d. Skipping.\n", + slave.machine_name.c_str(), slave.id, exit_status, slave.current_run->id); + } + resolve_run(slave, MonteRun::MC_UNRECOGNIZED_RETURN_CODE); + break; + } } - - /**
  • Otherwise, check the exit status: */ - int exit_status; - int size = sizeof(exit_status); - if (tc_read(&connection_device, (char*)&exit_status, size) != size) { - set_disconnected_state(slave) ; - return; - } - exit_status = ntohl(exit_status); - - switch (exit_status) { - - case MonteRun::MC_RUN_COMPLETE: - case MonteRun::MC_RUN_FAILED: - resolve_run(slave, static_cast(exit_status)); - run_queue(&master_post_queue, "in master_post queue") ; - break; - - case MonteRun::MC_PROBLEM_PARSING_INPUT: - if (verbosity >= MC_ERROR) { - message_publish( - MSG_ERROR, - "Monte [Master] %s:%d reported bad input for run %d. Skipping.\n", - slave.machine_name.c_str(), slave.id, slave.current_run->id) ; - } - resolve_run(slave, MonteRun::MC_PROBLEM_PARSING_INPUT); - break; - - case MonteRun::MC_RUN_DUMPED_CORE: - if (verbosity >= MC_ERROR) { - message_publish( - MSG_ERROR, - "Monte [Master] %s:%d reported core dump for run %d. Skipping.\n", - slave.machine_name.c_str(), slave.id, slave.current_run->id) ; - } - resolve_run(slave, MonteRun::MC_RUN_DUMPED_CORE); - break; - - case MonteRun::MC_CANT_CREATE_OUTPUT_DIR: - if (verbosity >= MC_ERROR) { - message_publish( - MSG_ERROR, - "Monte [Master] %s:%d reported a failure to create output directories for run %d.\n", - slave.machine_name.c_str(), slave.id, slave.current_run->id); - } - handle_retry(slave, MonteRun::MC_CANT_CREATE_OUTPUT_DIR); - break; - - case MonteRun::MC_RUN_TIMED_OUT: - if (verbosity >= MC_ERROR) { - message_publish( - MSG_ERROR, - "Monte [Master] %s:%d reported a timeout for run %d.\n", - slave.machine_name.c_str(), slave.id, slave.current_run->id); - } - handle_retry(slave, MonteRun::MC_RUN_TIMED_OUT); - break; - - default: - if (verbosity >= MC_ERROR) { - message_publish( - MSG_ERROR, - "Monte [Master] %s:%d reported unrecognized exit status (%d) for run %d. Skipping.\n", - slave.machine_name.c_str(), slave.id, exit_status, slave.current_run->id); - } - resolve_run(slave, MonteRun::MC_UNRECOGNIZED_RETURN_CODE); - break; - } - + tc_disconnect(&connection_device); /**
  • Update the slave's state. */ From 716d35a63eef27c000c4964d3a4f693999d794f7 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 10 Nov 2022 12:10:14 -0600 Subject: [PATCH 089/162] fix link in SSL to Webserver APIs --- docs/documentation/web/SSL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/web/SSL.md b/docs/documentation/web/SSL.md index aad5ae19..e45b3d20 100644 --- a/docs/documentation/web/SSL.md +++ b/docs/documentation/web/SSL.md @@ -38,4 +38,4 @@ Where server.pem is the path to the server.pem file you created when creating a ## Access your webserver Now that ssl encryption is enabled, to access you webserver use https://localhost.ssl:8888 instead of http and wss://localhost.ssl:8888 for http and ws protocals respectively. -Continue to [Adding SSL Encryption](SSL) \ No newline at end of file +Continue to [Web Server APIs](Webserver-apis) From 9d305fec09df8d20cb38b719d50b138fb3781170 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 15 Nov 2022 09:16:08 -0600 Subject: [PATCH 090/162] Add a way to disable sim objects (#1364) * Add set_sim_object_jobs_onoff, get_sim_object_on_off, and change set_sim_object_onoff to preserve the on/off status of jobs --- .../Executive-Scheduler.md | 20 +++++- include/trick/Executive.hh | 32 ++++++++- include/trick/SimObject.hh | 15 ++++- trick_source/.gitignore | 3 +- .../sim_services/Executive/Executive.cpp | 10 +++ .../Executive/Executive_c_intf.cpp | 38 +++++++++++ .../Executive_set_simobject_onoff.cpp | 65 +++++++++++++++---- .../Executive/test/Executive_test.cpp | 41 ++++++++++-- .../sim_services/Executive/test/Makefile | 23 ++++++- .../sim_services/SimObject/SimObject.cpp | 16 ++++- 10 files changed, 233 insertions(+), 30 deletions(-) diff --git a/docs/documentation/simulation_capabilities/Executive-Scheduler.md b/docs/documentation/simulation_capabilities/Executive-Scheduler.md index 53434729..48c07af1 100644 --- a/docs/documentation/simulation_capabilities/Executive-Scheduler.md +++ b/docs/documentation/simulation_capabilities/Executive-Scheduler.md @@ -205,10 +205,26 @@ If there is a job tag specified for one of more jobs in the S_define file, you c ``` # Python code -trick.exec_set_sim_object_onoff(char * job_name , int on) ; +trick.exec_set_sim_object_onoff(char * sim_object_name , int on) ; ``` -The exec_set_sim_object_onoff routine allows users to turn individual whole sim_objects on and off. +The exec_set_sim_object_onoff routine allows users to turn individual whole sim_objects on and off. If individiual jobs were disabled before the sim object is disabled, they will retain their disabled status when the sim object is turned back on. + +``` +# Python code +trick.exec_get_sim_object_onoff(char * sim_object_name) ; +``` + +The exec_get_sim_object_onoff routine allows users to determine if the sim_object is currently on or off. + + +``` +# Python code +trick.exec_set_sim_object_jobs_onoff(char * sim_object_name , int on) ; +``` + +The exec_set_sim_object_jobs_onoff allows users to turn all of the jobs in a sim_object on or off, but does not change the overall sim object's disabled status. + #### Job Cycle Time diff --git a/include/trick/Executive.hh b/include/trick/Executive.hh index b7f89b85..71d014e8 100644 --- a/include/trick/Executive.hh +++ b/include/trick/Executive.hh @@ -422,6 +422,13 @@ namespace Trick { */ int get_sim_objects(std::vector & in_sim_objects) ; + /** + Search for a sim object with the given name. + @param sim_object_name - name of desired SimObject + @return Pointer to sim object or NULL if not found + */ + SimObject * get_sim_object_by_name(std::string sim_object_name); + /** @userdesc Command to get the real-time software frame in seconds. @par Python Usage: @@ -807,15 +814,34 @@ namespace Trick { int set_job_cycle(std::string job_name, int instance_num, double in_cycle) ; /** - @userdesc Command to turn on/off all jobs in the sim_object. + @userdesc Command to enable or disable all jobs in a sim object (without setting sim object status). @par Python Usage: @code trick.exec_set_sim_object_onoff("", ) @endcode @param sim_object_name - name of sim_object from S_define file - @param on - 1 to turn job on, 0 to turn job off - @return 0 if successful or -1 if the job cannot be found + @param on - 1 to turn jobs on, 0 to turn jobs off + @return 0 if successful or -1 if the object cannot be found + */ + int set_sim_object_jobs_onoff(std::string sim_object_name, int on) ; + + /** + @userdesc Command to turn on/off the sim_object. + @par Python Usage: + @code trick.exec_set_sim_object_onoff("", ) @endcode + @param sim_object_name - name of sim_object from S_define file + @param on - 1 to turn object on, 0 to turn object off + @return 0 if successful or -1 if the object cannot be found */ int set_sim_object_onoff(std::string sim_object_name, int on) ; + /** + @userdesc Command to get whether the sim object is on or off. + @par Python Usage: + @code trick.exec_get_sim_object_onoff("") @endcode + @param sim_object_name - name of sim_object from S_define file + @return 1 if the object is enabled, 0 if the object is disabled, or -1 if the object cannot be found + */ + int get_sim_object_onoff (std::string sim_object_name) ; + /** @userdesc Trick Version & Date at the time executable was built. @par Python Usage: diff --git a/include/trick/SimObject.hh b/include/trick/SimObject.hh index 7ada230e..30f47344 100644 --- a/include/trick/SimObject.hh +++ b/include/trick/SimObject.hh @@ -11,6 +11,7 @@ PROGRAMMERS: #include #include +#include #include "trick/JobData.hh" @@ -32,11 +33,19 @@ namespace Trick { public: + SimObject () : object_disabled(false) {} + /** Name of SimObject given to object */ std::string name ; /* trick_units(--) */ /** SimObject id assigned by CP */ - int id ; /* trick_units(--) */ + int id ; /* trick_units(--) */ + + /** Indicates if the sim_object is enabled */ + bool object_disabled; /* trick_units(--) */ + + /** Save the job disabled states when the entire sim object is disabled */ + std::map saved_job_states; /* trick_io(**) */ /** Included simobjects -- currently not used */ std::vector pre_component_objects ; /* trick_io(**) */ @@ -97,12 +106,14 @@ namespace Trick { /** * Enables all jobs in the SimObject */ + void enable_all_jobs() ; void enable() ; /** * Disables all jobs in the SimObject */ - void disable() ; + void disable_all_jobs() ; + void disable(); /** * Calls all jobs that are not "dynamic_event" class diff --git a/trick_source/.gitignore b/trick_source/.gitignore index 853fc650..7fb1a4ea 100644 --- a/trick_source/.gitignore +++ b/trick_source/.gitignore @@ -1,2 +1,3 @@ *.gcda -*.gcno \ No newline at end of file +*.gcno +*.info diff --git a/trick_source/sim_services/Executive/Executive.cpp b/trick_source/sim_services/Executive/Executive.cpp index 4c27c4af..5b4759a7 100644 --- a/trick_source/sim_services/Executive/Executive.cpp +++ b/trick_source/sim_services/Executive/Executive.cpp @@ -216,6 +216,16 @@ int Trick::Executive::get_sim_objects(std::vector & in_sim_o return(0) ; } +Trick::SimObject * Trick::Executive::get_sim_object_by_name(std::string sim_object_name) { + for ( int ii = 0 ; ii < sim_objects.size() ; ii++ ) { + if ( ! sim_objects[ii]->name.compare(sim_object_name) ) { + return sim_objects[ii]; + } + } + + return NULL; +} + double Trick::Executive::get_software_frame() { return(software_frame) ; } diff --git a/trick_source/sim_services/Executive/Executive_c_intf.cpp b/trick_source/sim_services/Executive/Executive_c_intf.cpp index f5bc56a0..8e88f0c0 100644 --- a/trick_source/sim_services/Executive/Executive_c_intf.cpp +++ b/trick_source/sim_services/Executive/Executive_c_intf.cpp @@ -665,6 +665,30 @@ extern "C" int exec_set_sim_object_onoff(const char * sim_object_name , int on) return -1 ; } +/** + * @relates Trick::Executive + * @copydoc Trick::Executive::get_sim_object_onoff + * C wrapper for Trick::Executive::get_sim_object_onoff + */ +extern "C" int exec_get_sim_object_onoff(const char * sim_object_name ) { + if ( the_exec != NULL ) { + return the_exec->get_sim_object_onoff( sim_object_name ) ; + } + return -1 ; +} + +/** + * @relates Trick::Executive + * @copydoc Trick::Executive::set_sim_object_jobs_onoff + * C wrapper for Trick::Executive::set_sim_object_jobs_onoff + */ +extern "C" int exec_set_sim_object_jobs_onoff(const char * sim_object_name , int on) { + if ( the_exec != NULL ) { + return the_exec->set_sim_object_jobs_onoff( sim_object_name , on) ; + } + return -1 ; +} + /** * @relates Trick::Executive * @copydoc Trick::Executive::set_version_date_tag @@ -998,6 +1022,20 @@ int exec_get_sim_objects(std::vector& in_sim_objects ) { return -1 ; } + +/** + * @relates Trick::Executive + * @copydoc Trick::Executive::get_sim_objects + * Wrapper for Trick::Executive::get_sim_objects + */ +Trick::SimObject * exec_get_sim_object_by_name(std::string sim_object_name) { + if ( the_exec != NULL ) { + return the_exec->get_sim_object_by_name(sim_object_name) ; + } + return NULL ; +} + + /** * @relates Trick::Executive * @copydoc Trick::Executive::get_job diff --git a/trick_source/sim_services/Executive/Executive_set_simobject_onoff.cpp b/trick_source/sim_services/Executive/Executive_set_simobject_onoff.cpp index 7c4bcaa7..60dd5c15 100644 --- a/trick_source/sim_services/Executive/Executive_set_simobject_onoff.cpp +++ b/trick_source/sim_services/Executive/Executive_set_simobject_onoff.cpp @@ -3,21 +3,60 @@ #include "trick/Executive.hh" -int Trick::Executive::set_sim_object_onoff(std::string sim_object_name, int on) { +int Trick::Executive::set_sim_object_jobs_onoff(std::string sim_object_name, int on) { - SimObject * so ; - unsigned int ii , jj ; - - for ( ii = 0 ; ii < sim_objects.size() ; ii++ ) { - if ( ! sim_objects[ii]->name.compare(sim_object_name) ) { - so = sim_objects[ii] ; - for ( jj = 0 ; jj < so->jobs.size() ; jj++ ) { - so->jobs[jj]->disabled = !on ; - } - return(0) ; - } + SimObject * sim_object = get_sim_object_by_name(sim_object_name); + if (sim_object == NULL) { + return -1; } - return(-1) ; + if (on) { + sim_object->enable_all_jobs(); + } else { + sim_object->disable_all_jobs(); + } + + return 0; +} + + +int Trick::Executive::set_sim_object_onoff(std::string sim_object_name, int on) { + + SimObject * sim_object = get_sim_object_by_name(sim_object_name); + if (sim_object == NULL) { + return -1; + } + + sim_object->object_disabled = !on; + if (on) { + // Apply saved state + for ( int i = 0 ; i < sim_object->jobs.size() ; i++ ) { + std::map::iterator saved_state_it = sim_object->saved_job_states.find(sim_object->jobs[i]); + if (saved_state_it != sim_object->saved_job_states.end()) { + sim_object->jobs[i]->disabled = saved_state_it->second; + } else { + // If job is not in map, turn it on + sim_object->jobs[i]->disabled = false; + } + } + sim_object->saved_job_states.clear(); + } else { + for ( int i = 0 ; i < sim_object->jobs.size() ; i++ ) { + // Save state, turn off + sim_object->saved_job_states[sim_object->jobs[i]] = sim_object->jobs[i]->disabled; + sim_object->jobs[i]->disabled = true ; + } + } + return(0) ; +} + +int Trick::Executive::get_sim_object_onoff (std::string sim_object_name) { + + SimObject * sim_object = get_sim_object_by_name(sim_object_name); + if (sim_object == NULL) { + return -1; + } + + return !(sim_object->object_disabled) ; } diff --git a/trick_source/sim_services/Executive/test/Executive_test.cpp b/trick_source/sim_services/Executive/test/Executive_test.cpp index a4a2e775..92783f4e 100644 --- a/trick_source/sim_services/Executive/test/Executive_test.cpp +++ b/trick_source/sim_services/Executive/test/Executive_test.cpp @@ -845,25 +845,54 @@ TEST_F(ExecutiveTest , JobOnOff) { EXPECT_EQ(exec.set_job_onoff("so1.scheduled_4" , 1 , 0), -1) ; } -TEST_F(ExecutiveTest , SimObjectOnOff) { - //req.add_requirement("3132950280"); - +TEST_F(ExecutiveTest , SimObjectJobsOnOff) { Trick::JobData * curr_job ; exec_add_sim_object(&so1 , "so1") ; - EXPECT_EQ(exec.set_sim_object_onoff("so1" , 0), 0) ; + EXPECT_EQ(exec.set_sim_object_jobs_onoff("so1" , 0), 0) ; curr_job = exec.get_job( std::string("so1.scheduled_1")) ; ASSERT_FALSE( curr_job == NULL ) ; EXPECT_EQ( curr_job->disabled , true) ; + EXPECT_EQ( exec.get_sim_object_onoff("so1"), 1); - EXPECT_EQ(exec.set_sim_object_onoff("so1" , 1), 0) ; + EXPECT_EQ(exec.set_sim_object_jobs_onoff("so1" , 1), 0) ; EXPECT_EQ( curr_job->disabled , false) ; - EXPECT_EQ(exec.set_sim_object_onoff("so2" , 1), -1) ; + EXPECT_EQ(exec.set_sim_object_jobs_onoff("so2" , 1), -1) ; } +TEST_F(ExecutiveTest , SimObjectOnOff) { + + exec_add_sim_object(&so1 , "so1") ; + + // Test that after disabling and enabling sim object, top_of_frame is still disabled + Trick::JobData * curr_job = exec.get_job( std::string("so1.top_of_frame_1")) ; + ASSERT_FALSE( curr_job == NULL ) ; + + curr_job->disable(); + + EXPECT_EQ(exec.set_sim_object_onoff("so1" , 0), 0) ; + EXPECT_EQ(exec.get_sim_object_onoff("so1"), 0); + EXPECT_EQ(curr_job->disabled , true) ; + + // Add an extra job + so1.add_job(1, 100, "scheduled", NULL, 1, "child_job_1", "TRK") ; + exec.add_jobs_to_queue(&so1, false); + + Trick::JobData * new_job = exec.get_job( std::string ("so1.child_job_1")); + ASSERT_FALSE( new_job == NULL ) ; + + EXPECT_EQ(exec.set_sim_object_onoff("so1" , 1), 0) ; + EXPECT_EQ( exec.get_sim_object_onoff("so1"), 1); + EXPECT_EQ( curr_job->disabled , true) ; + EXPECT_EQ( new_job->disabled , false) ; + + EXPECT_EQ(exec.set_sim_object_onoff("so2" , 1), -1) ; + EXPECT_EQ(exec.get_sim_object_onoff("so2"), -1) ; +} + TEST_F(ExecutiveTest , LockMemory) { //req.add_requirement("715042410"); // Requires root to run. Will pass if run as root. diff --git a/trick_source/sim_services/Executive/test/Makefile b/trick_source/sim_services/Executive/test/Makefile index 94cf5cc8..a614e9ea 100644 --- a/trick_source/sim_services/Executive/test/Makefile +++ b/trick_source/sim_services/Executive/test/Makefile @@ -7,11 +7,14 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common +COVERAGE_FLAGS += -fprofile-arcs -ftest-coverage -O0 + # Flags passed to the preprocessor. TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} TRICK_LIBS = -L ${TRICK_LIB_DIR} -ltrick_mm -ltrick_units -ltrick TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main +TRICK_SYSTEM_LDFLAGS += ${COVERAGE_FLAGS} # All tests produced by this Makefile. Remember to add new tests you # created to the list. @@ -27,8 +30,26 @@ all : $(TESTS) test: $(TESTS) ./Executive_test --gtest_output=xml:${TRICK_HOME}/trick_test/Executive.xml +code-coverage: test + # Give rid of any old code-coverage HTML we may have. + rm -rf lcov_html + # Gather coverage information about the src code. + lcov --capture \ + --directory ../object_${TRICK_HOST_CPU} \ + --base-directory ../ \ + --output-file src_coverage.info + # Filter out information about directories that we don't care about. + lcov --remove src_coverage.info '/Applications/*' '/usr/include/*' \ + --output-file MemoryManager_code_coverage.info + # Generate HTML + genhtml MemoryManager_code_coverage.info \ + --output-directory lcov_html + # Clean up + # rm *.info + clean : - rm -f $(TESTS) *.o + rm -f $(TESTS) *.o *.gcda *.gcno *.info + rm -rf lcov_html Executive_test.o : Executive_test.cpp $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< diff --git a/trick_source/sim_services/SimObject/SimObject.cpp b/trick_source/sim_services/SimObject/SimObject.cpp index 4f11ff96..f17dc20b 100644 --- a/trick_source/sim_services/SimObject/SimObject.cpp +++ b/trick_source/sim_services/SimObject/SimObject.cpp @@ -2,6 +2,7 @@ #include #include "trick/SimObject.hh" +#include "trick/message_proto.h" Trick::SimObject::~SimObject() { while ( !jobs.empty() ) { @@ -99,17 +100,28 @@ Trick::JobData * Trick::SimObject::get_job( std::string job_name, unsigned int j return NULL ; } -void Trick::SimObject::enable() { +void Trick::SimObject::enable_all_jobs() { std::vector ::iterator it ; for ( it = jobs.begin() ; it != jobs.end() ; it++ ) { (*it)->enable() ; } } -void Trick::SimObject::disable() { +void Trick::SimObject::enable() { + message_publish(MSG_WARNING,"SimObject::enable has been deprecated, use SimObject::enable_all_jobs instead\n") ; + enable_all_jobs(); +} + + +void Trick::SimObject::disable_all_jobs() { std::vector ::iterator it ; for ( it = jobs.begin() ; it != jobs.end() ; it++ ) { (*it)->disable() ; } } +void Trick::SimObject::disable() { + message_publish(MSG_WARNING,"SimObject::disable has been deprecated, use SimObject::disable_all_jobs instead\n") ; + disable_all_jobs(); +} + From 265513684ac3f8fab42630041793b1ce69b3408a Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Tue, 15 Nov 2022 09:54:17 -0600 Subject: [PATCH 091/162] Update Install-Guide.md --- docs/documentation/install_guide/Install-Guide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/documentation/install_guide/Install-Guide.md b/docs/documentation/install_guide/Install-Guide.md index 4b23d065..dd92121a 100644 --- a/docs/documentation/install_guide/Install-Guide.md +++ b/docs/documentation/install_guide/Install-Guide.md @@ -217,8 +217,8 @@ brew install python java xquartz swig@3 maven udunits openmotif ``` IMPORTANT: Make sure to follow the instructions for adding java to your path provided by brew. If you missed them, you can see them again by using `brew info java`. -5. Download and un-compress the latest pre-built clang+llvm 13 from llvm-project github. Go to https://github.com/llvm/llvm-project/releases -and download the latest version of 13 from the release assets. 13.0.1 is the latest as of the writing of this guide, the link I used is below: +5. Download and un-compress the latest pre-built clang+llvm from llvm-project github. Go to https://github.com/llvm/llvm-project/releases +and download the latest version llvm that matches your Xcode version from the release assets. For example, if your Xcode version is 14 then you will want the latest 14.x.x release of llvm. 13.0.1 is the latest as of the writing of this guide, the link I used is below: https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-apple-darwin.tar.xz Tip: I suggest renaming the untar'd directory to something simple like llvm13 and putting it in your home directory or development environment. From 2a03ff5cf442ca410b2799488e63a1c8044eea4e Mon Sep 17 00:00:00 2001 From: jmpenn Date: Tue, 15 Nov 2022 15:00:05 -0600 Subject: [PATCH 092/162] Replace sprintf with snprintf in all of Trick source. #1384 (#1392) * Replace sprintf with snprintf in all of Trick source. #1384 * Don't add -Werror for MacOS because of deprecated sprintf warnings which we cant get rid of because SWIG. #1384 * Fixed an unbalanced parenthesis in S_overrides.mk. #1384 --- docs/documentation/web/Extend-ws-api.md | 4 +- include/trick/DataRecordGroup.hh | 3 + include/trick/FrameLog.hh | 2 +- include/trick/VariableServer.hh | 2 +- include/trick/VariableServerThread.hh | 2 +- .../src/SegmentedExecutive.cpp | 2 +- .../S_overrides.mk | 9 ++- .../models/sched/src/sched_amf.c | 4 +- .../models/varserv/src/VS_init.cpp | 2 +- .../models/varserv/src/VS_tests.cpp | 38 ++++++------- .../Cannon/models/httpMethods/TimeSession.cpp | 5 +- .../models/graphics/cpp/main.cpp | 9 +-- .../models/Sun/src/sun_pred_fast_display.c | 10 ++-- .../models/Sun/src/sun_pred_slow_display.c | 10 ++-- .../codegen/Interface_Code_Gen/Utilities.cpp | 5 +- .../data_products/Apps/Trk2csv/trk2ascii.cpp | 10 ++-- .../DPX/APPS/FXPLOT/fermi_view.cpp | 2 +- .../DPX/APPS/FXPLOT/page_view_node.cpp | 13 +++-- .../DPX/APPS/FXPLOT/plot_view_node.cpp | 8 +-- .../DPX/APPS/FXPLOT/product_view_node.cpp | 4 +- .../DPX/APPS/FXPLOT/table_view_node.cpp | 2 +- .../DPX/APPS/GXPLOT/gp_view_page_node.cpp | 12 ++-- .../DPX/test/unit_test/DPC_test.cpp | 2 +- .../DPX/test/unit_test/DS_test.cpp | 2 +- .../data_products/EQParse/eqparse_error.c | 2 +- .../data_products/EQParse/eqparse_fillno.c | 2 +- .../data_products/Log/DataStreamFactory.cpp | 20 ++++--- .../data_products/Log/ExternalProgram.cpp | 2 +- trick_source/data_products/Log/darwin_dl.c | 4 +- trick_source/data_products/Log/log.cpp | 18 +++--- .../data_products/Log/parseLogHeader.cpp | 2 +- .../ClassicCheckPointerAgent.cpp | 23 +++++--- .../CheckPointAgent/input_parser.y | 28 +++++----- .../CommandLineArguments.cpp | 7 +-- .../sim_services/DataRecord/DRAscii.cpp | 35 ++++++------ .../DataRecord/DataRecordGroup.cpp | 8 +-- .../Executive/Executive_fpe_handler.cpp | 10 ++-- .../Executive/Executive_process_sim_args.cpp | 2 +- .../Executive/Executive_signal_handler.cpp | 4 +- .../Executive_write_s_job_execution.cpp | 2 +- .../Executive_write_s_run_summary.cpp | 2 +- .../sim_services/FrameLog/FrameLog.cpp | 8 +-- .../sim_services/InputProcessor/MTV.cpp | 18 +++--- .../MemoryManager_get_stl_dependencies.cpp | 4 +- .../MemoryManager_restore_stls.cpp | 4 +- .../MemoryManager_write_checkpoint.cpp | 4 +- .../sim_services/MemoryManager/ref_parser.y | 2 +- .../sim_services/MemoryManager/wcs_ext.c | 28 +++++----- .../sim_services/Message/MessagePublisher.cpp | 4 +- .../MonteCarlo/MonteVarCalculated.cpp | 14 ++--- .../sim_services/MonteCarlo/MonteVarFile.cpp | 4 +- .../MonteCarlo/MonteVarRandom.cpp | 10 ++-- .../RealtimeSync/RealtimeSync.cpp | 2 +- trick_source/sim_services/Timer/ITimer.cpp | 2 +- .../VariableServerListenThread.cpp | 2 +- .../VariableServerThread_commands.cpp | 8 +-- .../VariableServerThread_write_data.cpp | 13 ++--- .../VariableServerThread_write_stdio.cpp | 2 +- .../VariableServer/vs_format_ascii.cpp | 56 +++++++++---------- trick_source/trick_swig/swig_double.cpp | 4 +- trick_source/trick_swig/swig_int.cpp | 8 +-- trick_source/trick_utils/comm/src/tc_accept.c | 4 +- .../trick_utils/comm/src/tc_blockio.c | 2 +- .../trick_utils/comm/src/tc_connect.c | 2 +- .../trick_utils/comm/src/tc_disconnect.c | 2 +- trick_source/trick_utils/comm/src/tc_read.c | 4 +- trick_source/trick_utils/comm/src/tc_write.c | 4 +- .../trick_utils/comm/src/trick_error_hndlr.c | 2 +- .../trick_utils/math/src/dLU_solver.c | 4 +- trick_source/trick_utils/shm/src/tsm_init.c | 2 +- .../trick_utils/unicode/src/unicode_utils.c | 22 ++++---- .../CivetServer/src/VariableServerSession.cpp | 2 +- 72 files changed, 303 insertions(+), 277 deletions(-) diff --git a/docs/documentation/web/Extend-ws-api.md b/docs/documentation/web/Extend-ws-api.md index 223c83e6..13c35b7e 100644 --- a/docs/documentation/web/Extend-ws-api.md +++ b/docs/documentation/web/Extend-ws-api.md @@ -148,7 +148,7 @@ void TimeSession::sendMessage() { int month = theTime->tm_mon + 1; int year = theTime->tm_year + 1900; - sprintf(message, "Time: %02d:%02d:%02d Date: %02d/%02d/%d\n", hours, minutes, seconds, month, day, year); + snprintf(message, sizeof(message), "Time: %02d:%02d:%02d Date: %02d/%02d/%d\n", hours, minutes, seconds, month, day, year); mg_websocket_write(connection, MG_WEBSOCKET_OPCODE_TEXT, message, strlen(message)); } @@ -270,4 +270,4 @@ To test your new web socket interface, put the following ```time.html``` file in ``` -Continue to [Simulation Utilities](../simulation_utilities/Simulation-Utilities) \ No newline at end of file +Continue to [Simulation Utilities](../simulation_utilities/Simulation-Utilities) diff --git a/include/trick/DataRecordGroup.hh b/include/trick/DataRecordGroup.hh index 34869ffe..ac5631e7 100644 --- a/include/trick/DataRecordGroup.hh +++ b/include/trick/DataRecordGroup.hh @@ -127,6 +127,9 @@ namespace Trick { /** Buffer to hold formatted data ready for disk or other destination.\n */ char * writer_buff ; /**< trick_io(**) trick_units(--) */ + /** Size of the writer_buff. */ + size_t writer_buff_size; + /** Little_endian or big_endian indicator.\n */ std::string byte_order; /**< trick_io(*io) trick_units(--) */ diff --git a/include/trick/FrameLog.hh b/include/trick/FrameLog.hh index 63a42594..edff7600 100644 --- a/include/trick/FrameLog.hh +++ b/include/trick/FrameLog.hh @@ -44,7 +44,7 @@ namespace Trick { /** Data recording group for logging frame/overrun time.\n trick_units(--) */ Trick::FrameDataRecordGroup * drg_frame; /**< trick_io(*io) trick_units(--) */ - int plots_per_page; /**< trick_io(*io) trick_units(--) number of plots per page */ + unsigned int plots_per_page; /**< trick_io(*io) trick_units(--) number of plots per page */ /** Cyclic jobs timeline to log, dimensioned as [num_threads][tl_max_samples].\n */ Trick::timeline_t **timeline; /**< trick_io(**) */ /** Non-Cyclic jobs timeline to log, dimensioned as [num_threads][tl_max_samples].\n */ diff --git a/include/trick/VariableServer.hh b/include/trick/VariableServer.hh index cd2cb5ce..c65951b0 100644 --- a/include/trick/VariableServer.hh +++ b/include/trick/VariableServer.hh @@ -295,7 +295,7 @@ namespace Trick { } -int vs_format_ascii(Trick::VariableReference * var, char *value); +int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_size); Trick::VariableServer * var_server_get_var_server() ; diff --git a/include/trick/VariableServerThread.hh b/include/trick/VariableServerThread.hh index cb133c2d..c92ef72c 100644 --- a/include/trick/VariableServerThread.hh +++ b/include/trick/VariableServerThread.hh @@ -456,7 +456,7 @@ namespace Trick { /** @brief Called by write_data to write given variables to socket in var_ascii format. */ - int write_ascii_data(char * dest_buf, const std::vector& given_vars, VS_MESSAGE_TYPE message_type ); + int write_ascii_data(char * dest_buf, size_t dest_buf_size, const std::vector& given_vars, VS_MESSAGE_TYPE message_type ); /** @brief Construct a variable reference from the string in_name and handle error checking diff --git a/test/SIM_segments/models/SegmentedExecutive/src/SegmentedExecutive.cpp b/test/SIM_segments/models/SegmentedExecutive/src/SegmentedExecutive.cpp index 6efda5e5..6c72684f 100644 --- a/test/SIM_segments/models/SegmentedExecutive/src/SegmentedExecutive.cpp +++ b/test/SIM_segments/models/SegmentedExecutive/src/SegmentedExecutive.cpp @@ -154,7 +154,7 @@ int Trick::SegmentedExecutive::write_s_job_execution(FILE *fp) { /* Get full path to S_job_execution */ output_dir = command_line_args_get_output_dir() ; - sprintf(buf, "%s/S_job_execution", output_dir.c_str()); + snprintf(buf, sizeof(buf), "%s/S_job_execution", output_dir.c_str()); /* Reopen the S_job_execution file. If it fails, it's not a fatal error, return 0. */ if ((fp = fopen(buf, "a")) == NULL) { diff --git a/test/SIM_target_specific_variables/S_overrides.mk b/test/SIM_target_specific_variables/S_overrides.mk index 11dd3924..372dc22d 100644 --- a/test/SIM_target_specific_variables/S_overrides.mk +++ b/test/SIM_target_specific_variables/S_overrides.mk @@ -2,7 +2,14 @@ MODELS :=$(CURDIR)/models # Warn about comment markers /* within comments and make them errors, causing # the build to fail. -TRICK_CXXFLAGS += -I$(MODELS) -Wcomment -Werror +TRICK_CXXFLAGS += -I$(MODELS) -Wcomment + +# We can't yet make warnings to be errors on MacOS, because +# MACOS deprecates and warns about sprintf. But SWIG +# still generates code containing sprintf.. +ifneq ($(TRICK_HOST_TYPE), Darwin) +TRICK_CXXFLAGS += -Werror +endif PATHS := $(MODELS)/many $(MODELS)/nested diff --git a/test/SIM_test_sched/models/sched/src/sched_amf.c b/test/SIM_test_sched/models/sched/src/sched_amf.c index ed2dfdc4..a4fb2b61 100644 --- a/test/SIM_test_sched/models/sched/src/sched_amf.c +++ b/test/SIM_test_sched/models/sched/src/sched_amf.c @@ -21,13 +21,13 @@ int sched_amf( if ( S->amf == 2 ) { /* Things are in order */ - sprintf(test, "Test %d", i); + snprintf(test, sizeof(test), "Test %d", i); add_test_result("sched_amf: Things are in order", test, ""); i++; S->amf = 1 ; } else { /* Things are out of order */ - sprintf(test, "Test %d", i); + snprintf(test, sizeof(test), "Test %d", i); add_test_result("sched_amf: Things are NOT in order", test, ". "); i++; S->amf = 3 ; diff --git a/test/SIM_test_varserv/models/varserv/src/VS_init.cpp b/test/SIM_test_varserv/models/varserv/src/VS_init.cpp index 3d117024..2e49f649 100644 --- a/test/SIM_test_varserv/models/varserv/src/VS_init.cpp +++ b/test/SIM_test_varserv/models/varserv/src/VS_init.cpp @@ -37,7 +37,7 @@ int VSTest::init() { // default cycle rate cycle_rate = 0.01; - sprintf(msg,"trick.var_cycle(%.2f)\n", cycle_rate); + snprintf(msg, sizeof(msg), "trick.var_cycle(%.2f)\n", cycle_rate); vs_write(msg); return (0); diff --git a/test/SIM_test_varserv/models/varserv/src/VS_tests.cpp b/test/SIM_test_varserv/models/varserv/src/VS_tests.cpp index 69ce5bfd..a8bc32a3 100644 --- a/test/SIM_test_varserv/models/varserv/src/VS_tests.cpp +++ b/test/SIM_test_varserv/models/varserv/src/VS_tests.cpp @@ -39,7 +39,7 @@ int VSTest::testUnits() { int result; // INVALID UNIT CHANGE - sprintf(msg,"trick.var_add(\"vsx.vst.c\")\ntrick.var_units(\"vsx.vst.c\",\"g\")\n"); + snprintf(msg, sizeof(msg), "trick.var_add(\"vsx.vst.c\")\ntrick.var_units(\"vsx.vst.c\",\"g\")\n"); vs_write(msg); std::cerr << "The purpose of this test is to cause an error. Error messages are expected." << std::endl; vs_read(); @@ -47,21 +47,21 @@ int VSTest::testUnits() { TRICK_EXPECT_EQ(result, 0, suite, "VariableInvalidUnits") // ADD UNITS - sprintf(msg,"trick.var_add(\"vsx.vst.e\",\"m\")\n"); + snprintf(msg, sizeof(msg), "trick.var_add(\"vsx.vst.e\",\"m\")\n"); vs_write(msg); vs_read(); result = strcmp_IgnoringWhiteSpace("0 -1234 -123456 {m}", got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableAddUnits") // CHANGE UNITS - sprintf(msg,"trick.var_units(\"vsx.vst.e\",\"ft\")\n"); + snprintf(msg, sizeof(msg), "trick.var_units(\"vsx.vst.e\",\"ft\")\n"); vs_write(msg); vs_read(); result = strcmp_IgnoringWhiteSpace("0 -1234 -405039 {ft}", got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableChangeUnits") // CLEAR VARIABLE SERVER - sprintf(msg,"trick.var_clear()\n"); + snprintf(msg, sizeof(msg), "trick.var_clear()\n"); vs_write(msg); } @@ -71,7 +71,7 @@ int VSTest::testAddRemove() { int result; // NO UNITS - sprintf(msg,"trick.var_add(\"vsx.vst.c\")\n"); + snprintf(msg, sizeof(msg), "trick.var_add(\"vsx.vst.c\")\n"); vs_write(msg); vs_read(); std::cout << got_read << std::endl; @@ -83,14 +83,14 @@ int VSTest::testAddRemove() { TRICK_EXPECT_EQ(result, 0, suite, "VariableAddCyclic") // REMOVE SINGLE VARIABLE - sprintf(msg,"trick.var_remove(\"vsx.vst.e\")\n"); + snprintf(msg, sizeof(msg), "trick.var_remove(\"vsx.vst.e\")\n"); vs_write(msg); vs_read(); result = strcmp_IgnoringWhiteSpace("0 -1234", got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableRemove") // CLEAR VARIABLE SERVER - sprintf(msg,"trick.var_clear()\n"); + snprintf(msg, sizeof(msg), "trick.var_clear()\n"); vs_write(msg); vs_read(); TRICK_EXPECT_EQ(strcmp(got_read, ""), 0, suite, "VariableClear") @@ -104,7 +104,7 @@ int VSTest::testSendOnce() { int result; // SEND ONCE - sprintf(msg,"trick.var_send_once(\"vsx.vst.e\")\n"); + snprintf(msg, sizeof(msg), "trick.var_send_once(\"vsx.vst.e\")\n"); vs_write(msg); vs_read(); result = strcmp_IgnoringWhiteSpace("5 -123456", got_read); @@ -112,14 +112,14 @@ int VSTest::testSendOnce() { trick_test_add_parent( suite , "VariableSendOnce" , ""); // SEND ONCE LIST - sprintf(msg,"trick.var_send_once(\"vsx.vst.n[0], vsx.vst.n[1], vsx.vst.n[2],\", 3)\n"); + snprintf(msg, sizeof(msg), "trick.var_send_once(\"vsx.vst.n[0], vsx.vst.n[1], vsx.vst.n[2],\", 3)\n"); vs_write(msg); vs_read(); result = strcmp_IgnoringWhiteSpace("5 0 1 2", got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableSendOnceList") // SEND ONCE LIST - WRONG INDICES - sprintf(msg,"trick.var_send_once(\"vsx.vst.n[0], vsx.vst.n[1], vsx.vst.n[2],\", 4)\n"); + snprintf(msg, sizeof(msg), "trick.var_send_once(\"vsx.vst.n[0], vsx.vst.n[1], vsx.vst.n[2],\", 4)\n"); vs_write(msg); std::cerr << "The purpose of this test is to cause an error. Error messages are expected." << std::endl; vs_read(); @@ -133,7 +133,7 @@ int VSTest::testExists() { int result; // VARIABLE EXISTS - sprintf(msg,"trick.var_exists(\"vsx.vst.e\")\n"); + snprintf(msg, sizeof(msg), "trick.var_exists(\"vsx.vst.e\")\n"); vs_write(msg); vs_read(); result = strcmp_IgnoringWhiteSpace("1 1",got_read); @@ -141,14 +141,14 @@ int VSTest::testExists() { trick_test_add_parent( suite , "VariableExists" , "3587464751"); // VARIABLE DOES NOT EXIST - sprintf(msg,"trick.var_exists(\"vsx.vst.z\")\n"); + snprintf(msg, sizeof(msg), "trick.var_exists(\"vsx.vst.z\")\n"); vs_write(msg); vs_read(); std::cout << "Check variable doesn't exist: " << got_read << std::endl; result = strcmp_IgnoringWhiteSpace("1 0",got_read); TRICK_EXPECT_EQ(result, 0, suite, "VariableNotExists") - sprintf(msg,"trick.var_clear()\n"); + snprintf(msg, sizeof(msg), "trick.var_clear()\n"); vs_write(msg); return(0); @@ -159,13 +159,13 @@ int VSTest::testPause() { char suite[] = "VariableServerTest"; int result; - sprintf(msg,"trick.var_add(\"vsx.vst.f\")\n"); + snprintf(msg, sizeof(msg), "trick.var_add(\"vsx.vst.f\")\n"); vs_write(msg); - sprintf(msg,"trick.var_add(\"vsx.vst.i\")\n"); + snprintf(msg, sizeof(msg), "trick.var_add(\"vsx.vst.i\")\n"); vs_write(msg); // PAUSE - sprintf(msg,"trick.var_pause()\n"); + snprintf(msg, sizeof(msg), "trick.var_pause()\n"); vs_write(msg); vs_read(); vs_read(); @@ -173,7 +173,7 @@ int VSTest::testPause() { trick_test_add_parent( suite , "VariablePause" , "964174074"); // SEND - sprintf(msg,"trick.var_send()\n"); + snprintf(msg, sizeof(msg), "trick.var_send()\n"); vs_write(msg); vs_read(); result = strcmp_IgnoringWhiteSpace("0 123456 1234.5677", got_read); @@ -185,7 +185,7 @@ int VSTest::testPause() { trick_test_add_parent( suite , "VariableSendNoCyclic" , "67211805"); // UNPAUSE - sprintf(msg,"trick.var_unpause()\n"); + snprintf(msg, sizeof(msg), "trick.var_unpause()\n"); vs_write(msg); vs_read(); result = strcmp_IgnoringWhiteSpace("0 123456 1234.5677", got_read); @@ -197,7 +197,7 @@ int VSTest::testPause() { TRICK_EXPECT_EQ(result, 0, suite, "VariableUnpauseCyclic") trick_test_add_parent( suite , "VariableUnpauseCyclic" , "964174074"); - sprintf(msg,"trick.var_clear()\n"); + snprintf(msg, sizeof(msg), "trick.var_clear()\n"); vs_write(msg); return(0); diff --git a/trick_sims/Cannon/models/httpMethods/TimeSession.cpp b/trick_sims/Cannon/models/httpMethods/TimeSession.cpp index 92a2cf24..8d11d423 100644 --- a/trick_sims/Cannon/models/httpMethods/TimeSession.cpp +++ b/trick_sims/Cannon/models/httpMethods/TimeSession.cpp @@ -32,7 +32,7 @@ void TimeSession::sendMessage() { int month = theTime->tm_mon + 1; int year = theTime->tm_year + 1900; - sprintf(message, "Time: %02d:%02d:%02d Date: %02d/%02d/%d\n", hours, minutes, seconds, month, day, year); + snprintf(message, sizeof(message), "Time: %02d:%02d:%02d Date: %02d/%02d/%d\n", hours, minutes, seconds, month, day, year); mg_websocket_write(connection, MG_WEBSOCKET_OPCODE_TEXT, message, strlen(message)); } @@ -52,4 +52,5 @@ int TimeSession::handleMessage(const std::string& client_msg) { WebSocketSession* makeTimeSession( struct mg_connection *nc ) { std::cerr << "DEBUG: Creating new TimeSession." << std::endl; return new TimeSession(nc); -} \ No newline at end of file +} + diff --git a/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp b/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp index a444675c..f0e98769 100644 --- a/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp +++ b/trick_sims/SIM_billiards/models/graphics/cpp/main.cpp @@ -535,8 +535,9 @@ T getVar(Socket& socket, std::string varName) { // Wrapper for sprintf use case bc im tired of dealing with std::string vs char* stuff std::string format(const std::string& formatString, int num) { - char *buf = (char *)malloc(formatString.size() + 10); - sprintf(buf, formatString.c_str(), num); + size_t buf_len = formatString.size() + 10; + char *buf = (char *)malloc(buf_len); + snprintf(buf, buf_len, formatString.c_str(), num); return std::string(buf); } @@ -697,7 +698,7 @@ int main(int argc, char *argv[]) std::string templateString = "dyn.table.applyCueForce(%.3f, %.3f) \n"; char buf[128]; - sprintf(buf, templateString.c_str(), mouseX, mouseY); + snprintf(buf, sizeof(buf), templateString.c_str(), mouseX, mouseY); cueRequest += std::string(buf); socket << cueRequest; return false; @@ -804,7 +805,7 @@ int main(int argc, char *argv[]) char * templateString = "trick.var_add(\"dyn.table.balls[%d][0].pos._x\")\ntrick.var_add(\"dyn.table.balls[%d][0].pos._y\")\ntrick.var_add(\"dyn.table.balls[%d][0].inPlay\")\n"; for (int i = 0; i < numBalls; i++) { char buf[128]; - sprintf(buf, templateString, i, i, i); + snprintf(buf, sizeof(buf), templateString, i, i, i); positionRequest += std::string(buf); } socket << positionRequest; diff --git a/trick_sims/SIM_sun/models/Sun/src/sun_pred_fast_display.c b/trick_sims/SIM_sun/models/Sun/src/sun_pred_fast_display.c index 66722386..fa9a7cbb 100644 --- a/trick_sims/SIM_sun/models/Sun/src/sun_pred_fast_display.c +++ b/trick_sims/SIM_sun/models/Sun/src/sun_pred_fast_display.c @@ -55,17 +55,15 @@ int sun_pred_fast_display( char message[500]; message[0] = '\0'; - sprintf(tmp_s,"%ls %0d:%0d:%02.f",S->label_UTC, S->utc.hour , S->utc.min , S->utc.sec ); + snprintf(tmp_s, sizeof(tmp_s), "%ls %0d:%0d:%02.f",S->label_UTC, S->utc.hour , S->utc.min , S->utc.sec ); strcat(message,tmp_s); - // sprintf(tmp_s," %ls %.6f",S->label_JD, S->JD); - // strcat(message,tmp_s); if ( S->label_Azimuth != NULL ) { - sprintf(tmp_s," %ls %.3f%d",S->label_Azimuth, S->solar_azimuth, DEGREE_SIGN); + snprintf(tmp_s, sizeof(tmp_s), " %ls %.3f%d",S->label_Azimuth, S->solar_azimuth, DEGREE_SIGN); } else { - sprintf(tmp_s," AZIMUTH %.3f%d", S->solar_azimuth, DEGREE_SIGN); + snprintf(tmp_s, sizeof(tmp_s), " AZIMUTH %.3f%d", S->solar_azimuth, DEGREE_SIGN); } strcat(message,tmp_s); - sprintf(tmp_s," %ls %.3f%d",S->label_Elevation, S->solar_elevation, DEGREE_SIGN); + snprintf(tmp_s," sizeof(tmp_s), %ls %.3f%d",S->label_Elevation, S->solar_elevation, DEGREE_SIGN); strcat(message,tmp_s); send_hs(stdout,"%s\n",message); diff --git a/trick_sims/SIM_sun/models/Sun/src/sun_pred_slow_display.c b/trick_sims/SIM_sun/models/Sun/src/sun_pred_slow_display.c index 4b82cc0e..c95d6af2 100644 --- a/trick_sims/SIM_sun/models/Sun/src/sun_pred_slow_display.c +++ b/trick_sims/SIM_sun/models/Sun/src/sun_pred_slow_display.c @@ -55,15 +55,15 @@ int sun_pred_slow_display( char message[500]; message[0] = '\0'; - sprintf(tmp_s,"%lc",POSITION_INDICATOR); + snprintf(tmp_s, sizeof(tmp_s), "%lc",POSITION_INDICATOR); strcat(message,tmp_s); - sprintf(tmp_s," %lc %5.2f%lc",GREEK_SMALL_LETTER_PHI, S->observer_latitude, DEGREE_SIGN); + snprintf(tmp_s, sizeof(tmp_s), " %lc %5.2f%lc",GREEK_SMALL_LETTER_PHI, S->observer_latitude, DEGREE_SIGN); strcat(message,tmp_s); - sprintf(tmp_s," L %5.2f%lc", S->observer_longitude, DEGREE_SIGN); + snprintf(tmp_s, sizeof(tmp_s), " L %5.2f%lc", S->observer_longitude, DEGREE_SIGN); strcat(message,tmp_s); - sprintf(tmp_s," %lc %5.2f%lc",GREEK_SMALL_LETTER_ALPHA, S->right_ascension, DEGREE_SIGN); + snprintf(tmp_s, sizeof(tmp_s), " %lc %5.2f%lc",GREEK_SMALL_LETTER_ALPHA, S->right_ascension, DEGREE_SIGN); strcat(message,tmp_s); - sprintf(tmp_s," %lc %5.2f%lc",GREEK_SMALL_LETTER_DELTA, S->declination, DEGREE_SIGN); + snprintf(tmp_s, sizeof(tmp_s), " %lc %5.2f%lc",GREEK_SMALL_LETTER_DELTA, S->declination, DEGREE_SIGN); strcat(message,tmp_s); send_hs(stdout,"%s\n",message); diff --git a/trick_source/codegen/Interface_Code_Gen/Utilities.cpp b/trick_source/codegen/Interface_Code_Gen/Utilities.cpp index 0155f468..39bec7d5 100644 --- a/trick_source/codegen/Interface_Code_Gen/Utilities.cpp +++ b/trick_source/codegen/Interface_Code_Gen/Utilities.cpp @@ -150,8 +150,9 @@ char * almostRealPath( const char * in_path ) { char * final_path = NULL ; resolved_path = realpath( dir , resolved_path) ; if ( resolved_path != NULL ) { - final_path = (char *)malloc(strlen(resolved_path) + strlen(file) + 2) ; - sprintf(final_path,"%s/%s", resolved_path , file ) ; + size_t final_path_len = strlen(resolved_path) + strlen(file) + 2; + final_path = (char *)malloc(final_path_len) ; + snprintf(final_path, final_path_len, "%s/%s", resolved_path , file ) ; free(resolved_path) ; } free(file_copy_path) ; diff --git a/trick_source/data_products/Apps/Trk2csv/trk2ascii.cpp b/trick_source/data_products/Apps/Trk2csv/trk2ascii.cpp index 57f09842..9b82e866 100644 --- a/trick_source/data_products/Apps/Trk2csv/trk2ascii.cpp +++ b/trick_source/data_products/Apps/Trk2csv/trk2ascii.cpp @@ -179,14 +179,14 @@ int main(int argc, char* argv[]) done = 0; while ( !done ) { current_line.clear(); - sprintf(buf, "%8s", ""); + snprintf(buf, sizeof(buf), "%8s", ""); current_line.append(buf); for ( idx = 0; idx < ds_list.size(); idx++ ) { if ( ds_list[idx]->get( &t, &y) == 0 ) { done = 1; break; } - sprintf(buf, "%.15G", y); + snprintf(buf, sizeof(buf), "%.15G", y); current_line.append(buf); } current_line.append(""); @@ -228,14 +228,14 @@ int main(int argc, char* argv[]) break; } if ( idx != 0) { - sprintf(buf, "%s", delimiter.c_str()); + snprintf(buf, sizeof(buf), "%s", delimiter.c_str()); current_line.append(buf); } if ( Format == FIX ) { - sprintf(buf, "%20.16g", y); + snprintf(buf, sizeof(buf), "%20.16g", y); current_line.append(buf); } else { - sprintf(buf, "%.15G", y); + snprintf(buf, sizeof(buf), "%.15G", y); current_line.append(buf); } } diff --git a/trick_source/data_products/DPX/APPS/FXPLOT/fermi_view.cpp b/trick_source/data_products/DPX/APPS/FXPLOT/fermi_view.cpp index 67261890..043a507c 100644 --- a/trick_source/data_products/DPX/APPS/FXPLOT/fermi_view.cpp +++ b/trick_source/data_products/DPX/APPS/FXPLOT/fermi_view.cpp @@ -32,7 +32,7 @@ fermi_view::fermi_view(Widget TopLevel) { trick_home = getenv("TRICK_HOME"); if (trick_home != NULL) { - sprintf( applresdir,"%s/trick_source/data_products/DPX/APPS/FXPLOT",trick_home); + snprintf( applresdir,sizeof(applresdir), "%s/trick_source/data_products/DPX/APPS/FXPLOT",trick_home); setenv("XAPPLRESDIR", applresdir, 0); } else { std::cerr << "ERROR: $TRICK_HOME is not set." << std::endl; diff --git a/trick_source/data_products/DPX/APPS/FXPLOT/page_view_node.cpp b/trick_source/data_products/DPX/APPS/FXPLOT/page_view_node.cpp index 5aab5308..f7b33c68 100644 --- a/trick_source/data_products/DPX/APPS/FXPLOT/page_view_node.cpp +++ b/trick_source/data_products/DPX/APPS/FXPLOT/page_view_node.cpp @@ -204,7 +204,7 @@ void PageViewNode::pdf_file_cb(Widget w, XtPointer client_data, XtPointer call_d page_view_node->generate_PS(tmp_file); // Convert PS tmp file to PDF - sprintf(cmd, "ps2pdf %s %s", tmp_file, file_name); + snprintf(cmd, sizeof(cmd), "ps2pdf %s %s", tmp_file, file_name); system(cmd); XtFree(file_name); @@ -234,8 +234,9 @@ int PageViewNode::exists_program(const char *programName) strptr = path; while ((tokptr = strtok(strptr, ":")) != NULL) { - program = (char *) malloc(strlen(tokptr) + strlen(programName) + 2); - sprintf(program, "%s/%s", tokptr, programName); + size_t program_len = strlen(tokptr) + strlen(programName) + 2; + program = (char *) malloc( program_len); + snprintf(program, program_len, "%s/%s", tokptr, programName); if (access(program, F_OK | X_OK) == 0) { free(program); return (1); @@ -492,12 +493,12 @@ void PageViewNode::print() { if (!strcmp(trick_print_cmd, "lpr")) { if ((trick_printer_name == NULL) || (strlen(trick_printer_name) == 0)) { - sprintf(system_cmd, "%s %s", trick_print_cmd, ps_file_name); + snprintf(system_cmd, sizeof(system_cmd), "%s %s", trick_print_cmd, ps_file_name); } else { - sprintf(system_cmd, "%s -P %s %s", trick_print_cmd, trick_printer_name, ps_file_name); + snprintf(system_cmd, sizeof(system_cmd), "%s -P %s %s", trick_print_cmd, trick_printer_name, ps_file_name); } } else { - sprintf(system_cmd, "%s %s", trick_print_cmd, ps_file_name); + snprintf(system_cmd, sizeof(system_cmd), "%s %s", trick_print_cmd, ps_file_name); } std::cout << "Printing with command: " << system_cmd << std::endl; diff --git a/trick_source/data_products/DPX/APPS/FXPLOT/plot_view_node.cpp b/trick_source/data_products/DPX/APPS/FXPLOT/plot_view_node.cpp index 9eec3490..df3d7640 100644 --- a/trick_source/data_products/DPX/APPS/FXPLOT/plot_view_node.cpp +++ b/trick_source/data_products/DPX/APPS/FXPLOT/plot_view_node.cpp @@ -129,18 +129,18 @@ static void print_plot_cb(Widget w, XtPointer client_data, XtPointer call_data) if (!strcmp(trick_print_cmd, "lpr")) { if ((trick_printer_name == NULL) || (strlen(trick_printer_name) == 0)) { - sprintf(system_cmd, "%s %s", trick_print_cmd, ps_file_name); + snprintf(system_cmd, sizeof(system_cmd), "%s %s", trick_print_cmd, ps_file_name); } else { - sprintf(system_cmd, "%s -P %s %s", trick_print_cmd, trick_printer_name, ps_file_name); + snprintf(system_cmd, sizeof(system_cmd), "%s -P %s %s", trick_print_cmd, trick_printer_name, ps_file_name); } } else { - sprintf(system_cmd, "%s %s", trick_print_cmd, ps_file_name); + snprintf(system_cmd, sizeof(system_cmd), "%s %s", trick_print_cmd, ps_file_name); } std::cout << "Printing with command: " << system_cmd << std::endl; sys_ret = system( system_cmd); std::cout << " System call returned: " << sys_ret << std::endl; - sprintf(system_cmd, "rm %s", ps_file_name); + snprintf(system_cmd, sizeof(system_cmd), "rm %s", ps_file_name); system( system_cmd); } diff --git a/trick_source/data_products/DPX/APPS/FXPLOT/product_view_node.cpp b/trick_source/data_products/DPX/APPS/FXPLOT/product_view_node.cpp index 31fc7023..0541271e 100644 --- a/trick_source/data_products/DPX/APPS/FXPLOT/product_view_node.cpp +++ b/trick_source/data_products/DPX/APPS/FXPLOT/product_view_node.cpp @@ -61,9 +61,9 @@ void ProductViewNode::generate_PS(const char* file_name) { for (ii=0 ; ii 1) { - sprintf(indexedFileName, "%s.%d.%d.ps", file_name_str.c_str(), dpIndex, ii+1); + snprintf(indexedFileName, sizeof(indexedFileName), "%s.%d.%d.ps", file_name_str.c_str(), dpIndex, ii+1); } else { - sprintf(indexedFileName, "%s.%d.ps", file_name_str.c_str(), dpIndex); + snprintf(indexedFileName, sizeof(indexedFileName), "%s.%d.ps", file_name_str.c_str(), dpIndex); } page_node_list[ii]->generate_PS(indexedFileName); std::cout << "Generating " << indexedFileName << " ..." << std::endl; diff --git a/trick_source/data_products/DPX/APPS/FXPLOT/table_view_node.cpp b/trick_source/data_products/DPX/APPS/FXPLOT/table_view_node.cpp index 8de0918a..03f8b818 100644 --- a/trick_source/data_products/DPX/APPS/FXPLOT/table_view_node.cpp +++ b/trick_source/data_products/DPX/APPS/FXPLOT/table_view_node.cpp @@ -301,7 +301,7 @@ TableViewNode::TableViewNode( Widget Toplevel, DPC_table* Table, int Xpos, int Y } else { // Parse succeeded. char temp_s[32]; - sprintf(temp_s,"%%+%ds",width); + snprintf(temp_s, sizeof(temp_s), "%%+%ds",width); column_heading_format[colix] = strdup(temp_s); column_data_format[colix] = strdup(user_format); column_width[colix] = width; diff --git a/trick_source/data_products/DPX/APPS/GXPLOT/gp_view_page_node.cpp b/trick_source/data_products/DPX/APPS/GXPLOT/gp_view_page_node.cpp index 5a3a77ab..e5a75e1e 100644 --- a/trick_source/data_products/DPX/APPS/GXPLOT/gp_view_page_node.cpp +++ b/trick_source/data_products/DPX/APPS/GXPLOT/gp_view_page_node.cpp @@ -307,27 +307,27 @@ static void layout_page (GPViewPageNode* gp_view_page_node ) { // CALCULATE PLOT WIDTH cell_width = 1.0 / n_horizontal_cells; - sprintf(value_text, "%5.3f", cell_width); + snprintf(value_text, sizeof(value_text), "%5.3f", cell_width); gp_view_page_node->textbuf.subst("", value_text); // CALCULATE PLOT HEIGHT cell_height = 1.0 / n_vertical_cells; - sprintf(value_text, "%5.3f", cell_height); + snprintf(value_text, sizeof(value_text), "%5.3f", cell_height); gp_view_page_node->textbuf.subst("", value_text); for (plot_ix=0; plot_ix< number_of_plots; plot_ix++) { float x,y; char key_text[20]; - sprintf(key_text, "", plot_ix); + snprintf(key_text, sizeof(key_text), "", plot_ix); x = (float)((plot_ix % n_horizontal_cells) * cell_width); - sprintf(value_text, "%5.3f", x); + snprintf(value_text, sizeof(value_text), "%5.3f", x); gp_view_page_node->textbuf.subst(key_text, value_text); - sprintf(key_text, "", plot_ix); + snprintf(key_text, sizeof(key_text), "", plot_ix); y = (float)(1.0 - ((plot_ix / n_horizontal_cells) * cell_height + cell_height)); - sprintf(value_text, "%5.3f", y); + snprintf(value_text, sizeof(value_text), "%5.3f", y); gp_view_page_node->textbuf.subst(key_text, value_text); } } diff --git a/trick_source/data_products/DPX/test/unit_test/DPC_test.cpp b/trick_source/data_products/DPX/test/unit_test/DPC_test.cpp index c9a6be7e..71bea4e0 100644 --- a/trick_source/data_products/DPX/test/unit_test/DPC_test.cpp +++ b/trick_source/data_products/DPX/test/unit_test/DPC_test.cpp @@ -109,7 +109,7 @@ std::string DPCTest::parseDPCData(const char* name) { for ( product_ix = 0; product_ix < n_product_files; product_ix++ ) { DPC_product *product; char tmp [50]; - sprintf(tmp, "../TEST_DATA/%s", session->product_file_list[product_ix]); + snprintf(tmp, sizeof(tmp), "../TEST_DATA/%s", session->product_file_list[product_ix]); const char *product_file_name = tmp; try { diff --git a/trick_source/data_products/DPX/test/unit_test/DS_test.cpp b/trick_source/data_products/DPX/test/unit_test/DS_test.cpp index fb2fc4dd..56f6ac27 100644 --- a/trick_source/data_products/DPX/test/unit_test/DS_test.cpp +++ b/trick_source/data_products/DPX/test/unit_test/DS_test.cpp @@ -345,7 +345,7 @@ TEST_F(DSTest, DataStream_Delta) { const char* a = "sun_predictor.sun.solar_azimuth:../TEST_DATA/BUNCHORUNS/RUN1"; const char* b = "sun_predictor.sun.solar_azimuth:../TEST_DATA/BUNCHORUNS/RUN2"; - sprintf(DeltaName, "delta(%s, %s)", a, b); + snprintf(DeltaName, sizeof(DeltaName), "delta(%s, %s)", a, b); data_stream_factory = new DataStreamFactory(); testds = data_stream_factory->create(RUN_dir, DeltaName, "s_simtime"); diff --git a/trick_source/data_products/EQParse/eqparse_error.c b/trick_source/data_products/EQParse/eqparse_error.c index 922f7b94..b4511c1e 100644 --- a/trick_source/data_products/EQParse/eqparse_error.c +++ b/trick_source/data_products/EQParse/eqparse_error.c @@ -19,7 +19,7 @@ char *eqperror(int code) errorprintout = ( char* ) malloc ( 128 ) ; - sprintf(errorprintout,"\nError %d in eqparse.c:",code) ; + snprintf(errorprintout, 128, "\nError %d in eqparse.c:",code) ; switch (code){ case 1: strcat(errorprintout,"\nSyntax Error: ) Expected") ; diff --git a/trick_source/data_products/EQParse/eqparse_fillno.c b/trick_source/data_products/EQParse/eqparse_fillno.c index 9ea80b9f..15d1637e 100644 --- a/trick_source/data_products/EQParse/eqparse_fillno.c +++ b/trick_source/data_products/EQParse/eqparse_fillno.c @@ -57,7 +57,7 @@ stack fillno(stack1 * no, stack stk, double value) tmp_no = revers_stk(tmp_no); for (j = 0; j < i; j++) { tmp_no = pop(tmp_no, &ch); - sprintf(num, "%s%c", num, ch); + snprintf(num, sizeof(numstr), "%s%c", num, ch); } x = atof(num); #ifdef DEBUG diff --git a/trick_source/data_products/Log/DataStreamFactory.cpp b/trick_source/data_products/Log/DataStreamFactory.cpp index 9cfc0029..25965c0b 100644 --- a/trick_source/data_products/Log/DataStreamFactory.cpp +++ b/trick_source/data_products/Log/DataStreamFactory.cpp @@ -61,8 +61,9 @@ DataStream* DataStreamFactory::create( const char* iRunDir, while ((dp = readdir(dirp)) != NULL) { len = strlen(dp->d_name); if ( !strcmp( &(dp->d_name[len - 3]) , ".h5")) { - full_path = (char*) malloc (runDir.length() + strlen(dp->d_name) + 2) ; - sprintf(full_path, "%s/%s" , runDir.c_str() , dp->d_name); + size_t full_path_len = runDir.length() + strlen(dp->d_name) + 2; + full_path = (char*) malloc (full_path_len) ; + snprintf(full_path, full_path_len, "%s/%s" , runDir.c_str() , dp->d_name); if ( HDF5LocateParam((const char*)full_path , paramName.c_str()) ) { closedir(dirp) ; stream = new TrickHDF5(full_path , (char *)paramName.c_str() , (char *)timeName ) ; @@ -79,8 +80,9 @@ DataStream* DataStreamFactory::create( const char* iRunDir, while ((dp = readdir(dirp)) != NULL) { len = strlen(dp->d_name); if ( !strcmp( &(dp->d_name[len - 4]) , ".trk")) { - full_path = (char*) malloc (runDir.length() + strlen(dp->d_name) + 2) ; - sprintf(full_path, "%s/%s", runDir.c_str(), dp->d_name); + size_t full_path_len = runDir.length() + strlen(dp->d_name) + 2; + full_path = (char*) malloc( full_path_len) ; + snprintf(full_path, full_path_len, "%s/%s", runDir.c_str(), dp->d_name); if ( TrickBinaryLocateParam((const char*)full_path , paramName.c_str()) ) { closedir(dirp) ; stream = new TrickBinary(full_path , (char *)paramName.c_str()) ; @@ -96,8 +98,9 @@ DataStream* DataStreamFactory::create( const char* iRunDir, while ((dp = readdir(dirp)) != NULL) { len = strlen(dp->d_name); if ( !strcmp( &(dp->d_name[len - 4]) , ".csv")) { - full_path = (char*) malloc (runDir.length() + strlen(dp->d_name) + 2) ; - sprintf(full_path, "%s/%s", runDir.c_str(), dp->d_name); + size_t full_path_len = runDir.length() + strlen(dp->d_name) + 2; + full_path = (char*) malloc( full_path_len) ; + snprintf(full_path, full_path_len, "%s/%s", runDir.c_str(), dp->d_name); if ( CsvLocateParam(full_path , (char *)paramName.c_str()) ) { closedir(dirp) ; stream = new Csv(full_path , (char *)paramName.c_str()) ; @@ -113,8 +116,9 @@ DataStream* DataStreamFactory::create( const char* iRunDir, while ((dp = readdir(dirp)) != NULL) { len = strlen(dp->d_name); if ( !strcmp( &(dp->d_name[len - 4]) , ".mat")) { - full_path = (char*) malloc (runDir.length() + strlen(dp->d_name) + 2) ; - sprintf(full_path, "%s/%s", runDir.c_str(), dp->d_name); + size_t full_path_len = runDir.length() + strlen(dp->d_name) + 2; + full_path = (char*) malloc ( full_path_len) ; + snprintf(full_path, full_path_len, "%s/%s", runDir.c_str(), dp->d_name); if ( MatLabLocateParam(full_path , (char *)paramName.c_str(), (char *)timeName ) ) { diff --git a/trick_source/data_products/Log/ExternalProgram.cpp b/trick_source/data_products/Log/ExternalProgram.cpp index faf79f8b..959f4bb3 100644 --- a/trick_source/data_products/Log/ExternalProgram.cpp +++ b/trick_source/data_products/Log/ExternalProgram.cpp @@ -18,7 +18,7 @@ ExternalProgram::ExternalProgram( const char* sharedLibName, // Open up external plugin program progHandle_ = dlopen(sharedLibName, RTLD_LAZY); if (!progHandle_) { - sprintf(msg, "ERROR: Couldn't load shared program \"%s\" \n", + snprintf(msg, sizeof(msg), "ERROR: Couldn't load shared program \"%s\" \n", sharedLibName); fputs(msg, stderr); exit(1); diff --git a/trick_source/data_products/Log/darwin_dl.c b/trick_source/data_products/Log/darwin_dl.c index 09402b66..04f8303d 100644 --- a/trick_source/data_products/Log/darwin_dl.c +++ b/trick_source/data_products/Log/darwin_dl.c @@ -39,7 +39,7 @@ void *dlsym(void *handle, char *funcname) NSSymbol symbol; int cb = strlen(funcname) + 2; char *symname = (char *) alloca(cb); - sprintf(symname, "_%s", funcname); + snprintf(symname, cb, "_%s", funcname); dyn_error = NULL; @@ -47,7 +47,7 @@ void *dlsym(void *handle, char *funcname) if (symbol) { return (void *) NSAddressOfSymbol(symbol); } else { - sprintf(dyn_buf, "Symbol [%s] not found", symname); + snprintf(dyn_buf, sizeof(dyn_buf), "Symbol [%s] not found", symname); dyn_error = dyn_buf; return (void *) NULL; } diff --git a/trick_source/data_products/Log/log.cpp b/trick_source/data_products/Log/log.cpp index 96ed8f59..b51b0f1a 100644 --- a/trick_source/data_products/Log/log.cpp +++ b/trick_source/data_products/Log/log.cpp @@ -375,18 +375,18 @@ int LogData::openCurrBinaryFile() // Construct extension if (currBinExtension_ < 10) { - sprintf(extension, "00%d", currBinExtension_); + snprintf(extension, sizeof(extension), "00%d", currBinExtension_); } else if (currBinExtension_ < 100) { - sprintf(extension, "0%d", currBinExtension_); + snprintf(extension, sizeof(extension), "0%d", currBinExtension_); } else { - sprintf(extension, "%d", currBinExtension_); + snprintf(extension, sizeof(extension), "%d", currBinExtension_); } // Construct binary filename len = strlen(binFilePath_) + strlen(binFileName_) + strlen(extension) + 3; file = new char[len]; - sprintf(file, "%s/%s.%s", binFilePath_, binFileName_, extension); + snprintf(file, len, "%s/%s.%s", binFilePath_, binFileName_, extension); // Do sanity check on file if (access(file, F_OK | R_OK) == -1) { @@ -454,11 +454,11 @@ int LogData::getNumRecords() // Construct extension if (ii < 10) { - sprintf(extension, "00%d", ii); + snprintf(extension, sizeof(extension), "00%d", ii); } else if (ii < 100) { - sprintf(extension, "0%d", ii); + snprintf(extension, sizeof(extension), "0%d", ii); } else { - sprintf(extension, "%d", ii); + snprintf(extension, sizeof(extension), "%d", ii); } // Allocate & construct file name @@ -466,7 +466,7 @@ int LogData::getNumRecords() len = strlen(binFilePath_) + strlen(binFileName_) + strlen(extension) + 3; file = new char[len]; - sprintf(file, "%s/%s.%s", binFilePath_, + snprintf(file, len, "%s/%s.%s", binFilePath_, binFileName_, extension); fpTmp = fopen(file, "r"); @@ -1487,7 +1487,7 @@ int LogGroup::getHeaders() len = strlen(dp->d_name) + strlen(pathToBinaryData_) + 2 ; full_header_name = (char*) malloc ( len ) ; - sprintf(full_header_name, "%s/%s", + snprintf(full_header_name, len, "%s/%s", pathToBinaryData_, dp->d_name); if (!strncmp(dp->d_name, "log_", 4) && is04BinaryHeader_(full_header_name)) { diff --git a/trick_source/data_products/Log/parseLogHeader.cpp b/trick_source/data_products/Log/parseLogHeader.cpp index 05056781..55f0db18 100644 --- a/trick_source/data_products/Log/parseLogHeader.cpp +++ b/trick_source/data_products/Log/parseLogHeader.cpp @@ -56,7 +56,7 @@ int LogGroup::parseLogHeaders() headerName = new char[len]; // Full path of log header - sprintf(headerName, "%s/%s", pathToBinaryData_, headers_[i]); + snprintf(headerName, len, "%s/%s", pathToBinaryData_, headers_[i]); // Open log header if ((fp_ = fopen(headerName, "r")) == NULL) { diff --git a/trick_source/sim_services/CheckPointAgent/ClassicCheckPointerAgent.cpp b/trick_source/sim_services/CheckPointAgent/ClassicCheckPointerAgent.cpp index 466fb4d4..675a28e1 100644 --- a/trick_source/sim_services/CheckPointAgent/ClassicCheckPointerAgent.cpp +++ b/trick_source/sim_services/CheckPointAgent/ClassicCheckPointerAgent.cpp @@ -228,12 +228,11 @@ static int getCompositeSubReference( char* reference_name /* destination buffer of composite subreference */ ) { - int j, k, m; + int j, m; long offset; int my_index[9]; int ret; int size, last_size; - int temp_size; char* rAddr = (char*)reference_address; char* sAddr = (char*)structure_address; @@ -263,7 +262,7 @@ static int getCompositeSubReference( if (referenceOffset == 0) { reference_name[0] = '\0' ; } else if (referenceOffset > 0) { - sprintf(reference_name, " + %ld" , referenceOffset); + snprintf(reference_name, (size_t)256, " + %ld" , referenceOffset); } else { return 1; // ERROR } @@ -273,7 +272,7 @@ static int getCompositeSubReference( /******************************************************************************/ /* We found a member corresponding to the reference address, so print it's name. */ - sprintf(reference_name, ".%s", Ai->name); + snprintf(reference_name, (size_t)256, ".%s", Ai->name); /* If the referenced member variable is an intrinsic type */ if (Ai->type != TRICK_STRUCTURED) { @@ -310,7 +309,9 @@ static int getCompositeSubReference( } for (j = 0; j < num_fixed_dims; j++) { - sprintf(&reference_name[strlen(reference_name)], "[%d]", my_index[j]); + size_t len = strlen(reference_name); + size_t rem = (size_t)256 - len; + snprintf(&reference_name[len], rem, "[%d]", my_index[j]); } return 0; } @@ -325,7 +326,9 @@ static int getCompositeSubReference( ret = getCompositeSubReference( rAddr, left_type, sAddr + Ai->offset, (ATTRIBUTES *) Ai->attr, buf); if (ret == 0) { - sprintf(&reference_name[strlen(reference_name)],"%s", buf); + size_t len = strlen(reference_name); + size_t rem = (size_t)256 - len; + snprintf(&reference_name[len], rem, "%s", buf); } else { return 1; // ERROR. } @@ -354,7 +357,9 @@ static int getCompositeSubReference( for (j = 0; j < Ai->num_index; j++) { - sprintf(&reference_name[strlen(reference_name)], "[%d]", my_index[j]); + size_t len = strlen(reference_name); + size_t rem = (size_t)256 - len; + snprintf(&reference_name[len], rem, "[%d]", my_index[j]); } /* if left_type specifies the current member, stop here */ @@ -379,7 +384,9 @@ static int getCompositeSubReference( ret = getCompositeSubReference( rAddr, left_type, sAddr + Ai->offset + offset, (ATTRIBUTES *) Ai->attr, buf); if (ret == 0) { - sprintf(&reference_name[strlen(reference_name)], "%s", buf); + size_t len = strlen(reference_name); + size_t rem = (size_t)256 - len; + snprintf(&reference_name[len], rem, "%s", buf); } else { return 1; // ERROR } diff --git a/trick_source/sim_services/CheckPointAgent/input_parser.y b/trick_source/sim_services/CheckPointAgent/input_parser.y index 476cb28e..ad6de413 100644 --- a/trick_source/sim_services/CheckPointAgent/input_parser.y +++ b/trick_source/sim_services/CheckPointAgent/input_parser.y @@ -348,8 +348,9 @@ units_string: NAME { $$ = $1; } | NAME '.' NAME '.' { - $$ = (char*)malloc( strlen($1) + strlen($3) + 3 ); - sprintf($$, "%s.%s.", $1,$3); + size_t m_size = strlen($1) + strlen($3) + 3; + $$ = (char*)malloc(m_size); + snprintf($$, m_size, "%s.%s.", $1,$3); free($1); free($3); } @@ -358,23 +359,24 @@ units_string: NAME { } | I_CON { if ($1 == 1) { - $$ = (char*)malloc(2); - sprintf($$, "1"); + size_t m_size = 2; + $$ = (char*)malloc(m_size); + snprintf($$, m_size, "1"); } else { return (MM_INVALID_UNITS); } } | units_string '*' NAME { - int len = strlen($1) + strlen($3); - $$ = (char*)malloc((size_t)len+2) ; - sprintf($$, "%s*%s",$1,$3); + size_t m_size = strlen($1) + strlen($3) + 2; + $$ = (char*)malloc(m_size) ; + snprintf($$, m_size, "%s*%s",$1,$3); free($1); free($3); } | units_string '/' NAME { - int len = strlen($1) + strlen($3); - $$ = (char*)malloc((size_t)len+2) ; - sprintf($$, "%s/%s",$1,$3); + size_t m_size = strlen($1) + strlen($3) + 2; + $$ = (char*)malloc(m_size) ; + snprintf($$, m_size, "%s/%s",$1,$3); free($1); free($3); } @@ -432,7 +434,7 @@ param: NAME { $$.ref_type = REF_INVALID; } } - sprintf(temp , "%s[%d]" , $$.reference, vval_int(&$3)) ; + snprintf(temp , sizeof(temp), "%s[%d]" , $$.reference, vval_int(&$3)) ; $$.reference = (char*)realloc( $$.reference , strlen(temp) + 1); strcpy($$.reference , temp) ; @@ -469,9 +471,9 @@ param: NAME { $$.num_index_left = $$.attr->num_index; if ($2 == 1) { - sprintf(temp , "%s->%s" , $$.reference, $3) ; + snprintf(temp ,sizeof(temp), "%s->%s" , $$.reference, $3) ; } else { - sprintf(temp , "%s.%s" , $$.reference, $3) ; + snprintf(temp ,sizeof(temp), "%s.%s" , $$.reference, $3) ; } } else { diff --git a/trick_source/sim_services/CommandLineArguments/CommandLineArguments.cpp b/trick_source/sim_services/CommandLineArguments/CommandLineArguments.cpp index 8926d030..5a431fa8 100644 --- a/trick_source/sim_services/CommandLineArguments/CommandLineArguments.cpp +++ b/trick_source/sim_services/CommandLineArguments/CommandLineArguments.cpp @@ -119,11 +119,10 @@ int Trick::CommandLineArguments::process_sim_args(int nargs , char **args) { char *buf, *buf2; size_t found ; - int ii ; argc = nargs ; argv = (char **)TMM_declare_var_1d("char *", argc) ; - for ( ii = 0 ; ii < argc ; ii++ ) { + for (int ii = 0 ; ii < argc ; ii++ ) { argv[ii] = TMM_strdup(args[ii]) ; } @@ -195,7 +194,7 @@ int Trick::CommandLineArguments::process_sim_args(int nargs , char **args) { output_dir = run_dir ; - for (ii = 1; ii < argc; ii++) { + for (int ii = 1; ii < argc; ii++) { if (!strncmp("-OO", argv[ii], (size_t) 3) || !strncmp("-O", argv[ii], (size_t) 2)) { if (ii == ( argc - 1 )) { std::cerr << "\nERROR: No directory specified after -O or -OO argument" << std::endl ; @@ -245,7 +244,7 @@ int Trick::CommandLineArguments::output_dir_timestamped_on() { date = time(NULL) ; curr_time = localtime(&date) ; - sprintf(temp_str, "DATA_%4d_%02d_%02d_%02d_%02d_%02d", + snprintf(temp_str, sizeof(temp_str), "DATA_%4d_%02d_%02d_%02d_%02d_%02d", curr_time->tm_year + 1900 , curr_time->tm_mon + 1 , curr_time->tm_mday, curr_time->tm_hour , curr_time->tm_min , curr_time->tm_sec ); diff --git a/trick_source/sim_services/DataRecord/DRAscii.cpp b/trick_source/sim_services/DataRecord/DRAscii.cpp index 6635c6f6..1d6f80ce 100644 --- a/trick_source/sim_services/DataRecord/DRAscii.cpp +++ b/trick_source/sim_services/DataRecord/DRAscii.cpp @@ -56,7 +56,8 @@ int Trick::DRAscii::format_specific_init() { } /* Calculate a "worst case" for space used for 1 record. */ - writer_buff = (char *)calloc(1 , record_size * rec_buffer.size()) ; + writer_buff_size = record_size * rec_buffer.size(); + writer_buff = (char *)calloc(1 , writer_buff_size) ; /* This loop touches all of the memory locations in the allocation forcing the system to actually do the allocation */ @@ -182,28 +183,30 @@ int Trick::DRAscii::copy_data_ascii_item( Trick::DataRecordBuffer * DI, int item address = DI->buffer + (item_num * DI->ref->attr->size) ; + size_t writer_buf_spare = writer_buff + writer_buff_size - buf; + switch (DI->ref->attr->type) { case TRICK_CHARACTER: - sprintf(buf, "%c", *((char *) address)); + snprintf(buf, writer_buf_spare, "%c", *((char *) address)); break; case TRICK_UNSIGNED_CHARACTER: #if ( __linux | __sgi ) case TRICK_BOOLEAN: #endif - sprintf(buf, "%u", *((unsigned char *) address)); + snprintf(buf, writer_buf_spare, "%u", *((unsigned char *) address)); break; case TRICK_STRING: - sprintf(buf, "%s", *((char **) address)); + snprintf(buf, writer_buf_spare, "%s", *((char **) address)); break; case TRICK_SHORT: - sprintf(buf, "%d", *((short *) address)); + snprintf(buf, writer_buf_spare, "%d", *((short *) address)); break; case TRICK_UNSIGNED_SHORT: - sprintf(buf, "%u", *((unsigned short *) address)); + snprintf(buf, writer_buf_spare, "%u", *((unsigned short *) address)); break; case TRICK_ENUMERATED: @@ -211,45 +214,45 @@ int Trick::DRAscii::copy_data_ascii_item( Trick::DataRecordBuffer * DI, int item #if ( __sun | __APPLE__ ) case TRICK_BOOLEAN: #endif - sprintf(buf, "%d", *((int *) address)); + snprintf(buf, writer_buf_spare, "%d", *((int *) address)); break; case TRICK_UNSIGNED_INTEGER: - sprintf(buf, "%u", *((unsigned int *) address)); + snprintf(buf, writer_buf_spare, "%u", *((unsigned int *) address)); break; case TRICK_LONG: - sprintf(buf, "%ld", *((long *) address)); + snprintf(buf, writer_buf_spare, "%ld", *((long *) address)); break; case TRICK_UNSIGNED_LONG: - sprintf(buf, "%lu", *((unsigned long *) address)); + snprintf(buf, writer_buf_spare, "%lu", *((unsigned long *) address)); break; case TRICK_FLOAT: - sprintf(buf, ascii_float_format.c_str() , *((float *) address)); + snprintf(buf, writer_buf_spare, ascii_float_format.c_str() , *((float *) address)); break; case TRICK_DOUBLE: - sprintf(buf, ascii_double_format.c_str() , *((double *) address)); + snprintf(buf, writer_buf_spare, ascii_double_format.c_str() , *((double *) address)); break; case TRICK_BITFIELD: sbf = GET_BITFIELD(address, DI->ref->attr->size, DI->ref->attr->index[0].start, DI->ref->attr->index[0].size); - sprintf(buf, "%d", sbf); + snprintf(buf, writer_buf_spare, "%d", sbf); break; case TRICK_UNSIGNED_BITFIELD: bf = GET_UNSIGNED_BITFIELD(address, DI->ref->attr->size, DI->ref->attr->index[0].start, DI->ref->attr->index[0].size); - sprintf(buf, "%lu", bf); + snprintf(buf, writer_buf_spare, "%lu", bf); break; case TRICK_LONG_LONG: - sprintf(buf, "%lld", *((long long *) address)); + snprintf(buf, writer_buf_spare, "%lld", *((long long *) address)); break; case TRICK_UNSIGNED_LONG_LONG: - sprintf(buf, "%llu", *((unsigned long long *) address)); + snprintf(buf, writer_buf_spare, "%llu", *((unsigned long long *) address)); break; default: break; diff --git a/trick_source/sim_services/DataRecord/DataRecordGroup.cpp b/trick_source/sim_services/DataRecord/DataRecordGroup.cpp index 8ccabf6b..7429d24a 100644 --- a/trick_source/sim_services/DataRecord/DataRecordGroup.cpp +++ b/trick_source/sim_services/DataRecord/DataRecordGroup.cpp @@ -449,28 +449,28 @@ int Trick::DataRecordGroup::checkpoint() { void Trick::DataRecordGroup::clear_checkpoint_vars() { if ( variable_names ) { - for(int jj = 0; jj < num_variable_names; jj++) { + for(unsigned int jj = 0; jj < num_variable_names; jj++) { TMM_delete_var_a(variable_names[jj]); } TMM_delete_var_a(variable_names) ; } if ( variable_alias ) { - for(int jj = 0; jj < num_variable_names; jj++) { + for(unsigned int jj = 0; jj < num_variable_names; jj++) { TMM_delete_var_a(variable_alias[jj]); } TMM_delete_var_a(variable_alias) ; } if ( change_variable_names ) { - for(int jj = 0; jj < num_change_variable_names; jj++) { + for(unsigned int jj = 0; jj < num_change_variable_names; jj++) { TMM_delete_var_a(change_variable_names[jj]); } TMM_delete_var_a(change_variable_names) ; } if ( change_variable_alias ) { - for(int jj = 0; jj < num_change_variable_names; jj++) { + for(unsigned int jj = 0; jj < num_change_variable_names; jj++) { TMM_delete_var_a(change_variable_alias[jj]); } TMM_delete_var_a(change_variable_alias) ; diff --git a/trick_source/sim_services/Executive/Executive_fpe_handler.cpp b/trick_source/sim_services/Executive/Executive_fpe_handler.cpp index 3d3a0948..127693bb 100644 --- a/trick_source/sim_services/Executive/Executive_fpe_handler.cpp +++ b/trick_source/sim_services/Executive/Executive_fpe_handler.cpp @@ -71,15 +71,15 @@ void Trick::Executive::fpe_handler(siginfo_t * sip __attribute__((unused)) ) { /* Attempt to attach with debugger or print stack trace. Not a requirement. - sprintf and system are not async signal safe, but we don't have anything to lose. + snprintf and system are not async signal safe, but we don't have anything to lose. */ #if __linux char command[1024]; if (attach_debugger == true) { - sprintf(command, "%s -silent /proc/%d/exe %d", debugger_command.c_str(), getpid(), getpid()); + snprintf(command, sizeof(command), "%s -silent /proc/%d/exe %d", debugger_command.c_str(), getpid(), getpid()); system(command); } else if (stack_trace == true ) { - sprintf(command, "%s -silent -batch -x ${TRICK_HOME}/bin/gdb_commands " + snprintf(command, sizeof(command), "%s -silent -batch -x ${TRICK_HOME}/bin/gdb_commands " "/proc/%d/exe %d | grep -A 20 \"signal handler\"", debugger_command.c_str(), getpid(), getpid()); system(command); } @@ -90,11 +90,11 @@ void Trick::Executive::fpe_handler(siginfo_t * sip __attribute__((unused)) ) { if (_NSGetExecutablePath(path, &size) == 0 ) { if (attach_debugger == true) { write( 2 , "Attempting to attach debugger... standby.\n" , 41 ) ; - sprintf(command, "%s -silent %s %d", debugger_command.c_str(), path, getpid()); + snprintf(command, sizeof(command), "%s -silent %s %d", debugger_command.c_str(), path, getpid()); system(command); } else if (stack_trace == true ) { write( 2 , "Attempting to generate stack trace... standby.\n" , 47 ) ; - sprintf(command, "%s -batch -x ${TRICK_HOME}/bin/gdb_commands " + snprintf(command, sizeof(command), "%s -batch -x ${TRICK_HOME}/bin/gdb_commands " "%s %d", debugger_command.c_str(), path, getpid()); system(command); } diff --git a/trick_source/sim_services/Executive/Executive_process_sim_args.cpp b/trick_source/sim_services/Executive/Executive_process_sim_args.cpp index 342a4191..10c61d00 100644 --- a/trick_source/sim_services/Executive/Executive_process_sim_args.cpp +++ b/trick_source/sim_services/Executive/Executive_process_sim_args.cpp @@ -37,7 +37,7 @@ int Trick::Executive::process_sim_args() { argv = command_line_args_get_argv() ; /* Save off a usage statement for messages */ - sprintf(buf, "%s", "\n\n" + snprintf(buf, sizeof(buf), "%s", "\n\n" "USAGE: S_main_.exe [option...]\n\n" " RUN_/\n" " Every Trick simulation needs an input file.\n" diff --git a/trick_source/sim_services/Executive/Executive_signal_handler.cpp b/trick_source/sim_services/Executive/Executive_signal_handler.cpp index fb0502f6..8d5cb67f 100644 --- a/trick_source/sim_services/Executive/Executive_signal_handler.cpp +++ b/trick_source/sim_services/Executive/Executive_signal_handler.cpp @@ -62,10 +62,10 @@ void Trick::Executive::signal_handler(int sig) { #if __linux char command[1024]; if (attach_debugger == true) { - sprintf(command, "%s -silent /proc/%d/exe %d", debugger_command.c_str(), getpid(), getpid()); + snprintf(command, sizeof(command), "%s -silent /proc/%d/exe %d", debugger_command.c_str(), getpid(), getpid()); system(command); } else if (stack_trace == true ) { - sprintf(command, "%s -silent -batch -x ${TRICK_HOME}/share/trick/gdb_commands " + snprintf(command, sizeof(command), "%s -silent -batch -x ${TRICK_HOME}/share/trick/gdb_commands " "/proc/%d/exe %d", debugger_command.c_str(), getpid(), getpid()); system(command); } diff --git a/trick_source/sim_services/Executive/Executive_write_s_job_execution.cpp b/trick_source/sim_services/Executive/Executive_write_s_job_execution.cpp index 79bcc9ee..3e085229 100644 --- a/trick_source/sim_services/Executive/Executive_write_s_job_execution.cpp +++ b/trick_source/sim_services/Executive/Executive_write_s_job_execution.cpp @@ -37,7 +37,7 @@ int Trick::Executive::write_s_job_execution(FILE *fp) { /* Get full path to S_job_execution */ output_dir = command_line_args_get_output_dir() ; - sprintf(buf, "%s/S_job_execution", output_dir.c_str()); + snprintf(buf, sizeof(buf), "%s/S_job_execution", output_dir.c_str()); /* Create the output directory if it does not exist */ if (access(output_dir.c_str(), F_OK) != 0) { diff --git a/trick_source/sim_services/Executive/Executive_write_s_run_summary.cpp b/trick_source/sim_services/Executive/Executive_write_s_run_summary.cpp index 3530057c..e5a9bb99 100644 --- a/trick_source/sim_services/Executive/Executive_write_s_run_summary.cpp +++ b/trick_source/sim_services/Executive/Executive_write_s_run_summary.cpp @@ -31,7 +31,7 @@ int Trick::Executive::write_s_run_summary(FILE *fp) { /* Get full path to S_run_summary */ output_dir = command_line_args_get_output_dir() ; - sprintf(buf, "%s/S_run_summary", output_dir.c_str()); + snprintf(buf, sizeof(buf), "%s/S_run_summary", output_dir.c_str()); /* Open the S_run_summary file. If it fails, it's not a fatal error, return 0. */ if ((fp = fopen(buf, "w")) == NULL) { diff --git a/trick_source/sim_services/FrameLog/FrameLog.cpp b/trick_source/sim_services/FrameLog/FrameLog.cpp index 95faa7b9..b380f11b 100644 --- a/trick_source/sim_services/FrameLog/FrameLog.cpp +++ b/trick_source/sim_services/FrameLog/FrameLog.cpp @@ -578,7 +578,7 @@ int Trick::FrameLog::shutdown() { /** @li Manually create the log_timeline and log_timeline_init files from saved timeline data. */ if (fp_time_main == NULL) { - sprintf(log_buff, "%s/log_timeline.csv", command_line_args_get_output_dir()); + snprintf(log_buff, sizeof(log_buff), "%s/log_timeline.csv", command_line_args_get_output_dir()); if ((fp_time_main = fopen(log_buff, "w")) == NULL) { message_publish(MSG_ERROR, "Could not open log_timeline.csv file for Job Timeline Logging\n") ; exit(0); @@ -590,7 +590,7 @@ int Trick::FrameLog::shutdown() { } fprintf(fp_time_main, "\n"); - sprintf(log_buff, "%s/log_timeline_init.csv", command_line_args_get_output_dir()); + snprintf(log_buff, sizeof(log_buff), "%s/log_timeline_init.csv", command_line_args_get_output_dir()); if ((fp_time_other = fopen(log_buff, "w")) == NULL) { message_publish(MSG_ERROR, "Could not open log_timeline_init.csv file for Job Timeline Logging\n") ; exit(0); @@ -737,7 +737,7 @@ int Trick::FrameLog::create_DP_job_files() { std::vector::iterator job_iterator; FILE *fpx; - int pages, plots, total_plots, vcells, dot; + unsigned int pages, plots, total_plots, vcells, dot; char *bg_color; double time_scale; std::string DP_buff; @@ -830,7 +830,7 @@ int Trick::FrameLog::create_DP_job_files() { if ( ii == 0 ) { DP_buff = DP_dir + "/DP_rt_userjobs.xml"; } else { - sprintf(numstr, "%d", ii); + snprintf(numstr, sizeof(numstr), "%d", ii); DP_buff = DP_dir + "/DP_rt_userjobs_C" + numstr + ".xml"; } diff --git a/trick_source/sim_services/InputProcessor/MTV.cpp b/trick_source/sim_services/InputProcessor/MTV.cpp index e2767c64..414b0f32 100644 --- a/trick_source/sim_services/InputProcessor/MTV.cpp +++ b/trick_source/sim_services/InputProcessor/MTV.cpp @@ -100,28 +100,28 @@ int Trick::MTV::send_event_data() { int jj; for (ii=0; ii < mtv_count; ii++) { - sprintf(varname, "%s[%u][0].name", mtv_name,ii); + snprintf(varname, sizeof(varname), "%s[%u][0].name", mtv_name,ii); var_add(varname); - sprintf(varname, "%s[%u][0].active", mtv_name,ii); + snprintf(varname, sizeof(varname), "%s[%u][0].active", mtv_name,ii); var_add(varname); - sprintf(varname, "%s[%u][0].added", mtv_name,ii); + snprintf(varname, sizeof(varname), "%s[%u][0].added", mtv_name,ii); var_add(varname); - sprintf(varname, "%s[%u][0].condition_count", mtv_name,ii); + snprintf(varname, sizeof(varname), "%s[%u][0].condition_count", mtv_name,ii); var_add(varname); - sprintf(varname, "%s[%u][0].action_count", mtv_name,ii); + snprintf(varname, sizeof(varname), "%s[%u][0].action_count", mtv_name,ii); var_add(varname); - sprintf(varname, "%s[%u][0].before_after", mtv_name,ii); + snprintf(varname, sizeof(varname), "%s[%u][0].before_after", mtv_name,ii); var_add(varname); for (jj=0; jj< mtv_list[ii]->condition_count; jj++) { - sprintf(varname, "%s[%u][0].cond[%d].comment", mtv_name,ii,jj); + snprintf(varname, sizeof(varname), "%s[%u][0].cond[%d].comment", mtv_name,ii,jj); var_add(varname); } for (jj=0; jj< mtv_list[ii]->action_count; jj++) { - sprintf(varname, "%s[%u][0].act[%d].comment", mtv_name,ii,jj); + snprintf(varname, sizeof(varname), "%s[%u][0].act[%d].comment", mtv_name,ii,jj); var_add(varname); } if (mtv_list[ii]->get_before_after() > 0) { - sprintf(varname, "%s[%u][0].target_name", mtv_name,ii); + snprintf(varname, sizeof(varname), "%s[%u][0].target_name", mtv_name,ii); var_add(varname); } } diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_get_stl_dependencies.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_get_stl_dependencies.cpp index dbd3afe2..8f111bcb 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_get_stl_dependencies.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_get_stl_dependencies.cpp @@ -130,7 +130,7 @@ void Trick::MemoryManager::get_stl_dependencies_in_arrayed_class( curr_dim_size = attr->index[curr_dim].size; for (ii = 0; ii < curr_dim_size; ii++) { char index[16] ; - sprintf(index, "[%d]", ii) ; + snprintf(index, sizeof(index), "[%d]", ii) ; if (curr_dim < attr->num_index - 1) { get_stl_dependencies_in_arrayed_class( name + index, address, attr, curr_dim + 1, offset * curr_dim_size + ii); } else { @@ -183,7 +183,7 @@ void Trick::MemoryManager::get_stl_dependencies_in_intrinsic( std::string name , int ii; for (ii=0 ; ii< attr->index[curr_dim].size ; ii++) { char index[16] ; - sprintf(index, "[%d]", ii) ; + snprintf(index, sizeof(index), "[%d]", ii) ; //get_stl_dependencies_in_intrinsic( name + index , address, attr, curr_dim + 1, offset * attr->index[curr_dim].size + ii); } } diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_restore_stls.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_restore_stls.cpp index fe849792..49d0c801 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_restore_stls.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_restore_stls.cpp @@ -135,7 +135,7 @@ void Trick::MemoryManager::restore_stls_in_arrayed_class( curr_dim_size = attr->index[curr_dim].size; for (ii = 0; ii < curr_dim_size; ii++) { char index[16] ; - sprintf(index, "[%d]", ii) ; + snprintf(index, sizeof(index), "[%d]", ii) ; if (curr_dim < attr->num_index - 1) { restore_stls_in_arrayed_class( name + index, address, attr, curr_dim + 1, offset * curr_dim_size + ii); } else { @@ -188,7 +188,7 @@ void Trick::MemoryManager::restore_stls_in_intrinsic( std::string name , void* a int ii; for (ii=0 ; ii< attr->index[curr_dim].size ; ii++) { char index[16] ; - sprintf(index, "[%d]", ii) ; + snprintf(index, sizeof(index), "[%d]", ii) ; //restore_stls_in_intrinsic( name + index , address, attr, curr_dim + 1, offset * attr->index[curr_dim].size + ii); } } diff --git a/trick_source/sim_services/MemoryManager/MemoryManager_write_checkpoint.cpp b/trick_source/sim_services/MemoryManager/MemoryManager_write_checkpoint.cpp index 141ba0ba..dc2145ba 100644 --- a/trick_source/sim_services/MemoryManager/MemoryManager_write_checkpoint.cpp +++ b/trick_source/sim_services/MemoryManager/MemoryManager_write_checkpoint.cpp @@ -35,10 +35,10 @@ void Trick::MemoryManager::execute_checkpoint( std::ostream& out_s ) { /** Generate temporary names for anonymous variables. */ if (alloc_info->name == NULL) { if ( alloc_info->stcl == TRICK_LOCAL) { - sprintf( name, "%s%d", local_anon_var_prefix, local_anon_var_number++); + snprintf( name, sizeof(name), "%s%d", local_anon_var_prefix, local_anon_var_number++); alloc_info->name = strdup( name); } else if (alloc_info->stcl == TRICK_EXTERN) { - sprintf( name, "%s%d", extern_anon_var_prefix, extern_anon_var_number++); + snprintf( name, sizeof(name), "%s%d", extern_anon_var_prefix, extern_anon_var_number++); alloc_info->name = strdup( name); /** @b NOTE: We should not write declarations for external anonymous variables, because we should not reload them.*/ diff --git a/trick_source/sim_services/MemoryManager/ref_parser.y b/trick_source/sim_services/MemoryManager/ref_parser.y index c43c4d03..e7b9485a 100644 --- a/trick_source/sim_services/MemoryManager/ref_parser.y +++ b/trick_source/sim_services/MemoryManager/ref_parser.y @@ -170,7 +170,7 @@ param: NAME { /* create a new reference string because previous nodes may refer to old strings */ $$.num_index_left = $$.attr->num_index; - sprintf(temp , "%s.%s" , $$.reference, $3) ; + snprintf(temp, sizeof(temp), "%s.%s" , $$.reference, $3) ; $$.reference = (char*)realloc($$.reference, strlen(temp) + 1) ; strcpy($$.reference , temp) ; diff --git a/trick_source/sim_services/MemoryManager/wcs_ext.c b/trick_source/sim_services/MemoryManager/wcs_ext.c index 0b06a81f..9ec362e0 100644 --- a/trick_source/sim_services/MemoryManager/wcs_ext.c +++ b/trick_source/sim_services/MemoryManager/wcs_ext.c @@ -49,13 +49,13 @@ size_t wcs_to_ncs(const wchar_t * wcs, char *ncs, size_t ncs_max_len) it. Note that the external representation will also be printable in the current locale. */ if (wcint == '\'') { - sprintf(work_s, "\\\'"); + snprintf(work_s, sizeof(work_s), "\\\'"); } else if (wcint == '\"') { - sprintf(work_s, "\\\""); + snprintf(work_s, sizeof(work_s), "\\\""); } else if (wcint == '\?') { - sprintf(work_s, "\\\?"); + snprintf(work_s, sizeof(work_s), "\\\?"); } else if (wcint == '\\') { - sprintf(work_s, "\\\\"); + snprintf(work_s, sizeof(work_s), "\\\\"); } else { len = wcrtomb(work_s, (wchar_t) wcint, NULL); work_s[len] = '\0'; @@ -66,26 +66,26 @@ size_t wcs_to_ncs(const wchar_t * wcs, char *ncs, size_t ncs_max_len) representation of this non-printable character. */ if (wcint <= 0xFF) { if (wcint == '\a') { - sprintf(work_s, "\\a"); + snprintf(work_s, sizeof(work_s), "\\a"); } else if (wcint == '\b') { - sprintf(work_s, "\\b"); + snprintf(work_s, sizeof(work_s), "\\b"); } else if (wcint == '\f') { - sprintf(work_s, "\\f"); + snprintf(work_s, sizeof(work_s), "\\f"); } else if (wcint == '\n') { - sprintf(work_s, "\\n"); + snprintf(work_s, sizeof(work_s), "\\n"); } else if (wcint == '\r') { - sprintf(work_s, "\\n"); + snprintf(work_s, sizeof(work_s), "\\n"); } else if (wcint == '\t') { - sprintf(work_s, "\\t"); + snprintf(work_s, sizeof(work_s), "\\t"); } else if (wcint == '\v') { - sprintf(work_s, "\\v"); + snprintf(work_s, sizeof(work_s), "\\v"); } else { - sprintf(work_s, "\\x%02x", wcint); + snprintf(work_s, sizeof(work_s), "\\x%02x", wcint); } } else if (wcint <= 0xFFFF) { - sprintf(work_s, "\\u%04X", wcint); + snprintf(work_s, sizeof(work_s), "\\u%04X", wcint); } else { - sprintf(work_s, "\\U%08X", wcint); + snprintf(work_s, sizeof(work_s), "\\U%08X", wcint); } } diff --git a/trick_source/sim_services/Message/MessagePublisher.cpp b/trick_source/sim_services/Message/MessagePublisher.cpp index 3e108084..3a108f95 100644 --- a/trick_source/sim_services/Message/MessagePublisher.cpp +++ b/trick_source/sim_services/Message/MessagePublisher.cpp @@ -27,7 +27,7 @@ Trick::MessagePublisher::MessagePublisher() { void Trick::MessagePublisher::set_print_format() { num_digits = (int)round(log10((double)tics_per_sec)) ; - sprintf(print_format, "|L %%3d|%%s|%%s|%%s|T %%d|%%lld.%%0%dlld| ", num_digits) ; + snprintf(print_format, sizeof(print_format), "|L %%3d|%%s|%%s|%%s|T %%d|%%lld.%%0%dlld| ", num_digits) ; } int Trick::MessagePublisher::init() { @@ -52,7 +52,7 @@ int Trick::MessagePublisher::publish(int level , std::string message) { date = time(NULL) ; strftime(date_buf, (size_t) 20, "%Y/%m/%d,%H:%M:%S", localtime(&date)); (void) gethostname(hostname, (size_t) 48); - sprintf(header_buf , print_format , level, date_buf, hostname, + snprintf(header_buf, sizeof(header_buf), print_format , level, date_buf, hostname, sim_name.c_str(), exec_get_process_id(), tics/tics_per_sec , (long long)((double)(tics % tics_per_sec) * (double)(pow(10 , num_digits)/tics_per_sec)) ) ; header = header_buf ; diff --git a/trick_source/sim_services/MonteCarlo/MonteVarCalculated.cpp b/trick_source/sim_services/MonteCarlo/MonteVarCalculated.cpp index ee067d4e..34be915d 100644 --- a/trick_source/sim_services/MonteCarlo/MonteVarCalculated.cpp +++ b/trick_source/sim_services/MonteCarlo/MonteVarCalculated.cpp @@ -34,36 +34,36 @@ std::string Trick::MonteVarCalculated::get_next_value() { switch (ref2->attr->type) { case TRICK_CHARACTER: case TRICK_UNSIGNED_CHARACTER: - sprintf(buffer, "%d", *(char *)ref2->address); + snprintf(buffer, sizeof(buffer), "%d", *(char *)ref2->address); value = buffer; break; case TRICK_SHORT: case TRICK_UNSIGNED_SHORT: - sprintf(buffer, "%d", *(short *)ref2->address); + snprintf(buffer, sizeof(buffer), "%d", *(short *)ref2->address); value = buffer; break; case TRICK_INTEGER: case TRICK_UNSIGNED_INTEGER: case TRICK_LONG: case TRICK_UNSIGNED_LONG: - sprintf(buffer, "%ld", *(long *)ref2->address); + snprintf(buffer, sizeof(buffer), "%ld", *(long *)ref2->address); value = buffer; break; case TRICK_LONG_LONG: case TRICK_UNSIGNED_LONG_LONG: - sprintf(buffer, "%lld", *(long long *)ref2->address); + snprintf(buffer, sizeof(buffer), "%lld", *(long long *)ref2->address); value = buffer; break; case TRICK_FLOAT: - sprintf(buffer, "%.15g", *(float *)ref2->address); + snprintf(buffer, sizeof(buffer), "%.15g", *(float *)ref2->address); value = buffer; break; case TRICK_DOUBLE: - sprintf(buffer, "%.15g", *(double *)ref2->address); + snprintf(buffer, sizeof(buffer), "%.15g", *(double *)ref2->address); value = buffer; break; default: - sprintf(buffer, "#Unsupported value type %d", ref2->attr->type) ; + snprintf(buffer, sizeof(buffer), "#Unsupported value type %d", ref2->attr->type) ; break ; } diff --git a/trick_source/sim_services/MonteCarlo/MonteVarFile.cpp b/trick_source/sim_services/MonteCarlo/MonteVarFile.cpp index 0ec9ed86..ee0e1c79 100644 --- a/trick_source/sim_services/MonteCarlo/MonteVarFile.cpp +++ b/trick_source/sim_services/MonteCarlo/MonteVarFile.cpp @@ -72,7 +72,7 @@ std::string Trick::MonteVarFile::get_next_value() { // Verify the input column number is valid. if ((column == 0) || (column > ntokens)) { char string[100]; - sprintf(string, "Trick:MonteVarFile An invalid column number %u, valid column numbers are 1 - %u", column, ntokens); + snprintf(string, sizeof(string), "Trick:MonteVarFile An invalid column number %u, valid column numbers are 1 - %u", column, ntokens); exec_terminate_with_return(-1, __FILE__, __LINE__, string); } @@ -105,7 +105,7 @@ std::string Trick::MonteVarFile::get_next_value() { } char string[100]; - sprintf(string, "Trick:MonteVarFile the input file \"%s\" is not open for reading", file_name.c_str()); + snprintf(string, sizeof(string), "Trick:MonteVarFile the input file \"%s\" is not open for reading", file_name.c_str()); exec_terminate_with_return(-1, __FILE__, __LINE__, string); return NULL; diff --git a/trick_source/sim_services/MonteCarlo/MonteVarRandom.cpp b/trick_source/sim_services/MonteCarlo/MonteVarRandom.cpp index 861b350a..3c36f07a 100644 --- a/trick_source/sim_services/MonteCarlo/MonteVarRandom.cpp +++ b/trick_source/sim_services/MonteCarlo/MonteVarRandom.cpp @@ -178,14 +178,14 @@ std::string Trick::MonteVarRandom::get_next_value() { } if (count >= 100) { char string[100]; - sprintf(string, "Trick:MonteVarRandom failed to generate a random value for variable \"%s\"\n", name.c_str()); + snprintf(string, sizeof(string), "Trick:MonteVarRandom failed to generate a random value for variable \"%s\"\n", name.c_str()); exec_terminate_with_return(-1, __FILE__, __LINE__, string); } } else { if (trick_gsl_rand(&randist, &return_value) != 0) { char string[100]; - sprintf(string, "Trick:MonteVarRandom failed to generate a random value for variable \"%s\"\n", name.c_str()); + snprintf(string, sizeof(string), "Trick:MonteVarRandom failed to generate a random value for variable \"%s\"\n", name.c_str()); exec_terminate_with_return(-1, __FILE__, __LINE__, string); } } @@ -194,16 +194,16 @@ std::string Trick::MonteVarRandom::get_next_value() { case TRICK_GSL_POISSON: // STL returns int, GSL returns unsigned int if (stlGenPtr) { - sprintf(buffer, " %d", return_value.ii); + snprintf(buffer, sizeof(buffer), " %d", return_value.ii); } else { - sprintf(buffer, " %u", return_value.ui); + snprintf(buffer, sizeof(buffer), " %u", return_value.ui); } value = buffer; break; case TRICK_GSL_GAUSS: case TRICK_GSL_FLAT: default: - sprintf(buffer, "%.15g", return_value.d); + snprintf(buffer, sizeof(buffer), "%.15g", return_value.d); value = buffer; break; } diff --git a/trick_source/sim_services/RealtimeSync/RealtimeSync.cpp b/trick_source/sim_services/RealtimeSync/RealtimeSync.cpp index 55ee2279..2dfa1bef 100644 --- a/trick_source/sim_services/RealtimeSync/RealtimeSync.cpp +++ b/trick_source/sim_services/RealtimeSync/RealtimeSync.cpp @@ -332,7 +332,7 @@ int Trick::RealtimeSync::rt_monitor(long long sim_time_tics) { (double)(frame_overrun_time/tics_per_sec), rt_max_overrun_time); exec_freeze() ; } else { - sprintf(buf, "\nMaximum overrun condition exceeded:\n" + snprintf(buf, sizeof(buf), "\nMaximum overrun condition exceeded:\n" "consecutive overruns/allowed overruns: %d/%d\n" "total overrun time/allowed time: %f/%g\n", frame_overrun_cnt, rt_max_overrun_cnt, diff --git a/trick_source/sim_services/Timer/ITimer.cpp b/trick_source/sim_services/Timer/ITimer.cpp index 7adf091b..597f9d7d 100644 --- a/trick_source/sim_services/Timer/ITimer.cpp +++ b/trick_source/sim_services/Timer/ITimer.cpp @@ -119,7 +119,7 @@ int Trick::ITimer::start(double in_frame_time) { active = true ; } else { char error_message[256]; - sprintf(error_message, "itimer frame_time is not set\n" ) ; + snprintf(error_message, sizeof(error_message), "itimer frame_time is not set\n" ) ; exec_terminate_with_return(-1, __FILE__, __LINE__ , error_message); } } diff --git a/trick_source/sim_services/VariableServer/VariableServerListenThread.cpp b/trick_source/sim_services/VariableServer/VariableServerListenThread.cpp index 46d6bc07..00f6e868 100644 --- a/trick_source/sim_services/VariableServer/VariableServerListenThread.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerListenThread.cpp @@ -182,7 +182,7 @@ void * Trick::VariableServerListenThread::thread_body() { vst->wait_for_accept() ; pthread_mutex_unlock(&restart_pause) ; } else if ( broadcast ) { - sprintf(buf1 , "%s\t%hu\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%hu\n" , listen_dev.hostname , (unsigned short)listen_dev.port , + snprintf(buf1 , sizeof(buf1), "%s\t%hu\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%hu\n" , listen_dev.hostname , (unsigned short)listen_dev.port , user_name , (int)getpid() , command_line_args_get_default_dir() , command_line_args_get_cmdline_name() , command_line_args_get_input_file() , version.c_str() , user_tag.c_str(), (unsigned short)listen_dev.port ) ; diff --git a/trick_source/sim_services/VariableServer/VariableServerThread_commands.cpp b/trick_source/sim_services/VariableServer/VariableServerThread_commands.cpp index 87585492..8708e316 100644 --- a/trick_source/sim_services/VariableServer/VariableServerThread_commands.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerThread_commands.cpp @@ -236,7 +236,7 @@ int Trick::VariableServerThread::var_exists(std::string in_name) { tc_write(&connection, (char *) buf1, 5); } else { /* send ascii "1" or "0" */ - sprintf(buf1, "%d\t%d\n", VS_VAR_EXISTS, (error==false)); + snprintf(buf1, sizeof(buf1), "%d\t%d\n", VS_VAR_EXISTS, (error==false)); if (debug >= 2) { message_publish(MSG_DEBUG, "%p tag=<%s> var_server sending:\n%s\n", &connection, connection.client_tag, buf1) ; } @@ -430,7 +430,7 @@ int Trick::VariableServerThread::send_list_size() { tc_write(&connection, (char *) buf1, 12); } else { // ascii - sprintf(buf1, "%d\t%d\n", VS_LIST_SIZE, var_count); + snprintf(buf1, sizeof(buf1), "%d\t%d\n", VS_LIST_SIZE, var_count); if (debug >= 2) { message_publish(MSG_DEBUG, "%p tag=<%s> var_server sending number of event variables:\n%s\n", &connection, connection.client_tag, buf1) ; } @@ -455,7 +455,7 @@ int Trick::VariableServerThread::transmit_file(std::string sie_file) { if ((fp = fopen(sie_file.c_str() , "r")) == NULL ) { message_publish(MSG_ERROR,"Variable Server Error: Cannot open %s.\n", sie_file.c_str()) ; - sprintf(buffer, "%d\t-1\n", VS_SIE_RESOURCE) ; + snprintf(buffer, sizeof(buffer), "%d\t-1\n", VS_SIE_RESOURCE) ; tc_write(&connection , buffer , strlen(buffer)) ; return(-1) ; } @@ -463,7 +463,7 @@ int Trick::VariableServerThread::transmit_file(std::string sie_file) { fseek(fp , 0L, SEEK_END) ; file_size = ftell(fp) ; - sprintf(buffer, "%d\t%u\n" , VS_SIE_RESOURCE, file_size) ; + snprintf(buffer, sizeof(buffer), "%d\t%u\n" , VS_SIE_RESOURCE, file_size) ; tc_write(&connection , buffer , strlen(buffer)) ; rewind(fp) ; diff --git a/trick_source/sim_services/VariableServer/VariableServerThread_write_data.cpp b/trick_source/sim_services/VariableServer/VariableServerThread_write_data.cpp index 59a064ec..651e1462 100644 --- a/trick_source/sim_services/VariableServer/VariableServerThread_write_data.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerThread_write_data.cpp @@ -22,7 +22,6 @@ extern "C" { int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, const std::vector& given_vars, VS_MESSAGE_TYPE message_type) { - int vars = 0; int i; int ret ; int HeaderSize, MessageSize; @@ -178,13 +177,13 @@ int Trick::VariableServerThread::write_binary_data( int Start, char *buf1, const return i; } -int Trick::VariableServerThread::write_ascii_data(char * dest_buf, const std::vector& given_vars, VS_MESSAGE_TYPE message_type ) { +int Trick::VariableServerThread::write_ascii_data(char * dest_buf, size_t dest_buf_size, const std::vector& given_vars, VS_MESSAGE_TYPE message_type ) { - sprintf(dest_buf, "%d\t", message_type) ; + snprintf(dest_buf, dest_buf_size, "%d\t", message_type) ; - for (int i = 0; i < given_vars.size(); i++) { + for (unsigned long i = 0; i < given_vars.size(); i++) { char curr_buf[MAX_MSG_LEN]; - int ret = vs_format_ascii( given_vars[i] , curr_buf); + int ret = vs_format_ascii( given_vars[i] , curr_buf, sizeof(curr_buf)); if (ret < 0) { message_publish(MSG_WARNING, "%p Variable Server string buffer[%d] too small for symbol %s, TRUNCATED IT.\n", @@ -279,7 +278,7 @@ int Trick::VariableServerThread::write_data() { return 0; } else { /* ascii mode */ - return write_ascii_data(buf1, vars, VS_VAR_LIST ); + return write_ascii_data(buf1, sizeof(buf1), vars, VS_VAR_LIST ); } } } @@ -318,7 +317,7 @@ int Trick::VariableServerThread::write_data(std::vector giv return 0; } else { /* ascii mode */ - return write_ascii_data(buf1, given_vars, VS_SEND_ONCE); + return write_ascii_data(buf1, sizeof(buf1), given_vars, VS_SEND_ONCE); } } } diff --git a/trick_source/sim_services/VariableServer/VariableServerThread_write_stdio.cpp b/trick_source/sim_services/VariableServer/VariableServerThread_write_stdio.cpp index 462bd6a0..684f44d6 100644 --- a/trick_source/sim_services/VariableServer/VariableServerThread_write_stdio.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerThread_write_stdio.cpp @@ -6,7 +6,7 @@ int Trick::VariableServerThread::write_stdio(int stream, std::string text) { char header[16] ; - sprintf(header, "%-2d %1d %8d\n" , VS_STDIO, stream , (int)text.length()) ; + snprintf(header, sizeof(header), "%-2d %1d %8d\n" , VS_STDIO, stream , (int)text.length()) ; tc_write(&connection , (char *) header , strlen(header)) ; tc_write(&connection , (char *) text.c_str() , text.length()) ; return 0 ; diff --git a/trick_source/sim_services/VariableServer/vs_format_ascii.cpp b/trick_source/sim_services/VariableServer/vs_format_ascii.cpp index 8c4d7559..56855ac7 100644 --- a/trick_source/sim_services/VariableServer/vs_format_ascii.cpp +++ b/trick_source/sim_services/VariableServer/vs_format_ascii.cpp @@ -22,7 +22,7 @@ size_t escape_str(const char *in_s, char *out_s); #define MAX_VAL_STRLEN 2048 -int vs_format_ascii(Trick::VariableReference * var, char *value) { +int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_size) { /* for string types, return -1 if string is too big to fit in buffer (MAX_VAL_STRLEN) */ REF2 * ref ; @@ -41,7 +41,7 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { case TRICK_CHARACTER: if (ref->attr->num_index == ref->num_index) { - sprintf(value, "%s%d", value,(char)cv_convert_double(var->conversion_factor, *(char *)buf_ptr)); + snprintf(value, value_size, "%s%d", value,(char)cv_convert_double(var->conversion_factor, *(char *)buf_ptr)); } else { /* All but last dim specified, leaves a char array */ escape_str((char *) buf_ptr, value); @@ -50,7 +50,7 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { break; case TRICK_UNSIGNED_CHARACTER: if (ref->attr->num_index == ref->num_index) { - sprintf(value, "%s%u", value,(unsigned char)cv_convert_double(var->conversion_factor,*(unsigned char *)buf_ptr)); + snprintf(value, value_size, "%s%u", value,(unsigned char)cv_convert_double(var->conversion_factor,*(unsigned char *)buf_ptr)); } else { /* All but last dim specified, leaves a char array */ escape_str((char *) buf_ptr, value); @@ -60,7 +60,7 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { case TRICK_WCHAR:{ if (ref->attr->num_index == ref->num_index) { - sprintf(value, "%s%d", value,*(wchar_t *) buf_ptr); + snprintf(value, value_size, "%s%d", value,*(wchar_t *) buf_ptr); } else { // convert wide char string char string size_t len = wcs_to_ncs_len((wchar_t *)buf_ptr) + 1 ; @@ -98,16 +98,16 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { #if ( __linux | __sgi ) case TRICK_BOOLEAN: - sprintf(value, "%s%d", value,(unsigned char)cv_convert_double(var->conversion_factor,*(unsigned char *)buf_ptr)); + snprintf(value, value_size, "%s%d", value,(unsigned char)cv_convert_double(var->conversion_factor,*(unsigned char *)buf_ptr)); break; #endif case TRICK_SHORT: - sprintf(value, "%s%d", value, (short)cv_convert_double(var->conversion_factor,*(short *)buf_ptr)); + snprintf(value, value_size, "%s%d", value, (short)cv_convert_double(var->conversion_factor,*(short *)buf_ptr)); break; case TRICK_UNSIGNED_SHORT: - sprintf(value, "%s%u", value,(unsigned short)cv_convert_double(var->conversion_factor,*(unsigned short *)buf_ptr)); + snprintf(value, value_size, "%s%u", value,(unsigned short)cv_convert_double(var->conversion_factor,*(unsigned short *)buf_ptr)); break; case TRICK_INTEGER: @@ -115,18 +115,18 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { #if ( __sun | __APPLE__ ) case TRICK_BOOLEAN: #endif - sprintf(value, "%s%d", value, (int)cv_convert_double(var->conversion_factor,*(int *)buf_ptr)); + snprintf(value, value_size, "%s%d", value, (int)cv_convert_double(var->conversion_factor,*(int *)buf_ptr)); break; case TRICK_BITFIELD: - sprintf(value, "%d", GET_BITFIELD(buf_ptr, ref->attr->size, ref->attr->index[0].start, ref->attr->index[0].size)); + snprintf(value, value_size, "%d", GET_BITFIELD(buf_ptr, ref->attr->size, ref->attr->index[0].start, ref->attr->index[0].size)); break; case TRICK_UNSIGNED_BITFIELD: - sprintf(value, "%u", GET_UNSIGNED_BITFIELD(buf_ptr, ref->attr->size, ref->attr->index[0].start, ref->attr->index[0].size)); + snprintf(value, value_size, "%u", GET_UNSIGNED_BITFIELD(buf_ptr, ref->attr->size, ref->attr->index[0].start, ref->attr->index[0].size)); break; case TRICK_UNSIGNED_INTEGER: - sprintf(value, "%s%u", value, (unsigned int)cv_convert_double(var->conversion_factor,*(unsigned int *)buf_ptr)); + snprintf(value, value_size, "%s%u", value, (unsigned int)cv_convert_double(var->conversion_factor,*(unsigned int *)buf_ptr)); break; case TRICK_LONG: { @@ -134,7 +134,7 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { if (var->conversion_factor != cv_get_trivial()) { l = (long)cv_convert_double(var->conversion_factor, l); } - sprintf(value, "%s%ld", value, l); + snprintf(value, value_size, "%s%ld", value, l); break; } @@ -143,16 +143,16 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { if (var->conversion_factor != cv_get_trivial()) { ul = (unsigned long)cv_convert_double(var->conversion_factor, ul); } - sprintf(value, "%s%lu", value, ul); + snprintf(value, value_size, "%s%lu", value, ul); break; } case TRICK_FLOAT: - sprintf(value, "%s%.8g", value, cv_convert_float(var->conversion_factor,*(float *)buf_ptr)); + snprintf(value, value_size, "%s%.8g", value, cv_convert_float(var->conversion_factor,*(float *)buf_ptr)); break; case TRICK_DOUBLE: - sprintf(value, "%s%.16g", value, cv_convert_double(var->conversion_factor,*(double *)buf_ptr)); + snprintf(value, value_size, "%s%.16g", value, cv_convert_double(var->conversion_factor,*(double *)buf_ptr)); break; case TRICK_LONG_LONG: { @@ -160,7 +160,7 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { if (var->conversion_factor != cv_get_trivial()) { ll = (long long)cv_convert_double(var->conversion_factor, ll); } - sprintf(value, "%s%lld", value, ll); + snprintf(value, value_size, "%s%lld", value, ll); break; } @@ -169,12 +169,12 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { if (var->conversion_factor != cv_get_trivial()) { ull = (unsigned long long)cv_convert_double(var->conversion_factor, ull); } - sprintf(value, "%s%llu", value, ull); + snprintf(value, value_size, "%s%llu", value, ull); break; } case TRICK_NUMBER_OF_TYPES: - sprintf(value, "BAD_REF" ); + snprintf(value, value_size, "BAD_REF" ); break; default:{ @@ -191,9 +191,9 @@ int vs_format_ascii(Trick::VariableReference * var, char *value) { if (ref->units) { if ( ref->attr->mods & TRICK_MODS_UNITSDASHDASH ) { - sprintf(value, "%s {--}", value); + snprintf(value, value_size, "%s {--}", value); } else { - sprintf(value, "%s {%s}", value, ref->units); + snprintf(value, value_size, "%s {%s}", value, ref->units); } } @@ -225,21 +225,21 @@ size_t escape_str(const char *in_s, char *out_s) work_s[1] = '\0'; } else { if (ch == '\a') { - sprintf(work_s, "\\a"); + snprintf(work_s, sizeof(work_s), "\\a"); } else if (ch == '\b') { - sprintf(work_s, "\\b"); + snprintf(work_s, sizeof(work_s), "\\b"); } else if (ch == '\f') { - sprintf(work_s, "\\f"); + snprintf(work_s, sizeof(work_s), "\\f"); } else if (ch == '\n') { - sprintf(work_s, "\\n"); + snprintf(work_s, sizeof(work_s), "\\n"); } else if (ch == '\r') { - sprintf(work_s, "\\n"); + snprintf(work_s, sizeof(work_s), "\\n"); } else if (ch == '\t') { - sprintf(work_s, "\\t"); + snprintf(work_s, sizeof(work_s), "\\t"); } else if (ch == '\v') { - sprintf(work_s, "\\v"); + snprintf(work_s, sizeof(work_s), "\\v"); } else { - sprintf(work_s, "\\x%02x", ch); + snprintf(work_s, sizeof(work_s), "\\x%02x", ch); } } out_len += strlen(work_s); diff --git a/trick_source/trick_swig/swig_double.cpp b/trick_source/trick_swig/swig_double.cpp index 3149a04e..8e509066 100644 --- a/trick_source/trick_swig/swig_double.cpp +++ b/trick_source/trick_swig/swig_double.cpp @@ -14,9 +14,9 @@ swig_double::swig_double() { char * swig_double::__str__() { if ( ! units.empty() && units.compare("1") ) { - sprintf(str_output , "%g %s", value , units.c_str()) ; + snprintf(str_output , sizeof(str_output), "%g %s", value , units.c_str()) ; } else { - sprintf(str_output , "%g", value ) ; + snprintf(str_output , sizeof(str_output), "%g", value ) ; } return(str_output) ; } diff --git a/trick_source/trick_swig/swig_int.cpp b/trick_source/trick_swig/swig_int.cpp index ea26243d..ee5b9bcd 100644 --- a/trick_source/trick_swig/swig_int.cpp +++ b/trick_source/trick_swig/swig_int.cpp @@ -14,9 +14,9 @@ swig_int::swig_int() { char * swig_int::__str__() { if ( ! units.empty() && units.compare("1") ) { - sprintf(str_output , "%lld %s", value , units.c_str()) ; + snprintf(str_output , sizeof(str_output), "%lld %s", value , units.c_str()) ; } else { - sprintf(str_output , "%lld", value ) ; + snprintf(str_output , sizeof(str_output), "%lld", value ) ; } return(str_output) ; } @@ -1211,13 +1211,13 @@ PyObject * swig_int::__float__() { PyObject * swig_int::__oct__() { char temp[32] ; - sprintf(temp , "0%o" , (unsigned int)value) ; + snprintf(temp, sizeof(temp), "0%o" , (unsigned int)value) ; return PyString_FromString(temp) ; } PyObject * swig_int::__hex__() { char temp[32] ; - sprintf(temp , "0x%llx" , value) ; + snprintf(temp, sizeof(temp), "0x%llx" , value) ; return PyString_FromString(temp) ; } diff --git a/trick_source/trick_utils/comm/src/tc_accept.c b/trick_source/trick_utils/comm/src/tc_accept.c index 53be7d09..2d076f27 100644 --- a/trick_source/trick_utils/comm/src/tc_accept.c +++ b/trick_source/trick_utils/comm/src/tc_accept.c @@ -31,7 +31,7 @@ int tc_accept_(TCDevice * listen_device, TCDevice * device, const char *file, in length = sizeof(s_in); the_socket = accept(listen_device->socket, (struct sockaddr *) &s_in, &length); - sprintf(client_str, "(ID = %d tag = %s)", listen_device->client_id, listen_device->client_tag); + snprintf(client_str, sizeof(client_str), "(ID = %d tag = %s)", listen_device->client_id, listen_device->client_tag); /* Check for error conditon on accept */ if (the_socket == TRICKCOMM_INVALID_SOCKET) { @@ -128,7 +128,7 @@ int tc_accept_(TCDevice * listen_device, TCDevice * device, const char *file, in } } - sprintf(client_str, "(ID = %d tag = %s)", device->client_id, device->client_tag); + snprintf(client_str, sizeof(client_str), "(ID = %d tag = %s)", device->client_id, device->client_tag); trick_error_report(listen_device->error_handler, TRICK_ERROR_ADVISORY, file, line, "tc_accept: %s: connected to client using port %d\n", client_str, device->port); diff --git a/trick_source/trick_utils/comm/src/tc_blockio.c b/trick_source/trick_utils/comm/src/tc_blockio.c index ade19f51..dd1e124d 100644 --- a/trick_source/trick_utils/comm/src/tc_blockio.c +++ b/trick_source/trick_utils/comm/src/tc_blockio.c @@ -23,7 +23,7 @@ int tc_blockio(TCDevice * device, TCCommBlocking blockflag) } /* Status message */ - sprintf(client_str, "(ID = %d tag = %s)", device->client_id, device->client_tag); + snprintf(client_str, sizeof(client_str), "(ID = %d tag = %s)", device->client_id, device->client_tag); trick_error_report(device->error_handler, TRICK_ERROR_TRIVIAL, __FILE__, __LINE__, "%s blockflag = %d\n", client_str, blockflag); diff --git a/trick_source/trick_utils/comm/src/tc_connect.c b/trick_source/trick_utils/comm/src/tc_connect.c index 976b9e93..adcc35a1 100644 --- a/trick_source/trick_utils/comm/src/tc_connect.c +++ b/trick_source/trick_utils/comm/src/tc_connect.c @@ -59,7 +59,7 @@ int tc_connect_(TCDevice * device, const char *file, int line) if (device->client_tag[0] == '\0') { strcpy(device->client_tag, ""); } - sprintf(client_str, "(ID = %d tag = %s hostname = %s port = %d)", + snprintf(client_str, sizeof(client_str), "(ID = %d tag = %s hostname = %s port = %d)", device->client_id, device->client_tag, device->hostname, device->port); #ifdef __WIN32__ diff --git a/trick_source/trick_utils/comm/src/tc_disconnect.c b/trick_source/trick_utils/comm/src/tc_disconnect.c index a640f344..81858f2e 100644 --- a/trick_source/trick_utils/comm/src/tc_disconnect.c +++ b/trick_source/trick_utils/comm/src/tc_disconnect.c @@ -23,7 +23,7 @@ int tc_disconnect(TCDevice * device) /* Status message */ - sprintf(client_str, "(ID = %d tag = %s)", device->client_id, device->client_tag); + snprintf(client_str, sizeof(client_str), "(ID = %d tag = %s)", device->client_id, device->client_tag); trick_error_report(device->error_handler, TRICK_ERROR_TRIVIAL, __FILE__, __LINE__, "%s \n", client_str); diff --git a/trick_source/trick_utils/comm/src/tc_read.c b/trick_source/trick_utils/comm/src/tc_read.c index 33a9e009..82994d65 100644 --- a/trick_source/trick_utils/comm/src/tc_read.c +++ b/trick_source/trick_utils/comm/src/tc_read.c @@ -46,7 +46,7 @@ int tc_read_(TCDevice * device, char *buffer, int size, const char *file, int li return (-1); } - sprintf(client_str, "(ID = %d tag = %s)", device->client_id, device->client_tag); + snprintf(client_str, sizeof(client_str), "(ID = %d tag = %s)", device->client_id, device->client_tag); trick_error_report(device->error_handler, TRICK_ERROR_ALL, file, line, "tc_read: %s reading %d bytes\n", client_str, size); @@ -85,7 +85,7 @@ int tc_read_(TCDevice * device, char *buffer, int size, const char *file, int li } else if (tmp_nbytes == -1) { error = tc_errno; if (error != TRICKCOMM_EAGAIN && error != TRICKCOMM_EWOULDBLOCK) { - sprintf(error_str, "tc_read: %s %s (tc_errno = %d)", client_str, strerror(error), error); + snprintf(error_str, sizeof(error_str), "tc_read: %s %s (tc_errno = %d)", client_str, strerror(error), error); trick_error_report(device->error_handler, TRICK_ERROR_ALERT, file, line, error_str); tc_disconnect(device); return (nbytes); diff --git a/trick_source/trick_utils/comm/src/tc_write.c b/trick_source/trick_utils/comm/src/tc_write.c index 51058c93..ecd4a692 100644 --- a/trick_source/trick_utils/comm/src/tc_write.c +++ b/trick_source/trick_utils/comm/src/tc_write.c @@ -41,7 +41,7 @@ int tc_write_(TCDevice * device, char *buffer, int size, const char *file, int l return (-1); } - sprintf(client_str, "(ID = %d tag = %s)", device->client_id, device->client_tag); + snprintf(client_str, sizeof(client_str), "(ID = %d tag = %s)", device->client_id, device->client_tag); trick_error_report(device->error_handler, TRICK_ERROR_ALL, file, line, "%s writing %d bytes\n", client_str, size); /* If this is a software blocking write get the current time from the system */ @@ -62,7 +62,7 @@ int tc_write_(TCDevice * device, char *buffer, int size, const char *file, int l if (tmp_nbytes < 0) { error = tc_errno; if (error != TRICKCOMM_EAGAIN && error != TRICKCOMM_EWOULDBLOCK) { - sprintf(error_str, "tc_write: %s %s (tc_errno = %d)", client_str, strerror(error), error); + snprintf(error_str, sizeof(error_str), "tc_write: %s %s (tc_errno = %d)", client_str, strerror(error), error); trick_error_report(device->error_handler, TRICK_ERROR_ALERT, file, line, error_str); tc_disconnect(device); return (nbytes); diff --git a/trick_source/trick_utils/comm/src/trick_error_hndlr.c b/trick_source/trick_utils/comm/src/trick_error_hndlr.c index 531202b6..09a4b907 100644 --- a/trick_source/trick_utils/comm/src/trick_error_hndlr.c +++ b/trick_source/trick_utils/comm/src/trick_error_hndlr.c @@ -162,7 +162,7 @@ void trick_error_func_default(TrickErrorHndlr * error_hndlr, /* In: Error obj default: if (msg != (char *) NULL) { - sprintf(unknown, "Unknown error level: %d! Something is " "seriously wrong!\n ", level); + snprintf(unknown, sizeof(unknown), "Unknown error level: %d! Something is " "seriously wrong!\n ", level); msg_buf = (char *) malloc(strlen(msg) + strlen(unknown) + 2); strcpy(msg_buf, unknown); strcat(msg_buf, msg); diff --git a/trick_source/trick_utils/math/src/dLU_solver.c b/trick_source/trick_utils/math/src/dLU_solver.c index 07798415..d662896e 100644 --- a/trick_source/trick_utils/math/src/dLU_solver.c +++ b/trick_source/trick_utils/math/src/dLU_solver.c @@ -40,7 +40,7 @@ int dLU_solver(double **A, /* In: The input matrix [A] */ if (mode == 0 || mode == 1) { if (-TINY < A[0][0] && A[0][0] < TINY) { - sprintf(buf, "ERROR: Diagonal Element A[0][0] = %.17g " "is too small...\nEXITING...\n", A[0][0]); + snprintf(buf, sizeof(buf), "ERROR: Diagonal Element A[0][0] = %.17g " "is too small...\nEXITING...\n", A[0][0]); return (TM_DIAG_SMALL); } L[0][0] = sqrt(A[0][0]); @@ -49,7 +49,7 @@ int dLU_solver(double **A, /* In: The input matrix [A] */ for (j = 1; j < n; j++) { if (-TINY < A[j][j] && A[j][j] < TINY) { - sprintf(buf, + snprintf(buf, sizeof(buf), "ERROR: Diagonal Element " "A[%d][%d] = %.17g is too small...\n" "EXITING...\n", j, j, A[j][j]); return (TM_DIAG_SMALL); } diff --git a/trick_source/trick_utils/shm/src/tsm_init.c b/trick_source/trick_utils/shm/src/tsm_init.c index 40ffc374..b2532afc 100644 --- a/trick_source/trick_utils/shm/src/tsm_init.c +++ b/trick_source/trick_utils/shm/src/tsm_init.c @@ -60,7 +60,7 @@ int tsm_init(TSMDevice * shm_device) return (TSM_FAIL); } if (shm_device->key_file[0] == '\0') { - sprintf(shm_device->key_file, "%s/trick_source/trick_utils/shm/src/tsm_init.c", getenv("TRICK_HOME")); + snprintf(shm_device->key_file, sizeof(shm_device->key_file), "%s/trick_source/trick_utils/shm/src/tsm_init.c", getenv("TRICK_HOME")); } //shm_device->key = ftok(shm_device->key_file, proj_id); // we will use our own key generation in my_ftok diff --git a/trick_source/trick_utils/unicode/src/unicode_utils.c b/trick_source/trick_utils/unicode/src/unicode_utils.c index 2fab5f1f..6289d38c 100644 --- a/trick_source/trick_utils/unicode/src/unicode_utils.c +++ b/trick_source/trick_utils/unicode/src/unicode_utils.c @@ -102,23 +102,23 @@ size_t escape_to_ascii(const char *in, char *out, size_t outSize) { state = ERROR_STATE; } else { // ASCII if (ch == '\a') { - sprintf(ascii_elements, "\\a"); + snprintf(ascii_elements, sizeof(ascii_elements), "\\a"); } else if (ch == '\b') { - sprintf(ascii_elements, "\\b"); + snprintf(ascii_elements, sizeof(ascii_elements), "\\b"); } else if (ch == '\f') { - sprintf(ascii_elements, "\\f"); + snprintf(ascii_elements, sizeof(ascii_elements), "\\f"); } else if (ch == '\n') { - sprintf(ascii_elements, "\\n"); + snprintf(ascii_elements, sizeof(ascii_elements), "\\n"); } else if (ch == '\r') { - sprintf(ascii_elements, "\\r"); + snprintf(ascii_elements, sizeof(ascii_elements), "\\r"); } else if (ch == '\t') { - sprintf(ascii_elements, "\\t"); + snprintf(ascii_elements, sizeof(ascii_elements), "\\t"); } else if (ch == '\v') { - sprintf(ascii_elements, "\\v"); + snprintf(ascii_elements, sizeof(ascii_elements), "\\v"); } else if (isprint(ch)) { - sprintf(ascii_elements, "%c",ch); + snprintf(ascii_elements, sizeof(ascii_elements), "%c",ch); } else { - sprintf(ascii_elements, "\\x%02x",ch); + snprintf(ascii_elements, sizeof(ascii_elements), "\\x%02x",ch); } size_t n_elements = strlen(ascii_elements); if (out != NULL) { @@ -137,9 +137,9 @@ size_t escape_to_ascii(const char *in, char *out, size_t outSize) { codePoint = (codePoint << 6) | (ch & 0x3f); // Extract low 6 bits state = 0; if (codePoint <= 0xffff) { - sprintf(ascii_elements, "\\u%04x", codePoint); + snprintf(ascii_elements, sizeof(ascii_elements), "\\u%04x", codePoint); } else { - sprintf(ascii_elements, "\\U%08x", codePoint); + snprintf(ascii_elements, sizeof(ascii_elements), "\\U%08x", codePoint); } size_t n_elements = strlen(ascii_elements); if (out != NULL) { diff --git a/trick_source/web/CivetServer/src/VariableServerSession.cpp b/trick_source/web/CivetServer/src/VariableServerSession.cpp index e3c1a5ea..85c0ddfc 100644 --- a/trick_source/web/CivetServer/src/VariableServerSession.cpp +++ b/trick_source/web/CivetServer/src/VariableServerSession.cpp @@ -208,7 +208,7 @@ int VariableServerSession::sendErrorMessage(const char* fmt, ... ) { (void) vsnprintf(errText, MAX_MSG_SIZE, fmt, args); va_end(args); - sprintf(msgText, "{ \"msg_type\" : \"error\",\n" + snprintf(msgText, sizeof(msgText), "{ \"msg_type\" : \"error\",\n" " \"error\" : \"%s\"}\n", errText); mg_websocket_write(connection, MG_WEBSOCKET_OPCODE_TEXT, msgText, strlen(msgText)); From 1eb8376db514eecc76961b393f3bfb31d690a97f Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Tue, 15 Nov 2022 16:02:38 -0600 Subject: [PATCH 093/162] Update test_32.yml --- .github/workflows/test_32.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_32.yml b/.github/workflows/test_32.yml index f3091e51..c48aa067 100644 --- a/.github/workflows/test_32.yml +++ b/.github/workflows/test_32.yml @@ -12,7 +12,7 @@ on: jobs: trick_32bit: - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest container: docker://centos:7 steps: - name: Checkout repository From d1b1ca0d75b6a559c5cbbea5730c01275b13be4b Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 16 Nov 2022 09:23:26 -0600 Subject: [PATCH 094/162] Center developer docs section [no ci] --- README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 9b43eae9..2a7abfe4 100644 --- a/README.md +++ b/README.md @@ -66,22 +66,16 @@ The Trick Simulation Environment, developed at the NASA Johnson Space Center, is - - - - +
    + - - - -
    Developer Docs
    Read detailed documentation for various Trick internals and processes.
    From f84c744a65ee464722835eebf686616b2461c4cb Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Thu, 17 Nov 2022 08:42:47 -0600 Subject: [PATCH 095/162] Add .class files to sim directory gitignore [no ci] --- trick_sims/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/trick_sims/.gitignore b/trick_sims/.gitignore index 4a06bade..1e6c99f9 100644 --- a/trick_sims/.gitignore +++ b/trick_sims/.gitignore @@ -31,3 +31,4 @@ T_main_* **/graphics/cpp/build jitlib build +*.class From d9e7ac250d3e5c9d9cb72eb2f270aab109930002 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Thu, 17 Nov 2022 15:43:29 -0600 Subject: [PATCH 096/162] Refactored sim tests to run through TrickOps (#1390) --- .github/workflows/code_coverage.yml | 3 + .github/workflows/test_32.yml | 4 + .github/workflows/test_32_oracle.yml | 3 + .github/workflows/test_linux.yml | 7 +- .github/workflows/test_macos.yml | 6 +- .gitignore | 5 +- Makefile | 3 +- docs/developer_docs/Developer-Docs-Home.md | 5 + docs/developer_docs/Testing.md | 61 +++++ .../miscellaneous_trick_tools/TrickOps.md | 1 + share/trick/trickops/TrickWorkflow.py | 21 +- share/trick/trickops/tests/trick_sims.yml | 3 + .../trick/trickops/tests/ut_TrickWorkflow.py | 23 ++ test/Makefile | 16 ++ test/SIM_stls/S_overrides.mk | 9 - test/makefile | 87 ------- test_overrides.mk | 9 + test_sims.yml | 235 ++++++++++++++++++ trick_sims/makefile | 61 +---- trickops.py | 53 ++++ 20 files changed, 457 insertions(+), 158 deletions(-) create mode 100644 docs/developer_docs/Testing.md create mode 100644 test/Makefile delete mode 100644 test/makefile create mode 100644 test_overrides.mk create mode 100644 test_sims.yml create mode 100644 trickops.py diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 59fadd1a..63f27163 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -61,6 +61,9 @@ jobs: export TRICK_SYSTEM_LDFLAGS="-fprofile-arcs -ftest-coverage -O0" export TRICK_SYSTEM_CFLAGS="-fprofile-arcs -ftest-coverage -O0" export TRICK_SYSTEM_CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" + cd share/trick/trickops/ + python3 -m venv .venv && . .venv/bin/activate && pip3 install -r requirements.txt + cd ../../../ make code-coverage - name: Upload to Coveralls uses: coverallsapp/github-action@master diff --git a/.github/workflows/test_32.yml b/.github/workflows/test_32.yml index c48aa067..15c20737 100644 --- a/.github/workflows/test_32.yml +++ b/.github/workflows/test_32.yml @@ -66,5 +66,9 @@ jobs: make - name: Run tests run: | + cd share/trick/trickops/ + yum install -y python3-devel + python3 -m venv .venv && . .venv/bin/activate && pip install --upgrade pip && pip3 install -r requirements.txt + cd ../../../ echo $MAKEFLAGS $CXXFLAGS $CFLAGS make test diff --git a/.github/workflows/test_32_oracle.yml b/.github/workflows/test_32_oracle.yml index 322ab853..794595aa 100644 --- a/.github/workflows/test_32_oracle.yml +++ b/.github/workflows/test_32_oracle.yml @@ -71,6 +71,9 @@ jobs: make - name: Run tests run: | + cd share/trick/trickops/ + python3 -m venv .venv && . .venv/bin/activate && pip3 install -r requirements.txt + cd ../../../ export CFLAGS="-m32" export CXXFLAGS="-m32" export MAKEFLAGS=-j`nproc` diff --git a/.github/workflows/test_linux.yml b/.github/workflows/test_linux.yml index 636117ba..109c0b56 100644 --- a/.github/workflows/test_linux.yml +++ b/.github/workflows/test_linux.yml @@ -67,6 +67,8 @@ jobs: default-jdk python2.7-dev python3-dev + python3-pip + python3-venv install_gtest: | apt-get install -y libgtest-dev cd /usr/src/gtest @@ -166,8 +168,9 @@ jobs: make - name: Test run: | - export MAKEFLAGS=-j`nproc` - make test + cd share/trick/trickops/ + python3 -m venv .venv && . .venv/bin/activate && pip3 install -r requirements.txt + cd ../../../; make test - name: Upload Tests uses: actions/upload-artifact@v3.0.0 if: success() || failure() # run this step even if previous step failed diff --git a/.github/workflows/test_macos.yml b/.github/workflows/test_macos.yml index e1727b69..219fe8ef 100644 --- a/.github/workflows/test_macos.yml +++ b/.github/workflows/test_macos.yml @@ -32,7 +32,9 @@ jobs: export MAKEFLAGS=-j4 ./configure --with-llvm=${GITHUB_WORKSPACE}/clang+llvm-14.0.6-x86_64-apple-darwin make - - name: Run tests + - name: Test run: | + cd share/trick/trickops/ + python3 -m venv .venv && source .venv/bin/activate && pip3 install -r requirements.txt export MAKEFLAGS=-j4 - make test + cd ../../../; make test diff --git a/.gitignore b/.gitignore index b7d0bea1..2f71ded6 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,7 @@ civetweb_clone/ include/civet/ .vscode/ civet_server_error.log -server.pem \ No newline at end of file +server.pem +archive/ +.venv +trickops_logs/ \ No newline at end of file diff --git a/Makefile b/Makefile index 071946d4..c3548abf 100644 --- a/Makefile +++ b/Makefile @@ -301,8 +301,7 @@ $(DPX_UNIT_TEST_DIR): sim_test: - @ $(MAKE) -C test - @ $(MAKE) -C trick_sims test + @ $(MAKE) -f test_overrides.mk sim_test pytest: make -C share/trick/pymods/trick diff --git a/docs/developer_docs/Developer-Docs-Home.md b/docs/developer_docs/Developer-Docs-Home.md index 307d18e9..2be562e6 100644 --- a/docs/developer_docs/Developer-Docs-Home.md +++ b/docs/developer_docs/Developer-Docs-Home.md @@ -1,4 +1,9 @@ +| [Home](/trick) → Developer Docs | +|------------------------------------------------------------------| + # Developer Documentation + Link documentation for Trick internals, processes, and plans here. +[Testing](Testing) \ No newline at end of file diff --git a/docs/developer_docs/Testing.md b/docs/developer_docs/Testing.md new file mode 100644 index 00000000..9746e2ce --- /dev/null +++ b/docs/developer_docs/Testing.md @@ -0,0 +1,61 @@ +| [Home](/trick) → [Developer Docs](Developer-Docs-Home) → Testing | +|------------------------------------------------------------------| + + +# Testing + +Currently, Trick has a suite of unit and integration tests that run through a hodgepodge of GTest, Trick's internal unit test framework, Makefiles, and TrickOps. + +Unit tests can be found in their respective `trick_source/[sim_services|utils]/*/test` directories, and primarily use the Gtest framework. These are run primarily through test targets in their Makefiles. See `trick_source/sim_services/MemoryManager/test` for an example of organization. + +Integration tests take the form of Sims with some embedded tests. They live under `trick_sims/` and `test/`. A full list of sims that are used as part of the test suite are in [test_sims.yml](). These are run with TrickOps. + +## Test suite dependencies + +Gtest is required for the unit tests and some integration tests. See the [install guide](../documentation/install_guide/Install-Guide.md) for gtest installation. + +TrickOps requires python3 and the packages `PyYAML` and `psutil` (updated list in [Trickops requirements.txt](https://github.com/nasa/trick/blob/master/share/trick/trickops/requirements.txt)). Install these in your python environment, or create a virtual environment as follows: +``` +cd share/trick/trickops/ +python3 -m venv .venv && . .venv/bin/activate && pip3 install -r requirements.txt +cd ../../../ +``` + + +## Running the test suite +From trick home: +``` +# Run everything +make test + +# Run only integration tests +make sim_test + +# Run only unit tests +make unit_test +``` + +Currently, TrickOps will redirect all console output from tests into logs under {TRICK_HOME}/trickops_logs/, and will also dump the output of failing logs to console after the test suite is finished. + +## Coverage +Trick uses [Coveralls](https://coveralls.io/github/nasa/trick?branch=master) to host code coverage. Coverage is generated by running the test suite with gcov in CI, and then those files are uploaded to Coveralls. + +To enable gcov in Trick, it must be cleaned and compiled with the following: +``` +export CFLAGS="-fprofile-arcs -ftest-coverage -O0" +export CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" +export LDFLAGS="-fprofile-arcs -ftest-coverage -O0" +export TRICK_CFLAGS="-fprofile-arcs -ftest-coverage -O0" +export TRICK_CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" +export TRICK_SYSTEM_LDFLAGS="-fprofile-arcs -ftest-coverage -O0" +export TRICK_SYSTEM_CFLAGS="-fprofile-arcs -ftest-coverage -O0" +export TRICK_SYSTEM_CXXFLAGS="-fprofile-arcs -ftest-coverage -O0" +``` + +After Trick has been rebuild with the instrumentation, run: +``` +make code-coverage +``` +This will generate, collect, and filter all the various coverage data collection files into `coverage.info`. This is the file that is uploaded to Coveralls in the [code_coverage.yml](https://github.com/nasa/trick/blob/master/.github/workflows/code_coverage.yml) Github Actions workflow. + + diff --git a/docs/documentation/miscellaneous_trick_tools/TrickOps.md b/docs/documentation/miscellaneous_trick_tools/TrickOps.md index 6ccef78a..38f549f4 100644 --- a/docs/documentation/miscellaneous_trick_tools/TrickOps.md +++ b/docs/documentation/miscellaneous_trick_tools/TrickOps.md @@ -64,6 +64,7 @@ SIM_abc: <-- required unique name for sim of interest, must start - model_x by label within the framework, or for any other project-defined - verification purpose build_command: <-- optional literal cmd executed for SIM_build, defaults to trick-CP + binary: <-- optional name of sim binary, defaults to S_main_{cpu}.exe size: <-- optional estimated size of successful build output file in bytes runs: <-- optional dict of runs to be executed for this sim, where the RUN_1/input.py --foo: dict keys are the literal arguments passed to the sim binary diff --git a/share/trick/trickops/TrickWorkflow.py b/share/trick/trickops/TrickWorkflow.py index 8ab5076c..d67f5419 100644 --- a/share/trick/trickops/TrickWorkflow.py +++ b/share/trick/trickops/TrickWorkflow.py @@ -102,7 +102,7 @@ class TrickWorkflow(WorkflowCommon): super().__init__(project_top_level=project_top_level, log_dir=log_dir, quiet=quiet) # If not found in the config file, these defaults are used self.defaults = {'cpus': 3, 'name': None, 'description': None, - 'build_command': 'trick-CP', 'size': 2200000, 'env': None} + 'build_command': 'trick-CP', 'size': 2200000, 'env': None, 'binary': 'S_main_{cpu}.exe'} self.config_errors = False self.compare_errors = False # True if comparison errors were found self.sims = [] # list of Sim() instances, filled out from config file @@ -269,6 +269,7 @@ class TrickWorkflow(WorkflowCommon): - model_x by label within the framework, or for any other project-defined - verification purpose build_command: <-- optional literal cmd executed for SIM_build, defaults to trick-CP + binary: <-- optional name of sim binary, defaults to S_main_{cpu}.exe size: <-- optional estimated size of successful build output file in bytes runs: <-- optional dict of runs to be executed for this sim, where the RUN_1/input.py --foo: dict keys are the literal arguments passed to the sim binary @@ -390,11 +391,22 @@ class TrickWorkflow(WorkflowCommon): sanitized_labels =( [l for l in c[s]['labels'] if type_expected( l, expected_type=str, extra_msg='Ignoring label "%s".' % l) ] ) self.config[s]['labels'] = sanitized_labels + # Check for binary argument + if 'binary' not in c[s] or not c[s]['binary']: + self.config[s]['binary'] = self.defaults['binary'] + + # Add the CPU format string (won't fail if there is no CPU placeholder) + self.config[s]['binary'] = self.config[s]['binary'].format(cpu=self.trick_host_cpu) + + # Add the full path to the build command + self.config[s]['build_command'] = os.path.join(self.trick_dir, "bin", self.config[s]['build_command']) + # Create internal object to be populated with runs, valgrind runs, etc thisSim = TrickWorkflow.Sim(name=s, sim_dir=self.config[s]['path'], description=self.config[s]['description'], labels=self.config[s]['labels'], prebuild_cmd=self.env, build_cmd=self.config[s]['build_command'], cpus=self.cpus, size=self.config[s]['size'], log_dir=self.log_dir) + all_sim_paths.append(c[s]['path']) # RUN sanity checks if 'runs' in c[s]: # If it's there... @@ -442,7 +454,7 @@ class TrickWorkflow(WorkflowCommon): self.config[s]['runs'][r]['returns'] = 0 # Default to zero # Create internal object to be added to thisSim thisRun = TrickWorkflow.Run(sim_dir=self.config[s]['path'], input=r, - binary= 'S_main_' + self.trick_host_cpu + '.exe', prerun_cmd=self.env, + binary= self.config[s]['binary'], prerun_cmd=self.env, returns=self.config[s]['runs'][r]['returns'], valgrind_flags=None, log_dir=self.log_dir) # Handle 'compare' option, if given, if not, assume 0 @@ -502,7 +514,7 @@ class TrickWorkflow(WorkflowCommon): else: # Create internal object to be added to thisSim vRun = TrickWorkflow.Run(sim_dir=self.config[s]['path'], input=r, - binary= 'S_main_' + self.trick_host_cpu + '.exe', + binary= self.config[s]['binary'], prerun_cmd=self.env, valgrind_flags=self.config[s]['valgrind']['flags'], log_dir=self.log_dir) thisSim.add_run(vRun) @@ -811,6 +823,7 @@ class TrickWorkflow(WorkflowCommon): FileSizeJob() Instance of FileSizeJob() job for compiling this sim """ + if not self.build_job: name = 'Build ' + self.sim_dir self.build_job = FileSizeJob(name=name, @@ -1019,7 +1032,7 @@ class TrickWorkflow(WorkflowCommon): including command-line arguments ex: RUN_test/input.py, or RUN_test/input.py --my-arg binary : str - Name of executable, usually S_min.. bu platform specific + Name of executable, usually S_main.. but platform specific prerun_cmd : str Optional string to execute immediately before sim run, e.g. env sourcing valgrind_flags : str diff --git a/share/trick/trickops/tests/trick_sims.yml b/share/trick/trickops/tests/trick_sims.yml index a2ccb36d..ca0cae72 100644 --- a/share/trick/trickops/tests/trick_sims.yml +++ b/share/trick/trickops/tests/trick_sims.yml @@ -77,10 +77,13 @@ SIM_rti: labels: - unit_test SIM_segments: + binary: 'T_main_*.exe' path: test/SIM_segments runs: RUN_test/input.py: SIM_stls: + binary: 'T_main_{cpu}_test.exe' + build_command: "trick-CP -t" path: test/SIM_stls labels: - unit_test diff --git a/share/trick/trickops/tests/ut_TrickWorkflow.py b/share/trick/trickops/tests/ut_TrickWorkflow.py index f25065c6..40723e9b 100644 --- a/share/trick/trickops/tests/ut_TrickWorkflow.py +++ b/share/trick/trickops/tests/ut_TrickWorkflow.py @@ -117,6 +117,29 @@ class TrickWorkflowTestCase(unittest.TestCase): sim = self.instance.get_sim(identifier='SIM_ball_L1') run = sim.get_run('RUN_test/input.py') + def test_set_binary_with_cpu_formatter (self): + sim = self.instance.get_sim(identifier="SIM_stls") + cpu = self.instance.get_trick_host_cpu() + run = sim.get_run('RUN_test/unit_test.py') + print("Binary: " , run.binary) + self.assertEqual(run.binary, "T_main_" + cpu + "_test.exe") + + def test_set_binary_without_cpu_formatter (self): + sim = self.instance.get_sim(identifier="SIM_segments") + run = sim.get_run('RUN_test/input.py') + print("Binary: " , run.binary) + self.assertEqual(run.binary, "T_main_*.exe") + + def test_absolute_path_to_custom_build_cmd (self): + sim = self.instance.get_sim(identifier="SIM_stls") + absolute_path = os.path.join(self.instance.trick_dir, "bin", "trick-CP -t") + self.assertEqual(sim.build_cmd, absolute_path) + + def test_absolute_path_to_default_build_cmd (self): + sim = self.instance.get_sim(identifier="SIM_segments") + absolute_path = os.path.join(self.instance.trick_dir, "bin", "trick-CP") + self.assertEqual(sim.build_cmd, absolute_path) + def test_get_unique_comparison_dirs(self): ucd = self.instance.get_unique_comparison_dirs() self.assertTrue(ucd[0] is not None) diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 00000000..f60dd273 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,16 @@ +TRICK_HOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))..) +export TRICK_HOST_CPU := $(shell $(TRICK_HOME)/bin/trick-gte TRICK_HOST_CPU) +include ${TRICK_HOME}/share/trick/makefiles/Makefile.common + + +SIM_DIRECTORIES = $(wildcard SIM_*) +UNIT_TEST_RESULTS = $(addprefix $(TRICK_HOME)/trick_test/, $(addsuffix .xml, $(SIM_DIRECTORIES))) + + +clean: + rm -f $(UNIT_TEST_RESULTS) + - for i in $(SIM_DIRECTORIES) ; do \ + if [ -f "$$i/"[Mm]"akefile" ] ; then \ + $(MAKE) -C $$i spotless ; \ + fi \ + done diff --git a/test/SIM_stls/S_overrides.mk b/test/SIM_stls/S_overrides.mk index b05ddfc7..5587ab4f 100644 --- a/test/SIM_stls/S_overrides.mk +++ b/test/SIM_stls/S_overrides.mk @@ -4,15 +4,6 @@ TRICK_CXXFLAGS += -I./models TRICK_CXXFLAGS += -std=c++11 -test: setup - -# This is a workaround so that the sim runs with RUN_test/setup.py before the actual unit test run. -# setup.py adds hardcoded data to the sim and dumps a checkpoint, and unit_test.py loads that checkpoint and checks all the values. - -setup: T_main_${TRICK_HOST_CPU}.exe - echo "Running Setup Job" - ./T_main_${TRICK_HOST_CPU}.exe RUN_test/setup.py - clean: checkpoint_clean checkpoint_clean: diff --git a/test/makefile b/test/makefile deleted file mode 100644 index 8daf93fb..00000000 --- a/test/makefile +++ /dev/null @@ -1,87 +0,0 @@ -TRICK_HOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))..) -export TRICK_HOST_CPU := $(shell $(TRICK_HOME)/bin/trick-gte TRICK_HOST_CPU) -include ${TRICK_HOME}/share/trick/makefiles/Makefile.common - -# Remove when issue #1147 is fixed: https://github.com/nasa/trick/issues/1147 -unexport TRICK_PYTHON_PATH - -SIMS_TO_COMPILE_ONLY = \ - SIM_alloc_test \ - SIM_anon_enum \ - SIM_default_member_initializer \ - SIM_delete_default_constructor \ - SIM_demo_inputfile \ - SIM_exclusion_mechanisms \ - SIM_isystem \ - SIM_measurement_units \ - SIM_parse_s_define \ - SIM_target_specific_variables \ - SIM_test_abstract \ - SIM_test_inherit \ - SIM_test_ip2 \ - SIM_threads_simple \ - SIM_trickcomm - -SIMS_TO_COMPILE_AND_RUN = \ - SIM_demo_sdefine \ - SIM_events \ - SIM_exec_set_time_tic_value \ - SIM_python_namespace \ - SIM_rti \ - SIM_stls \ - SIM_test_dp \ - SIM_test_dr \ - SIM_test_icg_file_skipped \ - SIM_test_io \ - SIM_test_ip \ - SIM_test_sched \ - SIM_test_templates \ - SIM_threads \ - SIM_trickified - -# SIM_stls will run twice. First run is RUN_test/setup.py, which is added as a dependency to test in its S_overrides.mk file -# The second run is the normal RUN_test/unit_test.py which is run through this makefile. - -# Sims with problems, no purpose, or maybe shouldn't be a test -# SIM_leaks ( should be deleted ) -# SIM_dynamic_sim_object ( not running, class won't instantiate ) -# SIM_segments ( not a test, but a demo ) - -# This test is temporarily sitting out until fixed. -# SIM_test_varserv - -EXECUTABLES = $(addsuffix /T_main_${TRICK_HOST_CPU}_test.exe, $(SIMS_TO_COMPILE_AND_RUN) $(SIMS_TO_COMPILE_ONLY)) -UNIT_TEST_RESULTS = $(addprefix $(TRICK_HOME)/trick_test/, $(addsuffix .xml, $(SIMS_TO_COMPILE_AND_RUN))) - -test: $(EXECUTABLES) $(UNIT_TEST_RESULTS) data_record_results - -clean: - rm -f $(UNIT_TEST_RESULTS) - - for i in $(SIMS_TO_COMPILE_AND_RUN) ; do \ - if [ -f "$$i/"[Mm]"akefile" ] ; then \ - $(MAKE) -C $$i spotless ; \ - fi \ - done - - - for i in $(SIMS_TO_COMPILE_ONLY) ; do \ - if [ -f "$$i/"[Mm]"akefile" ] ; then \ - $(MAKE) -C $$i spotless ; \ - fi \ - done - -$(EXECUTABLES): - @ cd $(@D) ; ${TRICK_HOME}/bin/trick-CP -t - -$(UNIT_TEST_RESULTS): $(TRICK_HOME)/trick_test/%.xml : %/T_main_${TRICK_HOST_CPU}_test.exe - @ cd $* ; ./T_main_${TRICK_HOST_CPU}_test.exe RUN_test/unit_test.py - -DR_RESULTS = $(TRICK_HOME)/test/SIM_test_dr/RUN_test -data_record_results: $(TRICK_HOME)/trick_test/SIM_test_dr.xml $(DR_RESULTS) - diff $(DR_RESULTS)/log_DR_bitfieldsASCII.csv $(DR_RESULTS)/Ref_Logs/log_DR_bitfieldsASCII_Master.csv - diff $(DR_RESULTS)/log_DR_typesASCII.csv $(DR_RESULTS)/Ref_Logs/log_DR_typesASCII_Master.csv - cmp -b $(DR_RESULTS)/log_DR_bitfieldsBINARY.trk $(DR_RESULTS)/Ref_Logs/log_DR_bitfieldsBINARY.trk -ifeq (${TRICK_FORCE_32BIT}, 1) - cmp -b $(DR_RESULTS)/log_DR_typesBINARY.trk $(DR_RESULTS)/Ref_Logs/log_DR_typesBINARY_32.trk -else - cmp -b $(DR_RESULTS)/log_DR_typesBINARY.trk $(DR_RESULTS)/Ref_Logs/log_DR_typesBINARY.trk -endif diff --git a/test_overrides.mk b/test_overrides.mk new file mode 100644 index 00000000..c80a7618 --- /dev/null +++ b/test_overrides.mk @@ -0,0 +1,9 @@ +TRICK_HOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))) +export TRICK_HOST_CPU := $(shell $(TRICK_HOME)/bin/trick-gte TRICK_HOST_CPU) +include ${TRICK_HOME}/share/trick/makefiles/Makefile.common + +# Remove when issue #1147 is fixed: https://github.com/nasa/trick/issues/1147 +unexport TRICK_PYTHON_PATH + +sim_test: + python3 trickops.py ${TRICK_HOME} diff --git a/test_sims.yml b/test_sims.yml new file mode 100644 index 00000000..dd0d5a53 --- /dev/null +++ b/test_sims.yml @@ -0,0 +1,235 @@ + + +# Compile only sims +SIM_alloc_test: + path: test/SIM_alloc_test +SIM_alloc_test: + path: test/SIM_alloc_test +SIM_anon_enum: + path: test/SIM_anon_enum +SIM_default_member_initializer: + path: test/SIM_default_member_initializer +SIM_delete_default_constructor: + path: test/SIM_delete_default_constructor +SIM_demo_inputfile: + path: test/SIM_demo_inputfile +SIM_exclusion_mechanisms: + path: test/SIM_exclusion_mechanisms +SIM_isystem: + path: test/SIM_isystem +SIM_measurement_units: + path: test/SIM_measurement_units +SIM_parse_s_define: + path: test/SIM_parse_s_define +# SIM_target_specific_variables: <-- This sim has to sit out on Mac until we fix the sprintf issue +# path: test/SIM_target_specific_variables +SIM_test_abstract: + path: test/SIM_test_abstract +SIM_test_inherit: + path: test/SIM_test_inherit +SIM_test_ip2: + path: test/SIM_test_ip2 +SIM_threads_simple: + path: test/SIM_threads_simple +SIM_trickcomm: + path: test/SIM_trickcomm +SIM_satellite: + path: trick_sims/SIM_satellite + +# Normal case compile and run sims +SIM_demo_sdefine: + path: test/SIM_demo_sdefine + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_events: + path: test/SIM_events + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_exec_set_time_tic_value: + path: test/SIM_exec_set_time_tic_value + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_python_namespace: + path: test/SIM_python_namespace + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_rti: + path: test/SIM_rti + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_test_dp: + path: test/SIM_test_dp + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_test_icg_file_skipped: + path: test/SIM_test_icg_file_skipped + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_test_io: + path: test/SIM_test_io + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_test_ip: + path: test/SIM_test_ip + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_test_sched: + path: test/SIM_test_sched + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_test_templates: + path: test/SIM_test_templates + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_threads: + path: test/SIM_threads + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_trickified: + path: test/SIM_trickified + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_ball_L1: + path: trick_sims/Ball/SIM_ball_L1 + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_ball_L2: + path: trick_sims/Ball/SIM_ball_L2 + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_ball_L3: + path: trick_sims/Ball/SIM_ball_L3 + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +# SIM_amoeba: +# path: trick_sims/Cannon/SIM_amoeba +# build_command: "trick-CP -t" +# binary: "T_main_{cpu}_test.exe" +# runs: +# RUN_test/unit_test.py: +# returns: 0 +SIM_cannon_aero: + path: trick_sims/Cannon/SIM_cannon_aero + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_cannon_analytic: + path: trick_sims/Cannon/SIM_cannon_analytic + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_cannon_eulercromer: + path: trick_sims/Cannon/SIM_cannon_eulercromer + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_cannon_numeric: + path: trick_sims/Cannon/SIM_cannon_numeric + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_cannon_jet: + path: trick_sims/Cannon/SIM_cannon_jet + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_Ball++_L1: + path: trick_sims/SIM_Ball++_L1 + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 +SIM_sun: + path: trick_sims/SIM_sun + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 + + +# Special cases + +# setup.py dumps a checkpoint +# unit_test.py loads that checkpoint and verifies the data +SIM_stls: + path: test/SIM_stls + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/setup.py: + returns: 0 + RUN_test/unit_test.py: + returns: 0 + +SIM_test_dr: + path: test/SIM_test_dr + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 + compare: + - test/SIM_test_dr/RUN_test/log_DR_bitfieldsASCII.csv vs. test/SIM_test_dr/RUN_test/Ref_Logs/log_DR_bitfieldsASCII_Master.csv + - test/SIM_test_dr/RUN_test/log_DR_typesASCII.csv vs. test/SIM_test_dr/RUN_test/Ref_Logs/log_DR_typesASCII_Master.csv + - test/SIM_test_dr/RUN_test/log_DR_bitfieldsBINARY.trk vs. test/SIM_test_dr/RUN_test/Ref_Logs/log_DR_bitfieldsBINARY.trk + diff --git a/trick_sims/makefile b/trick_sims/makefile index 26d43306..52917e52 100644 --- a/trick_sims/makefile +++ b/trick_sims/makefile @@ -1,59 +1,18 @@ - +TRICK_HOME := $(abspath $(dir $(lastword $(MAKEFILE_LIST)))..) export TRICK_HOST_CPU := $(shell $(TRICK_HOME)/bin/trick-gte TRICK_HOST_CPU) +include ${TRICK_HOME}/share/trick/makefiles/Makefile.common -# List out sims we want to compile -COMPILE_DIRS = \ - Ball/SIM_ball_L1 \ - Ball/SIM_ball_L2 \ - Ball/SIM_ball_L3 \ - Cannon/SIM_amoeba \ - Cannon/SIM_cannon_aero \ - Cannon/SIM_cannon_analytic \ - Cannon/SIM_cannon_eulercromer \ - Cannon/SIM_cannon_numeric \ - Cannon/SIM_cannon_jet \ - SIM_Ball++_L1 \ - SIM_satellite \ - SIM_sun - #SIM_monte \ +NESTED_SIM_DIRECTORIES = $(wildcard */SIM_*) +SIM_DIRECTORIES = $(wildcard SIM_*) $(NESTED_SIM_DIRECTORIES) -# List out sims we want to run unit tests -TEST_DIRS = \ - Ball/SIM_ball_L1 \ - Ball/SIM_ball_L2 \ - Ball/SIM_ball_L3 \ - Cannon/SIM_amoeba \ - Cannon/SIM_cannon_aero \ - Cannon/SIM_cannon_analytic \ - Cannon/SIM_cannon_eulercromer \ - Cannon/SIM_cannon_numeric \ - Cannon/SIM_cannon_jet \ - SIM_Ball++_L1 \ - SIM_sun +UNIT_TEST_RESULTS = $(addprefix $(TRICK_HOME)/trick_test/, $(addsuffix .xml, $(SIM_DIRECTORIES))) - #SIM_monte \ - -EXECUTABLES = $(addsuffix /T_main_${TRICK_HOST_CPU}_test.exe, $(COMPILE_DIRS)) -UNIT_TEST_RESULTS = $(addprefix $(TRICK_HOME)/trick_test/, $(addsuffix .xml, $(TEST_DIRS))) - -all: - @echo "This makefile is used with Trick's top level 'make test' command" - -test: $(EXECUTABLES) $(UNIT_TEST_RESULTS) clean: rm -f $(UNIT_TEST_RESULTS) - - for i in $(COMPILE_DIRS) ; do \ - if [ -f "$$i/"[Mm]"akefile" ] ; then \ - $(MAKE) -C $$i spotless ; \ - fi \ - done - -$(EXECUTABLES): - @ cd $(@D) ; ${TRICK_HOME}/bin/trick-CP -t ; - -$(UNIT_TEST_RESULTS): $(TRICK_HOME)/trick_test/%.xml : %/T_main_${TRICK_HOST_CPU}_test.exe - @ cd $* ; ./T_main_${TRICK_HOST_CPU}_test.exe RUN_test/unit_test.py - - + - for i in $(SIM_DIRECTORIES) ; do \ + if [ -f "$$i/"[Mm]"akefile" ] ; then \ + $(MAKE) -C $$i spotless ; \ + fi \ + done diff --git a/trickops.py b/trickops.py new file mode 100644 index 00000000..e64c0087 --- /dev/null +++ b/trickops.py @@ -0,0 +1,53 @@ +import sys +import os + +sys.path.append(sys.argv[1] + "/share/trick/trickops") + +from TrickWorkflow import * +from WorkflowCommon import Job + +class SimTestWorkflow(TrickWorkflow): + def __init__( self, quiet, trick_top_level ): + # Create the trick_test directory if it doesn't already exist + if not os.path.exists(trick_top_level + "/trick_test"): + os.makedirs(trick_top_level + "/trick_test") + + # Base Class initialize, this creates internal management structures + num_cpus = os.cpu_count() if os.cpu_count() is not None else 8 + TrickWorkflow.__init__(self, project_top_level=(trick_top_level), log_dir=(trick_top_level +'/trickops_logs/'), + trick_dir=trick_top_level, config_file=(trick_top_level + "/test_sims.yml"), cpus=num_cpus, quiet=quiet) + + def run( self ): + + build_jobs = self.get_jobs(kind='build') + run_jobs = self.get_jobs(kind='run') + analysis_jobs = self.get_jobs(kind='analyze') + + # This job dumps a checkpoint that is then read in and checked by RUN_test/unit_test.py in the same sim + # This is a workaround to ensure that this run goes first. + first_phase_job = self.get_sim('SIM_stls').get_run(input='RUN_test/setup.py').get_run_job() + run_jobs.remove(first_phase_job) + + builds_status = self.execute_jobs(build_jobs, max_concurrent=self.cpus, header='Executing all sim builds.') + first_phase_run_status = self.execute_jobs([first_phase_job], max_concurrent=self.cpus, header="Executing required first phase runs.") + runs_status = self.execute_jobs(run_jobs, max_concurrent=self.cpus, header='Executing all sim runs.') + comparison_result = self.compare() + analysis_status = self.execute_jobs(analysis_jobs, max_concurrent=self.cpus, header='Executing all analysis.') + + self.report() # Print Verbose report + self.status_summary() # Print a Succinct summary + + # Dump failing logs + jobs = build_jobs + run_jobs + for job in jobs: + if job.get_status() == Job.Status.FAILED: + print("Failing job: ", job.name) + print ("*"*120) + print(open(job.log_file, "r").read()) + print ("*"*120, "\n") + + return (builds_status or runs_status or first_phase_run_status or self.config_errors or comparison_result or analysis_status) + +if __name__ == "__main__": + should_be_quiet = os.getenv('CI') is not None + sys.exit(SimTestWorkflow(quiet=should_be_quiet, trick_top_level=sys.argv[1]).run()) From a5412994bf17cec7a4a1a1bbff0cf3a0fa728d37 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 17 Nov 2022 15:51:26 -0600 Subject: [PATCH 097/162] move release guide to dev docs --- docs/developer_docs/Developer-Docs-Home.md | 3 ++- docs/{howto_guides => developer_docs}/How-To-Make-A-Release.md | 0 docs/howto_guides/How-To-Guides.md | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) rename docs/{howto_guides => developer_docs}/How-To-Make-A-Release.md (100%) diff --git a/docs/developer_docs/Developer-Docs-Home.md b/docs/developer_docs/Developer-Docs-Home.md index 2be562e6..43c97952 100644 --- a/docs/developer_docs/Developer-Docs-Home.md +++ b/docs/developer_docs/Developer-Docs-Home.md @@ -6,4 +6,5 @@ Link documentation for Trick internals, processes, and plans here. -[Testing](Testing) \ No newline at end of file +[Testing](Testing) +[How to make a new Trick release on GitHub](How-To-Make-A-Release) \ No newline at end of file diff --git a/docs/howto_guides/How-To-Make-A-Release.md b/docs/developer_docs/How-To-Make-A-Release.md similarity index 100% rename from docs/howto_guides/How-To-Make-A-Release.md rename to docs/developer_docs/How-To-Make-A-Release.md diff --git a/docs/howto_guides/How-To-Guides.md b/docs/howto_guides/How-To-Guides.md index 2f74874c..118afcaf 100644 --- a/docs/howto_guides/How-To-Guides.md +++ b/docs/howto_guides/How-To-Guides.md @@ -7,5 +7,4 @@ 01. [How do I exclude code from being processed by Trick?](How-To-Exclude-Code) 01. [How do I create a model library to save compilation time?](/trick/documentation/building_a_simulation/Trickified-Project-Libraries) 01. [How do I use inherited templates in the input file?](How-To-Use-Inherited-Templates) -01. [How do I make a new Trick release on GitHub?](How-To-Make-A-Release) 01. [How to Dump a Core-file on MacOS](How-to-dump-core-file-on-MacOS) From a32befb71a404e253060780df2ccd85ed9cc5705 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Thu, 17 Nov 2022 15:52:02 -0600 Subject: [PATCH 098/162] Update Developer-Docs-Home.md --- docs/developer_docs/Developer-Docs-Home.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/developer_docs/Developer-Docs-Home.md b/docs/developer_docs/Developer-Docs-Home.md index 43c97952..e67c9c3c 100644 --- a/docs/developer_docs/Developer-Docs-Home.md +++ b/docs/developer_docs/Developer-Docs-Home.md @@ -6,5 +6,5 @@ Link documentation for Trick internals, processes, and plans here. -[Testing](Testing) -[How to make a new Trick release on GitHub](How-To-Make-A-Release) \ No newline at end of file +- [Testing](Testing) +- [How to make a new Trick release on GitHub](How-To-Make-A-Release) From e86e7fd968e6e432064d8a59c4e90f5631e43cf1 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Thu, 17 Nov 2022 15:54:02 -0600 Subject: [PATCH 099/162] update version numbers for Trick Simulation Environment 19.5.0 --- CMakeLists.txt | 2 +- share/trick/trick_ver.txt | 2 +- trick_source/java/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 22498788..cce2d163 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ set(TRICK_MAJOR 19) set(TRICK_MINOR 5) set(TRICK_TINY 0) # set TRICK_PRERELEASE TO EMPTY STRING "" ON RELEASE -set(TRICK_PRERELEASE "-beta") +set(TRICK_PRERELEASE "") # On macOS Mojave and Catalina, the compilers in /usr/bin # are the ones that include the correct C standard library system headers diff --git a/share/trick/trick_ver.txt b/share/trick/trick_ver.txt index df8fb6aa..9f124478 100644 --- a/share/trick/trick_ver.txt +++ b/share/trick/trick_ver.txt @@ -1 +1 @@ -current_version = "19.5.0-beta" +current_version = "19.5.0" diff --git a/trick_source/java/pom.xml b/trick_source/java/pom.xml index 23ec85c9..c464b9ad 100644 --- a/trick_source/java/pom.xml +++ b/trick_source/java/pom.xml @@ -6,7 +6,7 @@ trick-java trick-java - 19.5.0-beta + 19.5.0 trick-java From d0f679b31a2be405a45781a09d966458ec15003e Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Thu, 17 Nov 2022 16:00:00 -0600 Subject: [PATCH 100/162] update version numbers to prerelease 19.6.0-beta --- CMakeLists.txt | 2 +- share/trick/trick_ver.txt | 2 +- trick_source/java/pom.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cce2d163..22498788 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ set(TRICK_MAJOR 19) set(TRICK_MINOR 5) set(TRICK_TINY 0) # set TRICK_PRERELEASE TO EMPTY STRING "" ON RELEASE -set(TRICK_PRERELEASE "") +set(TRICK_PRERELEASE "-beta") # On macOS Mojave and Catalina, the compilers in /usr/bin # are the ones that include the correct C standard library system headers diff --git a/share/trick/trick_ver.txt b/share/trick/trick_ver.txt index 9f124478..fe3886e0 100644 --- a/share/trick/trick_ver.txt +++ b/share/trick/trick_ver.txt @@ -1 +1 @@ -current_version = "19.5.0" +current_version = "19.6.0-beta" diff --git a/trick_source/java/pom.xml b/trick_source/java/pom.xml index c464b9ad..e969068c 100644 --- a/trick_source/java/pom.xml +++ b/trick_source/java/pom.xml @@ -6,7 +6,7 @@ trick-java trick-java - 19.5.0 + 19.6.0-beta trick-java From 1b394e938694ac63ec91351cf57d820af321b384 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Mon, 21 Nov 2022 11:57:19 -0600 Subject: [PATCH 101/162] Add test sim for interaction between data recording and checkpointing (#1398) * Add test sim and documentation for interaction between data recording and checkpointing * Dump failing logs from first phase jobs --- .../simulation_capabilities/Data-Record.md | 12 +++ .../Modified_data/anotherfoo.dr | 18 +++++ .../Modified_data/foo.dr | 18 +++++ .../Modified_data/foo2.dr | 17 ++++ .../Modified_data/realtime.py | 10 +++ test/SIM_checkpoint_data_recording/README.md | 39 +++++++++ .../RUN_test/dump.py | 14 ++++ .../RUN_test/input.py | 10 +++ .../RUN_test1/dump.py | 14 ++++ .../RUN_test1/ref_log_foo.csv | 51 ++++++++++++ .../RUN_test1/unit_test.py | 9 +++ .../RUN_test2/check_log.sh | 9 +++ .../RUN_test2/dump.py | 12 +++ .../RUN_test2/unit_test.py | 11 +++ .../RUN_test3/dump.py | 14 ++++ .../RUN_test3/ref_log_foo.csv | 51 ++++++++++++ .../RUN_test3/unit_test.py | 12 +++ .../RUN_test4/dump.py | 14 ++++ .../RUN_test4/ref_log_foo.csv | 81 +++++++++++++++++++ .../RUN_test4/unit_test.py | 12 +++ .../RUN_test5/dump.py | 14 ++++ .../RUN_test5/ref_log_foo.csv | 31 +++++++ .../RUN_test5/unit_test.py | 12 +++ .../RUN_test6/dump.py | 14 ++++ .../RUN_test6/ref_log_foo2.csv | 4 + .../RUN_test6/unit_test.py | 13 +++ test/SIM_checkpoint_data_recording/S_define | 16 ++++ .../S_overrides.mk | 7 ++ .../models/Foo.cpp | 1 + .../models/Foo.hh | 16 ++++ test_sims.yml | 47 ++++++++++- trickops.py | 20 +++-- 32 files changed, 616 insertions(+), 7 deletions(-) create mode 100644 test/SIM_checkpoint_data_recording/Modified_data/anotherfoo.dr create mode 100644 test/SIM_checkpoint_data_recording/Modified_data/foo.dr create mode 100644 test/SIM_checkpoint_data_recording/Modified_data/foo2.dr create mode 100644 test/SIM_checkpoint_data_recording/Modified_data/realtime.py create mode 100644 test/SIM_checkpoint_data_recording/README.md create mode 100644 test/SIM_checkpoint_data_recording/RUN_test/dump.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test/input.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test1/dump.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test1/ref_log_foo.csv create mode 100644 test/SIM_checkpoint_data_recording/RUN_test1/unit_test.py create mode 100755 test/SIM_checkpoint_data_recording/RUN_test2/check_log.sh create mode 100644 test/SIM_checkpoint_data_recording/RUN_test2/dump.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test2/unit_test.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test3/dump.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test3/ref_log_foo.csv create mode 100644 test/SIM_checkpoint_data_recording/RUN_test3/unit_test.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test4/dump.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test4/ref_log_foo.csv create mode 100644 test/SIM_checkpoint_data_recording/RUN_test4/unit_test.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test5/dump.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test5/ref_log_foo.csv create mode 100644 test/SIM_checkpoint_data_recording/RUN_test5/unit_test.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test6/dump.py create mode 100644 test/SIM_checkpoint_data_recording/RUN_test6/ref_log_foo2.csv create mode 100644 test/SIM_checkpoint_data_recording/RUN_test6/unit_test.py create mode 100644 test/SIM_checkpoint_data_recording/S_define create mode 100644 test/SIM_checkpoint_data_recording/S_overrides.mk create mode 100644 test/SIM_checkpoint_data_recording/models/Foo.cpp create mode 100644 test/SIM_checkpoint_data_recording/models/Foo.hh diff --git a/docs/documentation/simulation_capabilities/Data-Record.md b/docs/documentation/simulation_capabilities/Data-Record.md index cdf6717e..4f418872 100644 --- a/docs/documentation/simulation_capabilities/Data-Record.md +++ b/docs/documentation/simulation_capabilities/Data-Record.md @@ -417,4 +417,16 @@ GROUP "/" { } ``` + +### Interaction with Checkpoints + +Data recording groups are able to be checkpointed, reloaded, and restarted without any interaction by the user. When a checkpoint is loaded that includes data recording, +the data recording groups will be initiated and begin recording at the time in the checkpoint. For example, if a checkpoint was dumped when t=5, when the checkpoint is +loaded into another run, it will data record starting at t=5, no matter what time in the run it was loaded or whether the run was already data recording. Loading a checkpoint +will overwrite any data recording files that were being recorded before the load. + +Loading a checkpoint with different data recording groups than the current run will overwrite the current data recording groups. + +Refer to test/SIM_checkpoint_data_recording to see expected behavior in action. Overall, the loading a checkpoint should completely overwrite any other data recording the sim is currently doing, and the new recording will start at the time in the checkpoint. If you come across different behavior, please open an issue. + [Continue to Checkpointing](Checkpoints) diff --git a/test/SIM_checkpoint_data_recording/Modified_data/anotherfoo.dr b/test/SIM_checkpoint_data_recording/Modified_data/anotherfoo.dr new file mode 100644 index 00000000..736798b3 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/Modified_data/anotherfoo.dr @@ -0,0 +1,18 @@ +global DR_GROUP_ID +global drg +try: + if DR_GROUP_ID >= 0: + DR_GROUP_ID += 1 +except NameError: + DR_GROUP_ID = 0 + drg = [] + +drg.append(trick.DRAscii("anotherfoo")) +drg[DR_GROUP_ID].set_freq(trick.DR_Always) +drg[DR_GROUP_ID].set_cycle(0.1) +drg[DR_GROUP_ID].set_single_prec_only(False) +drg[DR_GROUP_ID].add_variable("testSimObject.name") +drg[DR_GROUP_ID].add_variable("testSimObject.my_foo.b") +drg[DR_GROUP_ID].set_max_file_size(1 * 1073741824) # multiply converts GiB to B --Dr. Dre +trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) +drg[DR_GROUP_ID].enable() diff --git a/test/SIM_checkpoint_data_recording/Modified_data/foo.dr b/test/SIM_checkpoint_data_recording/Modified_data/foo.dr new file mode 100644 index 00000000..82066e73 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/Modified_data/foo.dr @@ -0,0 +1,18 @@ +global DR_GROUP_ID +global drg +try: + if DR_GROUP_ID >= 0: + DR_GROUP_ID += 1 +except NameError: + DR_GROUP_ID = 0 + drg = [] + +drg.append(trick.DRAscii("foo")) +drg[DR_GROUP_ID].set_freq(trick.DR_Always) +drg[DR_GROUP_ID].set_cycle(0.1) +drg[DR_GROUP_ID].set_single_prec_only(False) +drg[DR_GROUP_ID].add_variable("testSimObject.my_foo.a") +drg[DR_GROUP_ID].add_variable("testSimObject.my_foo.b") +drg[DR_GROUP_ID].set_max_file_size(1 * 1073741824) # multiply converts GiB to B --Dr. Dre +trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) +drg[DR_GROUP_ID].enable() diff --git a/test/SIM_checkpoint_data_recording/Modified_data/foo2.dr b/test/SIM_checkpoint_data_recording/Modified_data/foo2.dr new file mode 100644 index 00000000..d4b7ef1b --- /dev/null +++ b/test/SIM_checkpoint_data_recording/Modified_data/foo2.dr @@ -0,0 +1,17 @@ +global DR_GROUP_ID +global drg +try: + if DR_GROUP_ID >= 0: + DR_GROUP_ID += 1 +except NameError: + DR_GROUP_ID = 0 + drg = [] + +drg.append(trick.DRAscii("foo2")) +drg[DR_GROUP_ID].set_freq(trick.DR_Always) +drg[DR_GROUP_ID].set_cycle(1) +drg[DR_GROUP_ID].set_single_prec_only(False) +drg[DR_GROUP_ID].add_variable("testSimObject.my_foo.b") +drg[DR_GROUP_ID].set_max_file_size(1 * 1073741824) # multiply converts GiB to B --Dr. Dre +trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) +drg[DR_GROUP_ID].enable() diff --git a/test/SIM_checkpoint_data_recording/Modified_data/realtime.py b/test/SIM_checkpoint_data_recording/Modified_data/realtime.py new file mode 100644 index 00000000..6d5cdd63 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/Modified_data/realtime.py @@ -0,0 +1,10 @@ +trick.frame_log_on() +trick.real_time_enable() +trick.exec_set_software_frame(0.1) +trick.itimer_enable() + +trick.exec_set_enable_freeze(True) +# trick.exec_set_freeze_command(True) + +# simControlPanel = trick.SimControlPanel() +# trick.add_external_application(simControlPanel) diff --git a/test/SIM_checkpoint_data_recording/README.md b/test/SIM_checkpoint_data_recording/README.md new file mode 100644 index 00000000..c5e7629d --- /dev/null +++ b/test/SIM_checkpoint_data_recording/README.md @@ -0,0 +1,39 @@ +This test suite runs different data recording and checkpoint combinations in an effort to document and test expected behaviors. + +RUN_test1 +Checkpoint dumped at t=5 with data recording +Run started without data recording +Checkpoint loaded at t=5 +Expected: log_foo.csv contains data recorded from t=5+ + +RUN_test2 +Checkpoint dumped at t=5 without data recording +Run started with data recording +Checkpoint loaded at t=5 +Expected: log_foo.csv does not exist + +RUN_test3 +Checkpoint dumped at t=5 with data recording +Run started with data recording +Checkpoint loaded at t=5 +Expected: log_foo.csv contains data recorded from t=5+ + +RUN_test4 +Checkpoint dumped at t=2 with data recording +Run started with data recording +Checkpoint loaded at t=5 +Expected: log_foo.csv contains data recorded from t=2+ + +RUN_test5 +Checkpoint dumped at t=7 with data recording +Run started with data recording +Checkpoint loaded at t=5 +Expected: log_foo.csv contains data recorded from t=7+ + +RUN_test6 +Checkpoint dumped at t=7 with data recording group foo2 +Run started with data recording group 1 +Checkpoint loaded at t=5 +Expected: ? + +Overall: expectation is that what loads in from the checkpoint should take precedence and overwrite the file of the same name. \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test/dump.py b/test/SIM_checkpoint_data_recording/RUN_test/dump.py new file mode 100644 index 00000000..749d69d4 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test/dump.py @@ -0,0 +1,14 @@ +import trick +from trick.unit_test import * + +# This was just here for convenience to dump the checkpoints. + +def main(): + exec(open("Modified_data/foo.dr").read()) + + trick.checkpoint(5.0) + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test/input.py b/test/SIM_checkpoint_data_recording/RUN_test/input.py new file mode 100644 index 00000000..47aaa019 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test/input.py @@ -0,0 +1,10 @@ +def main(): + + exec(open("Modified_data/realtime.py").read()) + + trick.exec_set_software_frame(0.10) + trick.exec_set_freeze_frame(0.10) + trick.stop(5.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test1/dump.py b/test/SIM_checkpoint_data_recording/RUN_test1/dump.py new file mode 100644 index 00000000..749d69d4 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test1/dump.py @@ -0,0 +1,14 @@ +import trick +from trick.unit_test import * + +# This was just here for convenience to dump the checkpoints. + +def main(): + exec(open("Modified_data/foo.dr").read()) + + trick.checkpoint(5.0) + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test1/ref_log_foo.csv b/test/SIM_checkpoint_data_recording/RUN_test1/ref_log_foo.csv new file mode 100644 index 00000000..37c97556 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test1/ref_log_foo.csv @@ -0,0 +1,51 @@ +sys.exec.out.time {s},testSimObject.my_foo.a {1},testSimObject.my_foo.b {1} + 5.1,6,12 + 5.2,6,12 + 5.3,6,12 + 5.4,6,12 + 5.5,6,12 + 5.6,6,12 + 5.7,6,12 + 5.8,6,12 + 5.9,6,12 + 6,7,14 + 6.1,7,14 + 6.2,7,14 + 6.3,7,14 + 6.4,7,14 + 6.5,7,14 + 6.6,7,14 + 6.7,7,14 + 6.8,7,14 + 6.9,7,14 + 7,8,16 + 7.1,8,16 + 7.2,8,16 + 7.3,8,16 + 7.4,8,16 + 7.5,8,16 + 7.6,8,16 + 7.7,8,16 + 7.8,8,16 + 7.9,8,16 + 8,9,18 + 8.1,9,18 + 8.199999999999999,9,18 + 8.300000000000001,9,18 + 8.4,9,18 + 8.5,9,18 + 8.6,9,18 + 8.699999999999999,9,18 + 8.800000000000001,9,18 + 8.9,9,18 + 9,10,20 + 9.1,10,20 + 9.199999999999999,10,20 + 9.300000000000001,10,20 + 9.4,10,20 + 9.5,10,20 + 9.6,10,20 + 9.699999999999999,10,20 + 9.800000000000001,10,20 + 9.9,10,20 + 10,11,22 diff --git a/test/SIM_checkpoint_data_recording/RUN_test1/unit_test.py b/test/SIM_checkpoint_data_recording/RUN_test1/unit_test.py new file mode 100644 index 00000000..d5b6008c --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test1/unit_test.py @@ -0,0 +1,9 @@ +import trick + + +def main(): + trick.add_read(5.0, 'trick.load_checkpoint("RUN_test1/chkpnt_5.000000")') # This checkpoint has data recording + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test2/check_log.sh b/test/SIM_checkpoint_data_recording/RUN_test2/check_log.sh new file mode 100755 index 00000000..d0e3cf2b --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test2/check_log.sh @@ -0,0 +1,9 @@ +FILE=log_foo.csv +if test -f "$FILE"; then + echo "$FILE exists." + exit 1 +else + # Expect the file not to exist. + echo "$FILE does not exist." + exit 0 +fi \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test2/dump.py b/test/SIM_checkpoint_data_recording/RUN_test2/dump.py new file mode 100644 index 00000000..d05fc532 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test2/dump.py @@ -0,0 +1,12 @@ +import trick +from trick.unit_test import * + +# This was just here for convenience to dump the checkpoints. + +def main(): + trick.checkpoint(5.0) + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test2/unit_test.py b/test/SIM_checkpoint_data_recording/RUN_test2/unit_test.py new file mode 100644 index 00000000..8ba141c1 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test2/unit_test.py @@ -0,0 +1,11 @@ +import trick + +def main(): + exec(open("Modified_data/foo.dr").read()) + + trick.add_read(5.0, 'trick.load_checkpoint("RUN_test2/chkpnt_5.000000")') # this checkpoint does not contain data recording + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test3/dump.py b/test/SIM_checkpoint_data_recording/RUN_test3/dump.py new file mode 100644 index 00000000..749d69d4 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test3/dump.py @@ -0,0 +1,14 @@ +import trick +from trick.unit_test import * + +# This was just here for convenience to dump the checkpoints. + +def main(): + exec(open("Modified_data/foo.dr").read()) + + trick.checkpoint(5.0) + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test3/ref_log_foo.csv b/test/SIM_checkpoint_data_recording/RUN_test3/ref_log_foo.csv new file mode 100644 index 00000000..37c97556 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test3/ref_log_foo.csv @@ -0,0 +1,51 @@ +sys.exec.out.time {s},testSimObject.my_foo.a {1},testSimObject.my_foo.b {1} + 5.1,6,12 + 5.2,6,12 + 5.3,6,12 + 5.4,6,12 + 5.5,6,12 + 5.6,6,12 + 5.7,6,12 + 5.8,6,12 + 5.9,6,12 + 6,7,14 + 6.1,7,14 + 6.2,7,14 + 6.3,7,14 + 6.4,7,14 + 6.5,7,14 + 6.6,7,14 + 6.7,7,14 + 6.8,7,14 + 6.9,7,14 + 7,8,16 + 7.1,8,16 + 7.2,8,16 + 7.3,8,16 + 7.4,8,16 + 7.5,8,16 + 7.6,8,16 + 7.7,8,16 + 7.8,8,16 + 7.9,8,16 + 8,9,18 + 8.1,9,18 + 8.199999999999999,9,18 + 8.300000000000001,9,18 + 8.4,9,18 + 8.5,9,18 + 8.6,9,18 + 8.699999999999999,9,18 + 8.800000000000001,9,18 + 8.9,9,18 + 9,10,20 + 9.1,10,20 + 9.199999999999999,10,20 + 9.300000000000001,10,20 + 9.4,10,20 + 9.5,10,20 + 9.6,10,20 + 9.699999999999999,10,20 + 9.800000000000001,10,20 + 9.9,10,20 + 10,11,22 diff --git a/test/SIM_checkpoint_data_recording/RUN_test3/unit_test.py b/test/SIM_checkpoint_data_recording/RUN_test3/unit_test.py new file mode 100644 index 00000000..c91faf0e --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test3/unit_test.py @@ -0,0 +1,12 @@ +import trick + +def main(): + + exec(open("Modified_data/foo.dr").read()) + + trick.add_read(5.0, 'trick.load_checkpoint("RUN_test3/chkpnt_5.000000")') # contains data recording + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test4/dump.py b/test/SIM_checkpoint_data_recording/RUN_test4/dump.py new file mode 100644 index 00000000..00df66fd --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test4/dump.py @@ -0,0 +1,14 @@ +import trick +from trick.unit_test import * + +# This was just here for convenience to dump the checkpoints. + +def main(): + exec(open("Modified_data/foo.dr").read()) + + trick.checkpoint(2.0) + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test4/ref_log_foo.csv b/test/SIM_checkpoint_data_recording/RUN_test4/ref_log_foo.csv new file mode 100644 index 00000000..13327df8 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test4/ref_log_foo.csv @@ -0,0 +1,81 @@ +sys.exec.out.time {s},testSimObject.my_foo.a {1},testSimObject.my_foo.b {1} + 2.1,3,6 + 2.2,3,6 + 2.3,3,6 + 2.4,3,6 + 2.5,3,6 + 2.6,3,6 + 2.7,3,6 + 2.8,3,6 + 2.9,3,6 + 3,4,8 + 3.1,4,8 + 3.2,4,8 + 3.3,4,8 + 3.4,4,8 + 3.5,4,8 + 3.6,4,8 + 3.7,4,8 + 3.8,4,8 + 3.9,4,8 + 4,5,10 + 4.1,5,10 + 4.2,5,10 + 4.3,5,10 + 4.4,5,10 + 4.5,5,10 + 4.6,5,10 + 4.7,5,10 + 4.8,5,10 + 4.9,5,10 + 5,6,12 + 5.1,6,12 + 5.2,6,12 + 5.3,6,12 + 5.4,6,12 + 5.5,6,12 + 5.6,6,12 + 5.7,6,12 + 5.8,6,12 + 5.9,6,12 + 6,7,14 + 6.1,7,14 + 6.2,7,14 + 6.3,7,14 + 6.4,7,14 + 6.5,7,14 + 6.6,7,14 + 6.7,7,14 + 6.8,7,14 + 6.9,7,14 + 7,8,16 + 7.1,8,16 + 7.2,8,16 + 7.3,8,16 + 7.4,8,16 + 7.5,8,16 + 7.6,8,16 + 7.7,8,16 + 7.8,8,16 + 7.9,8,16 + 8,9,18 + 8.1,9,18 + 8.199999999999999,9,18 + 8.300000000000001,9,18 + 8.4,9,18 + 8.5,9,18 + 8.6,9,18 + 8.699999999999999,9,18 + 8.800000000000001,9,18 + 8.9,9,18 + 9,10,20 + 9.1,10,20 + 9.199999999999999,10,20 + 9.300000000000001,10,20 + 9.4,10,20 + 9.5,10,20 + 9.6,10,20 + 9.699999999999999,10,20 + 9.800000000000001,10,20 + 9.9,10,20 + 10,11,22 diff --git a/test/SIM_checkpoint_data_recording/RUN_test4/unit_test.py b/test/SIM_checkpoint_data_recording/RUN_test4/unit_test.py new file mode 100644 index 00000000..f07baf1d --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test4/unit_test.py @@ -0,0 +1,12 @@ +import trick + +def main(): + + exec(open("Modified_data/foo.dr").read()) + + trick.add_read(5.0, 'trick.load_checkpoint("RUN_test4/chkpnt_2.000000")') # contains data recording, starts at t=2 + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test5/dump.py b/test/SIM_checkpoint_data_recording/RUN_test5/dump.py new file mode 100644 index 00000000..565a891b --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test5/dump.py @@ -0,0 +1,14 @@ +import trick +from trick.unit_test import * + +# This was just here for convenience to dump the checkpoints. + +def main(): + exec(open("Modified_data/foo.dr").read()) + + trick.checkpoint(7.0) + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test5/ref_log_foo.csv b/test/SIM_checkpoint_data_recording/RUN_test5/ref_log_foo.csv new file mode 100644 index 00000000..306de1b4 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test5/ref_log_foo.csv @@ -0,0 +1,31 @@ +sys.exec.out.time {s},testSimObject.my_foo.a {1},testSimObject.my_foo.b {1} + 7.1,8,16 + 7.2,8,16 + 7.3,8,16 + 7.4,8,16 + 7.5,8,16 + 7.6,8,16 + 7.7,8,16 + 7.8,8,16 + 7.9,8,16 + 8,9,18 + 8.1,9,18 + 8.199999999999999,9,18 + 8.300000000000001,9,18 + 8.4,9,18 + 8.5,9,18 + 8.6,9,18 + 8.699999999999999,9,18 + 8.800000000000001,9,18 + 8.9,9,18 + 9,10,20 + 9.1,10,20 + 9.199999999999999,10,20 + 9.300000000000001,10,20 + 9.4,10,20 + 9.5,10,20 + 9.6,10,20 + 9.699999999999999,10,20 + 9.800000000000001,10,20 + 9.9,10,20 + 10,11,22 diff --git a/test/SIM_checkpoint_data_recording/RUN_test5/unit_test.py b/test/SIM_checkpoint_data_recording/RUN_test5/unit_test.py new file mode 100644 index 00000000..649cb370 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test5/unit_test.py @@ -0,0 +1,12 @@ +import trick + +def main(): + + exec(open("Modified_data/foo.dr").read()) + + trick.add_read(5.0, 'trick.load_checkpoint("RUN_test5/chkpnt_7.000000")') # contains data recording, starts at t=7 + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test6/dump.py b/test/SIM_checkpoint_data_recording/RUN_test6/dump.py new file mode 100644 index 00000000..7b7db62a --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test6/dump.py @@ -0,0 +1,14 @@ +import trick +from trick.unit_test import * + +# This was just here for convenience to dump the checkpoints. + +def main(): + exec(open("Modified_data/foo2.dr").read()) + + trick.checkpoint(7.0) + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/RUN_test6/ref_log_foo2.csv b/test/SIM_checkpoint_data_recording/RUN_test6/ref_log_foo2.csv new file mode 100644 index 00000000..f7b15a2b --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test6/ref_log_foo2.csv @@ -0,0 +1,4 @@ +sys.exec.out.time {s},testSimObject.my_foo.b {1} + 8,18 + 9,20 + 10,22 diff --git a/test/SIM_checkpoint_data_recording/RUN_test6/unit_test.py b/test/SIM_checkpoint_data_recording/RUN_test6/unit_test.py new file mode 100644 index 00000000..f5b5f315 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/RUN_test6/unit_test.py @@ -0,0 +1,13 @@ +import trick + +def main(): + + exec(open("Modified_data/foo.dr").read()) + + # trick.checkpoint(7.0) + trick.add_read(5.0, 'trick.load_checkpoint("RUN_test6/chkpnt_7.000000")') # contains data recording, starts at t=7 + + trick.stop(10.0) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/S_define b/test/SIM_checkpoint_data_recording/S_define new file mode 100644 index 00000000..6ec5bc45 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/S_define @@ -0,0 +1,16 @@ +#include "sim_objects/default_trick_sys.sm" +##include "Foo.hh" + +class TestSimObject : public Trick::SimObject { + + public: + Foo my_foo; + + TestSimObject () { + ("initialization") my_foo.init (); + (1.0, "scheduled") my_foo.increment () ; + } + +}; + +TestSimObject testSimObject; diff --git a/test/SIM_checkpoint_data_recording/S_overrides.mk b/test/SIM_checkpoint_data_recording/S_overrides.mk new file mode 100644 index 00000000..16badce5 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/S_overrides.mk @@ -0,0 +1,7 @@ +TRICK_CFLAGS += -I./models +TRICK_CXXFLAGS += -I./models + +clean_logs: + rm RUN_test*/log_foo* + +clean: clean_logs \ No newline at end of file diff --git a/test/SIM_checkpoint_data_recording/models/Foo.cpp b/test/SIM_checkpoint_data_recording/models/Foo.cpp new file mode 100644 index 00000000..53e0e3f8 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/models/Foo.cpp @@ -0,0 +1 @@ +#include "Foo.hh" diff --git a/test/SIM_checkpoint_data_recording/models/Foo.hh b/test/SIM_checkpoint_data_recording/models/Foo.hh new file mode 100644 index 00000000..4bc7d023 --- /dev/null +++ b/test/SIM_checkpoint_data_recording/models/Foo.hh @@ -0,0 +1,16 @@ + +class Foo { + public: + int a; + int b; + + void init () { + a = 0; + b = 0; + } + + void increment () { + a++; + b+=2; + } +}; \ No newline at end of file diff --git a/test_sims.yml b/test_sims.yml index dd0d5a53..5f3c6abe 100644 --- a/test_sims.yml +++ b/test_sims.yml @@ -21,8 +21,8 @@ SIM_measurement_units: path: test/SIM_measurement_units SIM_parse_s_define: path: test/SIM_parse_s_define -# SIM_target_specific_variables: <-- This sim has to sit out on Mac until we fix the sprintf issue -# path: test/SIM_target_specific_variables +SIM_target_specific_variables: + path: test/SIM_target_specific_variables SIM_test_abstract: path: test/SIM_test_abstract SIM_test_inherit: @@ -233,3 +233,46 @@ SIM_test_dr: - test/SIM_test_dr/RUN_test/log_DR_typesASCII.csv vs. test/SIM_test_dr/RUN_test/Ref_Logs/log_DR_typesASCII_Master.csv - test/SIM_test_dr/RUN_test/log_DR_bitfieldsBINARY.trk vs. test/SIM_test_dr/RUN_test/Ref_Logs/log_DR_bitfieldsBINARY.trk +# All the dump.py runs dump a checkpoint +# All the unit_test.py runs load that checkpoint and then compare against expected logs +SIM_checkpoint_data_recording: + path: test/SIM_checkpoint_data_recording + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test1/dump.py: + returns: 0 + RUN_test2/dump.py: + returns: 0 + RUN_test3/dump.py: + returns: 0 + RUN_test4/dump.py: + returns: 0 + RUN_test5/dump.py: + returns: 0 + # RUN_test6/dump.py: + # returns: 0 + + RUN_test1/unit_test.py: + returns: 0 + compare: + - test/SIM_checkpoint_data_recording/RUN_test1/ref_log_foo.csv vs. test/SIM_checkpoint_data_recording/RUN_test1/log_foo.csv + RUN_test2/unit_test.py: + returns: 0 + analyze: './test/SIM_checkpoint_data_recording/RUN_test2/check_log.sh' + RUN_test3/unit_test.py: + returns: 0 + compare: + - test/SIM_checkpoint_data_recording/RUN_test3/ref_log_foo.csv vs. test/SIM_checkpoint_data_recording/RUN_test3/log_foo.csv + RUN_test4/unit_test.py: + returns: 0 + compare: + - test/SIM_checkpoint_data_recording/RUN_test4/ref_log_foo.csv vs. test/SIM_checkpoint_data_recording/RUN_test4/log_foo.csv + RUN_test5/unit_test.py: + returns: 0 + compare: + - test/SIM_checkpoint_data_recording/RUN_test5/ref_log_foo.csv vs. test/SIM_checkpoint_data_recording/RUN_test5/log_foo.csv + # RUN_test6/unit_test.py: + # returns: 0 + # compare: + # - test/SIM_checkpoint_data_recording/RUN_test6/ref_log_foo2.csv vs. test/SIM_checkpoint_data_recording/RUN_test6/log_foo2.csv diff --git a/trickops.py b/trickops.py index e64c0087..743d99ab 100644 --- a/trickops.py +++ b/trickops.py @@ -23,13 +23,23 @@ class SimTestWorkflow(TrickWorkflow): run_jobs = self.get_jobs(kind='run') analysis_jobs = self.get_jobs(kind='analyze') - # This job dumps a checkpoint that is then read in and checked by RUN_test/unit_test.py in the same sim + # This job in SIM_stls dumps a checkpoint that is then read in and checked by RUN_test/unit_test.py in the same sim # This is a workaround to ensure that this run goes first. - first_phase_job = self.get_sim('SIM_stls').get_run(input='RUN_test/setup.py').get_run_job() - run_jobs.remove(first_phase_job) + first_phase_jobs = [] + stl_dump_job = self.get_sim('SIM_stls').get_run(input='RUN_test/setup.py').get_run_job() + first_phase_jobs.append(stl_dump_job) + run_jobs.remove(stl_dump_job) + + # Same with SIM_checkpoint_data_recording - half the runs dump checkpoints, the others read and verify. + # Make sure that the dump checkpoint runs go first. + num_dump_runs = int(len(self.get_sim('SIM_checkpoint_data_recording').get_runs())/2) + for i in range(num_dump_runs): + job = self.get_sim('SIM_checkpoint_data_recording').get_run(input=('RUN_test' + str(i+1) + '/dump.py')).get_run_job() + first_phase_jobs.append(job) + run_jobs.remove(job) builds_status = self.execute_jobs(build_jobs, max_concurrent=self.cpus, header='Executing all sim builds.') - first_phase_run_status = self.execute_jobs([first_phase_job], max_concurrent=self.cpus, header="Executing required first phase runs.") + first_phase_run_status = self.execute_jobs(first_phase_jobs, max_concurrent=self.cpus, header="Executing required first phase runs.") runs_status = self.execute_jobs(run_jobs, max_concurrent=self.cpus, header='Executing all sim runs.') comparison_result = self.compare() analysis_status = self.execute_jobs(analysis_jobs, max_concurrent=self.cpus, header='Executing all analysis.') @@ -38,7 +48,7 @@ class SimTestWorkflow(TrickWorkflow): self.status_summary() # Print a Succinct summary # Dump failing logs - jobs = build_jobs + run_jobs + jobs = build_jobs + first_phase_jobs + run_jobs for job in jobs: if job.get_status() == Job.Status.FAILED: print("Failing job: ", job.name) From 8611d7c40e530d95486f62e61ad4680c50ff8cf4 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Mon, 21 Nov 2022 15:25:08 -0600 Subject: [PATCH 102/162] Refactor workflow distros and workflow python matrix (#1400) (#1401) closes #1400 --- .github/workflows/alt_linux_distros.yml | 168 ++++++++++++++++++++++++ .github/workflows/test_32.yml | 11 +- .github/workflows/test_32_oracle.yml | 11 +- .github/workflows/test_linux.yml | 22 +--- .github/workflows/test_linux_py2.yml | 166 +++++++++++++++++++++++ .github/workflows/trickops.yml | 11 +- 6 files changed, 344 insertions(+), 45 deletions(-) create mode 100644 .github/workflows/alt_linux_distros.yml create mode 100644 .github/workflows/test_linux_py2.yml diff --git a/.github/workflows/alt_linux_distros.yml b/.github/workflows/alt_linux_distros.yml new file mode 100644 index 00000000..28249b55 --- /dev/null +++ b/.github/workflows/alt_linux_distros.yml @@ -0,0 +1,168 @@ +name: More Linux + +on: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: + +jobs: + build: + strategy: + fail-fast: false + matrix: + cfg: +#-------- Operating Systems ---------------- + - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } + - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } + - { os: debian, tag: 10, arch: debian, arch_ver: 10 } + - { os: debian, tag: 11, arch: debian, arch_ver: 11 } + - { os: debian, tag: bookworm, arch: debian, arch_ver: 12 } + - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } + python: [2, 3] + +#-------- Defaults -------------------------- + include: + - cfg: {} + deps: >- + bison + clang + flex + git + llvm + make + maven + cmake + zip + install_gtest: echo gtest already installed + conf_pkg: echo package manager already configured + install_cmd: install -y +#-------- Debian-based Dependencies ---------------- + - cfg: { arch: debian } + pkg_mgr: apt-get + conf_pkg: apt-get update + arch_deps: >- + swig + curl + g++ + libx11-dev + libxml2-dev + libxt-dev + libmotif-common + libmotif-dev + zlib1g-dev + llvm-dev + libclang-dev + libudunits2-dev + libgtest-dev + default-jdk + python2.7-dev + python3-dev + python3-pip + python3-venv + install_gtest: | + apt-get install -y libgtest-dev + cd /usr/src/gtest + cmake . + make + cp lib/libgtest* /usr/lib/ +#-------- RHEL Dependencies ---------------- + - cfg: { arch: rhel } + arch_deps: >- + clang-devel + gcc + gcc-c++ + java-11-openjdk-devel + libxml2-devel + llvm-devel + llvm-static + ncurses-devel + openmotif + openmotif-devel + perl + perl-Digest-MD5 + udunits2 + udunits2-devel + which + zlib-devel + python2-devel + python3-devel +#-------- RHEL 8-based Only Dependencies ---------------- + - cfg: { arch: rhel, arch_ver: 8 } + pkg_mgr: dnf + tag_deps: >- + swig + diffutils + conf_pkg: | + dnf -y install epel-release + dnf -y update + dnf install -y 'dnf-command(config-manager)' + install_gtest: | + dnf config-manager --enable powertools + dnf install -y gtest-devel +#-------- Debian 10-based Only Dependencies ---------------- + - cfg: { arch: debian, arch_ver: 10 } + install_gtest: | + apt-get install -y libgtest-dev + cd /usr/src/gtest + cmake . + make + cp libgtest* /usr/lib/ +#-------- Debian 11-based Only Dependencies ---------------- + - cfg: { arch: debian, arch_ver: 11 } + conf_pkg: | + export DEBIAN_FRONTEND=noninteractive + apt-get update + apt-get install -y tzdata +#-------- OS and Version Specific Dependencies ---------------- +# None +#-------- Job definition ---------------- + runs-on: ubuntu-latest + container: docker://${{matrix.cfg.os}}:${{matrix.cfg.tag}} + steps: + - name: Update Package Manager + run: ${{matrix.conf_pkg}} + - name: Install Dependencies + run: > + ${{matrix.pkg_mgr}} + ${{matrix.install_cmd}} + ${{matrix.deps}} + ${{matrix.arch_deps}} + ${{matrix.os_deps}} + ${{matrix.tag_deps}} + - name: Install GTest + run: ${{matrix.install_gtest}} + - name: Checkout repository + uses: actions/checkout@master + - name: Configure Trick + run: | + export MAKEFLAGS=-j`nproc` + export PYTHON_VERSION=${{matrix.python}} + ./configure + - name: Build Trick + run: | + export MAKEFLAGS=-j`nproc` + make + - name: Test + run: | + cd share/trick/trickops/ + python3 -m venv .venv && . .venv/bin/activate && pip3 install -r requirements.txt + cd ../../../; make test + - name: Upload Tests + uses: actions/upload-artifact@v3.0.0 + if: success() || failure() # run this step even if previous step failed + with: + name: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} + path: trick_test/*.xml + retention-days: 1 +# Uncomment for build artifacts +# - name: Upload Trick Build +# uses: actions/upload-artifact@v3.0.0 +# with: +# name: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} +# path: | +# bin +# include +# lib +# share +# libexec +# retention-days: 1 diff --git a/.github/workflows/test_32.yml b/.github/workflows/test_32.yml index 15c20737..6272ff4f 100644 --- a/.github/workflows/test_32.yml +++ b/.github/workflows/test_32.yml @@ -1,14 +1,9 @@ name: 32-bit on: - push: - branches: - - master - paths-ignore: - - 'docs/**' - - '.github/workflows/**' - - '!.github/workflows/test_32.yml' - pull_request: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: jobs: trick_32bit: diff --git a/.github/workflows/test_32_oracle.yml b/.github/workflows/test_32_oracle.yml index 794595aa..dc0db9fa 100644 --- a/.github/workflows/test_32_oracle.yml +++ b/.github/workflows/test_32_oracle.yml @@ -1,14 +1,9 @@ name: 32-bit Oracle on: - push: - branches: - - master - paths-ignore: - - 'docs/**' - - '.github/workflows/**' - - '!.github/workflows/test_32_oracle.yml' - pull_request: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: jobs: trick_32bit_oracle: diff --git a/.github/workflows/test_linux.yml b/.github/workflows/test_linux.yml index 109c0b56..42637d40 100644 --- a/.github/workflows/test_linux.yml +++ b/.github/workflows/test_linux.yml @@ -18,17 +18,11 @@ jobs: matrix: cfg: #-------- Operating Systems ---------------- - - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } - - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } - { os: ubuntu, tag: 22.04, arch: debian, arch_ver: 12 } - - { os: debian, tag: 10, arch: debian, arch_ver: 10 } - - { os: debian, tag: 11, arch: debian, arch_ver: 11 } - - { os: debian, tag: bookworm, arch: debian, arch_ver: 12 } - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } - - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } - python: [2, 3] + python: [3] #-------- Defaults -------------------------- include: @@ -120,20 +114,6 @@ jobs: install_gtest: | dnf config-manager --enable powertools dnf install -y gtest-devel -#-------- Debian 10-based Only Dependencies ---------------- - - cfg: { arch: debian, arch_ver: 10 } - install_gtest: | - apt-get install -y libgtest-dev - cd /usr/src/gtest - cmake . - make - cp libgtest* /usr/lib/ -#-------- Debian 11-based Only Dependencies ---------------- - - cfg: { arch: debian, arch_ver: 11 } - conf_pkg: | - export DEBIAN_FRONTEND=noninteractive - apt-get update - apt-get install -y tzdata #-------- OS and Version Specific Dependencies ---------------- - cfg: { os: oraclelinux } install_gtest: | diff --git a/.github/workflows/test_linux_py2.yml b/.github/workflows/test_linux_py2.yml new file mode 100644 index 00000000..f14fc1c4 --- /dev/null +++ b/.github/workflows/test_linux_py2.yml @@ -0,0 +1,166 @@ +name: 'Linux Python 2' + +on: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: + +jobs: + build: + strategy: + fail-fast: false + matrix: + cfg: +#-------- Operating Systems ---------------- + - { os: ubuntu, tag: 22.04, arch: debian, arch_ver: 12 } + - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } + - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } + - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } + python: [2] + +#-------- Defaults -------------------------- + include: + - cfg: {} + deps: >- + bison + clang + flex + git + llvm + make + maven + cmake + zip + install_gtest: echo gtest already installed + conf_pkg: echo package manager already configured + install_cmd: install -y +#-------- Debian-based Dependencies ---------------- + - cfg: { arch: debian } + pkg_mgr: apt-get + conf_pkg: apt-get update + arch_deps: >- + swig + curl + g++ + libx11-dev + libxml2-dev + libxt-dev + libmotif-common + libmotif-dev + zlib1g-dev + llvm-dev + libclang-dev + libudunits2-dev + libgtest-dev + default-jdk + python2.7-dev + python3-dev + python3-pip + python3-venv + install_gtest: | + apt-get install -y libgtest-dev + cd /usr/src/gtest + cmake . + make + cp lib/libgtest* /usr/lib/ +#-------- RHEL Dependencies ---------------- + - cfg: { arch: rhel } + arch_deps: >- + clang-devel + gcc + gcc-c++ + java-11-openjdk-devel + libxml2-devel + llvm-devel + llvm-static + ncurses-devel + openmotif + openmotif-devel + perl + perl-Digest-MD5 + udunits2 + udunits2-devel + which + zlib-devel + python2-devel + python3-devel +#-------- RHEL 7-based Only Dependencies ---------------- + - cfg: { arch: rhel, arch_ver: 7 } + pkg_mgr: yum + conf_pkg: | + yum -y install epel-release + yum -y update + os_deps: >- + libX11-devel + libXt-devel + swig3 + gtest-devel +#-------- RHEL 8-based Only Dependencies ---------------- + - cfg: { arch: rhel, arch_ver: 8 } + pkg_mgr: dnf + tag_deps: >- + swig + diffutils + conf_pkg: | + dnf -y install epel-release + dnf -y update + dnf install -y 'dnf-command(config-manager)' + install_gtest: | + dnf config-manager --enable powertools + dnf install -y gtest-devel +#-------- OS and Version Specific Dependencies ---------------- + - cfg: { os: oraclelinux } + install_gtest: | + dnf config-manager --enable ol8_codeready_builder + dnf install -y gtest-devel +#-------- Job definition ---------------- + runs-on: ubuntu-latest + container: docker://${{matrix.cfg.os}}:${{matrix.cfg.tag}} + steps: + - name: Update Package Manager + run: ${{matrix.conf_pkg}} + - name: Install Dependencies + run: > + ${{matrix.pkg_mgr}} + ${{matrix.install_cmd}} + ${{matrix.deps}} + ${{matrix.arch_deps}} + ${{matrix.os_deps}} + ${{matrix.tag_deps}} + - name: Install GTest + run: ${{matrix.install_gtest}} + - name: Checkout repository + uses: actions/checkout@master + - name: Configure Trick + run: | + export MAKEFLAGS=-j`nproc` + export PYTHON_VERSION=${{matrix.python}} + ./configure + - name: Build Trick + run: | + export MAKEFLAGS=-j`nproc` + make + - name: Test + run: | + cd share/trick/trickops/ + python3 -m venv .venv && . .venv/bin/activate && pip3 install -r requirements.txt + cd ../../../; make test + - name: Upload Tests + uses: actions/upload-artifact@v3.0.0 + if: success() || failure() # run this step even if previous step failed + with: + name: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} + path: trick_test/*.xml + retention-days: 1 +# Uncomment for build artifacts +# - name: Upload Trick Build +# uses: actions/upload-artifact@v3.0.0 +# with: +# name: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} +# path: | +# bin +# include +# lib +# share +# libexec +# retention-days: 1 diff --git a/.github/workflows/trickops.yml b/.github/workflows/trickops.yml index 6347ff8a..241f2705 100644 --- a/.github/workflows/trickops.yml +++ b/.github/workflows/trickops.yml @@ -1,14 +1,9 @@ name: TrickOps # This workflow is triggered on pushes to the repository. on: - push: - branches: - - master - paths-ignore: - - 'docs/**' - - '.github/workflows/**' - - '!.github/workflows/trickops.yml' - pull_request: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: defaults: run: From fb0a760a71de2cc53cecc0ddbdd7acc8b9e1fe31 Mon Sep 17 00:00:00 2001 From: Scott Fennell Date: Tue, 22 Nov 2022 13:03:03 -0600 Subject: [PATCH 103/162] Add GitHub GUI reports to macOS, More Linux, and Linux Python 2 (#1405) closes #1404 --- .../workflows/report_alt_linux_distros.yml | 30 +++++++++++++++++++ .github/workflows/report_linux.yml | 11 ++----- .github/workflows/report_linux_py2.yml | 29 ++++++++++++++++++ .github/workflows/report_macos.yml | 20 +++++++++++++ .github/workflows/test_macos.yml | 8 +++++ 5 files changed, 90 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/report_alt_linux_distros.yml create mode 100644 .github/workflows/report_linux_py2.yml create mode 100644 .github/workflows/report_macos.yml diff --git a/.github/workflows/report_alt_linux_distros.yml b/.github/workflows/report_alt_linux_distros.yml new file mode 100644 index 00000000..659fc647 --- /dev/null +++ b/.github/workflows/report_alt_linux_distros.yml @@ -0,0 +1,30 @@ +name: 'Report More Linux' + +on: + workflow_run: + workflows: ['More Linux'] # runs after CI workflow + types: + - completed +jobs: + report: + strategy: + fail-fast: false + matrix: + cfg: +#-------- Operating Systems ---------------- + - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } + - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } + - { os: debian, tag: 10, arch: debian, arch_ver: 10 } + - { os: debian, tag: 11, arch: debian, arch_ver: 11 } + - { os: debian, tag: bookworm, arch: debian, arch_ver: 12 } + - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } + python: [2, 3] + + runs-on: ubuntu-latest + steps: + - uses: dorny/test-reporter@v1 + with: + artifact: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} # artifact name + name: Results_Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} # Name of the check run which will be created + path: '*.xml' # Path to test results (inside artifact .zip) + reporter: java-junit # Format of test results diff --git a/.github/workflows/report_linux.yml b/.github/workflows/report_linux.yml index 13499354..668be883 100644 --- a/.github/workflows/report_linux.yml +++ b/.github/workflows/report_linux.yml @@ -1,4 +1,4 @@ -name: 'Report' +name: 'Report Linux' on: workflow_run: @@ -12,17 +12,12 @@ jobs: matrix: cfg: #-------- Operating Systems ---------------- - - { os: ubuntu, tag: 18.04, arch: debian, arch_ver: 10 } - - { os: ubuntu, tag: 20.04, arch: debian, arch_ver: 11 } - { os: ubuntu, tag: 22.04, arch: debian, arch_ver: 12 } - - { os: debian, tag: 10, arch: debian, arch_ver: 10 } - - { os: debian, tag: 11, arch: debian, arch_ver: 11 } - - { os: debian, tag: bookworm, arch: debian, arch_ver: 12 } - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } - - { os: almalinux, tag: 8, arch: rhel, arch_ver: 8 } - python: [2, 3] + python: [3] + runs-on: ubuntu-latest steps: diff --git a/.github/workflows/report_linux_py2.yml b/.github/workflows/report_linux_py2.yml new file mode 100644 index 00000000..d324d7b8 --- /dev/null +++ b/.github/workflows/report_linux_py2.yml @@ -0,0 +1,29 @@ +name: 'Report Linux Python 2' + +on: + workflow_run: + workflows: ['Linux Python 2'] # runs after CI workflow + types: + - completed +jobs: + report: + strategy: + fail-fast: false + matrix: + cfg: +#-------- Operating Systems ---------------- + - { os: ubuntu, tag: 22.04, arch: debian, arch_ver: 12 } + - { os: centos, tag: 7, arch: rhel, arch_ver: 7 } + - { os: rockylinux, tag: 8, arch: rhel, arch_ver: 8 } + - { os: oraclelinux, tag: 8, arch: rhel, arch_ver: 8 } + python: [2] + + + runs-on: ubuntu-latest + steps: + - uses: dorny/test-reporter@v1 + with: + artifact: Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} # artifact name + name: Results_Trick_${{matrix.cfg.os}}${{matrix.cfg.tag}}_py${{matrix.python}} # Name of the check run which will be created + path: '*.xml' # Path to test results (inside artifact .zip) + reporter: java-junit # Format of test results diff --git a/.github/workflows/report_macos.yml b/.github/workflows/report_macos.yml new file mode 100644 index 00000000..03b706c1 --- /dev/null +++ b/.github/workflows/report_macos.yml @@ -0,0 +1,20 @@ +name: 'Report macOS' + +on: + workflow_run: + workflows: ['macOS'] # runs after CI workflow + types: + - completed +jobs: + report: + strategy: + fail-fast: false + + runs-on: ubuntu-latest + steps: + - uses: dorny/test-reporter@v1 + with: + artifact: Trick_macos # artifact name + name: Results_Trick_macos # Name of the check run which will be created + path: '*.xml' # Path to test results (inside artifact .zip) + reporter: java-junit # Format of test results diff --git a/.github/workflows/test_macos.yml b/.github/workflows/test_macos.yml index 219fe8ef..d6df3509 100644 --- a/.github/workflows/test_macos.yml +++ b/.github/workflows/test_macos.yml @@ -9,6 +9,7 @@ on: - '.github/workflows/**' - '!.github/workflows/test_macos.yml' pull_request: + workflow_dispatch: jobs: macOS: @@ -38,3 +39,10 @@ jobs: python3 -m venv .venv && source .venv/bin/activate && pip3 install -r requirements.txt export MAKEFLAGS=-j4 cd ../../../; make test + - name: Upload Tests + uses: actions/upload-artifact@v3.0.0 + if: success() || failure() # run this step even if previous step failed + with: + name: Trick_macos + path: trick_test/*.xml + retention-days: 1 From 86b0bc9d39b846b43ec266167d49604b1156b7a4 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 29 Nov 2022 16:29:54 -0600 Subject: [PATCH 104/162] Fix undefined behavior in vs_format_ascii (#1409) --- .../sim_services/VariableServer/vs_format_ascii.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/trick_source/sim_services/VariableServer/vs_format_ascii.cpp b/trick_source/sim_services/VariableServer/vs_format_ascii.cpp index 56855ac7..1dc3e9f2 100644 --- a/trick_source/sim_services/VariableServer/vs_format_ascii.cpp +++ b/trick_source/sim_services/VariableServer/vs_format_ascii.cpp @@ -9,6 +9,7 @@ PROGRAMMERS: (((Keith Vetter) (LinCom) (September 2001) (--))) #include #include #include +#include #include "trick/parameter_types.h" #include "trick/attributes.h" @@ -190,11 +191,15 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si } //end while if (ref->units) { + std::stringstream unit_str; if ( ref->attr->mods & TRICK_MODS_UNITSDASHDASH ) { - snprintf(value, value_size, "%s {--}", value); + unit_str << " {--}"; } else { - snprintf(value, value_size, "%s {%s}", value, ref->units); + unit_str << " {" << ref->units << "}"; + } + size_t max_copy_size = value_size - strlen(value) - 1; + strncat(value, unit_str.str().c_str(), max_copy_size); } return (0); From d1288e3bcfefe1ae993885e8beb48918ed334b0a Mon Sep 17 00:00:00 2001 From: jmpenn Date: Tue, 29 Nov 2022 16:32:35 -0600 Subject: [PATCH 105/162] Update How-To-Make-A-Release.md Change the word "postfix" to "suffix" in three places to make the meaning clearer. --- docs/developer_docs/How-To-Make-A-Release.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/developer_docs/How-To-Make-A-Release.md b/docs/developer_docs/How-To-Make-A-Release.md index d2cbda71..f1863f1b 100644 --- a/docs/developer_docs/How-To-Make-A-Release.md +++ b/docs/developer_docs/How-To-Make-A-Release.md @@ -23,8 +23,8 @@ https://github.com/nasa/trick/releases #### Example https://github.com/nasa/trick/commit/a317c222748e706e89b7f344f6910d1f39824feb #### Steps -* In share/trick/trick_ver.txt change the "current_version" string to match the new version number and remove any postfixes -* In trick_source/java/pom.xml change the \ tag to the new version and remove any postfixes +* In share/trick/trick_ver.txt change the "current_version" string to match the new version number and remove any suffixes (like: "-beta"). +* In trick_source/java/pom.xml change the \ tag to the new version and remove any suffixes. * In CMakeLists.txt change TRICK_MAJOR TRICK_MINOR TRICK_TINY to match the current version, and set TRICK_PRERELEASE to an empty string ### Create a commit, tag, and push to github.com * `git commit -m "update version numbers for Trick Simulation Environment X.Y.Z"` @@ -32,7 +32,7 @@ https://github.com/nasa/trick/commit/a317c222748e706e89b7f344f6910d1f39824feb * `git push origin ` ### Change version numbers back to prerelease and push * Reverse the process of changing the version numbers in the files listed above; update to the next minor prerelease version (or major version if planning a major release soon). - * Remember to add the -beta postfix to the version number + * Remember to add the -beta suffix to the version number * `git commit -m "update version numbers to prerelease X.Y.Z-beta"` * `git push origin master` ### Create the release through the github UI From 0f4ca88da671b243e570b392f67df3a8734cd299 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 29 Nov 2022 16:56:55 -0600 Subject: [PATCH 106/162] Update version numbers for Trick Simulation Environment 19.5.1 --- CMakeLists.txt | 4 ++-- share/trick/trick_ver.txt | 2 +- trick_source/java/pom.xml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 22498788..244a5691 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,9 +5,9 @@ cmake_minimum_required(VERSION 3.1) project(trick NONE) set(TRICK_MAJOR 19) set(TRICK_MINOR 5) -set(TRICK_TINY 0) +set(TRICK_TINY 1) # set TRICK_PRERELEASE TO EMPTY STRING "" ON RELEASE -set(TRICK_PRERELEASE "-beta") +set(TRICK_PRERELEASE "") # On macOS Mojave and Catalina, the compilers in /usr/bin # are the ones that include the correct C standard library system headers diff --git a/share/trick/trick_ver.txt b/share/trick/trick_ver.txt index fe3886e0..3a976c33 100644 --- a/share/trick/trick_ver.txt +++ b/share/trick/trick_ver.txt @@ -1 +1 @@ -current_version = "19.6.0-beta" +current_version = "19.5.1" diff --git a/trick_source/java/pom.xml b/trick_source/java/pom.xml index e969068c..51f0951d 100644 --- a/trick_source/java/pom.xml +++ b/trick_source/java/pom.xml @@ -6,7 +6,7 @@ trick-java trick-java - 19.6.0-beta + 19.5.1 trick-java From cb89e4dd7efce6ebedcc5733f334dae9b7f167bd Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 29 Nov 2022 16:58:30 -0600 Subject: [PATCH 107/162] Update version numbers to prerelease 19.6.0-beta --- CMakeLists.txt | 6 +++--- share/trick/trick_ver.txt | 2 +- trick_source/java/pom.xml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 244a5691..2110be92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,10 +4,10 @@ cmake_minimum_required(VERSION 3.1) # configuration to do before CMake searches for compilers project(trick NONE) set(TRICK_MAJOR 19) -set(TRICK_MINOR 5) -set(TRICK_TINY 1) +set(TRICK_MINOR 6) +set(TRICK_TINY 0) # set TRICK_PRERELEASE TO EMPTY STRING "" ON RELEASE -set(TRICK_PRERELEASE "") +set(TRICK_PRERELEASE "-beta") # On macOS Mojave and Catalina, the compilers in /usr/bin # are the ones that include the correct C standard library system headers diff --git a/share/trick/trick_ver.txt b/share/trick/trick_ver.txt index 3a976c33..fe3886e0 100644 --- a/share/trick/trick_ver.txt +++ b/share/trick/trick_ver.txt @@ -1 +1 @@ -current_version = "19.5.1" +current_version = "19.6.0-beta" diff --git a/trick_source/java/pom.xml b/trick_source/java/pom.xml index 51f0951d..e969068c 100644 --- a/trick_source/java/pom.xml +++ b/trick_source/java/pom.xml @@ -6,7 +6,7 @@ trick-java trick-java - 19.5.1 + 19.6.0-beta trick-java From 0933228dd597c3375566da4b31efbc69c0f1c29b Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 30 Nov 2022 13:18:56 -0600 Subject: [PATCH 108/162] Fix links in documentation --- docs/developer_docs/How-To-Make-A-Release.md | 3 +++ docs/index.md | 14 ++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/docs/developer_docs/How-To-Make-A-Release.md b/docs/developer_docs/How-To-Make-A-Release.md index f1863f1b..18bd8e1a 100644 --- a/docs/developer_docs/How-To-Make-A-Release.md +++ b/docs/developer_docs/How-To-Make-A-Release.md @@ -1,3 +1,6 @@ +| [Home](/trick) → [Developer Docs](Developer-Docs-Home) → How to make a release | +|------------------------------------------------------------------| + # How To Make A Trick Release This guide describes how to make a Trick release on GitHub ### Close Open Issues diff --git a/docs/index.md b/docs/index.md index 994345b5..0801eaa6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -42,6 +42,20 @@ The Trick Simulation Environment, developed at the NASA Johnson Space Center, is + + + + + + + + + + + + +
    Developer Docs
    Read detailed documentation for various Trick internals and processes.
    + --- Trick is released under the NASA Open Source Agreement Version 1.3 [license](https://github.com/nasa/trick/blob/master/LICENSE). From 3870dc73b656c84af8dbf3012ca93e3df8ed62bc Mon Sep 17 00:00:00 2001 From: Cody Martin Date: Fri, 2 Dec 2022 13:55:40 -0700 Subject: [PATCH 109/162] Improve tutorial documentation (#1408) --- bin/trick-CP | 2 +- .../running_a_simulation/Input-File.md | 2 +- .../simulation_capabilities/Data-Record.md | 2 +- docs/tutorial/ATutAnalyticSim.md | 33 ++++++++++-------- docs/tutorial/ATutDynamicEvents.md | 2 +- docs/tutorial/ATutIntroduction.md | 22 +++++++----- docs/tutorial/ATutMonteCarlo.md | 8 ++--- docs/tutorial/ATutNumericSim.md | 33 +++++++++--------- docs/tutorial/ATutRecordingData.md | 4 +-- docs/tutorial/ATutRunningRealtime.md | 12 +++---- docs/tutorial/ATutTrickView.md | 14 ++++---- docs/tutorial/TutVariableServer.md | 20 +++++------ docs/tutorial/images/SimMakeComplete.png | Bin 8644 -> 0 bytes docs/tutorial/images/TrickPaths.png | Bin 12214 -> 0 bytes include/trick/DRHDF5.hh | 2 +- .../Cannon/SIM_cannon_analytic/S_define | 2 +- 16 files changed, 83 insertions(+), 75 deletions(-) delete mode 100644 docs/tutorial/images/SimMakeComplete.png delete mode 100644 docs/tutorial/images/TrickPaths.png diff --git a/bin/trick-CP b/bin/trick-CP index f537fe5a..67430b0a 100755 --- a/bin/trick-CP +++ b/bin/trick-CP @@ -60,7 +60,7 @@ if ( -f $sdefine ) { system("make -f makefile " . $makefileAddArgs) ; exit $? >> 8; } else { - print "S_define does not exist" ; + print "S_define does not exist\n" ; exit 1 ; } diff --git a/docs/documentation/running_a_simulation/Input-File.md b/docs/documentation/running_a_simulation/Input-File.md index be3b1940..02a9fd80 100644 --- a/docs/documentation/running_a_simulation/Input-File.md +++ b/docs/documentation/running_a_simulation/Input-File.md @@ -255,7 +255,7 @@ There are several ways to include files in Python. ```python # One way is to use the execfile command -execfile("Modified_data/data_record.py") +exec(open("Modified_data/data_record.py").read()) # Another way is to make the included file a module and import it. # Import search paths may be added using the sys.path.append command. diff --git a/docs/documentation/simulation_capabilities/Data-Record.md b/docs/documentation/simulation_capabilities/Data-Record.md index 4f418872..80325a16 100644 --- a/docs/documentation/simulation_capabilities/Data-Record.md +++ b/docs/documentation/simulation_capabilities/Data-Record.md @@ -382,7 +382,7 @@ The following data-types are used in Trick versions >= 10, that is for, *vv* = " ### DRHDF5 Recording Format HDF5 recording format is an industry conforming HDF5 formatted file. Files written in this format are named -log_.hd5. The contents of this file type are readable by the Trick Data Products packages from +log_.h5. The contents of this file type are readable by the Trick Data Products packages from Trick 07 to the current version. The contents of the file are binary and is not included here. The HDF5 layout of the file follows. diff --git a/docs/tutorial/ATutAnalyticSim.md b/docs/tutorial/ATutAnalyticSim.md index fc8fdd1f..d829f32a 100644 --- a/docs/tutorial/ATutAnalyticSim.md +++ b/docs/tutorial/ATutAnalyticSim.md @@ -479,7 +479,7 @@ our Cannonball simulation is shown in Listing 7, below. ```c++ /************************TRICK HEADER************************* PURPOSE: - (This S_define works with the RUN_analytic input file) + (S_define file for SIM_cannon_analytic) LIBRARY DEPENDENCIES: ( (cannon/src/cannon_init.c) @@ -507,8 +507,6 @@ class CannonSimObject : public Trick::SimObject { CannonSimObject dyn ; ``` - - The `S_define` file syntax is C++ with a couple of Trick specific constructs. Let us dissect this S_define file to see what makes it tick. @@ -647,14 +645,19 @@ In the files that we have created so far, the file paths in `#include` directive and in the `LIBRARY_DEPENDENCY` sections, are **relative** paths. These paths are relative to a **base-path**, that we still need to specify. -For example, the `S_define` file listed above, `#includes` the relative path: -`cannon/include/cannon.h`. We intend for this path to be relative to the -`trick_models` directory that we created in our `$HOME` directory. The complete +For example, the `S_define` file listed above `#includes` the relative path: +`cannon/include/cannon_analytic.h`. We intend for this path to be relative to the +`models` directory that we created in our `SIM_cannon_analytic` directory. The complete path to our cannon.h header file should be: -![Trick Path Construction](images/TrickPaths.png) +``` +${HOME}/trick_sims/SIM_cannon_analytic/models/cannon/include/cannon_analytic.h +``` -So, we need to specify the base-path(s), to the compilers, and to Trick by adding +We need to specify either the absolute path to the `models` directory, or the +relative location of the `models` directory with respect to the top-level +simulation directory (the location of S_define) as the base-path. +We can specify the base-path(s) to the compilers, and to Trick, by adding -I*dir* options, that contain the base-paths, to `$TRICK_CFLAGS` and `$TRICK_CXXFLAGS`. @@ -670,8 +673,8 @@ TRICK_CFLAGS += -Imodels TRICK_CXXFLAGS += -Imodels ``` -When Trick encounters relative paths, these base-paths will be prepended to the -relative paths to create a complete path to the file, thus allowing it to be +When Trick encounters relative paths in an S_define, it prepends these base-path(s) +to the relative paths to create a complete path to the file, thus allowing it to be located. #### Additional Compiler Flag Recommendations @@ -708,15 +711,17 @@ If you typed everything perfectly... Trick is installed properly... there are no bugs in the tutorial... the stars are aligned... and Trick is in a good mood... You should, ultimately see : -![Simulation Make Complete](images/SimMakeComplete.png) +``` +Trick Build Process Complete +``` Now, take a look at the sim directory. Is there an `S_main*.exe` file?? (* is a wildcard, instead of * you will see the name of your platform). If so, cool deal. If not, scream!, then take a look at the next section "Troubleshooting A Bad Build". If all went well, you will notice several other files now resident in the `SIM_cannon_analytic` directory. ```bash % ls -Modified_data S_overrides.mk makefile -RUN_test S_sie.resource trick.zip -S_define S_source.hh +S_overrides.mk makefile +S_sie.resource trick.zip +S_define S_source.hh S_main_.exe build ``` diff --git a/docs/tutorial/ATutDynamicEvents.md b/docs/tutorial/ATutDynamicEvents.md index c55d7382..eb567b32 100644 --- a/docs/tutorial/ATutDynamicEvents.md +++ b/docs/tutorial/ATutDynamicEvents.md @@ -211,7 +211,7 @@ Add the [cannon_impact](#listing_cannon_impact) function, listed above, to the b Add the following job specification, to run our cannon_impact job. ``` -("dynamic_event") cannon_impact( &cannon) ; +("dynamic_event") cannon_impact( &cannon ) ; ``` to the end of the list of jobs in the CannonSimObject. diff --git a/docs/tutorial/ATutIntroduction.md b/docs/tutorial/ATutIntroduction.md index 2185ffdf..90b2894f 100644 --- a/docs/tutorial/ATutIntroduction.md +++ b/docs/tutorial/ATutIntroduction.md @@ -68,24 +68,30 @@ its capabilities. If Trick is not already installed on your machine, then you will need to do that first, by following the directions at: [Install Guide](/trick/documentation/install_guide/Install-Guide). -Once Trick is installed on your machine, you will need add the Trick **bin** -directory to your execution path. For the sake of example, let us assume that +The rest of the tutorial is written as if the Trick **bin** directory is +available on your execution path. This isn't strictly necessary, but allows +you to call `trick-CP` instead of `/full/path/to/trick/bin/trick-CP`. Follow +the steps below if you would like to add the **bin** directory to your PATH. + +For the sake of example, let us assume that you installed Trick in your home directory, and you used the default name for -the repository, which is **trick**. If you named it something different, then +the repository, which is **trick**. If you named it something different, then use that name instead in the scripts below. -If you are using **bash or ksh**, then add the following lines to the file that is automatically sourced by your terminal. Based on your platform this could be **.profile, .bash_profile, .bashrc, .zshrc** or others. Google "How to edit PATH variable" on google to find a wealth of information on this subject. +If you are using **bash or ksh**, then add the following lines to the file +that is automatically sourced by your terminal. Based on your platform this +could be **.profile, .bash_profile, .bashrc, .zshrc** or others. Google "How +to edit PATH variable" on google to find a wealth of information on this +subject. ```bash -export TRICK_HOME="${HOME}/trick" -export PATH=${PATH}:${TRICK_HOME}/bin +export PATH=${PATH}:${HOME}/trick/bin ``` If you are using **csh** or **tcsh**, then add the following lines to your **.cshrc** file. ```csh -setenv TRICK_HOME ${HOME}/trick -setenv PATH ${PATH}:${TRICK_HOME}/bin +setenv PATH ${PATH}:${HOME}/trick/bin ``` Close and then re-open your terminal window. diff --git a/docs/tutorial/ATutMonteCarlo.md b/docs/tutorial/ATutMonteCarlo.md index ed8961a1..d35972f3 100644 --- a/docs/tutorial/ATutMonteCarlo.md +++ b/docs/tutorial/ATutMonteCarlo.md @@ -184,7 +184,7 @@ trick-dre & Create a sub-directory called *RUN_test* in your simulation directory. In this new directory create an input file named *test.py*. This input file executes the data recording file you saved above and stops the simulation after 10 seconds of simulation time. ```python -execfile("monte_cannon.dr") +exec(open("monte_cannon.dr").read()) trick.stop(10) ``` @@ -253,7 +253,7 @@ Create a new directory called RUN_file and place the following python script in ```python # -*- coding: UTF-8 -*- -execfile("monte_cannon.dr") +exec(open("monte_cannon.dr").read()) # Enable Monte Carlo. trick.mc_set_enabled(1) @@ -282,7 +282,7 @@ Random Input Generation provides users with the ability to statistically generat ### Script ```python # -*- coding: UTF-8 -*- -execfile("data/monte_cannon.dr") +exec(open("data/monte_cannon.dr").read()) # Enable Monte Carlo. trick.mc_set_enabled(1) @@ -398,7 +398,7 @@ int cannon_master_post(CANNON *C) ```python # -*- coding: UTF-8 -*- -execfile("data/monte_cannon.dr") +exec(open("data/monte_cannon.dr").read()) # Enable Monte Carlo. trick.mc_set_enabled(1) diff --git a/docs/tutorial/ATutNumericSim.md b/docs/tutorial/ATutNumericSim.md index 89ae0253..4d25d598 100644 --- a/docs/tutorial/ATutNumericSim.md +++ b/docs/tutorial/ATutNumericSim.md @@ -27,7 +27,7 @@
    ## How Trick Does Numerical Integration The type of model that we created in the last section relied on the fact that -the cannon ball problem has an closed-form solution from which we can +the cannon ball problem has a closed-form solution from which we can immediately calculate the cannon ball state [position, velocity] at any arbitrary time. In real-world simulation problems, this will almost never be the case. @@ -140,11 +140,8 @@ Producing simulation states by numerical integration requires that the derivativ and integration jobs be called at the appropriate rate and times. This requires a properly configured integration scheduler. -First,an integration scheduler has to be instantiated in the S_define. Then, in -the input files - -1. In the S_define file, define the integration with a declaration of the -following form: +First, instantiate an integration scheduler in the S_define with a declaration +of the following form: ```c++ IntegLoop integLoopName ( integrationTimeStep ) listOfSimObjectNames ; @@ -153,16 +150,18 @@ IntegLoop integLoopName ( integrationTimeStep ) listOfSimObjectNames ; * Jobs within a simObject that are tagged "derivative" or "integration" will be dispatched to the associated integration scheduler. -In the input file, call the IntegLoop **getIntegrator()** method to specify +Then, in the input file, call the IntegLoop **getIntegrator()** method to specify the integration algorithm of choice and the number of state variables to be integrated. -*integLoopName*.getIntegrator( *algorithm*, *N* ); +```py +integLoopName.getIntegrator( algorithm, N ); +``` * *algorithm* is a enumeration value that indicates the numerical integration algorithm to be used, such as: `trick.Euler`, `trick.Runge_Kutta_2`, -`trick.Runge_Kutta_4`. A complete list can be seen Integrator.hh, in -`${TRICK_HOME}/include/trick/Integrator.hh` . +`trick.Runge_Kutta_4`. A complete list is visible in Integrator.hh, in +`${TRICK_HOME}/include/trick/Integrator.hh`. * N is the number of state variables to be integrated. @@ -192,7 +191,7 @@ And then copy the sim directory. ### Create **cannon_numeric.h.** In this new simulation, we're going to create two new functions, 1) -`cannon_deriv()` [our derivative job], 2) `cannon_integ ()` [our integration job]. +`cannon_deriv()` [our derivative job], and 2) `cannon_integ ()` [our integration job]. We'll put prototypes for each these functions into `cannon_numeric.h`. This new header file which will replace `cannon_analytic.h`. @@ -357,8 +356,8 @@ Replace: with: ```c++ - ("derivative") cannon_deriv( &cannon) ; - ("integration") trick_ret= cannon_integ( & cannon); + ("derivative") cannon_deriv( &cannon ) ; + ("integration") trick_ret= cannon_integ( & cannon ) ; ``` ### Add Integration Scheduler and Integrator @@ -385,7 +384,7 @@ The updated S_define is: ```c++ /**************************************************************** -PURPOSE: (S_define File for SIM_cannon_numeric.) +PURPOSE: (S_define file for SIM_cannon_numeric) LIBRARY_DEPENDENCY: ((cannon/src/cannon_init.c) (cannon/src/cannon_numeric.c) (cannon/src/cannon_shutdown.c)) @@ -399,9 +398,9 @@ class CannonSimObject : public Trick::SimObject { CannonSimObject() { ("initialization") cannon_init( &cannon ) ; ("default_data") cannon_default_data( &cannon ) ; - ("derivative") cannon_deriv( &cannon) ; - ("integration") trick_ret= cannon_integ( &cannon); - ("shutdown") cannon_shutdown( &cannon); + ("derivative") cannon_deriv( &cannon ) ; + ("integration") trick_ret= cannon_integ( &cannon ) ; + ("shutdown") cannon_shutdown( &cannon ) ; } }; diff --git a/docs/tutorial/ATutRecordingData.md b/docs/tutorial/ATutRecordingData.md index 7bd44ca6..8c5f6cdd 100644 --- a/docs/tutorial/ATutRecordingData.md +++ b/docs/tutorial/ATutRecordingData.md @@ -26,7 +26,7 @@ recording editor --- aka Dr. Dre) or you may create it manually. * **Step 1.** In the "DR Name" entry box, enter my_cannon. * **Step 2.** In the "DR Cycle" entry box, change 0.1 to 0.01. * **Step 3.** In the "Variables" pane, double-click dyn, then double-click cannon. -* **Step 4.** Double-click pos[2]. The result should result in dyn.cannon.pos[0] +* **Step 4.** Double-click pos[2] and click OK. The result should result in dyn.cannon.pos[0] and dyn.cannon.pos[1] appearing in the "Selected Variables" pane. * **Step 5.** Choose File->Save. In the "Save" dialog, enter the file name cannon.dr. Save cannon.dr in the Modified_data directory. @@ -40,7 +40,7 @@ text file. #### Running The Simulation And Recording Data The simulation must know about the data recording file created in the last -section. This is accomplished by adding execfile to the simulation input file. +section. This is accomplished by adding exec to the simulation input file. ```bash % cd $HOME/trick_sims/SIM_cannon_analytic/RUN_test diff --git a/docs/tutorial/ATutRunningRealtime.md b/docs/tutorial/ATutRunningRealtime.md index 3e58960b..2b2d6b97 100644 --- a/docs/tutorial/ATutRunningRealtime.md +++ b/docs/tutorial/ATutRunningRealtime.md @@ -48,15 +48,15 @@ is beating the system clock, it pauses. If it is falling behind, it registers waiting for the beginning of the next software frame to start the simulation jobs. If interval timers are not used, Trick will spin waiting for the next beat. -`trick.exec_set_freeze_command()` - brings up the simulation in a frozen -(non-running) state. - `trick.exec_set_enable_freeze()` - allows the user to toggle the simulation from a frozen state to a running state at will. +`trick.exec_set_freeze_command()` - brings up the simulation in a frozen +(non-running) state. + `trick.sim_control_panel_set_enabled(True)` or -`simControlPanel = trick.SimControlPanel() & trick.add_external_application(simControlPanel)` - - brings up the simulation control panel GUI. +`simControlPanel = trick.SimControlPanel() & trick.add_external_application(simControlPanel)` - +brings up the simulation control panel GUI. The `realtime.py` file must be included in the RUN_test/input.py file. When finished, the latest version of the input file should look like the following: @@ -100,7 +100,7 @@ Some items to note about the simulation control panel for your future use: (does not complete all jobs during the software frame) and display them in the tiny box next to the simulation name. If the simulation overruns, the sim will run as fast as it can "to catch up" to where it should be. - * Using the File menu at the top, you may set a freeze point in the future. + * Using the Actions menu at the top, you may set a freeze point in the future. --- diff --git a/docs/tutorial/ATutTrickView.md b/docs/tutorial/ATutTrickView.md index 0d9ccc96..8b0ce448 100644 --- a/docs/tutorial/ATutTrickView.md +++ b/docs/tutorial/ATutTrickView.md @@ -60,13 +60,15 @@ to 10 meters. 1. Notice that dyn.cannon.vel[0] is 43.30... meters per second. To view it in feet per second: * Left Click on the variable dyn.cannon.vel[0] on the Variable table. - * Left Click on the "m/s" in the Unit column to bring up a drop-down list. - * Select **ft/s**. Notice that the value of dyn.cannon.vel[0] changes to + * Double Click on the "m/s" in the Unit column to edit the field. + * Type **ft/s**. Notice that the value of dyn.cannon.vel[0] changes to 142.06... ft/s. 1. Resume the simulation run by clicking the **Start** button on the sim control panel. Notice that the trajectory assumes its predetermined path. -This is because we are giving the cannonball a position as a function of time. +This is because we are analytically calculating the cannonball position as a +function of time, rather than calculating it from the previous frame data. + #### TV With An Input File If this simulation were run over and over, it would be laborious to @@ -107,8 +109,8 @@ Again, we need to incorporate the TV input file into our ever expanding simulation input file. ```python -execfile("Modified_data/realtime.py") -execfile("Modified_data/cannon.dr") +exec(open("Modified_data/realtime.py").read()) +exec(open("Modified_data/cannon.dr").read()) trick.trick_view_add_auto_load_file("TV_cannon.tv") trick.stop(5.2) @@ -122,6 +124,4 @@ trick.stop(5.2) You may now run the sim and verify that TV pops up automatically. -Congratulations, you have finished the basic Trick tutorial! - [Next Page](ATutNumericSim) diff --git a/docs/tutorial/TutVariableServer.md b/docs/tutorial/TutVariableServer.md index 6e83e3dc..d46ac193 100644 --- a/docs/tutorial/TutVariableServer.md +++ b/docs/tutorial/TutVariableServer.md @@ -124,12 +124,13 @@ To run the variable server client : * Execute, but don't "Start" the cannonball simulation. * Find the variable server port number in the bottom left hand corner of the Sim Control Panel, as shown below. -* Execute the script with the port number as an argument. Example: - -```$ ~/CannonDisplay_Rev1.py 50774 &``` ![Cannon](images/SimControlPanel.png) +* Execute the script with the port number as an argument. + Example: ```$ ~/CannonDisplay_Rev1.py 50774 &``` +* "Start" the cannonball simulation. + The output of the script will display three columns of numbers. The left most number is the [variable server message type](#variable-server-message-types). Here, a message type of 0 indicates that the message is the (tab delimited) list @@ -147,7 +148,6 @@ that they were specified in the script. 0 68.84901960086293 27.34966950000001 0 73.17914661978513 28.24082950000001 - ``` @@ -179,7 +179,7 @@ and "dyn.cannon.pos[1]" to the session variable list. ⚠️ Please notice that the quotes around the variable names must be escaped with the '\' (backslash) character. -``` +```python client_socket.send( "trick.var_add(\"dyn.cannon.pos[0]\") \n" + "trick.var_add(\"dyn.cannon.pos[1]\") \n" ) @@ -260,7 +260,6 @@ Now, when we run the client, we get both the init_angle and the init_speed with 0 0 0 ``` - Another commonly used pattern to retrieve variables only once is to use the [**var_add**](#api-var-add), [**var_send**](#api-var-send), and [**var_clear**](#api-var-clear) commands. [**var_send**](#api-var-send) tells the variable server to send all **session** variables immediately regardless of whether [**var_pause**](#api-var-pause) @@ -277,8 +276,6 @@ print line client_socket.send( "trick.var_clear()\n" ) ``` - - In this snippet of code, we add ```dyn.cannon.init_angle``` to the session variable list. Then we call [**var_send**](#api-var-send) to tell the variable server to send us the value, and wait for the response by calling @@ -289,7 +286,9 @@ two ways. We can 1) call [**var_clear**](#api-var-clear) to clear the the list, or 2) we can call [**var_remove**](#api-var-remove). Specifically we could do the following: -```client_socket.send("trick.var_remove(\"dyn.cannon.init_angle\")\n")``` +```python +client_socket.send( "trick.var_remove(\"dyn.cannon.init_angle\")\n" ) +``` So, when we run the modified client, the first three lines of the output should look something like the following. @@ -302,7 +301,7 @@ look something like the following. 0 0 0 ``` -The first line contains the message type ( which is zero), followed by the value +The first line contains the message type (which is zero), followed by the value of ```dyn.cannon.init_angle```. Subsequent lines contain the position data like before. @@ -561,7 +560,6 @@ Add this to the bottom of RUN_test/input.py to give it a try. ### The Variable Server API -`` The following functions are a subset of variable server API functions that are used in this tutorial: diff --git a/docs/tutorial/images/SimMakeComplete.png b/docs/tutorial/images/SimMakeComplete.png deleted file mode 100644 index 232f3d5da987b1c6fe78919a327e1a3e89a67dd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8644 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 diff --git a/docs/tutorial/images/TrickPaths.png b/docs/tutorial/images/TrickPaths.png deleted file mode 100644 index d920603b9e91a13e29c8a09567ea0e90102329e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12214 zcmeIYRaBc{(=Ln^XiL%J1xhJipg6&$cnJ>0lH%^c3DOoQ4#mA_aCd?gclQFtAvnPy zuzA0C{|Eo^KG_F*ty#04qx)XZ+%wl)BcWZp-NCh_)*d`MVNg|?`%PiN&?0J_rM>!MRi8jX?0a;{1xx}3QTkWdCO!+79kq&@ zA#BBp3O>8t1oTXY&$QQC+)bD@yA3aHhXAX99g!W-(kC&nbzLf@_RqwU@{FDB1|8ci7P&|&P+1Mrfe-8=m6MCd!!4hK>iDCISt z`tY=Ez4GgJoV#o52JFAcHz!j9SQsT3Nzim+&xt-}F(AFf^QdvQebO>qIJPK!-h!*a z7>r5LAGfCMK;8V#BDSXNm$A#(8dtP)1NS2VXPVpjfzkIbcj@^}ri}!lE9{qAZJ`o# zb?0wRlqD14QenBBCJMv&~+3OYTm1jN^POz6McQ$U^K5r18@Q)YRlk-&qgMN1$lGG&Xjd+9mT^5fcRzh% z0FrT-%oHh!gO;)k4vB8Nh7A^G&Gh|Ld5k%IS7HYhua102`AmhZ$MT*klwn%IlakpqN(B7wk!->oDWQkv>}f~MPJ)KUuA=x!O3M@dFyp1K z)=b^w92VZ#Eq0v=qZ(b^x0q}7u=h@7W$!)jaB_ae)VARoRuGp_6qB;B{lnBC8dn-u zDpm5{Qh)h{o#i=8XzC|r!f&a+f3bZ3^%fX_rT5r+nF8JZ%#)G=SCIDGkxAygJE*x_ zTtx}(m!c@%y?Kj<@&DxiXMyp8=O2AMWf!ez6VF+WOD!CVt4WV|I7?3W^njWdRtQvP zPLdF}K%iymZQk-ue$fXf3ETj*{}D-Q`VQ@5*TH{nf4PKHb6fqZPTRL`*jG%=`-1Fi zKOXOReHSUZ=DxR(y}o)Lj6m45LmCnGQ4C2hsQaGrzlxiYt6a3va`00)>&3Ka+enfZ z!2nAB!=fj2{_6G5+tJ0rm6 z&wmK<>AI-s!kG3(PO*V47ekvanEb9!{&Lm#i^BOHjFG{mqKCQxMr5UvMDXk2m4PN#JL@uFIC3=90palrAueE2;K{_b||pYWsK zit9JXU#6@KE+k!j@o-uhlI-68?eQQKOP5CkCQNDs6!b|S8^UprrEnm^v zOb$ySJFkv0N3PV&RG(Yssch~(%yy|24SrvL>@b)qX;p8rLrMd8cUt_kC*$hT7ZyP; zkpX0_=0pLf`pF@)H*8$%bus&AI2A#xGbB4x({9`y#KgoxoWg^g$JQm{4aNRj)F8|q z3;XFWfj(ZK(z;#Kvc_r~>Hvh#CBhA^$<*x?eMl*2v(Qj+QudQ0-6s;?$E<`RX#2#< zbP}GNd^>Ny$$R-a;?Fr4amVywIlHuU{B}myM6RBqoNJSA{KXq~|B*DX`LK?n+AiGb zf=moY4U%a6Zu?|_uBXCI*HnM1!oXlpG7uZ_t6d{S?1-PQb@7hDG&3kDedksbxC^5sp9SNEu z9g@pEUhl8I-x71-Wap^C1g%O0!E2S)R%^$1l!?R{2{^%{xm;Fz;T2Ok@$3qsAB_yT z)aYD__HR=@!Ojm9F{3l2R*IDLk9OF&YG(8dr9W(yu6{PiY>xcJ)o2Lr@@K|J*K<0R z89-lDe5Un|RE~z(=z>R#dz<<8zN6kw3{E-GKn-oPesw7B`NPntneYk)nAr9mTt4N9 zM3820+&+jzuFI9&>gmbJdNI~E2>)u6u<9AOn-^@D#uKG0zbrIp@peqQ@o(FRXLtCm zc+Na{txMM0;`pMIvkN8qTPB-5{?fo@Wx z6CPED4&BT6@83lErA>LyO`88$B`n+B6cvCO!4HX$q8C!+V&;f zub~BA0?}wYExrw0Vmu{a( zA|*ey^hxjtY@^qW57W|@1Q$PhPktG#(9FTMUPQE!$RrP~PW1Ayu$%%Tph?G7`2GA;m6J+LX`I%N>ie&y?6D zz(-f(YXn)gv+(5ir_cWjNWHk%@ON#pZ>tebdV^?(q#x6oXX78!NOCc}UbK>|B~X9$ znLS2{63ne!d9%cKMK@1oQk=79=t%?A;{sFOSl|&c^7ypCSfwUia0?`w;!)9b+m#C7Xp& z|B?DFMpP*FJWp&7-$?2=KKjlqMc($Tk^hFaaFiW_?WIuS3WX}Wa*7-f8g=H8s43fn zpDI4zPHD*FfL>)uU_X4Ho0=tm-b=D!HQHN&g0s<<7rfZAKJjFWk9cvRr!wW|9A-OT zYU0we9MwMa`Y_$_^|bBUdBH3L_aK2@zRmBp*Pnny`hw(2QElaE@O(luSBbf+t zI~yzkCVDXP9#FRGHZW82>T?t z<#AGi(sKK-h#q{bWXzBA5hXy=*R2AiENOpSY-x>o!CZcmY`N!dHc+#eF5kcb!%Sr8&lYP#6YU58u@Y_>_1a7cYC{%idetzU!xPulPOTKyu_(dN6J=Xuw z*H)QP5iD978tBKLSMTz_Gp>{G^W+edPt&+St-EiGOub74v|ehZ8m?$Pn2p_c|ETyb z3DT?VqD;9eiEgjdUQShv6Tqu9cTRtuTVJ|)c@Ch4h(-4IiBNKZ4%862= zO=6d+YCAipu&|LkJvDLAdF81{{_LwQ5ko*KUSK|SQQI@*S-!DmADnCUW$6~Bv;HIg zH7&J7(`dJ+OeTBTs%1}Q0{tYnMAKr|Ap6Ks*bAdEY4wk%?9&QW-3elhn9CbQPBmxW zmgcBhuJRPQ3{jsAn%x8In6o}iy0DvL?pc}P426@zzKKZ*^y9y$HvTV@w+{&LlF=>h z|1SABAa2bNXW{Cun1FJM0R#+uhq|J*bUy%}kY!ktD*uY0WC2yYN*nObc0GOWg6-=7 z6P!#M9S66T7TpvrH7RFy3XApo|FHX75sdX#rxtd*uF6YCXzG4lmx^4ZB|7M(3|7`# zCtuuo1Aah#0YIFUf%HEa;y+2^ExIQM6)xU{)NfjhvomcSonBIk>aq~RZ&GhXG3IeT ziUNN=!%$&Rv$tP#ue8>162yggVwCsO&N7A2WMZNHx2oVv?Xb*(_9lV6S-A`w$7%5$ zYAfFg{;?&(!sm3Oz=)Q35F&UZ6w`ja9!_TONQ2G7^WwjdCWJ92@dy|FDa6T%PmtG3 z-);1kP#}3!R6_M0$bKL9WfF&MlNjBVCJq&*SSyh#kF@X}6*O-AM z0Rh&QGiPa#|HOxW0vcY2PET~VL0X5$Dio%D;wf5I_F@tzkR(%5JK;i;8i&9{;NUrU zzW-|)Ga6>)2szPfJ4K9DUt}bi|G$pF#Lw8(QfOGO(Wgc)4@*#{kPb|Yw@&cqUrA3+ znWD}YUk7rv-)rn64;xnNSzCYO;ig+*MbU`#F1Hv+MA$DbhbGEz;$SV3pnIY%X^8kU;-J)*AOvwuqyL&wEJCmhFeKbV&aA)uSx5%D;}dU}dL9i{+OynYi}>aY9U zXz@V+0H8uNv33mIFKajm(RkwJ8E&(BG?|K~=;?m9d-0i>z*e6t{P~JE0GA)ftyds6 zR#s~};>HRZl50dsMPX&7+K!}XAcI_lRbNveB9f7ih)Ako#hX2nMnvGN#Kf1T#wV7C z7wEP>yLb3nEBJKb6E^hj(mZMC>aOGK;usH zoOGP9oh|J&m<|R1J$x5pb8R>`aJAx70nCVBTjexr-rcw9RLR&seD__A7)$c^0M=2{ z4(&3*=X4<=lw_Q>fC?H}AYUZ7WEpia2i~v6!J`W^bXKEx9# z@Ti_d@QxO4&_D(|0k{Djq00X(CGJv2{~j&3sQ&$2AD7;VX2<+&OG`6&-b{jnKPz}t zl# z9lSb~D^Ku(Z?3o#!xM2`2#{6gPD2UH>geboDwwl;t9dDQo)Cp5q9esJv&hxX zkF?;sdAo`^Iri5ywy2YMZXfF+fcDyQz?Zj9Z*Y@U{LBj*E{zd(bLB?1;6ENuzK8!w zvJ7puiNF2ja$xn!cJ+&=upm{m3d%!gWM-cF@tj0jUJj2?2#8hQc57qA6@o{p!QAtb zvr!VPxzs(~6pZ$CMwHBN-3m}MSL0eRwJ@+CR`Y+u%YQ-U|4{FK#G2Ra%(Uqp!>!9D zK2|WFjXk3(e(^0Rny@Bh`ObFS@h0XU-qVY+V(F|3Cg{e~zFI7r){1wU7}d}b&>Z(v znaHiWa=8GlG?gW@|KZzBzH(xdJqdV5$L|AbL_mR*Z~BzO@%a?$AqOHaT>#9?Ny==C zKpe1ky~~HV!U*=>it+RNx`(E~TG>&*vw_g-| z29!|zV37^FSH($d2(^usP7M!NS8C7|X8y#yyOx2@3Orofz&n|J@vDTP!QA%!Xr@@R zXuSiwqYHR4-CK$bx7GlI|HwW)#gF`oVcpnT6^WRk_EJS-DCRjTouQ$jq5@t#T>5ua%K^%+I?i%(*cF2-_90c1 z)R@Cl0${_rp)zni_Hbd*h9)LhYQSZGdrUuwz_0sLt;0VF)nN?J^)xKAd-`nwZ ztj299P%GoPIvy;qz$sn)c+3`)LQQAKjn|Ro!pkL(xB7^@%jtE+YUW5>PM%DCTR1%v z!S@y%1LM%5DFFW|4;0!lJr{qfGh(YTcG+`91)|m*I}2VOHdr+(jMP+Sa&GrS2?-19 zhX6z{bgGpExu&mFhMqfk4t$r1h@&L|CtP24&N#9+p#Uw#*4V#ytL<%{s`?-FMRYb$ z1|cn4yZq>>(3u;7zx!`j()8FQ{?jq*YtFWr)3tb&Fh#rG5CX?8*%+CL$}5$waw50i zy3e>v)oPHQ356npfVZjJCyo5|G?X+ATz8HMbLxiUKihixt;Vv>-XQo+Shw!%_34%~ zDJ4A!t;jGEylV0{HgA@qinsHkQlqci^7PQfzMcsj+zxEG33ti_y<-S=wf#WE^MO~F zGH|MzU>9x3DPp2)h^e={R0PsYz($Zlk$on|?)`Hv{Kgb`=0~oYD_-1SH8vknHhZPP zpZ+DqqrJKBaRiK~!EIt`_e%WSyYPfNW2HuAu%;v)dqb zb1HJE_&w)9jIPbWTiQ3|eI6W-G2w!on?L*#S9DdN+8zq)7y5~igs`}d=cjYXGc=hF zQdxEYV<*oyh8#I37bPA7D!!hhaoOOL7QwrZbnN~KB&Hie^bQ{hK6|&}`%DaZ?HU8} zO%0_>d4A=_ub=?jj6ozhvSSbT{flEyBb57X3-Nwu5K1=sF0pNEu1JUUF%8BXJ>Bbm zpC=DM?xo$+e*07UcHh__csj5s{NDVhLoW$MKN_Su=1!gwZ#~d7>v{6nqPfM{VLVat z4ro+?dSn7sR{f5ulUL_Xbli5*FMo(n+?j{D&m#K%-9bBD}I&$M7Ll}#aSK?j3-q7Yq) zeM@5mP+Iz%Hl4Q5O53$g31`VIB%$HqS;@v)ZSF;loB>b53dtwOnU#E_J%}mH$$_J* zK%8ue_ffYMuXp#Zpy<+Se(x-Xl|sqF?$1TKfNe3##OKcU@s_gqh$2M?yzzLpvG4#d zCZ7;>nRIP#Qxcl-oqcd zD8p{_Kz#WQiqB_i=}lIz9FbHaby5m_nSgrUD+O=GjGJ~ZJvlRfzwEDqNePKADOA-7 zO>XO*JdVd=j{Yi3&TWt4GtOpT)PluKwQp-CgI%t;*>6g|^#R@?uz|D(>o_&C!NP2- zvl-Xj`38+AJ=EGEXCIT29M_+PqeLLQqApA9;A^*-(fgl)sYI(OEs?&x0-l@MiL^V^ z~bGJDxMp_j8>5?zGZfc`%@g%!MUFPjZIoY;HY`6D$+`Zi*VVA^s8m8t`;uG}nYEdy|ojv&|bj5wEOjUW~ll`;-!TrqwxQM*yBf^r9Y`w@R zQCMrI^=>}MTVclNr21;>L$KwC1_ZcL*kMqsTK#UUmciIKl8;cLPJ8jnk3V{h>KTQ= z1t34D!oMgw$cfmLK};+|a~Dem)TpUT{*g^%1yj8PS0Q~`+ZG&>Bs+MwWmIB|9to2L3A>2K| zVykcO9&m=bKMU;gv z9^6xz2#iAdtTP)ppsM0s;*H+ngWsuob*$e^WdgS{v~g|E;oTuklgLEvMBWvh>^4)M zV2W98c&AbRE3+I{L$m$8wc*XtdUPwi!+zsvXKU?eEz1t&g^OLv#Ekxfjb~IfIkf|- zhs_LJI3~McRj~$!!};b8TR|xHF*Q*4A{S-g;0MFZobN3xX-VuG(4%xlxLKw-B<+lx zK?botp!sOt^(D@QILjx?v41fY?9F?8-di}CiKNI-E#fs9$4fq~hqk9vWIBc=P{>i` zz}^I&v8~OHuj1Bk>ha`%9(GFp(N9$Dhiz%>wTjapo+5tfl=(UImukzY?Zp1%MHlzT<7Q= zvlR__ijnhteQN_L>4 zkulQJtzv8GZbSOGU4FeZHo02eC3XY3POIG1>3nZ8gthp^-D?Wp8VkRQ7ETzJSs}{- z>WpS74F=>X$^hN5?=s}wPwx;{`L~jQ3?DF)3XNX@Lx`XHv}Z_2+uUU(FZ`QQJ+B)b zlD)aMhU@;`*`IOj;c>hI=(=#$eE)OT$vr9x;$1Q28`}jC(a$x>P?|w(I9(V+`(kAf z4Ap7ShFt;i&h`&uhaOSQnW~IOnCByNpP5x@R3sWM4uEs-fq8Un99~+`Pg~K2-b0Wu zgdf$#(Q+DaeV@q8mQjM8&POsb`ak!vHH-9oFoHM7;)n`i9xnX?iaX}@a&H>-h zV(s*Up=hQLSUBB5??iR+)Qhw1uDwkEmL5GXnxUC9)4%xJk=Q6;2ez%{uS0heWhl|~ zWArRo=gx@HX!hdlFZ-}G%=i=bDEq_%mqb1gvu|=7#AM+?byAZx$*s)KbA%9FpBkW|!?ZqK+=orzh^ ze!M|pr&g|m5Ibje=uPe7WG*9bR+Z(6chwI6y_KD+!1iA9+IisP8SH*lafC&@kB9VJ zN}?%9zK&uTS&VA)+PBsw>$7?|w}mPe)=UzJt35{l27~;9x$cL-nr(eDHKt{iYFnIw z!NnV|<9CQ|k8E?qi^qPRSxc28L&p6zv1sl`i?ivcoc2n-pR!yOL3f5 zlEQQ0=$zXO>19>1gk}$saA53PaYfWzkoSe_L}mym&*V9h_Wnk{x%~vE8Lq3EGfJ!~ z_D)qef$8z^xc2J}nUWAvOV}l5x7I@H^79R zo<(SV;i#6#;hYUc#6%b2l+S3bj&WVJv><*%CQ*CCQy*kbousO==<7F@uZpIMj1-f8 zHhhVPDR5h!6^5v|xz*hwV_HmTUU^W|Xy9}wTkZozR9H*?5ZGGzor*6S=zs3%>8YjP z050Z$Bzat*TyHOu^sF-1%?)`Uj|Y>Xk$x;*X*^jYd2WuP<@+wWEp{JJg(ZTT^}%g% z{hWzJ#wK6fK$H<@IsfX~5E~2o=jCh~yL|7TZdHQlJO-Y3`IAlB_JA1D2dy+8n5Xyn z9P5bCrJ_#05WY&i{>_snFfqiwnw>-@CM)Ln$ZG_nQl^!=+v^uF;oKnZf5!_*() zR1!qYW4XnwIOeq1#xtso?20!YG~K?JIUY!eOB<>vfsCXJ;KE1Wg&E2eD^Tg({q!)wM=XI=Vca~PyQ!Z>-!r+esYah25dAg(}v_beo*cF zYA}e?5hMZTrL5_g6!h8W6f12SYl-YMSB!Q6suS(l-?KB9+?esaVPcQ&Vd1$i%`UMy zcCz!&tTCwp>jPUyn*M@oSJs>Ujf^$!t6PX zo-5-K-C#)1@A_csnR-bZVh^BHVCt&nh<(`Zodn!rNt{$>NOOWZxVCqG z6<^KCQepfJngv*;94s10ysWcPYlb$R8AiQ)qo%vnW^wm${|IF*R7uf%r$6u@FQmX6 zop3JRshM_#s&C(22LX5d{1~}?+aIh7NeNniDvC7yI?vc%)()>13e{!&I$O1&$s0bu zpCY`_^c)hM`}!e*cHd2;YExuLx;&(KgP8e?$gh2u{`F|Z;>e-BLw504)piD!m&bli zlh~-m+=HwpFllHl=5odP&W+6ws~$Jv@>0Z<3|@YhqUI(a&#KEFp#o-*N!rhQ7|cvu zX_~YM9DF}B8a~bU-79ow?_Ob**?jWN6W9E>C)#qTMgweX%FY!sm7ymmgczX1$&bJ{ot0?4l=ye3)p~4w!ND9?En744KsXTTp zy?vb3n+lEuU_okzz52@z|0f4uBZ`USe;H3-txoNn>vM(mbLz9!^T@uHr&B?hgc9 zvRhfCg7$HuMJX`LFt(L!LBl`ZzWnq_E_3cTsq+~#`&Z;LKL~U11@GME6kx13HA_P< z3SwsAwsBdCQ&(kf)*m)0JNQL&HQ`~F7VN^-H8&(xaNwDU(z z;Ytq&F;i)}t6`97f(K{3TeNp5(f&KMm&{{o)+~CjfuJUY>1etSIdh42rgb=2>)zjP zYzTs|-m}^LxdFN~Lzc z%%{t4>*{{`+3Hd}5}-qXk$jTurU`Fu+#0j;rZ zUs1V(6X-p(=;aJ;j{(`QY401{hT+X@q6k<#%&>xEb^0l8@p^c_2(N9=uy!?l?4zVT z5H%#bOR)SRde&(c)J#@NL&@Nns=upk05ttFok(MfhTms9co4EDzX1}JtOy!~jyJe`KOaSSweA;_yvipZfaMDdZV;`vR z$k>|7tG9r;KZqlMMG9cPLqj=Vvof1Ke7Ath7>a)9MD=XdK9(>{Uo@vcURZxPRKm PM^lsqekzy#`t5%KivmJK diff --git a/include/trick/DRHDF5.hh b/include/trick/DRHDF5.hh index a08fc28e..a241f20a 100644 --- a/include/trick/DRHDF5.hh +++ b/include/trick/DRHDF5.hh @@ -48,7 +48,7 @@ namespace Trick { /** The DRHDF5 recording format is an industry conforming HDF5 formatted file. Files written in this format are named - log_.hd5. The contents of this file type are readable by the Trick Data Products packages from + log_.h5. The contents of this file type are readable by the Trick Data Products packages from Trick 07 to the current version. The contents of the file are binary and is not included here. The HDF5 layout of the file follows. diff --git a/trick_sims/Cannon/SIM_cannon_analytic/S_define b/trick_sims/Cannon/SIM_cannon_analytic/S_define index 5c783c64..96151153 100644 --- a/trick_sims/Cannon/SIM_cannon_analytic/S_define +++ b/trick_sims/Cannon/SIM_cannon_analytic/S_define @@ -1,6 +1,6 @@ /************************TRICK HEADER************************* PURPOSE: - (This S_define works with the RUN_analytic input file) + (S_define file for SIM_cannon_analytic) LIBRARY DEPENDENCIES: ( (cannon/gravity/src/cannon_init.c) From 90b5cdcb3c85aff4f5c005f38e56dd1acd9aec45 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Mon, 5 Dec 2022 15:24:20 -0600 Subject: [PATCH 110/162] Variable Server Integration Test (#1406) * Added restart to trickops script; updated varserver integration test --- test/SIM_test_varserv/RUN_test/realtime.py | 20 - test/SIM_test_varserv/RUN_test/unit_test.py | 16 +- test/SIM_test_varserv/S_define | 12 - test/SIM_test_varserv/S_overrides.mk | 10 + .../models/test_client/.gitignore | 1 + .../models/test_client/test_client.cpp | 561 ++++++++++++++++++ .../models/varserv/include/VS.hh | 38 +- .../models/varserv/src/VS.cpp | 47 +- .../models/varserv/src/VS_commands.cpp | 77 --- .../models/varserv/src/VS_default_data.cpp | 31 - .../models/varserv/src/VS_init.cpp | 44 -- .../models/varserv/src/VS_shutdown.cpp | 17 - .../models/varserv/src/VS_tests.cpp | 204 ------- test_sims.yml | 30 +- trickops.py | 48 +- 15 files changed, 708 insertions(+), 448 deletions(-) delete mode 100644 test/SIM_test_varserv/RUN_test/realtime.py create mode 100644 test/SIM_test_varserv/models/test_client/.gitignore create mode 100644 test/SIM_test_varserv/models/test_client/test_client.cpp delete mode 100644 test/SIM_test_varserv/models/varserv/src/VS_commands.cpp delete mode 100644 test/SIM_test_varserv/models/varserv/src/VS_default_data.cpp delete mode 100644 test/SIM_test_varserv/models/varserv/src/VS_init.cpp delete mode 100644 test/SIM_test_varserv/models/varserv/src/VS_shutdown.cpp delete mode 100644 test/SIM_test_varserv/models/varserv/src/VS_tests.cpp diff --git a/test/SIM_test_varserv/RUN_test/realtime.py b/test/SIM_test_varserv/RUN_test/realtime.py deleted file mode 100644 index f140a4e9..00000000 --- a/test/SIM_test_varserv/RUN_test/realtime.py +++ /dev/null @@ -1,20 +0,0 @@ -import trick - -def main(): - trick.var_server_set_port(50000) - - trick.set_var_server_info_msg_on() - #trick.sim_control_panel_set_enabled(True) - - trick.real_time_enable() - trick.itimer_enable() - - #trick.add_read(1.1, """vsx.vst.vs_read()""") - #trick.add_read(2.1, """vsx.vst.vs_read()""") - - trick.exec_set_terminate_time(3000.0) - - #print trick.var_add("vsx.vst.b") - -if __name__ == "__main__": - main() diff --git a/test/SIM_test_varserv/RUN_test/unit_test.py b/test/SIM_test_varserv/RUN_test/unit_test.py index 1f79a15d..4872b38a 100644 --- a/test/SIM_test_varserv/RUN_test/unit_test.py +++ b/test/SIM_test_varserv/RUN_test/unit_test.py @@ -7,16 +7,18 @@ def main(): trick.var_server_set_port(40000) trick.var_ascii() + trick.real_time_enable() + trick.exec_set_software_frame(0.01) + # trick.set_var_server_info_msg_on() - #trick.set_var_server_info_msg_on() + trick.exec_set_terminate_time(100.0) - trick_utest.unit_tests.enable() ; - trick_utest.unit_tests.set_file_name( os.getenv("TRICK_HOME") + "/trick_test/SIM_test_varserv.xml" ) - trick_utest.unit_tests.set_test_name( "VariableServerTest" ) + varServerPort = trick.var_server_get_port() + test_output = ( os.getenv("TRICK_HOME") + "/trick_test/SIM_test_varserv.xml" ) + command = 'os.system("./models/test_client/test_client ' + str(varServerPort) + ' --gtest_output=xml:' + test_output + ' &")' - TRICK_EXPECT_EQ(trick.var_server_get_port(), 40000, "VariableServerTest", "SetPortNumber") - - trick.exec_set_terminate_time(3000.0) + # Start the test client after everything has been initialized (hopefully) + trick.add_read(1.0, command) if __name__ == "__main__": main() diff --git a/test/SIM_test_varserv/S_define b/test/SIM_test_varserv/S_define index 7fed83f8..79e25327 100644 --- a/test/SIM_test_varserv/S_define +++ b/test/SIM_test_varserv/S_define @@ -3,11 +3,6 @@ PURPOSE: ( S_define ) LIBRARY DEPENDENCIES: ( (varserv/src/VS.cpp) - (varserv/src/VS_init.cpp) - (varserv/src/VS_default_data.cpp) - (varserv/src/VS_commands.cpp) - (varserv/src/VS_tests.cpp) - (varserv/src/VS_shutdown.cpp) ) *************************************************************/ @@ -22,16 +17,9 @@ class testSimObject : public Trick::SimObject { testSimObject() { ("default_data") vst.default_vars(); ("initialization") vst.init(); - ("initialization") vst.testAddRemove(); - ("initialization") vst.testUnits(); - ("initialization") vst.testExists(); - ("initialization") vst.testPause(); - ("initialization") vst.testSendOnce(); ("shutdown") vst.shutdown(); } }; // Instantiations testSimObject vsx; - - diff --git a/test/SIM_test_varserv/S_overrides.mk b/test/SIM_test_varserv/S_overrides.mk index 27536a3b..7da346c8 100644 --- a/test/SIM_test_varserv/S_overrides.mk +++ b/test/SIM_test_varserv/S_overrides.mk @@ -2,3 +2,13 @@ TRICK_CFLAGS += -I./models TRICK_CXXFLAGS += -I./models +all: test_client +clean: clean_test_client + +TEST_CLIENT_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread + +test_client: models/test_client/test_client.cpp + cd models/test_client; $(TRICK_CXX) test_client.cpp -o test_client $(TEST_CLIENT_LIBS) -std=c++11 + +clean_test_client: + rm -f models/test_client/test_client \ No newline at end of file diff --git a/test/SIM_test_varserv/models/test_client/.gitignore b/test/SIM_test_varserv/models/test_client/.gitignore new file mode 100644 index 00000000..837a5b2a --- /dev/null +++ b/test/SIM_test_varserv/models/test_client/.gitignore @@ -0,0 +1 @@ +test_client \ No newline at end of file diff --git a/test/SIM_test_varserv/models/test_client/test_client.cpp b/test/SIM_test_varserv/models/test_client/test_client.cpp new file mode 100644 index 00000000..f859a3fa --- /dev/null +++ b/test/SIM_test_varserv/models/test_client/test_client.cpp @@ -0,0 +1,561 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define SOCKET_BUF_SIZE 20480 + +class Socket { + + public: + + int max_retries = 10; + + Socket() : _initialized(false) {} + int init(std::string hostname, int port) { + _hostname = hostname; + _port = port; + int tries = 0; + + while ((_socket_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0 && tries < max_retries) tries++; + + if (_socket_fd < 0) { + std::cout << "Socket connection failed" << std::endl; + return -1; + } + + struct sockaddr_in serv_addr; + serv_addr.sin_family = AF_INET; + serv_addr.sin_port = htons(port); // convert to weird network byte format + + if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr)<=0) { + std::cout << "Invalid address/ Address not supported" << std::endl; + return -1; + } + + tries = 0; + int connection_status; + + while ((connection_status = connect(_socket_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr))) < 0 && tries < max_retries) tries++; + + if (connection_status < 0) { + std::cout << "Connection failed" << std::endl; + return -1; + } + + _initialized = true; + + return 0; + } + + int send (std::string message) { + // weird syntax I've never used before - since the send syscall that i'm trying to use is overloaded in this class, + // I have to append :: to the front of it so that the compiler knows to look in the global namespace + int success = ::send(_socket_fd, message.c_str(), message.size(), 0); + if (success < message.size()) { + std::cout << "Failed to send message" << std::endl; + } + return success; + } + + int operator<< (std::string message) { + return send(message); + } + + std::string receive () { + char buffer[SOCKET_BUF_SIZE]; + int numBytes = recv(_socket_fd, buffer, SOCKET_BUF_SIZE, 0); + if (numBytes < 0) { + } else if (numBytes < SOCKET_BUF_SIZE) { + buffer[numBytes] = '\0'; + } + + return std::string(buffer); + } + + void operator>> (std::string& ret) { + ret = receive(); + } + + bool check_for_message_availible(long timeout_sec = 2) { + fd_set read_fd_set; + struct timeval timeout = { .tv_sec = timeout_sec, .tv_usec = 0 }; + FD_ZERO(&read_fd_set); + FD_SET(_socket_fd, &read_fd_set); + + // I have one question for the designers of the interface for this syscall: why + select(_socket_fd+1, &read_fd_set, NULL, NULL, &timeout); + + return FD_ISSET(_socket_fd, &read_fd_set); + } + + void clear_buffered_data() { + // Poll the socket + if (check_for_message_availible(0)) { + // Receive into the void if there is a message + receive(); + } + // otherwise no worries + } + + void close() { + ::close(_socket_fd); + } + + private: + int _port; + std::string _hostname; + int _socket_fd; + bool _initialized; + +}; + +int strcmp_IgnoringWhiteSpace(std::string s1_str, std::string s2_str) { + const char * s1 = s1_str.c_str(); + const char * s2 = s2_str.c_str(); + + int i1 = 0; + int i2 = 0; + + while (1) { + while ( !isgraph( s1[i1] ) && s1[i1] != '\0') { i1++; } + while ( !isgraph( s2[i2] ) && s2[i2] != '\0') { i2++; } + if ( s1[i1] == '\0' && s2[i2] == '\0') { return 0; } + if ( s1[i1] != s2[i2]) { + if (s1[i1] < s2[i2]) { + return -1; + } else { + return 1; + } + } + i1++; i2++; + } +} + +class VariableServerTest : public ::testing::Test { + protected: + VariableServerTest() { + socket_status = socket.init("localhost", 40000); + + if (socket_status == 0) { + std::stringstream request; + request << "trick.var_set_client_tag(\"VSTest"; + request << numSession++; + request << "\") \n"; + + socket << request.str(); + } + } + ~VariableServerTest() { + socket << "trick.var_exit()\n"; + socket.close(); + } + + Socket socket; + int socket_status; + + static int numSession; +}; + +int VariableServerTest::numSession = 0; + +TEST_F (VariableServerTest, Strings) { + if (socket_status != 0) { + FAIL(); + } + + std::string reply; + socket << "trick.var_send_once(\"vsx.vst.o\")\n"; + socket >> reply; + std::string expected("5\tYou will rejoice to hear that no disaster has accompanied the commencement of an enterprise which you have regarded with such evil forebodings. I arrived here yesterday, and my first task is to assure my dear sister of my welfare and increasing confidence in the success of my undertaking."); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + + expected = std::string("5\tI am already far north of London, and as I walk in the streets of Petersburgh, I feel a cold northern breeze play upon my cheeks, which braces my nerves and fills me with delight. Do you understand this feeling?"); + socket << "trick.var_send_once(\"vsx.vst.p\")\n"; + + socket >> reply; + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + // TODO: Does wchar actually work? + // expected = std::string("5\tThis breeze, which has travelled from the regions towards which I am advancing, gives me a foretaste of those icy climes. Inspirited by this wind of promise, my daydreams become more fervent and vivid."); + // socket << "trick.var_send_once(\"vsx.vst.q\")\n"; + + // socket >> reply; + + // std::cout << "\tExpected: " << expected << "\n\tActual: " << reply << std::endl; + + // EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); +} + +TEST_F (VariableServerTest, AddRemove) { + if (socket_status != 0) { + FAIL(); + } + + std::string reply; + std::string expected; + + socket << "trick.var_add(\"vsx.vst.c\")\n"; + socket >> reply; + expected = std::string("0 -1234"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + socket >> reply; + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + socket << "trick.var_add(\"vsx.vst.m\")\n"; + socket >> reply; + expected = std::string("0 -1234 1"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + socket << "trick.var_remove(\"vsx.vst.m\")\n"; + socket >> reply; + expected = std::string("0 -1234"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); +} + +TEST_F (VariableServerTest, BadRefResponse) { + if (socket_status != 0) { + FAIL(); + } + + std::string reply; + std::string expected; + + std::cerr << "The purpose of this test is to cause an error. Error messages are expected." << std::endl; + + socket << "trick.var_send_once(\"vsx.vst.no_such_variable\")\n"; + socket >> reply; + expected = std::string("5 BAD_REF"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); +} + + +TEST_F (VariableServerTest, Units) { + if (socket_status != 0) { + FAIL(); + } + + std::string reply; + std::string expected; + + std::cerr << "The purpose of this test is to cause an error. Error messages are expected." << std::endl; + socket << "trick.var_add(\"vsx.vst.c\")\ntrick.var_units(\"vsx.vst.c\",\"g\")\n"; + socket >> reply; + expected = std::string("0 -1234"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + socket << "trick.var_add(\"vsx.vst.e\",\"m\")\n"; + socket >> reply; + expected = std::string("0 -1234 -123456 {m}"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + socket << "trick.var_units(\"vsx.vst.e\",\"ft\")\n"; + socket >> reply; + expected = std::string("0 -1234 -405039 {ft}"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); +} + +TEST_F (VariableServerTest, SendOnce) { + if (socket_status != 0) { + FAIL(); + } + + std::string reply; + std::string expected; + + socket << "trick.var_send_once(\"vsx.vst.e\")\n"; + socket >> reply; + expected = std::string("5 -123456"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + // Check that nothing is sent cyclically + EXPECT_EQ(socket.check_for_message_availible(), false); + + socket << "trick.var_send_once(\"vsx.vst.n[0], vsx.vst.n[1], vsx.vst.n[2],\", 3)\n"; + socket >> reply; + expected = std::string("5 0 1 2"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + std::cerr << "The purpose of this test is to cause an error. Error messages are expected." << std::endl; + socket << "trick.var_send_once(\"vsx.vst.n[0], vsx.vst.n[1], vsx.vst.n[2],\", 4)\n"; + + // Wrong number of variables, should not send a response but should see an error message from the Trick side + EXPECT_EQ(socket.check_for_message_availible(), false); +} + +TEST_F (VariableServerTest, Exists) { + if (socket_status != 0) { + FAIL(); + } + + std::string reply; + std::string expected; + + socket << "trick.var_exists(\"vsx.vst.e\")\n"; + socket >> reply; + expected = std::string("1 1"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + + socket << "trick.var_exists(\"vsx.vst.z\")\n"; + socket >> reply; + expected = std::string("1 0"); + + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + +} + + +TEST_F (VariableServerTest, Cycle) { + if (socket_status != 0) { + FAIL(); + } + + double cycle = 1.0; + double tolerance = 0.01; + int num_cycles = 5; + + // Challenge: no loops allowed + // I've been reading about lamdbas and when you have a hammer........ + + // Test: compare the differences in the returned sim time, make sure the difference + // between them are equal to what var_cycle has been set to within some tolerance + // Problem: setting a tolerance empirically is subject to fluctuactions in the environment, + // which could cause the test to fail even though everthing is functioning correctly + // For example, the original version of tolerances here passed in all the CI pipelines + // except Mac, which for some reason was returning much more variation in cycle time + + // Instead, calculate the average cycle time for a few cycles, and make sure this + // value is closer to the current set cycle time than the previous set cycle time. + // This gives us less information before, we are basically only testing that + // var_cycle is actually changing the cycle time, instead of testing that the + // cycle time is being closely adhered to, but it shouldn't fail the pipeline unnecessarily + // And testing something is better than nothing + + + auto parse_message_for_sim_time = [](const std::string& message) { + // For this case the message will be + // 0\t

    orQH0^Pv^T^6F`5Ev&dV5j3h2dCD~li>LP5g^{~ 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/models/Aircraft/include/Aircraft.hh b/trick_sims/SIM_aircraft/models/Aircraft/include/Aircraft.hh new file mode 100644 index 00000000..a6853a8e --- /dev/null +++ b/trick_sims/SIM_aircraft/models/Aircraft/include/Aircraft.hh @@ -0,0 +1,59 @@ +/************************************************************************ +PURPOSE: (Simulate an Aircraft.) +LIBRARY DEPENDENCIES: + ((Aircraft/src/Aircraft.o)) +**************************************************************************/ +#ifndef Aircraft_HH +#define Aircraft_HH + +class Aircraft { + public: + // Calculated by numeric integration of state derivatives. + double pos[2]; + double vel[2]; + + // Updated by control logic; + int current_waypoint; + + // Static Parameters (Don't change during the simulation.) + double mass; + double thrust_mag_max; + double K_drag; + double heading_rate_gain; + + // Control Parameters (Recieved from the variable server client.) + double desired_heading; + double desired_speed; // m/s + bool autoPilot; + + // Calculated + // Input to numeric integrator. + double acc[2]; + // + double heading; + + // Methods + int default_data(); + int state_init(); + int state_deriv(); + int state_integ(); + int control(); + + void set_desired_compass_heading( double compass_heading); + + void calc_total_force( double (&F_total_body)[2]); + void calc_drag_force( double (&F_drag_body)[2]); + void calc_thrust_force(double (&F_thrust_body)[2]); + void calc_turning_force(double (&F_turning_body)[2]); + void rotateBodyToWorld(double (&F_total_world)[2], double (&F_total_body)[2] ); + +}; + +double psiToCompass( double psi ); +double compassToPsi( double compass_heading ); +double northWestToPsi (double (&p)[2]) ; +double vector_magnitude(double (&vector)[2]); +void vector_difference(double (&result)[2], double (&A)[2], double (&B)[2] ); +// + +#endif diff --git a/trick_sims/SIM_aircraft/models/Aircraft/src/Aircraft.cpp b/trick_sims/SIM_aircraft/models/Aircraft/src/Aircraft.cpp new file mode 100644 index 00000000..aed07230 --- /dev/null +++ b/trick_sims/SIM_aircraft/models/Aircraft/src/Aircraft.cpp @@ -0,0 +1,207 @@ +/********************************* TRICK HEADER ******************************* +PURPOSE: ( Simulate a Aircraft. ) +LIBRARY DEPENDENCY: + ((Aircraft.o)) +*******************************************************************************/ +#include "Aircraft/include/Aircraft.hh" + +#include "trick/integrator_c_intf.h" +#include +#include +#include + +class WayPoint { + public: + double pos[2]; +}; + +// Waypoints are in World Coordinates (West, North). +#define NUMBER_OF_WAYPOINTS 6 +WayPoint waypoint[ NUMBER_OF_WAYPOINTS ] = { + { 0.0, 25000.0}, + { 21650.0, 12500.0}, + { 21650.0, -12500.0}, + { 0.0, -25000.0}, + {-21650.0, -12500.0}, + {-21650.0, 12500.0} +}; + +int Aircraft::default_data() { + pos[0] = 0.0; // m + pos[1] = 0.0; + vel[0] = 100.0; // m/s + vel[1] = 0.0; + current_waypoint = 0; + mass = 5000; // kg + thrust_mag_max = 45000; // N + K_drag = 0.72; + heading_rate_gain = 0.1; + set_desired_compass_heading(45.0); + desired_speed = 200; // m/s + autoPilot = false; + current_waypoint = 0; + return (0); +} + +int Aircraft::state_init() { + + heading = northWestToPsi(vel); + return (0); +} + +int Aircraft::state_deriv() { + double F_total_body[2]; + calc_total_force(F_total_body); + double F_total_world[2]; + rotateBodyToWorld(F_total_world, F_total_body); + /* Equation #1 */ + acc[0] = F_total_world[0] / mass; + acc[1] = F_total_world[1] / mass; + return(0); +} + +int Aircraft::state_integ() { + int integration_step; + load_state ( &pos[0], &pos[1], &vel[0], &vel[1], (double*)0); + load_deriv ( &vel[0], &vel[1], &acc[0], &acc[1], (double*)0); + integration_step = integrate(); + unload_state( &pos[0], &pos[1], &vel[0], &vel[1], (double*)0); + // Calculate heading from velocity. + heading = northWestToPsi(vel); + return(integration_step); +} + +// This calculates the total force on the aircraft in body coordinates. +void Aircraft::calc_total_force( double (&F_total_body)[2] ) { + double F_thrust_body[2]; + double F_drag_body[2]; + double F_turning_body[2]; + calc_thrust_force(F_thrust_body); + calc_drag_force(F_drag_body); + calc_turning_force(F_turning_body); + // Eq #2 + F_total_body[0] = F_thrust_body[0] + F_drag_body[0] + F_turning_body[0]; + F_total_body[1] = F_thrust_body[1] + F_drag_body[1] + F_turning_body[1]; +} + +void Aircraft::calc_thrust_force(double (&F_thrust_body)[2]) { + // Eq #5 + double thrust_mag_desired = K_drag * desired_speed * desired_speed; + // Eq #6 + double thrust_mag; + if (thrust_mag_desired > thrust_mag_max) { + thrust_mag = thrust_mag_max; + } else if ( thrust_mag_desired < 0.0) { + thrust_mag = 0.0; + } else { + thrust_mag = thrust_mag_desired; + } + // Eq #7 + F_thrust_body[0] = thrust_mag; + F_thrust_body[1] = 0.0; +} + +void Aircraft::calc_drag_force(double ( &F_drag_body)[2] ) { + // Eq #4 + double speed = vector_magnitude(vel); + // Eq #3 + F_drag_body[0] = - K_drag * speed * speed; + F_drag_body[1] = 0.0; +} + +void Aircraft::calc_turning_force(double ( &F_turning_body)[2] ) { + double heading_diff; + double heading_error = 0.0; + // Eq#8 + heading_diff = desired_heading - heading; + // Eq#9 + if ( heading_diff > M_PI ) { + heading_error = heading_diff - 2 * M_PI; + } else if (heading_diff < -M_PI) { + heading_error = heading_diff + 2 * M_PI; + } else { + heading_error = heading_diff; + } + // Eq#10 + double heading_rate_desired = heading_rate_gain * heading_error; + double speed = vector_magnitude(vel); + // Eq#11 + double Fmag = heading_rate_desired * speed * mass; + if (Fmag > 49000.0) Fmag = 49000.0; + if (Fmag < -49000.0) Fmag = -49000.0; + // Eq#3 + F_turning_body[0] = 0.0; + F_turning_body[1] = Fmag; +} + +void Aircraft::rotateBodyToWorld( double (&F_total_world)[2], double (&F_total_body)[2] ) { + // Eq#12 + F_total_world[0] = cos(heading) * F_total_body[0] - sin(heading) * F_total_body[1]; + F_total_world[1] = sin(heading) * F_total_body[0] + cos(heading) * F_total_body[1]; +} + +int Aircraft::control() { + if (autoPilot) { + if (NUMBER_OF_WAYPOINTS > 0) { + // Calculate the difference between where we want to be, and where we are. + double posDiff[2]; + vector_difference(posDiff, waypoint[current_waypoint].pos, pos); + // Calculate bearing to waypoint. + desired_heading = northWestToPsi(posDiff); + // Calculate distance to waypoint. + double distanceToWaypoint = vector_magnitude(posDiff); + // If we've arrived, that is we're close enough, go to the next waypoint. + if (distanceToWaypoint < 100.0) { + current_waypoint ++; + current_waypoint = current_waypoint % NUMBER_OF_WAYPOINTS; + } + } + } + return 0; +} + +void Aircraft::set_desired_compass_heading( double compass_heading) { + desired_heading = compassToPsi( compass_heading ); +} + +double compassToPsi( double compass_heading ) { + compass_heading = fmod( compass_heading, 360.0 ); + return ( M_PI * ( 2.0 - compass_heading/180.0) ); +} + +double psiToCompass( double psi ) { + psi = fmod(psi + 2*M_PI, 2*M_PI); + return ( 180.0 * (2.0 - psi/M_PI)); +} + +double northWestToPsi (double (&p)[2]) { + double psi; + double mag = sqrt( p[0]*p[0] + p[1]*p[1] ); + if (mag > 0.0) { + psi = atan2( p[1], p[0] ); + + } else { + std::cerr << "Error: Arguments to northWestToPsi() are zero." + << std::endl; + psi = 0.0; + } + return psi; +} + +double vector_magnitude(double (&vector)[2]) { + return ( sqrt( vector[0] * vector[0] + vector[1] * vector[1] )); +} + +void vector_difference(double (&result)[2], double (&A)[2], double (&B)[2] ) { + result[0] = A[0] - B[0]; + result[1] = A[1] - B[1]; +} + +// double vector_dot_product( double (&A)[2], double (&B)[2] ) { +// return ( A[0] * B[0] + A[1] * B[1] ); +// } + +// double vector_scale( double (&result)[2], double (&A)[2], double scale ) { +// result[0] = A[0] * scale; +// result[1] = A[1] * scale; +// } diff --git a/trick_sims/SIM_aircraft/models/graphics/Makefile b/trick_sims/SIM_aircraft/models/graphics/Makefile new file mode 100644 index 00000000..a80e3a13 --- /dev/null +++ b/trick_sims/SIM_aircraft/models/graphics/Makefile @@ -0,0 +1,36 @@ +SHELL = /bin/sh + +PROJECT_NAME = AircraftDisplay +SRC_DIR = src +BUILD_DIR = build +CLASSES_DIR = $(BUILD_DIR)/classes +JAR_DIR = dist +MAIN_CLASS = trick.AircraftDisplay + +all: jar + +clean: + rm -rf $(BUILD_DIR) + rm -f manifest + +spotless: clean + rm -rf dist + +$(CLASSES_DIR): + @ mkdir -p $(CLASSES_DIR) + +compile: | $(CLASSES_DIR) + javac -sourcepath $(SRC_DIR) -d $(CLASSES_DIR) $(SRC_DIR)/trick/AircraftDisplay.java + +manifest: + @ echo "Main-Class: $(MAIN_CLASS)" > $@ + +$(JAR_DIR): + @ mkdir -p $(JAR_DIR) + +jar: compile manifest | $(JAR_DIR) + jar cvfm $(JAR_DIR)/$(PROJECT_NAME).jar manifest -C $(CLASSES_DIR) . + @ echo "-------------------------------------------------------------------------------" + @ echo " BUILD COMPLETE" + @ echo "The Java jar file (the Java Executable) is located at: $(JAR_DIR)/$(PROJECT_NAME).jar" + @ echo "-------------------------------------------------------------------------------" diff --git a/trick_sims/SIM_aircraft/models/graphics/src/trick/AircraftDisplay.java b/trick_sims/SIM_aircraft/models/graphics/src/trick/AircraftDisplay.java new file mode 100644 index 00000000..75ec2b22 --- /dev/null +++ b/trick_sims/SIM_aircraft/models/graphics/src/trick/AircraftDisplay.java @@ -0,0 +1,536 @@ +/* + * Trick + * 2016 (c) National Aeronautics and Space Administration (NASA) + */ + +package trick; + +import java.awt.Graphics2D; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.geom.AffineTransform; +import java.awt.image.AffineTransformOp; +import java.awt.image.BufferedImage; +import java.awt.event.ActionListener; +import java.awt.event.ActionEvent; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.awt.Component; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.FileReader; +import java.lang.Math; +import java.net.Socket; +import java.util.*; +import java.util.Hashtable; +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JSlider; +import javax.swing.JLabel; +import javax.swing.JButton; +import javax.swing.JToggleButton; +import javax.swing.BorderFactory; +import javax.swing.border.EtchedBorder; +import javax.swing.BoxLayout; +import java.awt.Color; + +/** + * + * @author penn + */ + +class ScenePoly { + public Color color; + public int n; + public double[] x; + public double[] y; +} + +class SkyView extends JPanel { + + private double scale; // Pixels per meter + + private Color groundColor; + + private double[] aircraftPos; + private double[] aircraftVel; + private ScenePoly aircraft; + private ScenePoly wpmarker; + private int[] workPolyX, workPolyY; + + private double heading; + private double actual_speed; + private double desired_speed; + private double desired_heading; + private Boolean autopilot; + + // Origin of world coordinates in jpanel coordinates. + private int worldOriginX; + private int worldOriginY; + + public SkyView( double mapScale ) { + scale = mapScale; + setScale(mapScale); + + groundColor = new Color(210,180,140); + + aircraftPos = new double[] {0.0, 0.0}; + aircraftVel = new double[] {0.0, 0.0}; + + aircraft = new ScenePoly(); + aircraft.color = Color.GRAY; + aircraft.x = new double[] { 4.00, 2.00, 0.60,-0.40,-1.00,-1.00, -1.60, -2.00, -2.50, -2.50, -2.40, -2.80, -2.80, -2.40, -2.50, -2.50, -2.00, -1.60, -1.00, -1.00, -0.40, 0.60, 2.00 }; + aircraft.y = new double[] { 0.00, 0.40, 0.80, 2.30, 2.30, 0.60, 0.60, 1.40, 1.40, 0.50, 0.30, 0.30, -0.30, -0.30, -0.50, -1.40, -1.40, -0.60, -0.60, -2.30, -2.30,-0.80,-0.40}; + aircraft.n = 23; + + wpmarker = new ScenePoly(); + wpmarker.color = Color.RED; + wpmarker.x = new double[] { 1.00, 0.00, -1.00, 0.00 }; + wpmarker.y = new double[] { 0.00, 1.00, 0.00, -1.00 }; + wpmarker.n = 4; + + workPolyX = new int[30]; + workPolyY = new int[30]; + } + + public void setAircraftPos( double n, double w) { + aircraftPos[0] = n; + aircraftPos[1] = w; + } + + public void setAircraftVel( double n, double w) { + aircraftVel[0] = n; + aircraftVel[1] = w; + heading = Math.atan2(w,n); + actual_speed = Math.sqrt(n*n + w*w); + } + + public void setScale (double mapScale) { + if (mapScale < 0.00005) { + scale = 0.00005; + } else if (mapScale < 0.01){ + scale = 0.01; + } + else { + scale = mapScale; + } + } + + public double getScale(){ + return scale; + } + + public void setAutoPilot(Boolean ap){ + autopilot = ap; + } + + public Boolean getAutoPilot(){ + return autopilot; + } + + public void setDesiredSpeed(double n){ + desired_speed = n; + } + + public int getDesiredSpeed(){ + return (int) Math.round(desired_speed); + } + + public void setDesiredHeading(double n){ + desired_heading = Math.toRadians(n); + } + + public double getDesiredHeading(){ + return desired_heading; + } + + public void setInputDesiredHeading(double n){ + desired_heading = n; + } + + public void drawCenteredOval(Graphics2D g, int x, int y, int rh, int rv) { + x = x-(rh/2); + y = y-(rv/2); + g.drawOval(x,y,rh,rv); + } + + public void fillCenteredCircle(Graphics2D g, int x, int y, int r) { + x = x-(r/2); + y = y-(r/2); + g.fillOval(x,y,r,r); + } + + public void drawScenePoly(Graphics2D g, ScenePoly p, double angle_r , double north, double west) { + + double mag = 800.0; + for (int ii = 0; ii < p.n; ii++) { + workPolyX[ii] = (int)(worldOriginX - scale * + ( Math.sin(angle_r) * mag * p.x[ii] + Math.cos(angle_r) * mag * p.y[ii] + west)); + workPolyY[ii] = (int)(worldOriginY - scale * + ( Math.cos(angle_r) * mag * p.x[ii] - Math.sin(angle_r) * mag * p.y[ii] + north)); + } + g.setPaint(p.color); + g.fillPolygon(workPolyX, workPolyY, p.n); + } + + private void doDrawing(Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + int width = getWidth(); + int height = getHeight(); + + worldOriginX = (width/2); + worldOriginY = (height/2); + + g2d.setPaint(groundColor); + g2d.fillRect(0, 0, width, height); + + g2d.setPaint(Color.BLACK); + g2d.drawLine( 0, worldOriginY, width, worldOriginY); + g2d.drawLine( worldOriginX, 0, worldOriginX, height); + + // Draw Waypoints + drawScenePoly(g2d, wpmarker, 0.0, 0.0, 25000.0 ); + drawScenePoly(g2d, wpmarker, 0.0, 21650.0, 12500.0 ); + drawScenePoly(g2d, wpmarker, 0.0, 21650.0, -12500.0 ); + drawScenePoly(g2d, wpmarker, 0.0, 0.0, -25000.0 ); + drawScenePoly(g2d, wpmarker, 0.0, -21650.0, -12500.0 ); + drawScenePoly(g2d, wpmarker, 0.0, -21650.0, 12500.0 ); + + // Draw Aircraft + drawScenePoly(g2d, aircraft, heading, aircraftPos[0], aircraftPos[1] ); + + // Display State Data + g2d.setPaint(Color.BLACK); + g2d.drawString ( String.format("Aircraft Pos: [%.2f, %.2f]", aircraftPos[0], aircraftPos[1]), 20,40); + g2d.drawString ( String.format("Aircraft Vel: [%.2f, %.2f]", aircraftVel[0], aircraftVel[1]), 20,60); + + g2d.drawString ( String.format("SCALE: %f pixels/meter",scale), 20,80); + + g2d.drawString ( String.format("Autopilot Mode: [%B]", autopilot), 20,100); + + if (autopilot == true) { + g2d.drawString ( String.format("Aircraft Actual Heading: [%.2f]", heading),(width - 240) ,40); + g2d.drawString ( String.format("Aircraft Actual Speed: [%.2f m/s]", actual_speed), (width - 240),60); + g2d.drawString ( "-------Controls disabled-------", (width - 240),80); + g2d.drawString ( String.format("Aircraft Desired Heading: [%.2f]", desired_heading), (width - 240),100); + g2d.drawString ( String.format("Aircraft Desired Speed: [%.2f m/s]", desired_speed), (width - 240),120); + } else { + g2d.drawString ( String.format("Aircraft Actual Heading: [%.2f]", heading),(width - 240) ,100); + g2d.drawString ( String.format("Aircraft Desired Heading: [%.2f]", desired_heading), (width - 240),80); + g2d.drawString ( String.format("Aircraft Actual Speed: [%.2f m/s]", actual_speed), (width - 240),60); + g2d.drawString ( String.format("Aircraft Desired Speed: [%.2f m/s]", desired_speed), (width - 240),40); + } + + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + doDrawing(g); + } +} + +class ControlPanel extends JPanel implements ActionListener { + private SkyView skyView; + private JButton zoomOutButton, zoomInButton; + private SpeedCtrlPanel speedCtrlPanel; + private HeadingCtrlPanel headingCtrlPanel; + private AutoPilotCtrlPanel autoPilotCtrlPanel; + + + + public ControlPanel(SkyView skyView){ + skyView = skyView; + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + + + JPanel labeledSpeedCtrlPanel = new JPanel(); + labeledSpeedCtrlPanel.setLayout(new BoxLayout(labeledSpeedCtrlPanel, BoxLayout.Y_AXIS)); + JLabel speedCtrlLabel = new JLabel("Desired Speed"); + speedCtrlLabel.setAlignmentX(Component.CENTER_ALIGNMENT); + labeledSpeedCtrlPanel.add(speedCtrlLabel); + speedCtrlPanel = new SpeedCtrlPanel(skyView); + labeledSpeedCtrlPanel.add(speedCtrlPanel); + add(labeledSpeedCtrlPanel); + + zoomInButton = new JButton("Zoom In"); + zoomInButton.addActionListener(this); + zoomInButton.setActionCommand("zoomin"); + zoomInButton.setToolTipText("Zoom In"); + + zoomOutButton = new JButton("Zoom Out"); + zoomOutButton.addActionListener(this); + zoomOutButton.setActionCommand("zoomout"); + zoomOutButton.setToolTipText("Zoom Out"); + + + JPanel zoomCtrlPanel = new JPanel(); + zoomCtrlPanel.setLayout(new BoxLayout(zoomCtrlPanel, BoxLayout.Y_AXIS)); + zoomCtrlPanel.add(zoomInButton); + zoomCtrlPanel.add(zoomOutButton); + add(zoomCtrlPanel); + + + JPanel labeledAutoPilotCtrlPanel = new JPanel(); + labeledAutoPilotCtrlPanel.setLayout(new BoxLayout(labeledAutoPilotCtrlPanel, BoxLayout.Y_AXIS)); + autoPilotCtrlPanel = new AutoPilotCtrlPanel(skyView); + labeledAutoPilotCtrlPanel.add(autoPilotCtrlPanel); + add(labeledAutoPilotCtrlPanel); + + JPanel labeledHeadingCtrlPanel = new JPanel(); + labeledHeadingCtrlPanel.setLayout(new BoxLayout(labeledHeadingCtrlPanel, BoxLayout.Y_AXIS)); + JLabel headingCtrlLabel = new JLabel("Desired Heading"); + headingCtrlLabel.setAlignmentX(Component.CENTER_ALIGNMENT); + labeledHeadingCtrlPanel.add(headingCtrlLabel); + headingCtrlPanel = new HeadingCtrlPanel(skyView); + labeledHeadingCtrlPanel.add(headingCtrlPanel); + add(labeledHeadingCtrlPanel); + } + + public void actionPerformed (ActionEvent e){ + String s = e.getActionCommand(); + switch (s) { + case "zoomout": + skyView.setScale( skyView.getScale() / 2 ); + break; + case "zoomin": + skyView.setScale( skyView.getScale() * 2 ); + break; + default: + System.out.println("Unknown Action Command:" + s); + break; + } + } +} + +class SpeedCtrlPanel extends JPanel implements ChangeListener { + private SkyView skyView; + private JSlider speedSlider; + + public SpeedCtrlPanel(SkyView view){ + skyView = view; + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + setBorder( BorderFactory.createEtchedBorder(EtchedBorder.RAISED)); + + speedSlider = new JSlider(JSlider.HORIZONTAL, 0, 250, 0); + speedSlider.setMajorTickSpacing(50); + speedSlider.setPaintTrack(true); + speedSlider.setPaintLabels(true); + speedSlider.addChangeListener(this); + add(speedSlider); + } + + public void stateChanged(ChangeEvent e){ + if (e.getSource() == speedSlider){ + skyView.setDesiredSpeed(speedSlider.getValue()); + } + } +} + +class HeadingCtrlPanel extends JPanel implements ChangeListener { + private SkyView skyView; + private JSlider headingSlider; + + public HeadingCtrlPanel (SkyView view) { + skyView = view; + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + setBorder( BorderFactory.createEtchedBorder(EtchedBorder.RAISED)); + + headingSlider = new JSlider(JSlider.HORIZONTAL, -180, 180, 0); + + + headingSlider.setMajorTickSpacing(90); + headingSlider.setPaintTrack(true); + + Hashtable labels = new Hashtable<>(); + labels.put(-180, new JLabel(" -\u03C0")); + labels.put(180, new JLabel("\u03C0")); + headingSlider.setLabelTable(labels); + headingSlider.setPaintLabels(true); + headingSlider.addChangeListener(this); + add(headingSlider); + } + + public void stateChanged(ChangeEvent e){ + if (e.getSource() == headingSlider){ + skyView.setDesiredHeading(headingSlider.getValue()); + } + } +} + +class AutoPilotCtrlPanel extends JPanel implements ItemListener { + private SkyView skyView; + private JToggleButton autoPilotButton; + + public AutoPilotCtrlPanel(SkyView view){ + skyView = view; + setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); + + autoPilotButton = new JToggleButton("Autopilot OFF", false); + skyView.setAutoPilot(false); + autoPilotButton.addItemListener(this); + add(autoPilotButton); + } + public void itemStateChanged(ItemEvent e){ + if (e.getStateChange() == ItemEvent.SELECTED){ + skyView.setAutoPilot(true); + autoPilotButton.setText("Autopilot ON"); + } else { + skyView.setAutoPilot(false); + autoPilotButton.setText("Autopilot OFF"); + } + } +} + +public class AircraftDisplay extends JFrame { + + private SkyView skyView; + private BufferedReader in; + private DataOutputStream out; + private JPanel panelGroup0, panelGroup1; + private ControlPanel controlPanel; + + public AircraftDisplay(SkyView sky) { + skyView = sky; + add( skyView); + setTitle("Aircraft Display"); + setSize(800, 800); + setLocationRelativeTo(null); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + panelGroup1 = new JPanel(); + panelGroup1.setLayout(new BoxLayout(panelGroup1, BoxLayout.X_AXIS)); + panelGroup1.add(skyView); + + controlPanel = new ControlPanel(skyView); + + panelGroup0 = new JPanel(); + panelGroup0.setLayout(new BoxLayout(panelGroup0, BoxLayout.Y_AXIS)); + panelGroup0.add(panelGroup1); + panelGroup0.add(controlPanel); + + add(panelGroup0); + } + + public void connectToServer(String host, int port ) throws IOException { + Socket socket = new Socket(host, port); + in = new BufferedReader( new InputStreamReader( socket.getInputStream())); + out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); + } + + public void drawSkyView() { + skyView.repaint(); + } + + private static void printHelpText() { + System.out.println( + "----------------------------------------------------------------------\n" + + "usage: java jar AircraftDisplay.jar \n" + + "----------------------------------------------------------------------\n" + ); + } + + public static void main(String[] args) throws IOException { + + String host = "localHost"; + int port = 0; + String vehicleImageFile = null; + + int ii = 0; + while (ii < args.length) { + switch (args[ii]) { + case "-help" : + case "--help" : { + printHelpText(); + System.exit(0); + } break; + default : { + port = (Integer.parseInt(args[ii])); + } break; + } + ++ii; + } + + if (port == 0) { + System.out.println("No variable server port specified."); + printHelpText(); + System.exit(0); + } + + double mapScale = 0.01; // 100 meters per pixel + SkyView skyview = new SkyView( mapScale); + AircraftDisplay sd = new AircraftDisplay(skyview); + sd.setVisible(true); + double posNorth = 0.0; + double posWest = 0.0; + double velNorth = 0.0; + double velWest = 0.0; + + double desired_speed = 0.0; + + Boolean autopilot = false; + double desired_heading = 0.0; + + System.out.println("Connecting to: " + host + ":" + port); + sd.connectToServer(host, port); + + sd.out.writeBytes("trick.var_set_client_tag(\"AircraftDisplay\") \n" + + "trick.var_pause() \n" + + "trick.var_add(\"dyn.aircraft.pos[0]\") \n" + + "trick.var_add(\"dyn.aircraft.pos[1]\") \n" + + "trick.var_add(\"dyn.aircraft.vel[0]\") \n" + + "trick.var_add(\"dyn.aircraft.vel[1]\") \n" + + "trick.var_add(\"dyn.aircraft.desired_speed\") \n" + + "trick.var_add(\"dyn.aircraft.desired_heading\") \n" + + "trick.var_ascii() \n" + + "trick.var_cycle(0.1) \n" + + "trick.var_unpause()\n" ); + sd.out.flush(); + + Boolean go = true; + + while (go) { + String field[]; + try { + String line; + line = sd.in.readLine(); + field = line.split("\t"); + posNorth = Double.parseDouble( field[1] ); + posWest = Double.parseDouble( field[2] ); + velNorth = Double.parseDouble( field[3] ); + velWest = Double.parseDouble( field[4] ); + desired_speed = Double.parseDouble( field[5]); + desired_heading = Double.parseDouble(field[6]); + + // Set the Aircraft position + skyview.setAircraftPos(posNorth, posWest); + skyview.setAircraftVel(velNorth, velWest); + + desired_speed = skyview.getDesiredSpeed(); + sd.out.writeBytes(String.format("dyn.aircraft.desired_speed = %.2f ;\n", desired_speed)); + + desired_heading = skyview.getDesiredHeading(); + sd.out.writeBytes(String.format("dyn.aircraft.desired_heading= %.2f ;\n", desired_heading)); + + autopilot = skyview.getAutoPilot(); + + if (autopilot == true){ + sd.out.writeBytes("dyn.aircraft.autoPilot = True ;\n"); + } else { + sd.out.writeBytes("dyn.aircraft.autoPilot = False ;\n"); + } + + } catch (IOException | NullPointerException e ) { + go = false; + } + sd.drawSkyView(); + } + } +} From 5ff52a01c5372ac965b2ca9f168a4690d3679989 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 20 Jan 2023 15:46:10 -0600 Subject: [PATCH 118/162] Add option to terminate sim on python event error (#1434) --- .../running_a_simulation/Input-File.md | 3 +++ include/trick/IPPythonEvent.hh | 13 ++++++++++- share/trick/swig/shortcuts.py | 1 + test/SIM_events/RUN_test/unit_test_error1.py | 7 ++++++ test/SIM_events/RUN_test/unit_test_error2.py | 12 ++++++++++ test/SIM_events/RUN_test/unit_test_error3.py | 12 ++++++++++ test_sims.yml | 22 +++++++++++++------ .../sim_services/InputProcessor/IPPython.cpp | 4 ++-- .../InputProcessor/IPPythonEvent.cpp | 22 +++++++++++++++---- 9 files changed, 82 insertions(+), 14 deletions(-) create mode 100644 test/SIM_events/RUN_test/unit_test_error1.py create mode 100644 test/SIM_events/RUN_test/unit_test_error2.py create mode 100644 test/SIM_events/RUN_test/unit_test_error3.py diff --git a/docs/documentation/running_a_simulation/Input-File.md b/docs/documentation/running_a_simulation/Input-File.md index 02a9fd80..68cfd5b4 100644 --- a/docs/documentation/running_a_simulation/Input-File.md +++ b/docs/documentation/running_a_simulation/Input-File.md @@ -449,6 +449,9 @@ For information on how Trick processes events during runtime, see [Event Process # Add the event to the input processor's list of events (it will be processed at top of frame before scheduled jobs) trick.add_event() + +# Tell trick whether to terminate the sim if an error occurs while parsing Python code. Defaults to False +trick.terminate_on_event_parse_error() ``` #### Advanced Event (Malfunction) Usage diff --git a/include/trick/IPPythonEvent.hh b/include/trick/IPPythonEvent.hh index 7a512d4b..f62fe3b9 100644 --- a/include/trick/IPPythonEvent.hh +++ b/include/trick/IPPythonEvent.hh @@ -184,6 +184,15 @@ namespace Trick { */ static void set_event_info_msg_off() ; + /** + @brief @userdesc Command to set whether the sim should check error codes from + Python parsing and terminate if an error is detected. Set to false by default + @par Python Usage: + @code trick.terminate_on_event_parse_error(True|False) @endcode + @return always 0 + */ + static void terminate_on_event_parse_error(bool on_off); + /** @brief called by the event manager when the event is loaded from a checkpoint */ @@ -402,7 +411,7 @@ namespace Trick { any events instantiated yet */ static void set_python_processor(Trick::IPPython * in_ip) ; static void set_mtv(Trick::MTV * in_mtv) ; - + private: /* A static pointer to the python input processor set at the S_define level */ @@ -411,6 +420,8 @@ namespace Trick { /* A static pointer to the MTV set at the S_define level */ static Trick::MTV * mtv ; + /* Defaults to false */ + static bool terminate_sim_on_event_python_error; } ; } diff --git a/share/trick/swig/shortcuts.py b/share/trick/swig/shortcuts.py index eaa6c783..7bd36f0d 100644 --- a/share/trick/swig/shortcuts.py +++ b/share/trick/swig/shortcuts.py @@ -44,6 +44,7 @@ if hasattr(top.cvar, 'trick_ip'): set_event_info_msg_on = trick.IPPythonEvent.set_event_info_msg_on set_event_info_msg_off = trick.IPPythonEvent.set_event_info_msg_off +terminate_on_event_parse_error = trick.IPPythonEvent.terminate_on_event_parse_error # bind pyton input_processor event routines to shortcut names. new_event = trick.ippython_new_event diff --git a/test/SIM_events/RUN_test/unit_test_error1.py b/test/SIM_events/RUN_test/unit_test_error1.py new file mode 100644 index 00000000..c72fd8e8 --- /dev/null +++ b/test/SIM_events/RUN_test/unit_test_error1.py @@ -0,0 +1,7 @@ +trick.stop(1.0) + +# print(dir(trick)) +trick.terminate_on_event_parse_error(True) + +# Error in add read +trick.add_read(0.1, "a = b") \ No newline at end of file diff --git a/test/SIM_events/RUN_test/unit_test_error2.py b/test/SIM_events/RUN_test/unit_test_error2.py new file mode 100644 index 00000000..c7e7af3f --- /dev/null +++ b/test/SIM_events/RUN_test/unit_test_error2.py @@ -0,0 +1,12 @@ +trick.terminate_on_event_parse_error(True) + +# Error in condition +event1 = trick.new_event("event1") +event1.condition(0, "this is a syntax error") +event1.action(0, "print (\"event1\");") +event1.action(1, "event1.activate()") +event1.set_cycle(1.0) +event1.activate() +trick.add_event(event1) + +trick.stop(10) \ No newline at end of file diff --git a/test/SIM_events/RUN_test/unit_test_error3.py b/test/SIM_events/RUN_test/unit_test_error3.py new file mode 100644 index 00000000..65d3954c --- /dev/null +++ b/test/SIM_events/RUN_test/unit_test_error3.py @@ -0,0 +1,12 @@ +trick.terminate_on_event_parse_error(True) + +# Error in event action +event1 = trick.new_event("event1") +event1.condition(0, "True") +event1.action(0, "this is a syntax error") +event1.action(1, "event1.activate()") +event1.set_cycle(1.0) +event1.activate() +trick.add_event(event1) + +trick.stop(10) \ No newline at end of file diff --git a/test_sims.yml b/test_sims.yml index 56c67985..68df7f32 100644 --- a/test_sims.yml +++ b/test_sims.yml @@ -42,13 +42,6 @@ SIM_demo_sdefine: runs: RUN_test/unit_test.py: returns: 0 -SIM_events: - path: test/SIM_events - build_command: "trick-CP -t" - binary: "T_main_{cpu}_test.exe" - runs: - RUN_test/unit_test.py: - returns: 0 SIM_exec_set_time_tic_value: path: test/SIM_exec_set_time_tic_value build_command: "trick-CP -t" @@ -267,6 +260,21 @@ SIM_checkpoint_data_recording: # compare: # - test/SIM_checkpoint_data_recording/RUN_test6/ref_log_foo2.csv vs. test/SIM_checkpoint_data_recording/RUN_test6/log_foo2.csv +SIM_events: + path: test/SIM_events + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/unit_test.py: + returns: 0 + RUN_test/unit_test_error1.py: + returns: 255 + RUN_test/unit_test_error2.py: + returns: 255 + RUN_test/unit_test_error3.py: + returns: 255 + + # The variable server client and SIM_amoeba sometimes fail to connect and need to be retried SIM_test_varserv: path: test/SIM_test_varserv diff --git a/trick_source/sim_services/InputProcessor/IPPython.cpp b/trick_source/sim_services/InputProcessor/IPPython.cpp index a26b01ed..665b5772 100644 --- a/trick_source/sim_services/InputProcessor/IPPython.cpp +++ b/trick_source/sim_services/InputProcessor/IPPython.cpp @@ -179,11 +179,11 @@ int Trick::IPPython::parse_condition(std::string in_string, int & cond_return_va pthread_mutex_lock(&ip_mutex); in_string = std::string("trick_ip.ip.return_val = ") + in_string + "\n" ; // Running the simple string will set return_val. - PyRun_SimpleString(in_string.c_str()) ; + int py_ret = PyRun_SimpleString(in_string.c_str()) ; cond_return_val = return_val ; pthread_mutex_unlock(&ip_mutex); - return 0 ; + return py_ret ; } diff --git a/trick_source/sim_services/InputProcessor/IPPythonEvent.cpp b/trick_source/sim_services/InputProcessor/IPPythonEvent.cpp index 3db54c32..c822ddf9 100644 --- a/trick_source/sim_services/InputProcessor/IPPythonEvent.cpp +++ b/trick_source/sim_services/InputProcessor/IPPythonEvent.cpp @@ -29,6 +29,7 @@ extern Trick::MemoryManager * trick_MM ; Trick::IPPython * Trick::IPPythonEvent::ip ; Trick::MTV * Trick::IPPythonEvent::mtv ; bool Trick::IPPythonEvent::info_msg = false ; +bool Trick::IPPythonEvent::terminate_sim_on_event_python_error = false; Trick::condition_t::condition_t() { enabled = 0 ; @@ -169,6 +170,10 @@ void Trick::IPPythonEvent::set_event_info_msg_off() { info_msg = false; } +void Trick::IPPythonEvent::terminate_on_event_parse_error(bool on_off) { + terminate_sim_on_event_python_error = on_off; +} + void Trick::IPPythonEvent::restart() { int jj ; @@ -515,7 +520,10 @@ int Trick::IPPythonEvent::process( long long curr_time ) { } else { // it's a read event active = false ; - ip->parse(action_list[0]->str) ; + int ret = ip->parse(action_list[0]->str) ; + if (ret != 0 && terminate_sim_on_event_python_error) { + exec_terminate_with_return( ret , __FILE__ , __LINE__ , "Python error in event processing" ) ; + } // keep stats so mtv will show when it ran fired_count++ ; fired_time = curr_time ; @@ -572,7 +580,10 @@ bool Trick::IPPythonEvent::process_user_event( long long curr_time ) { } else { // otherwise use python to evaluate string std::string full_in_string ; - ip->parse_condition(condition_list[ii]->str, return_val) ; + int python_ret = ip->parse_condition(condition_list[ii]->str, return_val) ; + if (python_ret != 0 && terminate_sim_on_event_python_error) { + exec_terminate_with_return( python_ret , __FILE__ , __LINE__ , "Python error in event condition processing" ) ; + } } if (return_val) { //TODO: write to log/send_hs that trigger fired @@ -639,8 +650,11 @@ bool Trick::IPPythonEvent::process_user_event( long long curr_time ) { break; } } else { - // otherwise use python to evaluate string - ip->parse(action_list[ii]->str) ; + // otherwise use python to evaluate string + int ret = ip->parse(action_list[ii]->str) ; + if (ret != 0 && terminate_sim_on_event_python_error) { + exec_terminate_with_return( ret , __FILE__ , __LINE__ , "Python error in event action processing" ) ; + } } it_ran = true ; action_list[ii]->ran = true ; From e11ff830512b17a139e80c5110dd7e83aad54b10 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Fri, 20 Jan 2023 17:33:35 -0600 Subject: [PATCH 119/162] Add documentation on running Trick with sanitizers --- docs/developer_docs/Developer-Docs-Home.md | 1 + docs/developer_docs/Tooling-and-Santizers.md | 35 ++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 docs/developer_docs/Tooling-and-Santizers.md diff --git a/docs/developer_docs/Developer-Docs-Home.md b/docs/developer_docs/Developer-Docs-Home.md index e67c9c3c..b78710f9 100644 --- a/docs/developer_docs/Developer-Docs-Home.md +++ b/docs/developer_docs/Developer-Docs-Home.md @@ -8,3 +8,4 @@ Link documentation for Trick internals, processes, and plans here. - [Testing](Testing) - [How to make a new Trick release on GitHub](How-To-Make-A-Release) +- [Tooling and Sanitizers](Tooling-and-Sanitizers) diff --git a/docs/developer_docs/Tooling-and-Santizers.md b/docs/developer_docs/Tooling-and-Santizers.md new file mode 100644 index 00000000..19c569e6 --- /dev/null +++ b/docs/developer_docs/Tooling-and-Santizers.md @@ -0,0 +1,35 @@ +| [Home](/trick) → [Developer Docs](Developer-Docs-Home) → Tooling and Sanitizers | +|------------------------------------------------------------------| + +Lots of development and debugging tools require a binary to be instrumented with compiler flags. Trick does compiling and linking steps separately and uses several variables to propogate flags to different parts of the build. The following is a convenience function that can be added to your bashrc to easily modify the flags in your environment: + +``` +add-trickenv () { + export CFLAGS="$CFLAGS $1" + export CXXFLAGS="$CXXFLAGS $1" + export LDFLAGS="$LDFLAGS $1" + export TRICK_CFLAGS="$TRICK_CFLAGS $1" + export TRICK_CXXFLAGS="$TRICK_CXXFLAGS $1" + export TRICK_LDFLAGS="$TRICK_LDFLAGS $1" + export TRICK_SYSTEM_CFLAGS="$TRICK_SYSTEM_CFLAGS $1" + export TRICK_SYSTEM_CXXFLAGS="$TRICK_SYSTEM_CXXFLAGS $1" + export TRICK_SYSTEM_LDFLAGS="$TRICK_SYSTEM_LDFLAGS $1" +} +``` + +To debug a sim, you will likely need to run a clean build of all of Trick with these flags set. + +## Tools that are known to work well with Trick + +GDB/LLDB: `-g` + +gcov: `-fprofile-arcs -ftest-coverage -O0` + +tsan: `-g -fsanitize=thread` + +asan: `-g -fsanitize=address -fsanitize-recover=address` + +Suggest running asan instrumented sims with: + +`ASAN_OPTIONS=halt_on_error=0 ./S_main* ` + From 8821bac18a2a9b1c08706e1e428edc2ffb20abf6 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Mon, 23 Jan 2023 08:50:13 -0600 Subject: [PATCH 120/162] Handle empty PYTHON_MODULE in header comment (#1432) --- .../Model-Source-Code.md | 2 +- libexec/trick/pm/html.pm | 2 +- .../RUN_test/unit_test.py | 7 ++++ test/SIM_python_namespace/S_define | 4 ++- test/SIM_python_namespace/models/TrickFood.hh | 32 +++++++++++++++++++ 5 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 test/SIM_python_namespace/models/TrickFood.hh diff --git a/docs/documentation/building_a_simulation/Model-Source-Code.md b/docs/documentation/building_a_simulation/Model-Source-Code.md index 06efc40c..15c56389 100644 --- a/docs/documentation/building_a_simulation/Model-Source-Code.md +++ b/docs/documentation/building_a_simulation/Model-Source-Code.md @@ -162,7 +162,7 @@ The `ICG IGNORE TYPES` field lists the structs or classes to be ignored. Any par ###### `PYTHON_MODULE` -Specifying a `python_module` name will place any class/struct and function definitions in this header file in a python module of the same name. All classes and functions are flattened into the python `trick` namespace by default. This capability allows users to avoid possible name collisions between names when they are flattened. +Specifying a `python_module` name will place any class/struct and function definitions in this header file in a python module of the same name. All classes and functions are flattened into the python `trick` namespace by default. This capability allows users to avoid possible name collisions between names when they are flattened. An empty `python_module` statement will be ignored. ##### Compiler Directives diff --git a/libexec/trick/pm/html.pm b/libexec/trick/pm/html.pm index a6da5c62..d9524373 100644 --- a/libexec/trick/pm/html.pm +++ b/libexec/trick/pm/html.pm @@ -31,7 +31,7 @@ sub extract_trick_header($$$$) { $header{icg_ignore} = $2 if $trick_header =~ /ICG[ _]IGNORE[ _]TYPE(S)?:[^(]*(.*?)\)([A-Z _\t\n\r]+:|[ \t\n\r]*$)/si ; $header{swig} = $1 if $trick_header =~ /SWIG:[^(]*\((.*?)\)([A-Z _\t\n\r]+:|[ \t\n\r]*$)/si ; $header{default_data} = $1 if $trick_header =~ /DEFAULT[ _]DATA:[^(]*(.*?)\)([A-Z _\t\n\r]+:|[ \t\n\r]*$)/si ; - $header{python_module} = $1 if $trick_header =~ /PYTHON[ _]MODULE:[^(]*\((.*?)\)([A-Z _\t\n\r]+:|[ \t\n\r]*$)/si ; + $header{python_module} = $1 if $trick_header =~ /PYTHON[ _]MODULE:[^(]*\((.+?)\)([A-Z _\t\n\r]+:|[ \t\n\r]*$)/si ; $header{programmers} = $1 if $trick_header =~ /PROGRAMMERS:[^(]*(.*?)\)([A-Z _\t\n\r]+:|[ \t\n\r]*$)/si ; $header{language} = $1 if $trick_header =~ /LANGUAGE:[^(]*(.*?)\)([A-Z _\t\n\r]+:|[ \t\n\r]*$)/si ; diff --git a/test/SIM_python_namespace/RUN_test/unit_test.py b/test/SIM_python_namespace/RUN_test/unit_test.py index b50e2da3..00b5c529 100644 --- a/test/SIM_python_namespace/RUN_test/unit_test.py +++ b/test/SIM_python_namespace/RUN_test/unit_test.py @@ -43,6 +43,13 @@ def main(): yummy.yummy = trick.Foo.Doughnuts TRICK_EXPECT_EQ( yummy.yummy , 2, test_suite , "additional file in same namespace" ) + # new class from TrickFood + trickfood = trick.Food() + trickfood.print_me() + TRICK_EXPECT_EQ( trickfood.fast , 2, test_suite , "blank python_module statement" ) + trickfood.fast = trick.Pizza + TRICK_EXPECT_EQ( trickfood.fast , 0, test_suite , "blank python_module statement" ) + if __name__ == "__main__": main() diff --git a/test/SIM_python_namespace/S_define b/test/SIM_python_namespace/S_define index ff42c34c..ec9da89a 100644 --- a/test/SIM_python_namespace/S_define +++ b/test/SIM_python_namespace/S_define @@ -1,6 +1,6 @@ /************************TRICK HEADER************************* PURPOSE: - (blah blah blah) + (Test different combinations of Python modules and C++ namespaces) *************************************************************/ #include "sim_objects/default_trick_sys.sm" @@ -9,6 +9,7 @@ PURPOSE: ##include "FooInnerFood.hh" ##include "BarFood.hh" ##include "FooYummyFood.hh" +##include "TrickFood.hh" class SimObj : public Trick::SimObject { @@ -17,6 +18,7 @@ class SimObj : public Trick::SimObject { Foo::Inner::Food foo_inner_food ; Bar::Food bar_food ; Foo::YummyFood foo_yummyfood ; + Food trick_food; /** Constructor to add the jobs */ SimObj() { diff --git a/test/SIM_python_namespace/models/TrickFood.hh b/test/SIM_python_namespace/models/TrickFood.hh new file mode 100644 index 00000000..0a86c475 --- /dev/null +++ b/test/SIM_python_namespace/models/TrickFood.hh @@ -0,0 +1,32 @@ +/** +@file + +@verbatim +PURPOSE: (Test that an empty PYTHON_MODULE won't cause errors or have any effect.) +PYTHON_MODULE: () +@endverbatim +*******************************************************************************/ + +#ifndef TRICKFOOD_HH +#define TRICKFOOD_HH + +#include + + + +enum Fast { + Pizza, + Burger, + Taco +}; + +class Food { + public: + Food() : fast(Taco) {} + void print_me() { std::cout << "Food::print_me!" << std::endl; } + Fast fast; +}; + + +#endif + From 26baac2088368c77e9b29ad80eb142cae7917a74 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Mon, 23 Jan 2023 15:46:55 -0600 Subject: [PATCH 121/162] Fix broken link in docs --- .../{Tooling-and-Santizers.md => Tooling-and-Sanitizers.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/developer_docs/{Tooling-and-Santizers.md => Tooling-and-Sanitizers.md} (100%) diff --git a/docs/developer_docs/Tooling-and-Santizers.md b/docs/developer_docs/Tooling-and-Sanitizers.md similarity index 100% rename from docs/developer_docs/Tooling-and-Santizers.md rename to docs/developer_docs/Tooling-and-Sanitizers.md From 4879bcfc5111255728b24d76e9f6d0ab015d0ff5 Mon Sep 17 00:00:00 2001 From: jmpenn Date: Tue, 24 Jan 2023 17:19:19 -0600 Subject: [PATCH 122/162] Use Maven to build AircraftDisplay.jar instead of directly from Makefile. (#1435) --- trick_sims/SIM_aircraft/RUN_test/input.py | 2 +- .../SIM_aircraft/models/graphics/Makefile | 36 +----- .../SIM_aircraft/models/graphics/pom.xml | 121 ++++++++++++++++++ .../aircraftDisplay}/AircraftDisplay.java | 2 +- 4 files changed, 126 insertions(+), 35 deletions(-) mode change 100644 => 100755 trick_sims/SIM_aircraft/models/graphics/Makefile create mode 100644 trick_sims/SIM_aircraft/models/graphics/pom.xml rename trick_sims/SIM_aircraft/models/graphics/src/{trick => main/java/trick/aircraftDisplay}/AircraftDisplay.java (99%) diff --git a/trick_sims/SIM_aircraft/RUN_test/input.py b/trick_sims/SIM_aircraft/RUN_test/input.py index abf26810..5d3c19e6 100644 --- a/trick_sims/SIM_aircraft/RUN_test/input.py +++ b/trick_sims/SIM_aircraft/RUN_test/input.py @@ -11,7 +11,7 @@ dyn.aircraft.desired_speed = 200 # meters per second # Start the Satellite Graphics Client #========================================== varServerPort = trick.var_server_get_port(); -AircraftDisplay_path = "models/graphics/dist/AircraftDisplay.jar" +AircraftDisplay_path = "models/graphics/build/AircraftDisplay.jar" if (os.path.isfile(AircraftDisplay_path)) : AircraftDisplay_cmd = "java -jar " \ diff --git a/trick_sims/SIM_aircraft/models/graphics/Makefile b/trick_sims/SIM_aircraft/models/graphics/Makefile old mode 100644 new mode 100755 index a80e3a13..d3e0cbc0 --- a/trick_sims/SIM_aircraft/models/graphics/Makefile +++ b/trick_sims/SIM_aircraft/models/graphics/Makefile @@ -1,36 +1,6 @@ -SHELL = /bin/sh -PROJECT_NAME = AircraftDisplay -SRC_DIR = src -BUILD_DIR = build -CLASSES_DIR = $(BUILD_DIR)/classes -JAR_DIR = dist -MAIN_CLASS = trick.AircraftDisplay - -all: jar +all: + mvn package clean: - rm -rf $(BUILD_DIR) - rm -f manifest - -spotless: clean - rm -rf dist - -$(CLASSES_DIR): - @ mkdir -p $(CLASSES_DIR) - -compile: | $(CLASSES_DIR) - javac -sourcepath $(SRC_DIR) -d $(CLASSES_DIR) $(SRC_DIR)/trick/AircraftDisplay.java - -manifest: - @ echo "Main-Class: $(MAIN_CLASS)" > $@ - -$(JAR_DIR): - @ mkdir -p $(JAR_DIR) - -jar: compile manifest | $(JAR_DIR) - jar cvfm $(JAR_DIR)/$(PROJECT_NAME).jar manifest -C $(CLASSES_DIR) . - @ echo "-------------------------------------------------------------------------------" - @ echo " BUILD COMPLETE" - @ echo "The Java jar file (the Java Executable) is located at: $(JAR_DIR)/$(PROJECT_NAME).jar" - @ echo "-------------------------------------------------------------------------------" + rm -rf build diff --git a/trick_sims/SIM_aircraft/models/graphics/pom.xml b/trick_sims/SIM_aircraft/models/graphics/pom.xml new file mode 100644 index 00000000..d3d3e1d9 --- /dev/null +++ b/trick_sims/SIM_aircraft/models/graphics/pom.xml @@ -0,0 +1,121 @@ + + + + 4.0.0 + + trick-java + trick-java + 23.0.0-beta + + trick-java + + https://github.com/nasa/trick + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.13.1 + test + + + + + + AircraftDisplay + + build + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.1.1 + + ${java.home}/bin/javadoc + ../../share/doc/trick/java + + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + + maven-resources-plugin + 3.0.2 + + + + maven-compiler-plugin + 3.8.0 + + + -g + -Xlint:unchecked + -Xlint:deprecation + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.0 + + + + true + lib/ + AircraftDisplay + + + + + + + maven-surefire-plugin + 2.22.1 + + + + maven-install-plugin + 2.5.2 + + + + maven-deploy-plugin + 2.8.2 + + + + + maven-site-plugin + 3.7.1 + + + + + + + + diff --git a/trick_sims/SIM_aircraft/models/graphics/src/trick/AircraftDisplay.java b/trick_sims/SIM_aircraft/models/graphics/src/main/java/trick/aircraftDisplay/AircraftDisplay.java similarity index 99% rename from trick_sims/SIM_aircraft/models/graphics/src/trick/AircraftDisplay.java rename to trick_sims/SIM_aircraft/models/graphics/src/main/java/trick/aircraftDisplay/AircraftDisplay.java index 75ec2b22..16eae817 100644 --- a/trick_sims/SIM_aircraft/models/graphics/src/trick/AircraftDisplay.java +++ b/trick_sims/SIM_aircraft/models/graphics/src/main/java/trick/aircraftDisplay/AircraftDisplay.java @@ -3,7 +3,7 @@ * 2016 (c) National Aeronautics and Space Administration (NASA) */ -package trick; +/* package trick;*/ import java.awt.Graphics2D; import java.awt.Graphics; From 7131204e0912654db24df5415fb71900f16359b7 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 25 Jan 2023 14:49:47 -0600 Subject: [PATCH 123/162] Add workflow_dispatch option for code_coverage --- .github/workflows/code_coverage.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/code_coverage.yml b/.github/workflows/code_coverage.yml index 63f27163..27f90b37 100644 --- a/.github/workflows/code_coverage.yml +++ b/.github/workflows/code_coverage.yml @@ -9,6 +9,7 @@ on: - '.github/workflows/**' - '!.github/workflows/code_coverage.yml' pull_request: + workflow_dispatch: jobs: code-coverage: From 2b308bd89c1af833b2efcd3a9d1baaf0730f694e Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Wed, 1 Feb 2023 14:46:14 -0600 Subject: [PATCH 124/162] Add README to SIM_aircraft. --- trick_sims/SIM_aircraft/README.md | 139 ++++++++++++++++++ .../SIM_aircraft/images/AircraftHeading.png | Bin 0 -> 172433 bytes .../SIM_aircraft/images/BodyCoordinates.png | Bin 0 -> 83356 bytes trick_sims/SIM_aircraft/images/Equation_1.png | Bin 0 -> 29298 bytes .../SIM_aircraft/images/Equation_10.png | Bin 0 -> 47414 bytes .../SIM_aircraft/images/Equation_11.png | Bin 0 -> 54556 bytes .../SIM_aircraft/images/Equation_12.png | Bin 0 -> 64483 bytes trick_sims/SIM_aircraft/images/Equation_2.png | Bin 0 -> 51640 bytes trick_sims/SIM_aircraft/images/Equation_3.png | Bin 0 -> 59285 bytes trick_sims/SIM_aircraft/images/Equation_4.png | Bin 0 -> 38750 bytes trick_sims/SIM_aircraft/images/Equation_5.png | Bin 0 -> 54299 bytes trick_sims/SIM_aircraft/images/Equation_6.png | Bin 0 -> 76908 bytes trick_sims/SIM_aircraft/images/Equation_7.png | Bin 0 -> 61420 bytes trick_sims/SIM_aircraft/images/Equation_8.png | Bin 0 -> 26063 bytes trick_sims/SIM_aircraft/images/Equation_9.png | Bin 0 -> 55663 bytes .../SIM_aircraft/images/GraphicsClient.png | Bin 0 -> 497714 bytes .../SIM_aircraft/images/HeadingControl.png | Bin 0 -> 160920 bytes 17 files changed, 139 insertions(+) create mode 100644 trick_sims/SIM_aircraft/README.md create mode 100644 trick_sims/SIM_aircraft/images/AircraftHeading.png create mode 100644 trick_sims/SIM_aircraft/images/BodyCoordinates.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_1.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_10.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_11.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_12.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_2.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_3.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_4.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_5.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_6.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_7.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_8.png create mode 100644 trick_sims/SIM_aircraft/images/Equation_9.png create mode 100644 trick_sims/SIM_aircraft/images/GraphicsClient.png create mode 100644 trick_sims/SIM_aircraft/images/HeadingControl.png diff --git a/trick_sims/SIM_aircraft/README.md b/trick_sims/SIM_aircraft/README.md new file mode 100644 index 00000000..b5b0bbad --- /dev/null +++ b/trick_sims/SIM_aircraft/README.md @@ -0,0 +1,139 @@ +# Aircraft Simulation + +SIM_aircraft is a 2-dimensional aircraft simulation. It uses the forces of engine thrust, and aerodynamic drag, and a turning force, as described in the following pages to compute the position and velocity of an aircraft. + +### Simplifications + +The simulated aircraft moves on a map, but not in altitude. + +In this simulation, we’ll assume that the aircraft always points in the direction of flight. In the aircraft body coordinates, thrust is directed in the +x direction and drag in the –x direction. + +Control +In this simulation, we can manually control the aircraft by specifying: +1) a desired speed +2) a desired heading. + +or automatically. + +## Building the Simulation +In the ```SIM_aircrafte``` directory, type **```trick-CP```** to build the simulation executable. When it's complete, you should see: + +``` +=== Simulation make complete === +``` +Now **cd** into ```models/graphics/``` and type **make**. This builds the graphics client for the simulation. + +## Running the Simulation +In the SIM_aircraft directory: + +``` +% S_main_*.exe RUN_test/input.py +``` +The Sim Control Panel, and a graphics client called "Aircraft Display" should appear. + +Click Start on the Trick Sim Control Panel. +q +![](images/GraphicsClient.png) + +## Dynamics Model + +### General Strategy for Motion +To determine the motion of an object we generally start with Newton’s Second Law: $F = ma$ That is, force equals mass times acceleration. +This allows us to determine the rates that effect motion, that is: acceleration and velocity. Solving for acceleration, we get : $a = F/m$. + +This is the form of Newton’s Law that we generally use. +So, if we have a force acting on a mass, we can determine its acceleration. Then, we can then numerically integrate that acceleration to get velocity and then integrate the velocity to get position. + +### Total Force and Acceleration + +To calculate acceleration, we’ll use Newton’s Second Law as usual. The force is the total force acting on the aircraft. + +![](images/Equation_1.png) + +The total force on our aircraft is the sum of: + +* the thrust force produced by the aircraft’s engine and +* the drag force produced by the aircraft pushing through the atmosphere. +* the turning force, dictated by gravity and the desired turning rate. + +![](images/Equation_2.png) + +If we affix a “Body” coordinate system to the aircraft as shown, then the thrust force will act in the +x direction, and the drag force in the –x direction. That is, thrust and drag that point in opposite directions. + +![](images/BodyCoordinates.png) + +### Drag Force + +The magnitude of the drag force is proportional to the square of the aircraft’s speed. We’ll call our constant of proportionality $K_{drag}$ . + +![](images/Equation_3.png) + +By “speed”, we mean the magnitude of the velocity : + +![](images/Equation_4.png) + +### Thrust Force + +The magnitude of the thrust force produced by our engine can be anywhere between 0 and some value that we specify as the maximum ( $thrust_{MAX}$ ). For our aircraft. + +We said in the beginning that we want to control our aircraft by setting a “desired speed”. The amount of thrust produced obviously determines the speed. +So, how much thrust do we need to reach and maintain a desired speed? + +* To increase speed, we must accelerate, in which case magnitude of the thrust must be greater than that of the drag. +* To maintain the same speed acceleration must be zero, in which case the thrust and drag magnitudes must be equal. +* To decrease speed, we must decelerate, in which case thrust magnitude must be less than that of drag. + +Therefore, the thrust we require to reach and maintain a desired speed must be the same magnitude as the drag force at that desired speed. + +![](images/Equation_5.png) + +If our engine can produce the desired thrust, then we can set the throttle to produce that thrust ( $thrust_{actual}$ ) and we’ll speed up to that speed. But what if we can’t? The most thrust we can produce is $thrust_{MAX}$ , when we’re at full throttle. +So, we must limit $thrust_{actual}$ to that which our engine can actually produce : + +![](images/Equation_6.png) +![](images/Equation_7.png) + +So, the magnitude of the thrust force vector is $thrust_{actual}$ , and the direction is [1,0] in Body coordinates. + +### Aircraft Heading + +If the aircraft is moving directly north, $\psi = 0$ . Directly west is $\pi/2$ . Directly east is $-\pi/2$ . + +![](images/AircraftHeading.png) + +### Heading Control + +To control our heading, we’d like to calculate a heading rate that is proportional to the difference between our current heading and our desired heading. + +![](images/HeadingControl.png) + +![](images/Equation_8.png) + +Notice (in the figure) that $\psi_{diff}$ is in the direction that we want to turn. But, what if ( $\left| \psi_{diff} \right| > \pi$ )? That is, it’s greater than 180 degrees? + +Do you ever have to turn more than 𝜋 radians (180 degrees) to face any direction? No, you don’t. + +Let’s now define $\pis_{error}$ as the actual direction of turning. + +![](images/Equation_9.png) + +This is how we will calculate our desired heading rate: + +![](images/Equation_10.png) + +That is, our desired heading rate is proportional to the amount and direction that we need to turn. + +$G_{\psi}$ is a proportionality constant. + +### Turning Force + +The turning force we needed to turn the desired rate is : + +![](images/Equation_11.png) + +Like our desired speed, just we want something doesn’t mean that the aircraft is capable of it. In our case we need to limit the magnitude of our force to 1 G ( force of gravity), that is 9.8 m/s2 * m. So if our mass is 5000 kg, we need to limit our turning force to between -49000 .. 49000 Newtons. + +But we need that total force in world coordinates so we can move our aircraft around in the world. +So, if our heading of our aircraft is 𝜓, what is our direction vector expressed in world coordinates? + +![](images/Equation_12.png) \ No newline at end of file diff --git a/trick_sims/SIM_aircraft/images/AircraftHeading.png b/trick_sims/SIM_aircraft/images/AircraftHeading.png new file mode 100644 index 0000000000000000000000000000000000000000..e007223e55e4cea160e514bbf19da60a2ce52f8f GIT binary patch literal 172433 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

  • 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/BodyCoordinates.png b/trick_sims/SIM_aircraft/images/BodyCoordinates.png new file mode 100644 index 0000000000000000000000000000000000000000..22dc5a46a16f893f983a955c09f435faa9a1476b GIT binary patch literal 83356 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/Equation_1.png b/trick_sims/SIM_aircraft/images/Equation_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cf3c65b0990ef64bb836b5cd43c8a158bf521339 GIT binary patch literal 29298 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 TzMBTTr;)+a)z4*}Q$iB}dHoaj literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/Equation_10.png b/trick_sims/SIM_aircraft/images/Equation_10.png new file mode 100644 index 0000000000000000000000000000000000000000..61550cd4a8fe9d8b1f93b14fbd4ad8e2b16f311c GIT binary patch literal 47414 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/Equation_4.png b/trick_sims/SIM_aircraft/images/Equation_4.png new file mode 100644 index 0000000000000000000000000000000000000000..413804a8259173d0b97943271db0adbb49a6ad30 GIT binary patch literal 38750 zcmeFZby!sGw+0O3kb;yn64D_dC?G9JcL`F1h=4Rm%+R19Al+R`C=DVVA{|30Asxej zG(!#fZQgU#_dUOJedqi0`{TX5V79}aJJ;D~ z1||&#)?ddM7|NKmzmK&sIsW?`5C%qw4F>qX&v^p8UL7i5{rdfSEgSRC6|+IV&c^A< zzV_=FQ~m05YG2-T0WWw?iiWNj7EH5UY=;t#eVRdrwa*l`Z<6 zG~;WG=Y(SS8`>r&Ans3bZ6|sUQAhR+u3NkPDS}6XO__oypZ9gH+x>>KDA8@ht<%PB zFYUXW+5RAWj{o;x{4AjL?=yo(bAFc=9}CX?+zLD%VBOS|#{55ioyg6n9E=%l8!f+2 zV?-B!AC($nr-j`A|M1D1h1@&yKN-<>Y^E(+bm|5F_ZYLKN3jTEg?)%p{r-6lUG2vfK_!krYN7nu?F#ZdS|9=8T+HaX7c;x?!j77t_b8)&|5YE>ua>t;Yu?fAB zW)r7&-)7l8*#@gq2eP-^vqn32-04~R#ghBK?g%jT{ZN0IJ;_Ou=d%B)i>-cYZP;#3 zoAo{2toGbp+^@&a4-RHiSw&n&->w}Gdm<>JI9&Az7RF)Y z);|SCZ=ROcU;VAF)0 z;~6J?)c(i2|Fsm!7y*yXeD0MPRNTht`8@5?N5{f$;P5}rRP14_d;hG=@o)S4b9WXLjEc=K*GBfg>1ZGpzI#lVhg7fSr$s{Rc>g(> zR4jm{1XT;qQ2fV8s9yZFK181`rd{Fhd*av&s0E+D15Ea5q1v?PKTgl)fkZd*EYAHI zz^@}|Su9h(^Mn0v=BRg+rk+fjwM&sUThnzmA4_Uptd1qy|KmCkZ?HET`na}U_aATn zHDt&aEMHXG+&il*pZjGVKfe{(tn{ZqCl2u7Z@6{;aZ@J-t&C8HZMv%e^ice7B%Y`N z;n7hIsSK|e!R5cqw`R`w^s8XcxY=9)c%AA&#BcBbtb`!S|B{su-t4aOA2(`& zK=0275#@I=_=($>w_)3iyi>B7vj2QfS~B}|YT)n298iHr#ln!5<@yIOe=pp+u|Fd^ zmQ`i1s{8Ym*^R1;y&t$gWtV~MBlvyNUsHO{0n9YRQ5f{^m;P_Ns3(5Ihz2k_Im94K zz(W3q=Tbz2L0}x$Z?C<&R68@^)Sic*j6VGFf&V_b#co9e0Ta<^bgoy-3LDyKv0FcI7%La=t!xHV;=G*`^2lb-2YF@ z%JvEXDmzjnjAqT=P}t$56$(@Xz>$z;Z@dt6Z+Ty=1tm7a_f7O4C=kFzJORP2sjx~@ zEZb$c*a=w+yw0o0tzS%4F-_#ND$9IvNc5jy1!=_6FL{y>V#sdL+(BWqJb(O7DQ*O~ zdEwcQ?&x1m^VfPvTL9&p@o6`>I7;=0-{raM^-cXMyPC=8C6b4N|I3w)!K+H@M0>0% ziSMpp)xPEYFw}fZc;@A(vtibCy?=NJ_9MVU1|-mwe!G z)oJgwvdGfC0F!dXSn=>X@*v~2W5!H!kHEq07eAVI6|GfZzQ%*QEO6%50Ht~T^!cfF zHWf=j|3I2B-xc~56}jC6i!#7gb6x^KQLeu{+EJgIc|J(MZ;t0QY}IqmxWXku=O&N9{m|hz;hkhafKfW#sM1K4@N##MewbIF zn3xc~WAe+_s7wQhwr+%sXS?*-G^z6KsTUPp`n&(&ZF&4RdkAQw@LYIJIns1An|4hT z_!e9GQc;-3=P8#!VwEJ`fdKBnZUB|+Z}i?{QdEbqz-UP2%#HeF?gd`}|3u0B%T@$P&}T_>RY z(E=*oZ?aNP4wJ6fKXC?#aWpXZZov9Z}a1j9-1lThEaEP)88zgj1vMc4gGd8=SC7=e{r(zIuyVN zl7WC4_R}4bt^ogK*Da4_2nD7~pf30|^uRUOn?xi>Kxj(2{274$qMD}t9{ZY&K-qT` zC_B4G$&pfLJGe_W5#mBWx@M1G)XNw4O@>pq+JE-JAvKv1LZ-K{mQFn&~#ycDq2pV(aa> zH*Ora0?*32A$dGsz1@7e(g|6&yJlSRdn%;o0P0*eK|U>adD?R6)p3)-Tkqb@1sol8 z+V69&;t4Svo3*xWdso~LyyyXv025Pp*1zCbU(iZBzQelnb*B^DEVUb|@$Q!U1e26e z0~b3u8Bce3G>-ead+VX9jS{oChm`zXIhrh}oBaJ5kyib7_ zI5KLP9|r}x1mql#0n2W%)IYue5Jg>h+DZ0Fqo?zh+TfXx>Lf64w4XNb2oDiW;X5(N zFs9Ql$CJyGGVU~W(R&r&BRaaJ+73mBahEFgCGnY!eoXIFH(vKnJbz;6`#Y`@WB_dL zenUD_%EhwA#k+yewtmK?x`tl(Qhy`VkXrES?h(L)mS;`D_iMZIwNsVXsXz&HMdgw| z3-d;pLg*^T%E#MTYqn|@H4aOp!5+;OCiI&K2xkuXAzm*X^6uz3j{sr#o}xd}da7)L6jL4PD&2BEiUt;(Y& zZ7^Bf#o13}7wL5aUz2xaTyq=QN zhDWvIQE=WWq}u1*NanwKlzlV67UTjpSY=YrPWQiU8G~UYP;q`1MagzHYjYZgx@i*D zci@2qV{NUAYrWg9B=`_ynan8IWf4cptmzbCP-AC!!yBF=$S!5p_<|PKmy`wR*}OlZ zf^rKsMeI{N??wY87wM|={q9*Q6a?;}@r+Be+65mJ9oZm>GPvv;R`?h z{M&z8%dcxf)ye~z3f2Z55w!r(Pz2|G;Rc(?Lr9D?Ynx&mXo<7+(k@;mQ=v}`lT= zS0lLDCX2AP@;$n)w{j1|tP%w6yuLSXCaxjR`C7X%g&Hkt&#&{=GPYRzKTh!6$A}^} ze;F9%z06!EgV+8E)lEpF2rVreL5clBQpgV0hLY)zt}|D32cNIA99GY67ekihB^r+O z8&i%eL&s&3vHd#vD%2cHL&ERWbT`$m&WHfvjjlgOm{+2IO>fZk8Q#zSWC3QPv>!!B zdpIhG!dUWr{BA$L(Fsky_*mjn<^qc+E6lUHot1LaI#3#%v?ig}n(WGB*tXGm;FZfl8J1f!&A|u3(2!IT75gR|NCTd2KfxzbNsDRDyyV|V>{#YSfs{wQ@j=$^ ztv1)-hY?J!Aw6C8CPx1A6cP^|8+SWjZq*^#f;--)@6f2+Rvf&v;|cKqx$Nslm=+5~ z&H~AtOLjU_I%n2JlrV)e@)jRv@7*rECUYps4zoeO)4I^U^^Ml66fpwfg1tr+67=F{>9O`I8_VXZJ~CV|_*-`u!ROYA z7c|)YTkwkwxO_EBhLoT02}d2{j`&63R6lKw%+)%7dD=uzrJ7f9N#I+X+8jFMV?8BIA{3Q5s_YKFxlIB zX~P`zo1u3f8ir;f^iZc6f7TTOtm|dV`Dq@*IR_x+K?Y`5o}*9aE`2xsN(o}ia!{0i z^U^2yno0w!YCsaxEpdTsOgfQr-~P#sSlS8ep8L8C+Ss_S=z!c#^jL;(a`jx|3GT&X z<{@>o1+GW%6Cm4|a^*9IvF`EgF-MBrK4K{lkH!5m$?R6WI4GP60-tz3>yRaqh`;t# zXe*nJY~S{2u6eI{$gRXfAkC1whB1g~cYQp>JrtV{E_LY*1L!rXd{R}x5e6F}6S<|5 zm+HR0k81c5M7&`YtW~D$*mR(uyNe|O$4hjT$bPG-pFDmV$tCf} zVzJGDZ1bm&szxH8AG(kE@KCsUH{wjSjD$h|Y$3u8E7I(5O@QT3{QcSC@b@@Wp}|GE z`Z~J#Ed&K7(uOO;13F?mlUW90$4Drcs*m5 z*t8Wm$+NS|ISXD=c*HCP6~lmN=Teieo{x)Hn7nw|;rEKj@qZ$k7jckJno+*2RqtH%NmIPkugbq467o9d*`I z#F72EVShPLdYV_#}fT}7NeYOz7Fc=Z;{==r=Onlq4 z%<6XHcoF^knImuy1CSY9X(lVdk5z^358kkxZZ$aGh}Dpr^{TirsHT$0(?jU-ygxZ6 z=yQ|7R`#7d6HyKas|FkX=liMeRg&^4&AbJK<&yz0|IbdOo6 ztuiJ#=jEZ}rM_tOcxveRqhATpm1_3_Zzvp~c?2Fbp|g$H-LmaRl^8Nn?g3GI)p~wa zZR*e=LR*fw8 z#C6qvdp^(%cs|{}F(4w)$GpN2rFeUTq{sxmc-+h|I~nP9@kzwz@RuiCFMT7PKO#ObjK@EJ3-ikR>KFw)&Y>%pSz<=-X80IlnC znjy%pk+k$`Kq_Jh#=Ea5`9j~Sn6ovy^D4)pA43DPtd4W*rDm$Il>pzH zR6r-IC^9{c9>{v{omz(6a#x%?8T&kTw#oO$W&!QS{V&B)iYUJIhHTbd*eJW?Zm8V0 zl$UG7%s8v=bz+_+=)gW>RL*xit~~-s97v6XvAh@cagDmqwN^A~L@;q-j5;ANE9gtp z-RGy<0PCk?ETFvKwF5-NgvbX!3$OIt0=9knu0S89B>|cTJH~FH6}vRxW+q7K3L2e= zzM!+Z?5;o#eUay3>!S2$bZQh-KNv+X-*^Mc1%1W##ev!7J^RWYHfBlGKXe|dGz{`@ z1Vm?7!fWO-;91V}6yur87OrkvFwm7wgyQc6lR~#d5b(>>pOd0`m$>{iU-F_PQ@u3E zbR&WpgpTKr%oW8emylAI&@CS|zLWE#IVl_o8;)|I3?m#1p`sBk4!TeRIGZC4P4x^t4;mrK*GW23@XV2Ea}CzmjPzn?GOcKsc?p8_|au&Gxy1`fg7OR&i`> z2i?BXSl$EZv7+!;HC2c+s&ls@%BOhye%YwN%$nEzLUBTPV)Nk-+tCb<*_5ny_13s? z$JuF+VaXcl&=Et3u z7owXhp>FyEw4-lVnnq!UD~u%#qlXlq6Ec^@qs{;*?x_a%;Mr+HH(hfSbber4Wj+

    }JQ^tDHdx3LD1nI@MOY$^pTet} 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/Equation_7.png b/trick_sims/SIM_aircraft/images/Equation_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f1ea30ebd8435d0706d71859e60d50019f373c GIT binary patch literal 61420 zcmeFZcT|&E_XbLnqEt}<=^{l10TBo_fCwnfGE$_A5Ru+XAOS%Ekz%7rRS;AyhrmavVqle$csS8M~8_ovS1LOD=Nz<}ewV3fU!f)jxd57e-BTV449a z;xwY8UWQ#_D@5{vWvADLq>$@RyR=@;onpHo?sxUn^LOt=-u-d$Qg+6TSH*8n-?#zo zi7>eAeC;jq@{J6c*OxAy2|EP|Cb#DF|G++MSy10J(8Rt66SGO0ZiW&!CrVRM&R_zL z$8K?BVIxO+Eg9E-6WNZFlA15Z1U5v&cczHgz;w|HT6I1OmM|5n6U;&X>to#zU6R+3 z9sK%NLmb7c@`8Q{$Fkdo?YNX0o;Ok0K-?Xp5FUk@A+jRbwVs!TBwZf*1rFC zgONf|$ohMMv;T7+e?EWUBn2HN@sFE>$N$?6_QEkSHC~N^|65K!pP#7C#~<+Y@);9> z|8#@pBGuvU{;0D5H$8lRzU5QelNrv}>}>4++YLF%Dr)#4mbjnG``;>eI1GqV_jIm9 z@`jQtFc`IL@E2WxJdfH z-O#58XlgM``#<@C3YAPaAWEU<1|=H*=?1`YPG;nDyVCvG&Hpxs|1izUOE zSU8c;V+=`_PWGMItAK;|R-&_bcgAUY?6Q(&%=|E~dxlYan-~UXpN92UY}K9&Bo%PSrFpp!8kxIA` zV;yjl%`i-`rkNM+FF*B2D$_o%+_qx&RYYcg)r@qgffjLs2@X=)S#IbV^+qX;!U&6N zUZ?<^uD{&w1?PSP4t07|?Oeh_a9kxS8Dh)Yi&Q2o_-e>s9gwj#R`AXmA8F=+I@IhP5cjEH z&vg#4Ki0=B+dwF|&%eXk)1gD0Gpv<&ww+15QInXkZ98#jt0kRdSKNQ%P%8J8nL?8V2x6lV<6aA|*RO|Txi}q`eJepWy=oXq;m&(y8 zn3thEFAmtavc!7}H1X=cfL6zr?KZONw^P#9YKmH6eyplp{%{DQMukgm^gty} z=qc8&cWY;n%nK2(V+3|MQK6Hd1p6cy*S;kUS9i3&NGz;kB`<{({3$SyX z1#DaNo(V;OFh6&NE2Hc7h&wV_)|FR-f7HQ4t)iZi`rsp79xwZR#TV6B?s?*L?M@sf zN?|GfzDF?YvSN-e_&~O=an#=+cuph<%y%7g{Y`35H7&zXW06jBURaz=`i^Hlbkw6$ z4&DAB8NRnIjI5K+P;7L&Rk7$3Oir8cKYb>3y4PWSN^of7?;)^*zhLc!SK`w+(Z5vy zU;znR3)VPCbxWytVy>`18d}y=XP6L@A`^U5VtK#WDe1|KvOqD>V5V%$_7_E}kC)Lh z2ZaVYox%bBvrsmv@ceAk{3qemBpUt}oO}rWdN{=QZ*Qml|4G6sI7*In7XL@g-=M|E zzbg@YS?1zj5ew)d?a9p469>#>{%Tqzk#cH`w=*DQ-GBefco;KivAAa@X=hdw{369? zG8{vaAeX{gyA*oykyK|qZmLS)$zl=9Uu92va~(A^P+teCwKo2yG|hy%9(}OVsMoM# zkD2$VbTSN&>1i|HEW*5sIQzmJ-yNsNX6`dVvMsLZg}Bn+Zr|5AKcMpqMj{D+bzb%H zKTa$!H!$g^?k+&G^aJLu@8_uMCC~iCyc+x*NBtp-tq&pV*WaFd*8jK1*75Vl#K5!; zo{;(t&v4zKh;@R`z0I0g3H=ryhz1|E5wd7=>*j z6t~T)uPAwFHe`*4*WYE&;S>&vt@f_i=rcikrxSG4+0NE%P5Nfy6Cf#a;%g}}u&p-v zL%%(V6hj{ak>aXo@9OVrILU1E5FN5YSgLf!H_6sWB2|ccxLUB%_SdHft)(hJ{Q;|c zYorX(BM_~)niI3cMd8o?PxW+?4p5v6KZV(8{$|Z;R8@y|SDJZKFRlzbRXXCgn!(Be zD-jk+VY7g&#ys}6(MYMzYU0il?Xw9N*W1okIw;R1V`6>TXkJ$TV-ct)1Q^xROSQ$n zZIp|j!dj!kc-l4ryj(}w13(BVqyv_4=KO7QIy6A!Ewpe*+*e=!OTs|FZ ztQ9K2ze{`LVbS5g*}=dSU`w1gT@twe`ls;%mSyEN1X3C52kb-947NSppNRKbBkC%JbjULRHXf&@)Hva33z#IjrP{O;!8ZX;-s0BNf-$ePt@9Y%@)kMz1Z6h3e^)7FSA8ZBWYQ(f%fs z{a4lT05lPn+#u_BXjZpL6*g`gH%vQ6@`@7SRL?%+o?s?rP{cyxy6r3Hh;xbxu9=u-c$e5cF{ z!0j~HESi4vi9gr-7kSjFk}$=cS08^%kpH$>PGGYE=@H^n|D^K2Z)iLXV4!%zY7!C?Gr@ zA-~F|08Fu8&t#>-{P3hwV3(BqIss3^c z1o6KD?`=)>q(>{u?~c=e<2!+32SW-SK%PsY)Xi@B2Rr?-$?*X|2+aKlLV@M8>lFSd%BA zW_Qt9-+R=v9|%1GcK9XlS_L!r4(XncY(QLcsXrh*l6m;izdqXKG|AweYu8r&Fi;l} zS|4Hgi5+_j!qECQ5)Q*Jhk_NAw#I|k=r`u`DxLhM&sc2dB*zA_=_xE0L!vkSF&TV! z9>&-@3=OAQ;V%}k5E?i=TFtgQ5z3pgRJGRWYk*%YMJX!*0UH?}6_^sX$8~a-^=3UN>x$U0li@_mF6oK!`Z zj<~gnPJ&k&S=aU|QM*e!yCkbhc5UM5(KcUw@_y+0{U2ukivYiWba_WItzLVT?H{3a z+?XQ7r6quM&>XQGr({OP@acb#!dAeHjcH{S~X{j zX7&>muY2;VH-~(w@d^N6;%mD#2uTe{)2`IE51V8H?=0`b!cr8B;DHO0yeyAZ@ z0PGKU2FJ&LK*K*}U_z=BC@zQoTvOodkq&lT%4#tEg&5qJyDMvZs{iUI-(z^gT72*J zTCbsnlK2@SD|m%sh`vE3zaeG(mlHeMO)1tRb2 z5T*3H{~5I9fS{ckoDToFvAR@NzRcl1mPY%*txz7nJNV7gS|z2`7J;Y6fRB_`O^YF7 zoQ_rCUb6kX<)@T>?rFS{gnA0Aw8egUsG>HIP`2ttGgAXL2YX2M!hR?bo!B#SuCCs8z;d`QKtexUzL=9gluo`gajz@c^cIJ-@x}Co>TmxF16!W~e-|8ejkw&lu05Q=m(?&-|kL z-#^xU5&+=V>Oh>^k4XYf>dtd83Xb16f7Vo3WEdkVSFjU z59j$7PDTCYQXotKiOLdmOnZOrT#^)tv$O)BBj1Ik85D?`;05ps-F3~E5^Wc#7$t*p zhmg=kn)9=0W;U11Us9&}IEVz?gzL_J3#I9*fei~JGg{xp!r}N%?;5E9Qo38J#MW%X z<$&5iN*G(rL%5MO?6O4!@^?}SP`FdN?nIwoXg)k{jb#t2_Zss>>*fOnm#KZW{5A}= z2|ydEVc+wYGfnrkPVGAP*8+G<$se%D#M( zL@BuLpzwXAnIuB0he38kB4B5VHszG!d=9$0|3yq^p~fRpm2VqF z@L5y6!cIZS0xx%+y%cdBJ1q|1UY7!|N%d5YZR8C;Mk}BhRVRHGXYt>(Q&&Oz2vt!S z#~9S=%*E2?JZBCG&1>tM1Uv(%MS|^WH{a*$lJJxVz(BWC-sOdDO>Fyq-TrES(zqrEo{MrZV{f+x&)3qKVUOeVB)mEVh+@&I;5nOC0mWrB_;Yz zu1c@en~?A2o1Q3nZ8EIifaax~hPtrPw$nBgdP_|7JuSei@TZyOGA)zH2h>)RtnJm^ zMAXiVf4h5Fm{ad*!e?q(&fV2E@l>ST4bXGsuO^#x7to0Q`@`b3``%I@7DPf*6#$)@ zbtb>cEoH(nHe8UWLyfKdTKV=&VisU+P_Ko2jjux_THbHb-a-MXv!a9szqBkp5$Jy4 zgPd@(@hU(Xw1_T%0RYJwnqs`xR);~G_P+>s((wCk4=w|AMvEV@$u`e+`&hE6nrSgI z^=EVr0-}7YX<3}AN!T)?(nus2p}FQ2D6NoS;tpmqLOg|L>kg5Cs=Jx*e&VfOveIcmLj5^>K;ApvSl_t9JM=?a)eiy!0{1 zCNSPOjXIhRW+8^qF_k?t>TE|6OPxF&b7%G0a1keX?+wEa3OpK2+}@T`SMP7y^zUBk z>%%#DK#9NQp7cw6`h?G-{chh4QRwn;)x3+e(b8y+J6bFm-zi*U;r2=JTjE)C zh7-7&=Qar2sc-63g<&$T;|VX(N=saR0w6uD((Njf379EL`CIOCiJ{tI+-4AXCT^(r z_<^cDb%L>Sg4VRGWBb-Rz-f@$MN4HA^DY|@oPxd)Y17A0V)Sd^Jb}OA2(4(}$S#VZ&}qV+l*X(zYoIxP6jw z#umxoI74*rSM|4Iy5rqePbQ~l=N8n^JM zNr%3$;SC>+y|T|_Dx#MjVtWZ`!JHZH-;=Rt^^EGBk^DxW7+g2;myF8mbttomEY zHh()@yc|SGq<%z2G74TBq<&VdO4UXk*Ct-;e~j{QcN`UgD=7U!UBKQT66S>m&<_Y~ z*v^GJF68KjBdXG3QqBxvOC)DCt7LAK*B4E3SYwTVZqHk5z%yaj=`iqhP5Alztyf6D zk4Fu4`YqtQrqO^H{1`;wKXN)3696`*UiQD=|Ak8{GoOKb-(V~wv6llAYk>|^cq75( zJNfijC^vaB!`Ob&)^Y0ta}U$$(aG-^o{NdR)}qn*#4`?Ob&=*B^KAyihln7^9@~x= zJ{b{t)N&yX#ZnfA>EzE~?Ew)PPAasZ#^gTl0agy^A@+oLbRH|cC;edm*C)h&0a6e)|n=>kZN`_A!nySFYG}2Z&Bz66_#4!GO(-Mh(}f>Z5+4NtAnj{- z@0xup?z8C0I}b3z8ELUkP0r3UQe^GGA@YzZtlxyyYREmH{W zp~8L~isB)^SNb~I(HS~C9A!@3b`=;YG@uw7kM)p+Zq^W%65~AjXO6aO2vZ$bnKDM? zNvLaK5Y|*`6$!ILd(>ZwvY3M!H0qST_THXbA~mgjrD-S&4g?tCVpRF&tNym&EB0{k zmkOc%SL<<5Xw0#8MULb0`X}l*$--v1?vMb~Oh@<9{ITxWV%+yClw9H4%FR|LgrAB8 z_-ls~LHrbVgGrRMJ2a_4cfDs*hIIs%oPBkchM9-q&HG{kEtM9fop{yq2itTekwqqM z^5C4@cbgr~F!!3!FHs@eEZ)|r#&;o+VM0`fG@{fas*Z#_~NHce($Rx&w>FMB% z3-C`3Pe=A9gbmFf92%I~oozc`Tsdf^V$V+z`n-<0yV>%{8AZ@cFD*WIi66RA{tHQ8 zpaeMM;^4aOH%Md&^G^Cq;9{oQ=zTpJIgVCGRHfVS+-K##qivm`JAx*&Gp;%9@C$sp z$|n))C7dx#i&0mhC=u)>b*10erkcL6T|aA>@uWtzxUnVH1AI_=adyV)4F71rYvkNf zt2lE%j6aiL2Jfi+m7gp!h#jbDXc`KQzM=iF!vz@v!pB(vHpN=5>akhp`QdOc73K~) zOt(-*Vx;>Cs-4H!%^yL96#tFb$WNrnY%zDgZ#dxSqWSsZg}EYYd?cHh$7c^xliAZZIa{7f@z!o~FV(lfG*TnO<9R$E~0 zW^(1Xz4=4pq4xkPtvj4scFbo=^qfy<&TH>Qef3cE+pLrqal|63_y^gKQ#Gy(kFBNP z+9P`}T%|mB;+rF0s(a*tbYiRm^cue3QQJ|NN}d)z=Q5k{Tu%#^*g)Rhy(C;jb@|LU z070@5OEaqCdOG;fIFs_$xZ+cTn?p5Jj<+`NvzeF0*5`~xoE;@#YvF!d6QSsm60Z`E zj*wE(&G6+jxe<;lDaWbS*|r5n!6lM>Au-BJFG)Qqd*j}TFMOtFf6z6c8?;<@{JWIA zTXpNa#3{JHx$$9zu({X<>BO#?ct`&d-g_aByENQ}njj2UKHTpdb;FL9H?DnF2{4~T za&1+@aacX#1b8Pjw`R`hn_HcuNLiuskh%u?0_vmcl!~I^3?19*09~CSRIgOtmeVeY zPaXp{`VfZMhYa6XfSjj+N8{Snh<&9s(oA=`?HKq2l5dr4Do?nc%CL85;;-hwq@N$+ zwWVl-&XUG&5SbOB>sF%|lz)YEQM%(=hcN2VxfG9~?Tn~7f+w#4>|6b4DMicN-Jw3A zHPtc|!)L@q6EeL_-!A|7gbaDIStFFPfu2erGgXUICVjo=+%NKHrHfBf(JHM#(F!Tv zA>3qXEs07?7F(1QFvAaxrY|~c_+hmyXtpO6?@;(hFY)goS=QP51DGOBjd`p zqePEQ&ZD9pdT-2jG6~%X<)4$h(DeR0BK{^hhjZk&O1z3}-o~-AkXoCcGDj=((#&d1 zhelif5VC&6fr&G9`{Zyz%D4Xp#YgBBs*wvNpF@x4*UXoN=G-y(g^wIasC&Fw2DRw3 zIwWsH9OvB$Zm>1@)_ALvp`yhk*=ejrj~hFk1Pg~4pQ2igq0 zPAs!>Gf{#W+9>*U!aef46)naqurv~Uh?XBT5 zNhP7K8hF&+FdSO3Ib_ddAJFn`2E&MX+=E?UI}Tx$bS}h$LZ*4FFa&$?84`9rBFTM; zG-Yzp)q=U%vB7F(;ggBK#F+Vr_>o8JVk({@e_GG@73Quc?%{5}#XFOEUb(No z@B+0t2H+$6u8Xu@ekNUBpFLQQeGK7^Eu^$d1EHd*+quMa`Hb596r^`{x0 zkXKDESTeP9e4e$~eZ0gGw+oBnJrjVT%O=>!=dm@xwntaj?s82Lr{$Ezqj}p(Tt`80 zPjC&&4xHycc1|fZpmfCR;k-``?@kj;+;y?9iKTRROElS)sa%|PcIhQaNbX8Jo<0D) zQoG)~!QZU15L^|y`2^efC;64A0@UbKvE9Isl)~;Bd=IH_`B3nC)x=*%UO!<;{Sfy` zTyr>6h!%mC2YZSgO0j13g~0yEzPD8Cf{)dbrzLsxlezF^8h94bkt}kN|RU_)ClO zscztSmZR>;TA*o?2{e%0_i~i9TM+$Go{T|AUjrw%6d8o2=NnQH%>$YnAkpr|BSO@7 z4-FT;tgan-xIa2jL!EH=2t%5nMv*nuWO`8c5OHXCDf;^P^wGQ zm$-Uw5#ja%weNASKL78Mcdr2h5Eft^A)9YhnuBVfK+szIBiBw|z0lX!TOfKoKzLT#Jd*(@%_}a!n)qAn z>I*+SE{-#vPO{2lU64}-=!8G{S&$A@SRj>!BZ||h%xb?Ri3l3X3sHBpA7(xj?oVa) zia+Su@^-9=Q^Ha;Zp>Jn_l%mI=Ap(*lk16N>zNqmoyb~Ag8625UW$P4Oms2b;~}DQ zv;-A$0#dX?=&#v)k0DV5qFQrO1@{>?7rb^0^x+dP?DG;}b6K#v75KSq$jY;THsvNQ z`%Awkx6x1G_0HIcJRRr;oRI151He%%cQbtEDV7^+8IZ~DLIs8G5OA> zKHuNgclidt*-_wP&r~ELK5AaX(0{N&!$za{`Gexk;Vdf!*La_tJa#Ti%Z~&U zanF~m0jReGQnRNsxz@RRLrMISyV4EKB&@0L4cP}>xeF3sh*QE#g|cz1ip)^1-P2xXTSQa66FUV7apk+dvq@S<;ltNa&5uPPQ+ckIZou{T;Y2Qcubz zIYEC({|Cfi0o^AhWiw5i?6j9}Uf%tZt&u(LE3GI!AbqoR_`FD5qK||2iW=n~!Mn2X zHQCgs#Z3h89?%<-YsL%jM;}IE@+by9n)EHX9gtsakb5)s!DoC5*7k|}%>_Xh2j+RX z%EpG330WKQdTey=FJKe^`cv7%kK^RC8{kZ?(W znockG#?!PVe^oiHV8>3DTK8C7Aols&B1C`fM^l%vvQYng=hIQs8*Aaae->z2B0<%@ z3$pZ2qB`$x5#U6uK5+)MllVUB-Oh81?dQF>v*4S^y}^;sK4Wa$-~8!E?e(;^0|+6AM9?g`En5T`Zs?`mcY50`+;8Pf;zj$ZO0CVs5FP( znTLKz=ctw)_2?139JMKliW(fTHDtZ{{-c>aCz|;rx2)Z*_PVh{ypC>@6W6FbmB_n` z#vO!{;9muJ6YlH3k}iBg3lPUO8^%!62B8v`$na#_OO<^Nmaonf;>@sq{Z)>K$In z$EIG3^CN9N74(WrSiHkqsch-PF>Jt0YJ0e)ldr$j=jR8!*b$oGW+Gm_wXwX>3w`rA z7pvlf*)#cVeEFR{(QditbH85HYI@*UQwkZ*Qr>u*P+80nGLRp07CZ2QJUZf>;KAW& zzoOzbA7yI+ID1>f>%Ly@k@l|!h6gqd^KJ|WQh60LZ|oTo9p`u$C(Bn8IEZtF_OYrX zLX_2uj?RhsylV1!0%tw-xRzd45*?DGH#1KReBO{v3&+^Q?bhN__2tH9%n6bc{eOVF%~x7ZOgXQolmLlHY>pJ12if) zP}`;1AXN(-CZS#YJXY~x=wj=~k|U-Y&h4#xjl#;3xU6S#sqFltnWnT|Mn>j44ZM5H z`;!hO#zVHztbTE>OR>>-cfw*Rl9FxUtVn2e-~G{yEEw}U$@3~7R`Iqz*@v8c+e~J3 z;g2ozlm|izy-khZqN$HqYHLBTP@qyOuZs0L!$i!EZp9DT=O?$hHDVMnr^Iy*q!u3Y zhcLHU5bWWOJRUFgPPg?!TgoS|X?|JzRi`X$-O}T6s==W$eKeNe1CyUzK%D$9atOe?<9u*uhh3q!lME|q9}e}wl_ck--?Gf}=jg#?hEpl+#d!}}f#O`Z>kB#gLT&jeeR zyTpD9-&VWRhLr0A?_cdwMkjjTBZ`HQzZql=dIREbf5YCHmh3i#3$tz(JtigY1PmDt z^4s)LG(Xt_>Fxs&nIN*PyNtcMB5xf?gCGUIRJ8AGkJ-bcRYdv>gg{v7g-zUDS`5Hg z)iA=lnRNo3%k58`a*ZF*1__3+ij^KxpOMT?HoDuB&v)KrHF^1z9-=DzOY_0TUjC{{ z^_J2M1s4BPwo@m~+t)2jtz*judpZTo6It@b*Ve$qHN^7WLFbjoI*r{}@ZJ==m4*>Z}#(UQ55)F?65f}r(@>-zd6&Q|o^nds3FN!DE{ zpi$p$=)bCGgu1MS(oO1=)KVK1#q!H6;dq7|E0X_g#YUYD5)jL<*AWk9Y^u0Ny^+5= zl&>U?hi~NX^{z#Eew#93lqHWk6h#xo$H)j=&x)LdNAY!ry-v5S-uQ#qn8`5#lR9lQvjJFFaU%&V1{$x@-sfr0I2wWZl|2Xwq>+TRh_w16=>WVZkCip?r53fxQTJ-oMS zvDYSr&CMH~i&yQVmSulq=?mR3_noK^jR1bR#J&l7W8GFWR~G8^&N_Q#X`1I|b;+M& zFm+e?T{4s|YK)!@wt3fgbdTf^q|u$Nq**aRA_7c6{OJ%|bo4Z=5bDq|+9Y8veJ&&0 zJ1!3sR6o?$U9F#(KqzH#3Wu$ItbaKXa6d^fmfT~J6KH_=#)fc+HNW_DuG^VZMU59Q zFDLc%&46$@C(pS&bPsbk;0Rw~uXtuZ)E`UvZYLWYt>pqEJ?vF@!#oqIgl zyK0@=W_UN+z>q718--hZat!>*TCI$=kb5YpTgzK!1?uI!8MM{eC#JTPjEAQEK1c<9 z(P-hSeYq;XIzONn6shi^{c+x&8AXS&4&UgVkE?CAt($L~bsv9A#?>pqM-kOit9sO%tWF}ZUM3g=BL zW$aD7%<1!GVlerYgwY^X{2I5SEFXkZugl-lt8?C)aaI<-%N>X!RR5CnJNWAOFOUf{ ziv^>Vguld#S^NJ^QOp&4=cB)!luH8BBpHYdgPUvG{<0E zAZWEM_a++zh)^(!6ko1>Z(u5H0YqHS0xJcOx?Ts!7cKRMb!pqs$q=w`v2ug>-lVu5 z^+%x$XSGwdzzkLahN?I+9IkFO`D$~Gc1%n!gX0K0Yl5ThT&p+Y+%Q+(F^;QXw9$5fQo6?2lfL8alH34z=;x_g^I!yFFlhiw>3QXqq;HMhh9I5n96fhOP zb}qL~wLCP)SB69<4TuM=_$%ZfZ5?e-V42Bx#f|twjC71lOJnjz^Bwiog|!YgUTq7m zC4trZ5N#g>M4YRzU!2cr*xoRDez93bxU7M9_uynUE}5yYHznqbR+|j|T&D%~J*BG~ zVgPDdkMgdvHaE6ELp~ral+Ipfxgn-w+Lpgr(O>OE8sMC{VX{uHA<;E}6@Hn}5|zk- zF*y+Y{JHGP=p&DMQ3r~O^QEkrr4JAF1HCMW_W8|Q>^g?2!O&bHv^4X~_f88`z$N4U`s=l}qHFWCAN7+gu3r_*b8XU;-t81LjQ< zBWvsq#8(3Wa-?Zw&f9M%)4npdq`z3Zv|>hma(#yz@i0!Ro9-P9LK|VLk>93AzZG5F z9~yR+=(8fYt;?sJ7+HPfvUh`4qUj#(#^xTcE32I2&bhS>ubWL2}9R(-hE^7(A zNeId+Rp!3(;~;W_V2*8*Aw(~vcG%~UD*LLaeuy37b2yO--|JUOjF&tT#Maai)00pHtT?Ir|=r|RUn=1v{CHIik(kv#>2KF;49*tQXr6R7-ovw ztKpPPXFq?j>#Z;(^mDcBGO5N;j8Glnx_ftt9bM>DkPWoZlKRwCu29x}&fjCX=o) zqlYim<6g7B8?DykPv(2K7~SKh_Q31BSu1Ffb677Put}@6k*aTk_As1_ zVIw5pQzV^EO*!D?=~P_GAYz%XxFAT+A0U^evTNkF?3;BCrTrqSyL`zcAbrK*IE-xC z40Q+nVqAFwGGS6S9cyA+8&)BoQi?x9{lsU?4+b22X)peEP7IjG1ZYM1$IzXv z`bs`H5eFyAea5d4BT-wCz=Toiei#PrP=PK!h;h;&hxEtuOXi@t`~YSVRK1prP2#>% z>8b8=IHCT7b!uS(>_wwX;gPqt3?~!EIKdCALet{Qbbi(;WKu-Z05GxakUDWvJ#rY z%fr`(6Pe|0dw7a-K@8;Apk|53vRE?m88WzQQ6X#dSAOE; z49jW#Y-#E$n&0Dnb;j0z=xehiW#co2mk(RCbCeB+&3IL+=E5CigUqP>WWwRk+43%U z81Moi!fBBG5Kbk zk$iuXjOzdbSz^XMT`-Dkn@Z=Y3>{fB($?S3wN|M=w|IR50eNzi=8IIo%c~ZeywLYG zsRwm7pJ*cakz`z>yeXmP7Xsg+pAqV?f%5ZXV&B^zjGX&*Lf6i!IC1r6ynWXT-7o`SH9=&duiQpfn1$xCUVdOAh)JHe@{>I}Cz>pD zToX7FkC{nyPMNQo*6Fak77cQCKb9LEAo;y#78Ms56ipgXo-u|Gy&no4vTyuyhUj4I z{FEU|lTX>4Gp?WY3TB|b2(EWQtqQzdwx zvJ|g1+0Eh3HM=f6hLrn6+=LzAsNO-|{rmGiRuktUsDH zdPS2fePliIS$6SaN70SwjkqQin(eF342%VZ&7MZw#YVF!R-wih`6uqx*2A6HF-_8EZXMwb1o`# zC*8Leq+Psx(cEZ32p{Aiy6Nt5Xr%XsfAY@$ky75h3Eob|<9cT{ixL@9u#h2zK|Ur9r!yC@<74iTus1-YxY@_Wfu;dl?R|h%6&n|#zB|V~ckb8Gf z@f|wjf{OOCheC{k>9>4}Jq?HFp@r6-F=YI7?g8Yl=Hex*ImwNod!zCc^xi@8ZHP;LN7;};V_&N&6}mFjc;gQJO}@Os zHXYv+L*|s^#wl@9BXpjtit6jtP35E8ty%$HvLB3IbT@60x_$F8MIZHtRx=qfgb8J8 zsV#HkB@gW4Yp#(CZGubFLDh2!MTOf{iGC$!d-~H;1Bbf-fe^84N($7cMIbnri2}J)9|cewDkk0G5|H<_HlUpHTmta|O&m_sw))1muX+L$T^%8mp&XDj#W0H$ zkky0hkji<3=qbr0*`%v&2`Wj}>A`KT1#==Mk=aDqXtL(C8#L`nlP*)DMJRivp{gXv z_tA69H9F>WI;br%N}^GNBC{moT?0 z03%+>0492^z4c{JaB1nJ4^JD9RM-1#`fFcmndxuEJn$;kO$?Cr?cuGz7vCl{T}I!^ zs+n(9#NcYY6Y>W|!8}vZqB5S|0pZBzQa3nffIq!+ceRd3yK}f;AiGOD=6WgJoWN|B zrAN&65!qo;U^u@>Io9KK{*onjjdpG|o;#`CflxnDN;Xic6vUDOfOnmSs!^j2~h)xF(1=aa&qnb3cCtYCEnLARuftAq^rJSc-O z$ncl^m?{V*eP4j`<*zsx7B@q^vU&|c51%%K+4#Oe?o%GX_g;7`fsWB(l6bWF&1j6X zqF8VBTD>0@bvx+h6sE1H?i&@kE3aL0IqpK}C~(#qLPwMKc(nUuAXYZ)X#=FH`B6{k z(}Qul=LYk|%u3BE=9p=Cvr6jTS{WQeXP@I`jM=z(b>Roc1{?%KxztWuV-{?GqQ`O`$ z;WEKr{1pp-9GSFwf3CXXkW=p870T>1u#QfroMVs53H{?R_ zA{WTPqEl@=si(g5j}y&b%;mSUy$X|iBGw{;HAbi(y9zBn|1@;4Ff2NP3{vEmvFCp5 zt>Hbte4atjB;(L2UsDb5pQkmX$ZLnwm9iJhN3riwe)opm`sO~Vw-{^=49MK`%2v%9 zYM(!NK}*={>;YrUi;If38P3ga!j+Br47q0SkAT88sQe}|=Jz(`B)w^8vll%vn1(xu zwjNsQlgw||Y1$XSEd_TQyj&COv-8i{Zpbqk1{}mX)vhK?k9sTIv3izR_SKy}@CxJ^ zha}^0y`4hhre9J^KG9YR6vTeVB@p_F?C5mW@qxQ8!B|tUkKOe%!p$1Ix*UsH78eVe z>mIDpZk>kWy0pCg`(Y4@vMA+}bAQC%BZN7t@G9^JK%&~Db~LQsE>*%u*>(h{I9{VL zJZJv|6CvwLu`OV{CUJI<8MW+3U30p-x>Zk3M~^87A^v0f1!3kIIq5JI zmlDC%X;$K4wA6*>Vfsgsb9la_;|}PIDYCC=lVM+GOssNQFj-077b2Bqt;ny zy+RJ2==yZ5zgXCDL5kTU>}7+2+7z>Bb7An9J>d@OX5>S@cMM|Vnp(1!9^iX9{w$-# zZynUvKbLkn9V_*EUV=AoD8w_WgAtIpSJhh#^mW&2^fc-y(O3H#9`L7N^xtGRw+@#z z!DunV41rzF*PRI5WQ98R{su5@!hplEYUOxnhl9IKB-qMK;U=m((}`daz*%2D#+J|X z2!HDV-W-3!;bwJctX)~?`T-LqhbyRI9&OwcNbq1!>ox8x&YGw@;?wU-zeLXr&gBrS z6gfxP8X%G>SK9~+cdm&Tev3olr1Wv+E|CCa9t;z4nJLx#BX(~I+sWOB4)_cdG$gKq zoq~%;zB!54w&_tF$0s_g+vkNp!MIqgGs)3MSA0PSK0=wfFESoU-YFD)?a!>@dHMCJ z>M4fqagj-N_7%5lpBjL{mnu7t-A{rNw(TyLPeY;@7y(jBK4at%i;87$0@w3z#lSXI z@hQg;DaYdM{2ITM4R2u3yHid2(EAHwg1aO-<5&-qU(=Gg$Q^I?I?YC*cl0bKTov7x5+p+HgT07@V z=jKd+V>5E_R#WB0I8KFX9_?fcYR4tgXhRKnBkRi{9M&m#Yn{AVC8oZ9!zjnzcF$>X zczrE)qutVz^2V39pVhpkQC<0a zbNR~Hh57ti7(N@|;gzvIH2V|@0I^-h2E)4A(xfy+c@X)y(?V_)^!&*ef_pCd%TLfq zvxc>FBs6lQKgG&MY@OPBJabN;u>I(eW@N`W1@{<#hOD+PSe*$aJ;y*J4B-;yYeut& zxpuV$^3;q#KAY3hLsng4hM|mu&VDhWDrQcR=#}at-R}pRbG}y3O!>@H zS3b+$3umCAls+Kk8xC0*wkKXTemjg;rnY)ikv{SaXzQ-}cTpaVRs6!bIb0kxzz1LW z99zP2Xz{?XOtI)SXao-hC+t^qNugn-BP00xhGKR z9TF#Dz_bC#34mn|%;Zr_otYCplV41zPZUORXR(Ej!Kg0kozYWGc3ipCBbmzdin7zH z^;G(WyLLJ&MZHbFZdE}I5o>|&S`fpXq(8UxB@wnLj-zp|u_?aas` zJGUAdl}tzrTX;a``b0uA$A2T+LJ6Fzl-S`DK&rNp8s44Z#|+|1pfh*j_THi&uOP=I zvyBKBIQ`6mV%{=1g72ZkUkMk|r|<3najT`DRMwEbHOa^8BH0SdXED0GfY-X!i3Qh9 z+MM(2$v}78BKIEoTV7fi%{Hp$tn`xC=7zo*A%Z_^ABz+V zY|iJO_TD}3>6DD?GG7=icHb!MHJ;A&SJY?7>u+xItSm^CFE%sHZtmy6-Mu-#g~E3I zKRjJ!SQBj9RzX5ZG3XE#6$BK8jTj;-2oj2vv`BAsk8P9!Qu@%6N`sV)h5=I29UCz^ z#%M-tjD6#I-}gI?8-DE<+`I1UIUh0ojcT<@g+q2pzfXL^*pBXXUU-@2C zk{WK>yUa%%%JQo(nqq$U>>WjX;<{pK-R2BmTZ}r2zFivS%`yy^TWRs^h_)iZi-CH6 zA|$y#tBIpOK`sogVCO%nOe^c1%WsGscO-F_ZMM%Adus~d{|Pd$>i`uC1eIrc~&@`%m< zt6ECj7~4>`%KmTykPA{{#Z~Uq(>{hU5O-R3}V$r>L&k{rRDE(H$Csy4~B4g=-Q zm*}qZYAH-c^3?%tLZSGUTR4qk$Ms^-n zTOVDMXPuV&e~lN_MFq|4xpd(>k~)B{@=zeW@XmUtzeBt&3=~qr7*SptMKuaF2R(Jd%+wQ2niP?H~ z%F#?3Grm%wL*HQ;AkO0A;u|)(vy<8&|2G`MtEgw37^Y=_X--Q$Drpx@mlm6_Hu~%m zVIus%F2avwdI}a6?}*KGh$pDlP}@hDA*lrevQ3pd&mpay3>A*NzNoC-A110CI)U{2=yX=IuWZ+C%3!w257x`9HPXOpn47`Mkk{q;A)Ez~ zKmJ`Ziq@$gq6_bf>*R#3gHB>efU6TF^Fy;4RKP!L3c9Kneb#DRHm| zD^ULw9Ms`CE(hvkzhS*QyJzprKO=p-M{zZ3ukhW_q=*Xh-0@aJv?>%68YQD9%Uf!S zdB*Dw(bae!J8XeOm#OwvsaKDJXz`l^;nd?+o6`u23m3tOAh&W?q(^^!5ikzt8u!-w z8{}Z@BsWGdYP(Ir|1PSV$_hv(7Mwz7qE;Gw<#wx(<^LJ-sHC{3=A^L^i_%TD3Fj7O znb(MIdc?N8I(+U1+`_k?%3!Hq`0xDDdozQkK-lJ%qRn@f%}1+jZmS!Me~nDt2GY@4 zEuA11VHO~t7N1qB7a!>iaOv;!9%LM4q;%<{9&I&1`)g7z#pfflve1%pKnCE|_Pc(4 z7gAlNVu9y9CL-?$M9Cd6cU%-n+6#M|5Eb@7MF>JVZCMN|DD5hiI zX;m39E8ln5Z_#ZrJ+iCc!+M}3$~9re-o^y(yb#)&+Az=Sl231G-9Pl%qT4mP*QH&O8x#u@3zLYXee;A2x7bU z&YUP<)JG_lFBNwQzANZQHL36&L*F_br`nPY$Mx6mKK1>i6YURG;Vb)C+K(%jovWFJ zzsZ$;P#rQQlIF7I-66M(HcpNY!Jko$OYhMlc|tONGRw5y-Ef2?PKWx>Z{rUprCOgi zDq>PAi!k;WgT8S%vP>yiP4J({=5owa5_4v6TaFMvDRrOpA*Zx*mTfWK&K8R}TeeQx z;{;fVb zqla#x2!lSN%Dq$F6kiba&0qxi33KDdsdWzThD<62m3~;JevWy#V%$`2JZ2Q$x=Y*u z@k|Mtlth1{Cr1g5IOufK@Z;7rl^Ws@WbwlRPPV&SUGN@NMLi?flrs2@*P^bRuNV`1WtiuhO^s^4ps6Dk2 zfG_xVn1r%uWR6 zL1y27eOd6Q352U3vmX)ySpCeqQz!>cl!N#VInIBlisTpO3~RD|v@cUPtp+;B%BEkr zo1R^FGQZ0%JIP~$G5O`+%lL)W!5=cBsSB@dW?U$wzTf}Iwn(#Fe_b&-~ResI`EDA*9Mg+X4zG_URn0sUCt=BC{dSi_4maqSJ^~(Xj5TU9czCB z@|63J%_TIVF0wqA*ZZ^&42)A8Y9D$#3LdPvapU^IQ2V!_4*;m%PwxXWE6+3I83ZvG zA!|m}Y1%$!^CuetkJ1{v!&&M4oKZ~l_e^*HqJ^AaPAqbXMm;(BeZ~dV6igXm>{DX- z_}V11p0~rTRg`k%rpCNN$5P_6%vZ>3jvF-PePZ;nP?<;VX~X<4PcxUwGY6g2^^}z+ zXFbRFVmQDWo06AKbwue#1j7mckJ4%I@k2Hi;?Y8hTw&`lhQ^J2QKkRZ^@q{>U znEXktM0ugRX|BtC63W7oBRD@_jK_EuH|!=UMPq`h(^e(B46sju%s=$&cv;0JDs+K- z-DB(}fCQy_c%4eJ$8l;iGiC^Lq<5+5)7O$;RhPihP5WoC^VDg(?$ntd?#e+4u_j%T z_=whL!C<@<g;4Nr zs_Q`dKGRO4P3Xxg5Abu0JMXw6VVd(}k7+;i+TUci%1d2F+{HI;$Ym`_$r0Gm$mE0E z^Mhyp5GyvH7@EC2P8(7YNjP5GU6H=N~-Eaj96a-+|q?1%p4Yn)Ll^;r-9 zJ0=KHS%vHFZi!6v!M|2xaiO?@&9<;o7AD^F;DI+*(NQ^ltE;!xLvgg1pTAG_sbtL! z)?Cx;3${ed@;2WFV$L_1y z(S_Be6`fT?Ax)29VI@<~OPnq*T_!BDreed9Sw6oc!EVK}_bK4g8zoyyRw*K=H!6!} zX~3ApR}F6xRN#2vgApMXaC5~xTa^aTvYjgn1T?Dws`#BMq7PfkjtJAfjCu69G*WMl zqjTv0TJgHuk{DBri!vL5^fU5DYE?423lom{gi*yf7mt4)97BuSir5L*iD3LZU)R}( zM$7khzanxCp|cmxWt1bT8uVbY!# zYz$3noRAdgIW}y0kv1xDBo9(T#q5QgyM$8GoYYaR-YN10axOus4!%!c>QY2O|3MX9 zNM;rrjXynEQB(|%>l!nEM?=3es|AfVYQw6)K>-^Qwpn^KZtAuSIL5EX>4?Ta>su8!Kq5Obc{r3oIE( zm$!IyVaYjLcUfDh5E2*cnpkTa9ZcoeqolM2=J>Vzya+CO_iLq_3b6D|%Bf8<>Kl2L zC-Puh)hRBiy7h|Mh$o(XJ_YB^zqugTGU%j+)3uD0KB! zq`|6zHnBXOUAMnCSOLwv!v;f=qUDR59tOIAo&4yYAYl>Z>0E^$0 z>6I&^(5pk1xy=_8$-|1|UzW-WSBy(Q_ZOxYEm3)jDqs9%|L0;%6}xY+Lew{$H>%i? zGEB?DOdBJ81ARlwgL=d5gPtRx!I>$|6cY&6{xUF!?_SiP-gMztaYcODKhe4fqA{u8ZvO!S%6;j0Uie{CF7Zo$LE+W=(2UriLn~$Kf>()AvJH zspDzK%4rg@(3n~FdIBijFN|J_%)AnD`t9`l{-_pNw0xhcpUFNay%j4RMJKy@1D6|S z=7U>^P!c^o{SDnw5 z-?nsx4ATu2{;?rUWw`oyL_QjBd|aNYQGAV}sWcN;=lfubQ*_ToF$|h32r2nYS`<+P z9!?W(>~IpSW0R5bOUpA&$|(8%#kRun;*)Y$qh3m>GVjFi@rt1iWuH0mjcIxMmwp@n zgu~h3HDqLi~qemnF&4;G_Oie1Bh{Y_pDtS=wi*e!?X1MuLw! zC?rU;Hmc+?wSl;a23!O1y9cUB{z)nSDm=Kt3R_j)W4h>hn%%gc&~Dd1>DIcMG6{IQ z7_=cf)79aU>hw&(h<629eM(%X7W{#ULbok>FyMAjyVe-`BysXZV4JPenQ_s%m>4d$bHQL({0+{g8dX!;y) zQFl@rVk;dig|$;=|H5QGQese{k*p^-*`yB9_YwJGw`Wn7?4Nm%PiB}O*o@1KxfYx2 zIFEX`v@1T@6Dm7(Tp(YwceHxHp~V&-BB~SG0Fp@ zgZ-fHx*UshiArE@zpA=17jPJwvQ7nIYFK};;`r-#xh$?(dN`N<;}rCI3Tj=l?lnd3 zIcK`^p&&X7bw4Ea0(}1WK8Po_5fuHHnQrU`pNA6P*UH+=Mu~n}FhS{ku}3jzW7YDD z0L=%f$^9SlW(?DtR)_gpqidFg$X4p^M0~CQ@xuT5)FEmdyWgW7O%U+9gg;<%+wg|7 zcy__2Y&yP#D4cO0a{i^7cOTopmu=D>P~JES^B<ym7@x=?D%N5DBvJ@M>Dq>>GmBD*P@Bh5#dZP4HjY?3p$2QQF;WXu?EJ^ls^5TJ9|DEcw_Rj3r#&WVV zLj#@T0aazn140Q}D{hXZNw9NsJi4D6Nr>XG0Z@&%mbY?)ecCTgCw<@G)Enuv;lXrcR%zR?aSRQz&HF%}hYAqVh zbinHF9e4NrySxac`d!&7+Gg4!A~MJdv;{8U!UhMV76fwxbG3L_)8tx#eo4Y6+Yoa- z@3UBG5%%a+jjQh~%k>r}aEP5Nt)ESX%#)=H0b${o0I&(&3R?mLwAc&fSs$q(_i3>2 zJ;c(1^2MR#c;a3|gI`JSy~dX78yTaXYmN&XH>j)~oeP3WT3DrIvzkJ=p&iO2+d_6t z#x_i8W`v57yHD|>kvrCz4NY)LT@*tBUvcq^2+7PNwhGCEX5@6 z6nZ$%dDwqf1~z8JmTTD;b6sv!t{-ri?OUf)GnY}!_526Z!y6L(nWzWD`2Q$(&a?;K zj+ggJ4ZW`52PKc2=s~5~K_{>+s9E`-*0ZG8e{Ge6Zf0cG;MlgO#u-Pr_>@HSZNAYw z4S7fJM5uMy?406=1AYU1c7N?*>yhGNtuNPPgs#y^bKeBsXp3a0zsUb`&PZ)K&$sWN z(LUmAgz(DrD(|{&xl3V_(hsrrCkHKtvvq@p3HqsCYm+^R%ii2lY7?Dv&3Bd#mt`7# zJiVD$mH^R_^Go$?*t>3gzUdb=S^Xd_uY^sHC&WvWlmmkTGn;IblGw6<-dSbIO)sOa zY$dMb{UK3owlvekIdxe`8$`kfi}sM3bg7NuZz)p#~X=As`@;_p26e;LflcS;aN$Zw3yP5p4x z^_VUoer(NmTThEg(n3k~*BmddeB`H!_pHS3)&<-SQro@GWY4*ss5`#fG@6kneVcPi zlC5gc^P_VvT@||7Q$1Noj$sY5)ZH}TqOCMvFw&NgoR7l%|*sr#0s zlu8nFy&ehOYh^lz3$-JKJ|*|zGjHbR36-ueR7a7cF!}@fLx*`N0~mITFgd2x`(e~; zhqUhZC#gC-w0*Y_6a$Yzg=aM0=Oe2;Bg!kGsyc1faB^zN+F1y}Rj8VdK-4*X^1SEv zhyeKwOtRZS&a?YL6_TrhzjggZm2Bg|t|gSwekfm1i|n~(QLm%asKTXYZWWD^sXOK( z9^yAApQ3SfsK&+e(>TMPJB@5_+eSO$L*Rw3-Q}!ZW}p~QHR@rrcHP?WjSkAZgUZlN z-d$L!yeEEQadj{ga?fGI5}g5KdsuYm4&NG8m0bk!0sA;UzH4UIVdW&j!a6*n??s-F zPw`LHAhp_j%Ro@5b~NR2Z5~--epi#}X+GbqeT+6d{;Lk#PD&At3b}-gGpyujX`})M z74(tEa+ug^svDMaArC5EdXOH{Swmd2E~^8L=C7Ohgg|67%vF*WkYsu^)qwtQ^5LSUr~IA)_s;bzr`MGUj2@5bBKVh}q@$8jd9=*5mI9mITS^wKY=^>GO13p8^d$@RLunDT@9SdsRb z;Mwu~{xo=BiTPw2OExizx83$29iHts+fjX9LTnePr!KfD(Nb*{>EbHNrq*2}eANx! zF+X-JSGF<`Pt*5Jmrk17--7gr=3$Gg^C{z+bd+2!`W(GVa*J{I5c2}p2#&s;Nxrl< zEfehg!)rIyEXdx#Z523*Q)=M6b=S!Lvy4h=hSO7ZUM1PSgc}`csbJ4EG!32O{n8)~ z36r2S?|ZBvGyV|+tUozt%^ThM(#QBm!fPc}&6{%Q-YgY8D6K3C`bG-ddNA$LA-M11wjH#3yKdp4XTV%hPCqH z(fft0YHT-s39wNR#V~yxwajnBF_FcZXO@!=M82VDn)T@Uu#$=_eQoa#15sg+IQ8^(y_^o+jHul%v2678xp zJdAi<_)e_Oap^wgt66$+J!1j?%ceJVtCE|GVBa z0Ss#<57t7@wyGPbT%7l0p-rfWA4>a$C1?YB37mqq`!_U0wgby^W&eOwWO%^ zHjg>D_IL>Pa?mfrQg6H#z6ezGZZs+5 z_t7s(HWTq@3(2@`?GUi$fXl^|ua{h&$93qM6>k=u{VTXs4k55Xf(|QaRf>`L>h`<) zGD?v5+WIF?c+#Jmsbl%{v2(LB%81K*SB|svBleZ}EVT&99lLJE>6!|8$+)`k_3{IY zLf44whbNkKR3N<^RnIku5H;08E)Icez$QsC1l= zHw|pm>mKN<;KQmLkt)XT94Gb_N{{F2r$5w2fEUc-LW@~!rb+EM4Q^AO96n4p6w~mm z!6Ih{SzaJh*;i2Ydy=1(kh@WB+MVu2mVh>H4EL|FF$A2Q3C9ZynFW)n>tAvxaV37) z9!%{$-QfL)_m9Q@eFh}X2LY|SxX%gtvCxD>WjZ7;B_8Ym@*9L_1SX^U>23nDc%6@3 z`}07G=N1x$26`*Yns zLyuH#OCuko`1PThx&NpM04PtY+wRE-eiT$DM>1>PO9(iJUldgcIzQB`1*ZcrXvfk*d<4l*g40PeX_ijbv|pwIG3d- z{`tQ^JPhxwY37TCJZ3R(W~^`s-EO|RXXb_%HjCf_^$EjrjwT|-%;Vpni6j?hB+o}L z6f_T-OmZ@D>t0Uxraq8`%1uwUh<60pi}%y_UrY&4(SHswSCJQ1t@T78Z`#XRDhuK9^lfeeJtR>NWC@9IN#ny^4(#A*7C zeG9^qupbk#UyIYT8^MEUGLE+Rts|t%0uY}hu8-0WNautd5eC8xNBH~NbbzTP8{3!Tl+!JG;3-Eg1~raH z4uMA}%cx$}%wTt`Yx;HNb2{U0adzM>-s6cQy<$5^38qoH^-!0!*kWxLI{_$sP;E08 z!pAdhIZ*d;@v|(!!d?o;BTzcv@LhkRBYNED?+`)5C4<^OvE42`XAW`9vSQ>FB z8tarH*P(8Av`CL5U6ut2- zi*t#Rz1DU-6Au9oA#1-ds z7YS#DYMW!o!_dvN1+N~$0{{By5^C;rea1=3dtL633A$2SQky$wgB1y;_CKHt#23Nu zZbqF}fNIvUTY2yiOg<<96$uR?UEJw79F-Y89PHRmuKT<7Oa4Uj@G#-$vW$@|F{t~C z>}dKedz{4Nx>*h49?j(R%Dxxlo6VrE#d7HTur4A;_|*86Kz5;)Z9g`jBHdwvSbLhQ)0pss$ne46W zR6g&Z18cZOiaY{@EZ|Y!&m_?$2DcHWCYPtowi9lPq}ggOUbmkLwpRX` zbYo0koaNW^U1)$QrZ>x*Bc!eYR_U%WZQkWk8S`hAyUr!}-AY7d+&@mkC%dDw&7A$A z0k1Sc6XiX``RLDYlvji$q_psY(TK7FXEPlQSC{>)HQM}K|I>?6gc>b%Y?GieGa%nG z={w+ErtNH zYLmjCQ(V9Y(I#F+cs==`R+=f}JLA$}^OJc~JW3?0*^{PsQy8wrgd#rhqLgP9LU*V! z0*LqC_bM$9t7YS148cwI>;tTBtOGLRH%4rR8V5s&{gjjb1N6hg3ypig@a=!rEbk?d((4P;*G*M=MpSN^;~LlM z*08mT;#WQ&s`(siaucJh<<_Oj9dZL*FLkXdP4vSL$|Ge20vevbA z6Fp(BBXEF^o1rfLovIp=CNZ7Xq&7bxyE1y=gJ0>s-u|kjvsw4}CMpJjZodOcIB9EE zOZWKJB(rPudf)&mW`;^S!W`6Be*T1Y8?RQNWcW=Of^ty)>#tDrm%#cZyW-fNn8}+~ zNuE)U7dxUYGxtYhpqj@~!}DW@7+UczeIvf|alQR;`Phs|`(fe}oCD-t{{OrHKE!_& z=dU};ogbwc-;~4oymu}cbes;6Hy4Vf?tYLG4?kLH|7ff%J)T{A zeVqJ?-0vV$4(=}dZ|?)pp|z&GPrE1T2}p0GkQ$x3Bcqaj=n&6j29_baCJfXX7Tk1+ zW4rYU{V>xE)ugT*h@}Gp$`9x`?3-HrFVGhYRL|YT0KTNSv83;{?lf{;J9BBWV{e-M zt9@%mQy%=}+~1@pc@~lZ%3b+O?+*8USf-U~dzs@K4;IlvJFxT%Nf9al+G4~HTA6{YBb7gx3 zbw0$-uY#Q*lvevjKw4VgbPv299d6^SU%R_6dx2mn*xB^MHBZW;MVfp)Xvo`QW(8!31C}ZoxD{Hbc>=BtQF!HqMw9a9M;5h6xV79NFc^VA$ z4{@;$)3m(p5uHa;XEY{io-M4BkMJ^3v^GrLik+cuRA$?-@%_xMhbE(YSBV(W{F)a# zPk|V5tnz*|QvT{wcTa?e*7RD2z~AD2zhx;6?W+5ngUJ9~vo`5BwgxQT+zTxwd}3@| zTCo*D>6l@@&`ZcahrE$QVk;MS%LKU3hPIy2sjy{NL3csSen)2gt3 z=e~fE5BiRPNA)WCWy79fML?~lC=3dTMRYoSO@FlgWO~y2_!TbhoCJS7{*P8em)m=1 zClf`2|3&zT)QRzB%#Z%PXN+q&4Km@RqS@}prUDL=c&@lh6jgTdz@aL+hAw9*bxZkQ zwC9<5AtN3tWFoRi6^TmZx{`Mj8ta{NUF~lI|9voooZA_lae%}WsXi;9V~Tr_K?PS{ zN&iwSyAZINP8dKn(Q>(&-PwHm#MKuV$U7b>yOwwR*8$K@# zV|w;*E`@pX6TkKlm0Y=!bnqr8PAQ476c%df{D3-pb`iITs{WtX8!zTlgoA9_S~975J;4byirB-Qbvw17PjK5~)m4m0?)>%YK5yzwW3e6sY zlV*VkzOMg*mZF+X`15}<0$6F(QaqxJm`6sMf?zOxDj4{YDQW_6;!)f$9aV6irca<_ zT)Nw5n&sW?4A;+S2kkF0PJ1<7zhBP;8)~I+(0=0ffA8)etw3kkb8G%7&y1=JC$$ZP=?av2tFzHZR|1jqHwGP`!%)OoWa{P3anC-ae^JUxv@7rh8 zupWU*Xlp^OTFjL@(1#;}>5oWw{vSPibX5m8!(;E!vN;QE8*N8A`B}PBUD{;s2H!5f z<#1>2W|pzaSr{9}$!L1z1e63>k(DwUe64xd8BBc;r(Zp7?0Y*MPZ^6IJp5e~&CtqE z)+S%QiJ4IL*(0K&)=Rq85nV9lbX{yP=MwxkSimY#1{(LNxAhTO9Ug{?KQ%DpKNR{#*e@x>_JE}Ss%$r&Y(N4R8kljuiJo#U zmru8KPxO34pDDfrRi1JWS#J-_w4c=aRK6PDl5AAw>m05S?tQ3e`OCo1^(R0;JvAQt zuv?`y&j0n-Ha(vCmAvSpgJ!4zkDNydx!NgW+N-?_aKLA}dGUl+l*c^7xb3N&UXCH} zPKTDP_nbdPo@E%PA(t3uX2!CC;mrs;hcI93)PBZq`4hb(zXUru#sOtAx`3 zS5!q9@eV@MyMfevw(*=@N_gW@_=Bxjjb1VO|BRrOvHs000mJVn^{lmnILL6(;q>_U z-_B~xcbu~rGXk60SU@3Tf}OuL^Y_(Tr457>l9gC!7{h6UKBZXw6tANKVvTG=Ho(a^ zPxRBfbKX2+Y)qz{lIH!M7g_I&oC`T&cK$nl?o+^*-w1BAot^Tq!V@}Mv^?)Q<18k+ z*#c9C%5T0RnugNT*2@%P{t{7)YMv<<5D+7Pc@-(>A+#M zQY{@3-12KZ-l?slJ%Dw^`0x=g-bO(?!&uh|!>FhQ$3cEYGWi@3a+p;uzxi_XzjjBl zBfj$C^|r#76_B?n)P=&o{ir7U1l7h+^Y2+?^RSi;i|Er3e7M=k{Pz0Ef9AVVb%q|- z=T(IayxT8Q274F#eU^ebe1JK;b^*!`l9u1kb-65g^B^U)Ed(Yx#@}+A@~lGUX3xZ4 zwmmhb5yAcad~Xxn^qPEZoU-(WDkg}g=SPYh+)qb#&y=0#+Cj25A6FJssZE;lbzz$r zlVg=9M_yKBHgHOo(5oUn#5Q`X^N5q-OPWc~%vGBz%$r799zdekQ zIYAsHcPVl-T7Mhc3c|8UP4|9PJA*t^Y4>l(v$uXe411y0sA}4sCF-<8>k~mJpKRtr zT<@$>Q~^~^U#%Qkj?5V?HwrdPZ5;Hw{t8;ye~(87vsn);+p=K&-07O-lSz zQhlv4{mp~Ong07`nZXX^OYqw~i!F`wG&}d=Yn&qDbd!#r6U9!TT6AI z?H@;uC#AcQ?FO@WrE}edd(n%zetx%>l9sVwM79gTaW}9RXyC~Tlfl131Vl`B%39tf z?PsSn4*JGOB*&%q5-oR&W&f#?U(^Sc_=*apZghoa9$A%mGyZ477b@jpz#9pX&qlaO ze5hUAeh1>DqiFcyhBu1!U*MM^Kq%mcrGh-_8pX}L*Oz)l?w|AU1s}vJJOIJjKU+zU3I=Tn;`N~!;E$0Hf>6k_|m<#SE z?-z=vh%o=G;+l#|(iQKeMrr+~-k>j_JULIUP(l7U|KPf~bD`CQ(m>fb_{H?mYwT*K z^QA8gsn?`Z2&KeExXJAC6Bfa24%{?e6V-nZ(z$F0LE?=*DUfn22zCb+tC&`^ZaAER(NpP!IoD>{FVaz zIwe(3j{d?%93;w7vfz<$1>8fYyS7W-mwRgXfh2!9hlyyw~aj2gHC~?;!gh zJcIf#WH)^iXLs)r*A#mbGvFZj=jlZo4>9L|fX68&7k;_jpgKQV(cNTEjOk}z&P%3# zCtMTJ!mKN9NSIdBgN`Jr2b70GCcy48fpSDSb}mSC(l6eOnXOlCQZNV*{Eq1&;X{*u z#`~bF)zsFWjfVT^KI)y|#2~ zby)wh8uYJaq9b3){sx55um{@|xT)RuzEkOVq~ZLN6ry)re1kTH)YJZZn9`!XasXWk z)$ve>h@mLYzUFXtDtBKy^EdLL#@nd4cXNS*7Ze3vkAC zH8Tv5P$v#c_B#eh!{1^%()6`F9FGNH*rfE98w-eCui)LX+~b!9u}-%%{vdawKFv2p z-}JoP1<|>_)4@5Pfd~>1CmM7KN#G&ZVwEs`gi^QT(xK(#G7AHzwydGmLmYDq&N8e- zbAM?hxj}XtHfrSJoF*SP9yA(N9;YQLE_Z)Boz_J%-Abpe^M9A6?=jU_GYfItZ3dcl z;i5T(HXcGD2U8PeemDM$FUr00-|G>&ebYHUET4`OaKwuS0TLD<93hh6rVN3{d3(TG z!Y!0rSm1?_gmWKaIv#h#$Mg^0Imh7+988lI`N<==`ohe|WfwRKmS!8c+(yR^m`pR3 zNo*c0M*224fU#W)ld&eJPuR2%qM054^2C@X9-wDmjD{-(Tn@3vwyts!gx>CYk=4TW4IrS~QF{h59jF$TtcS>Kg?SGvw*Q3i$FJe9EAS zj%_h;$b9)L&`^^uNmsn%B%0lHw~EknUnA&o%gJ{0yVO_e{P==^C&ni9IGW3^k!@uT zPl?ac=_ipoDX~glQM>9oe0Bm|9|qKtE_N8pMFATxKqoqLFkPO~qg|JAPGX@8e!S{P zFUPRh7HE?JHx+ZOO!oK0oo?_gTYJ`2_NpF22PoIUBP`>g4qpVZxl8W_r%2>7d>tvt z;qm`=*w4%z7~Wyi1q4^IM2&H$@f#bYeppoBu-S@$@5Fc3MPrx35@S>dTqZq;vLYok zv4z@S=Oq*1>wE9_%R!gSo+BEF%*0(H2XT-1u&Ygmd#{YJLTH1uLR<*V-R*Xs+qYZi zBxZji76XhtUtjKe{~C9m2H(}c7|t+cjX0*qUmxMA+rGNk-TxLu<&%o#WfsW5#7^S{ z9Y>9h`G)kw1Ldycdd1*yE&;WMJ+mVq(fQ@G{c*mYl{3fF#WQmv>-XDdl3uCk74!d%c~{SCK2nLF=zX)~=k~7KaC2k6)YTYR zN~Zwm?&E1ikOm1o1l2Fwn9c_guQ2mHf@oIZ&#H{m!<_KFQqqkH7zk8m$<6 zd7ovS(p8ok_s|Ud*D+7oak>l66{AmE9$Q-#!qA2I;I}lqbnuD7h`>jMmuYzWzQG|! zB_$GioYV*AO1sua>L`%c}+&YN6rS|KcZ)SCFuQ7?Q zdG?!2@sj>OArqo*%-gm!bT&*mK&*d+taRzmv=ACO<>c>!xuV=LMNJ&eq;I)4-L#}pB;yu+=d}2-7Pi5gWZ1`Pb)!<eqW$x^ zw~wClYY;D3Q$EB8aP)^u=Bbju3o3UQIAty9I^`gkF*MbsAc8fgtFzy3_nKfi)07kWp`veAD!>X(BafH>6Yu2D2NyJKqN6It4rbDPb=6_^a zE<5ltHoRywis;5nEDfKgO2iiASIP?&6C#JK!j(86?`l#qqaX(N(|aFoyqt^)skA)z zS%I#^x4Ecah1bJ!y98fGFQ;)7Z=x1SuA> z(lNtnfUM*`cj0+`e)9~7%lzhUusVI)+~UiJ<5oe?p!I%OuR`Be`j)X49rA(j7Rh(j9_@EU;=h0N zXR`^6M+)Qm1S7}cgz>6_N$g=JDUrBJ{7W2O5(!(EnbISZcV7_l3Au!o?vQ^@p0jd#i_8KhrPRZ%qN+9w~Yo&?X;T#M%O6I#;c zU%6*?oYatdts^bHS#f^rZ*(en{gb=LEN=(QI>c>J_^K1sXf&COY@%PG=?YbKvGksBsU%>AB@cX`tldN zZ|LqS_Ma_sE@SLMx80I+!rqKrw^inO#+!V(-%FpS2=`pM3D|(mX1T=!*HR4nijcti z7B`YNAt_XZS+lB{ndXv%gF{RZJ!>U(YJ4?5OyPw^9W5o8&Gbp#9b%Q`eEKb_;XLcX zl|cyjyYzr|CD_`@Ie@L@j@3VkQJ``2K1tZpBgy^M%;?JO2xf*^5kB5l4lJ;hpXMS? z*<|8Ar$K&F@>vY)VotK-cVm~fYg>TazM_WnU$_^w`*8-u*7+;naZ~UTzI>4lRq~iW z6Y5FElAkA!*jt;fCHWwMCs3HdjXtZ8^HMA2TE`W_I|aoK18S#zRap%h#NBaEUpe2& ziZ|-#x`MQGr|pEhA_NY)-UZ3fVHV5a_Sbu0htuPj>9fF3vnxZQtj5S;YMx>>GZPo! zt!8ENk_2l?oVwg?+wu?-y1(|z59Ej$zY@~On$Zc_T8Hvm|RjsxUv9VD@qw+Anja<}gazt@sd&J$dm-pA2@H5QQ`DSt%d;5!r}XA{TK1hRC%2zxKW} zs;R8|n-T>SrDVoVRfq}*hyJ84C3xGJT`BQ0QE zU#~^^VB5u&tw(7rzV%P}@DJfk=23%U+D!_N-z2ZGG96t{oZhFoO(^p2@W}Qa*$Z%G z*jb>o>WLvKyT3~)S>coMdP&?vn-OAuiC_MWqt^%OD>rLluG{}Wqrue=xeSmetm^li zZ9S$u>$gSpQ(Qi$OrgiTl$R5avHz=rlTK9I3MF$vWZx$0>Xhx!s!u`g0lGD7w~Q<< zv8TY|TF?dU#FhAh{nsTt$4 zY@Sou%lmpirFKXlo@35(w}%?H0|~At_4f^)%v0s5DQgJlOX&p$Il-^Jt7WFQv%JgO zm7Bs{N3L9MfgXbJFkfo_oGg0yrNZ>pt@Gwv3cw`F$Q__DUqUaEHU~#hk6#Yca=@*R zr>)QVxnm}PvGm^AKCAV@X!mS(w<<0mqg#QbuCQv(e7pNzwC?lSwy+}R$0i5cYp(ka zTp{qsxvS+j=or3!qLG#7NW^=8j!6%?sKz?`2P1VKF>IzR*AGr~v*0IYHkT9aFFN7x zD?bYvP^I!PH}B4xDX|h+x^m=Subz`>N0||^QG7EHyZsWEuV{Y7+}K=ypg2%Td??XV zJ9O;$qDbNkOT}`UuIu#7Ks>L-@c5c+ z`FKS;=J0jUy4vH%k4|;OhMOWCNpfO-TYql3aqw8wI&5WLwGrjrQHfta1g#{6CLwRH zzDf*2xvm#%GUN1jZAQi7Plx#~a_UyCZo|wSeZg)wSH~6LslLZnb?)jnY;tjY0ERuG z;+Aylz?Z9fUMI<#&86+&W?R0x6MCrXoz?q#A6~=r$G!|i5dSD8wywNctL%H3#j@KA z@YDY>LEIlQKq3vMuec1W?z`&r808ceT}mjEW~eS$Rm}1+8f?<6^$%XFyP}p-^Y{Js ztol_&NPLH=_=HPWM(z4|Fc^9-Kd828oo~Oa?0`RG#hjhWgIb5`+DwJ2d|5)KbyxvG zg_(EvK6Zn(CU>a-%}okVLCllJms-2`M|JE3t_^c}L|rzTZt^GOAKQI!!JRj3`l|2L zQHz4S)XhV*7XDC1(IDP9@LlJ2rBO*S4Rg~w&BBXp~u>NT_tY3J2D67|=i0m5Lm}1H3y4QBK&z1`Hs&FVe zoH%2Y%a|nqffgP%W{#9zn-E}f!z2+eE&`rhCYKZ9UP`ciP*t~&AKr!M-m=x4w^0HH z=fP7R)92G?w~1U0dW#tbf>~c>$UC;l0W+Vu;x{|59cQRSM;sF1K_os^In~k5B@Cw| zV4`ejZh|-DQ%worpO-OFj`JI%CgIy?sEr=GERZh(zQyXZ-px}VKWopSEOk_9FRW7*s!*{@g$Jh0rVv$)mAgL)SFcmq>$g^mbNy$BlEV= z-jR@sPqC$I%RZz>JNf-xgn<>n8P@X6U%ly;nfT{g^`Y0xYf=}5X#Xhl+sE_8gI55| z%r9}1KF>spg3Q^O4Bx&xe*XNSuWqik|8aY$SVPir!r^fRWA7(Hjj9t(+!M0tb0z~7?V|#)5Wft!CX81i>{P5Q|3a%B;_Bt_c~xBymx-C){izR1Ytnm9VTB*q^i#>QRsry7?Xph%=02RKL`~-0eu5Z}*WJA> z`od!e@!fC8q+$70i`&eCGTSiII70_v{BlEJk)(~x(G2UhhU%1>vkeGGr_i}2r^jLj zM;6{T@`u;FQVPv7>$)3pMF|j$4Yk;}1itjei8Ta!>VezcTdYZ59mNC8tim=*#jeLW9JpkXb&%U}CzUI5hfgkWa ziXYqLM|9uus|a?T(!9ChE3`EMjC}8z6EH@wBbWebNjbVxD`{D{ymIBW`HhUxEKd!U zjoFXH7?z{;)@Ymp9>wE}UV4&#UVJiZB+I^qX!8_@th!xx+H``nkgWtBh-!UX0t}w5 zfXrkC-^El%oBF!5b=}FBMGWe%timYD_{L|nO`fsqFq1J9qj}QKyqi@^aUl@^m3lS| zITTmgZ1ETRm+EZ{91rm+datYmjZY`0G~xAlH}l7Ayh2mo?e*>fng;wM9`*jN-h8@v zyTJ8|yekN(Tiv#In5Abwz}HjDAmd+c)Gk$~V>gCRK+2NeirAUNhi(3ox^T1kmwJySb;21@Rjk_N*afo&jMJW&~Ik?>W`@2LS2* z9J_hh-w#?w1gAdXyR=(|{p{eRA2YA#5vQ6y=cywR`F}ib#RR%8+}c0I{bcN-{}QSC zvDK1O?_+z8+b;*a0$6irWec=vR*|K%$M!bX3VXfwVYcmt`s7PT{FU028eStxIX`}f z!?I9SoLHZedaT_hGCWC1b(L7|aAu+%%^hs?hqWjZc`OY_X@63>a zEIjw5nWhR1w`jTMF*kg%cbS22=stL$(eYZFw4nB!TUX}0;fV^)E*+-%!?{V@cTU1d zTg|KFk~>B{X7A1rwM=b>D>8et`)+c7^O~_SD(jLPgBvZYDle6a2RzUN7Kj^LceeZ{ zmYmmk>#VkXeGtw_7UfqPtSwJ3@ATw?IvYOYWAbptE-N95o=pRylEkvW<*w%`E#}$! zD%#7DD>bXsRl_Kottf+L+(r&Zt^1ZE?#cFM_o)HLkJaH3*nN;OtX9>^;-H^wrpe|3 zBrDn}iq9`jdqb{e0?e6Spr^#1G_%~+@a|7OBw#!5liHG2;)mUKT>Dg8zMAj9yq2`o z*@`hw@9**hI=U7wd0rz4n_FKCX{S0dn@8@vm|e6v0Kb0zAI}XyLJ#p}$am=3TOp+l zX0PB4hv?C$oZ9mT{uPrVs{Sts0Wv4=s8lmBK~h|rYR3KVyCz+*IIg~*nZ^6$o+EKD ze8%+zDZFp=sDd5=D>sloZ{mGuEt?Hu8 zC!nkF+NX$)?x&R?W?AV$A;jE;vR%wj*gAlsF0c@fj9%YXdK_Ig>&h-e3|$%$>6#Jo zmMK>i8@rap3$pO3CojM9Eae)?C~&{0qTM%SfVB!uIrk}i>2%iF!<%4p9;=Lfw)$2z z{>QocU<+)muf>C4Yy$a_AQR(xO=M(|?Q@`FvtoCV9c>8VXNaEJZZj9po#~FzmRbD9 zW0~NEirjE}>63Ws1_n8>+OP$kv5~)QZaSc6UcAY=7@9duTD!bK5(3HVntM({RzGV* z=Fd`7UK(#bx%y&r-`2AwkrhmaJR#+iqetRE?Ij$8UvA@2snUZLnPDpoViJ84@-cY} zy4fYpfnE|xA$OUwuTQ`{HNyw4`xc1%UF)_&ym>8y+heX~vVPK~6J52mv`a*nl6_pO zvA;1pj?l5*_>pDDO2|&sUA#p21_Y#x^y8 z+4e8QC!MA$r})L>j2&;EKI8t6B{FNygzS-ho;)}{xuH1X>T-=|!~i_kSjO}02zb}l zB_LL_Jx=#!@3p)s-OV$bp(y@7mf7B4UBR7;Cc820lFnoEq7?_u;z(S-pMHLkUW6y# zRCB;lzV;9p@qpgi{!PlDY*tEh@!>!63ywl2*6=ZRA*VZ4LYF>2sC7zB6Gzvuy3L$I zs3t5$DJ4ULZc)MtG`$b4<2kIxUXQfbt-m|!X#c#ZChaw3vFP~3A&bNN9ket{4z}A3 zUha8~(;w?2kEJPia+PG5!ZRAJ+!!<&jc#!A4dYov)0m0#-k(CB=-Xv-Jdhon-4Dd8t4Jol;&_u$B;P=3tUdA-@>)xQw?u~T z%*bzLP0wJOZ_G62nRMyxT=m_2w^>tou^T{7X*u2^Deu<*Y=pe6Tq-2bG*2k4nVVvs zhUd*k>z^m+A)k$Wi*inb`p@4enf`pnHf2l$UOO1#BkN-4sk8kx#(De1pv>b*SkJ>j zs*@BRbmTC=R+u3mIKX@02sRwCy1TsQ7 zbdE^8t~uw`b+7tzf1NkkJT_KUm^m0*XeEkp2bVN!5MiC@r9y)A>G!pR*ZJ<9x(dL5 z6=C(%X=b7dU)MXN7w2HKe)sI#Qvx8p0Dn6|YN?$X`m@6>YCw5Og$_-X)Z8W3cjT{J zSKo<^h>{uPXGGfYUtbfu1@a}CkdBJSj5tCaPGGm^VVeqD)6JQZ&1Pf6e3OJ8tjK$t z!+zIy@SBm=_L1Uudaxg>OA6p8CYKkb;e?{-C!^6WUz1lV*eYGp9V%QjH@-Qa@@oF? zYrJ?L*ba#M^h@*$?l{)%o_Z2(_0;!(qRn-m1KN(_NivVLQFmbm;5YjcI3G063#W&( z-GvEx>Xs70p_kWQvz(f)**{=>H6m0iJuE%{_1Ak)8 z*?@d8j=*9U)=%xRt>*-I9vKZ^Q^1B^{v$=kApMxVU^)hToNO6uL;A!nzZ!Bc zs#s{&lMF0Z#cOh5^j6vvLmya6KWn6v)%E*8$oC7j*9;Dgz|oF_W9XGU<7tdS(Rtq-3jCA z$|b>6aCwIAT}U7}JL$r$+~o&NT^3l`g6>O?53nx6ZmndWe;;I_8!YAXnf< zWXoX0a_D6Ht+0OV(Cl)W={7Yrz@rd|NXW=5I9Z(c3-oUOE6=lKH8o%v0h1T#3u1_O zHjXMZ-^G->H&0+e;$ds;VD~H4(V+tCZ9Yw1T<&GGooSqVxPfqM-Pe6`$}WTSRsk&D z9X{GCrRzC!zgK*$SI+XvzeSNUoB$n;-a7?-@J}`h@Ne})Fn=)kBYSe(DL8CBN2m`q z(huHV>Ci2S9~UwMzo!Win%`o%CO}i4mjZ(eZQmXf=o59-d`k#|w+k6jF&{~DNi8sx ze2DCv!bHC9Nj=TjNgefAB%Awi*T&(oV8=z&@>c4z%DNJh3KkYt3ed^Yu!qAYUUQ%< z*mW^6Tx9o!9=%FbU8SNcf}z%*|}Z!2hh75q4JB@&Fqg5B2Qk?@EiL3U_w&M(}PdV z`vH4k56FbZtL~iixwtNOoAKG3qMPNpr$l7CMoB%@`>7eW#09(u1Wok@uAPRT;m_7%qY#y%?Kb9lbEjGplNS!;Qv~>1(RlBPhfQ6k4NZ4ma zgp)8lmgPPHELTjjbD62f((rr*HlGz=&VI{O_`ZcN$Ct_FNi1Ui1`+-9={VO()kmya zZA;2SO~`KhYidP@`+{A`JHj|~AQ3Insv)d6gIND(`js{;S5vw^FkrKS^=`0(muGC5 zihm3)o~%B(r#%{9d38Y~Ah%_T8ter1DUqj*S=+i}+U+jMT_*$0AnllBCHu7c_B3AV zJq|ss323ZLiqG2>DxPwWBtXqj59=bklAF+ z56t$>eFYw@S=BYn9~ce)3%Y!{WapTI&oXVCpGfS0Jp?~#elDE(gsm$0&hva~j52K& zqwNHZL{}q#Mx{m81WgT@u~a#zNy=7aC;tZ zV;cL(yZ()JCu*=!EjUs+03rH5R>Sdw=X%_2oj9AUB9LW8$SyO)Y9~c$)y!Z;g28N+ zhnCr#9~;KPxZpisHqm`!QTDP1Uv|82$!QSwrUIET*6=igw#xK+~6=WrQ-z!8;Z_V^00D%D&*aAMZ58QFetaNEQU6N-w*3P?k z73m_?qWA~@tulhcm>%@`W}DK4h?GuX{6ekErtaO?5E5CuYUKvHPsad~?sK_3W3Yku z)?L)NF6%4<;~XB_i0s17(BAY?y>4yuK6o|bEV6vn=$k_P@qzY8rT-}oKP{iJ?_Z?> z><})XQgl{?wlS0EXes`bO3!wbdXIXiKIUCgdbkfX`r>jp*1CsYD=rLlVHY+f6w+~L zZ=V6#njTsMY6xVlCO?!McS$xDIusu_S4xdFcl~%#TRjEqTfSCDF?OsfZr*^-Y_2Vi zh$UOuzqB5!%Io!rHAi}Z`w+S-XBbm>V6TYGyC#x-=Ed3iVYy%mYIK%rQFA<8p?#Qh z&@M7Fp4Jk1CKKdJHq9fEt(xfBm-|c}MC$VV9W=KONeShK3Bu`$|r zdpX6Cfc7DmJxPVf$So${6;_@?3+d#?CVN6BICHXg1@=f2O{CV}9>lc;dun$0ZOxcF zS{5rb-GW$xOPlvlcjy5EXm)bj))GNnrUrf2=0Mp9tQD=8+sk`olG!=wu5JX?zXq(U z@G;nPSeDUDZt1Mu&SC?fqwPboDuZ)I3MUgS$$#drlTj5hrjEI9a=P*dj5Qj+*;C&l zL!3-#2&VvInLSeND1{${U{2#{Q{<>1Ivq_W8! z+7vvk6vg`4kLVYZ>k$u*VzV9AFBcjlX=bS}D&bnKyw+NBT&6zMK6YVBB1eA^zSX@{ z#D#;`AsQNaC#Ztn^>(PuVUB_%4dh^TfH3HExNLi|Lgl$8&xY$8ylPGk!7Is@N_m2e zb5$HxL=!*X_|_%fAClW-Xf@}tUT@fNlI zAMsmrj=H?awINDsfZ=%mki#n<0+t%c_jCaTNsjAvZs5^AQ8|@~7H$aRk*_+oxx29W z6;MsY%9*FAZna#d?jZHfj*Vir(*O95P8B>+-n=?a<2OFko&7;w!|4A2GEI^kn zW9lidAFtwJLHZa;r~AMRUhVCe*KRkMurMGxGP;jQ~V7Z~kHl^rqCh8$pkf!%=lJDBo z$f(N?U-|96sIZEv4VpemjQXA|^N-Gpfmpnv$PDa=vJxV;zlij{`}6%7$f=B2ELBN7LR*I|fakc12IRRNk$00n z7hKtVZ0Cb6vM@ulLX#-H46HrrOrBkn{Yp-^(~&DmzpUY(AMKw3E74}sTKQ=uahI#L zNG>hsZSDhxH&&?6Zy|_J>obwqBWfl%0wg7$^;)by*wapgy+QwtY?daT<4Tf<_fTv- zo;V_ZMTJ(B=%akR?=(Bek&uU0)LEnK=z-Sb1NyV{^RDo}q*ufL$KPr_&i5y4^{#1s zkMGhMULwffu#j(~EkrohOn{yu%{kQ4CdToo9^|_J(2Q~Sct=HMP_m19augC(c zSwypOVrdzDsP14_&2oS;#|o%BdJnc4!NgdPBA>fLU%l3!*nuB}4Fm}BCN=KdPwy>u z2XMD@@G5w2RJHUAXsgKF)c4$>4GaXk5^#KSu6OT$ym-)Bcmv2`E0P0U)hO|1QbkAT zv~81GkytUc^7u(Cce~gra(O|*1z38XPDQBDe_Z1H9yY*yn3Fz4`_Z=0OJ)#AYP)Q5 zPAZo5uI)W?I8?JFSc7~WvO57~CV1!1mf6)I4>wU7XV(>`?hMi(?{&L{WgJr%;&>uIe1NeT(BNu<>lWGblf4aF- z%`WW|kW?_k-`i48tFV%i5`r6)Pue&76d2*l^j37}eL9~g-c0Z^GsFC7%?j{XhK&#l z@hOQMYvw&Q3NUYq?^-Qi@?%qZwD_GH|6~aL@^4o-NHCq;V5A%WBNbXsGLj!ra+fQ~ zn~yDZVK#9LTs;r>K!NKv1q;V7HHt*i1)10?F6RmiqY2zbTK_0*Uko8@yOp*e?SEfku&b=iV)5! z)SZ$<7?uCxCH}()?*KEF@5QtKa9N;Q{t-Ir%0NT7y7n1rpNBd6iGyCb5Xp~%Nf8rr z2dkkLA-c(l3d>DW;NiP$lo)r&b955!U{E0*$Of8IWs=%#ZlNZH>=pG0uP>WOmM(3^StZ-ek%Xa zrfVOaUmh4eeDW(j^Y^lHw$oEa>-s#ZW=z3S?^FD?*P)Mkw}DJChv9Mhq%cRAEo*(% z+Nn1HhdAFKu0si@?{w#Fb${Vi6TmZuUn=*=Aa@Q11ZSlnz3&rEJ*1Oi6!0_DbWCZ( zIDLZa<~(`Z0o+bK9fC74124Qk91H+lVE9$DZsDkCJ?Ps%-Qa6M6Hd9fPuqtqSRX8G9Lb+q|Ph~n{!&8wk6rOc> zdo_2B-Yq_oo)9Zy_Uw&RYY?b$hn^Kjv4)kiurE|!rOD0YU=reRZe_w5zfvCP4si)s zF*18G>Nin>MKLfYzJwdjT?pA<9N!-7I7D|aG#$Wl&8gTw)+;SCodGT$MnSsmtuPSO z>Vr>-n~g2kJ^!PmptJCx7B?Wngl!>tzplB91;jetue8%g7HDX&T&%t2%d-roc6tf}+FmmiS815Sn z*wrwryg9^Ca=5D^Ro2+@xjw6j-`46I9-!R~JmdzKZ3;)>8WVL^zKi`yNHHBLiFf@7|57Eb>gE7G~JX5eZ{K8v+lOUc6 zrdsSCVa+xJ@nt%mezOG)Mkdb}Yl2uH^oCCu45ELAk%L31l8hkR9d%yIh&4-4SZTX3 z*Ehg>DL>e2jw%;^Iwgc9N6X?Sa;{FkV=Fu!OReERI<+eQbzPzGcSNR(mx-&rB*gB< z4-Wl5L`G=)`|At}`R}Y`DZ>fRlz}zFGxM#x&4K(F;Xv*dO$Epi_ROKcA z{M;(ej%FR8HOa3>3jjp`3C&|nhQB*)Ux}zCq@p5op%j(~_G!KfV5VCiA|Yu0tFuL1 z{mtiqe72Gv`xW|}2JJr-f&8}wCuHYseQ8NV!rk6S**BkbTeCc{ejTzGuzVom_|5z1 zG+m7Wam@-2ua`Q4<&;}_`xcbeHP4i#E1CdqW32RA+|ggpSA>339^Tey`c1M|sr#!S z0W+$^BLgj@CAu@j;n&q4?LawSW6J+5=GwjS0ZC0Y_DNfmCou6_bijO>O%QZ2GdsfTNh;*l!&3MhGC6otJR&??=hS zq`rh{Rr0Ysuu5mM@&vb+ViI_d&Bm0tj(4&Qmvk6|;$|0Bg7M&;Ir2 zuct?gX82eUyx1&p@{X63?JTwwmIi(Tm=yI;=APLZ4&*{m9m4}w?I zhN~d`urk`tddiNiW`&iSRvwXc_Mq@7n_s^*xcW04Y+u!iwEX=eC|4H;rp?Dy-AXDq z1<)cNHa5J$Va*zJ6HaP-h!V7*8P6KTw^s=ZvMyufTf0%|85aV01v^7Ar zq3QY^PALvF6daJRfg?_)mEexHnkmWYNT%Xdl7oWGsKZ8mv=}7duqwFq6ZD9b^ZgrsE7n?@;*by0=eIo zWx>bE|7m-WMOjwt2-vP_hX!P?+L77(Hm0(A&XQXSK$RYU8;|#T!K}g2sJR%qfypIu zyBFYTqCLqxa{y4L3+dOL-oPW7;ybX~bfTTS~OJyr!@IfvHEvG)#+Jw)5M2{g2&kKbU*#vGNaM z-taoaLB<`Uv|D}`ra)jxFg?X<{Db6g8{-E77f=KHxQzP3M|XqXW)@3*Zj9@#r~z8v z^;42uSlfc(QdqXBI+I~a{Xuhuvhf5v*q$kAOnJ&}u{TCHlHZGQJTGuXwbb2}s!h7= zYbIaZv}qk{`gsYnvZ)~H&FU`!z!ZKJsL?RP*GX}@8nMYmfQQpn=O(oRKa~Hs|9syh z24wH91VlC>fqbnz#YBF@)M-p>@CK0jdroKBUY~NA*Xyq(pzV>%umCfbN6FXoKH!w< zoB@owcz1R}($24XnIEJ_Kg!OWScBj07@!KDs8n%m(rq&gzIo$}K+j`mO9@HhCG`@n zN>ml-jwR-BN3iAMJ2mlC`7>f~p#oJPyD9G83=ss{dP1|Bif;`AXErCApWq}^k$c-$ zmsYA7Dp14H$4$LqpJ*-i3xzXu7oCIKGrwAXBr951&VXyX{!Yoc=1UDkQ4imyllaXg zf=!FPxRS2o>Zj593bKRq;@RVU4=((OZ~miGs^{s@CzW{T>JQ-5zv?{yG8?Bisz~S@ zI0=BYt<@HG9W-gHGggxfi07X_CiR|--`W1~B3wysy&vd-53&@@Gwgvm>Y|;+o;2|J z`7YIgb&Cuaf^C@O1h(7KE{O5GtrGg!{0Aff{9Mdg$KXKhpm_d=$DR`+4F;Y7#`>j- z2;7!o^{y&@&VIF;L0(hqAl@Lf1c&Q~)q>liA2})i(Oz&3DYaoo+4%V4vaYzF;}u`2 zPoyVV@nenW#6$JnEHmZNe;b{~ZAB`7w@JS4tb*S6*whpu`8DhKo03qo5C`)MqQ$h? zv23`C$>)y}O0}ztqdZYP>h~?>uJ_P7nisHMezIw0!`!bL0^_^CWSs-%l{P=%M!sTe zqGy`Wv_zpZ39=3kN)0DV29UH-`GIvEaDDSyjMANr>Huc#H9l}VTbud{eRx%ZFWvK! zs!`tf7!JMOeSc-O#bxYih~XsQci5{{wKfWwdTD{%6%Y9b`KDW;X!O!)ws~GoiM`1u z#l^gUnhr6Szg^YjulLvPfwfwlwjcxDqBu@HUi{j_`N!>NYtsF(&)TA23-Z1zs;&u8 zQ#F(pUu|0R*i{V^-vvwW3GD&wRpZRw9Op&0df*;mQN0%gk`CElDm^?~H=U5C-4vr& zMME1Xu*1SJX)!=|8&kO!>Dt~L*XQ25hOw2QT}x+aNfPiYZkG6X^3v>pM~ef;ADe!TebIDh~fZ1)z>D^lRXX}F{6U!7uFdv$OWiTdQ zS!|Qh_^RbkAwuK~AmgEuW&b^xZ^~spnXgSme(>7e4+5xmMK;b7{`O#~zBQ;Mn#9O1Om0cQ%MUIc`h^ zrRsAtxfQu$Q%cx#J}D0llRz#^QUYdXOGS_6j5h`mV}N@|{30c+PppB56c1TsB9y^Z z!(2UVpIYd4WH&RTXWSNCSaz{bYb&9^OsYZhFQ4YO2QM4pN=7SKSXrln-32Qv5y=Nw zr+7h}EF}*ij+RLE72DBo9elodi9p{-u67Uer266SJowcHR@Cud)6PKvvNs_@=aBFc z_hVE?j4I@`F4)0tHXVW3T-8rPi$OY>q@RrAD{PR8a7A%x`|T1sl%m`__>b25VlYv)EA^yes~J@T9a^g zhN;Hbti>v_2sNedft80rN*xYWrZA{T3HyB)8($C5 zU5I{qh255}zn`9&uu8hnC7*#(!~Pg^$S3YcY<(0A(?|Vd!!D>s5FCKE?w~_A>9C8( zb8rXhJ>4dS0EH~Z#-EcG6xc6tRfW;aaMI}H(la}Il;}mOl}#WSslLZvY8%=zeV^(a zoZkhyYHq^vSeQU+(4%5+%mm9_*d}2~;AI}EisV64@@0JoK{=lVfjXl6L>7r(8Jge2 zyuY0y5wt=Q82Fwd_U%NfE?D$l=#wAQyz={2)hviy{GRAlEe$Htg{j1_6=vQu{6PFII)*Iz8aE&XpjRhXky9ozI^?>pbdMUWz=!XsV=cFX%FMTdEt? z+Ml%j>87rG(vFv43FZ|-Wqi}b*q4+^#sS>d%9vPj z%BUv!1AST7v<&nQkaejJ_pw}9wn3OHI9+ovC1%12Dl5-65XW9m<|eT%gaK&AisWhp zlOzw=vXq4-$|p|GG2B!7cv3`*JJj?2o#ZWq-1@O!4R(S24N!mahVZ+$-_GXyLzg*d zCIuEw-G_%EscnZ%2) z(4As@gpU|~-zm;Gwho*WjrR01uPvrAI>6JxSUuPs2|$t4BH`3}w4yk&wN8=)G0nT<3|9(RHPJE!LUSo=K-#iF>B$dFps$v#B^DpDThwr%CtssV^hQe}_;+F-0nFIEONw<5zZ3bZY~qyF_FvG- z7ovQwC~d|GKQKOxFyns=M$FYil7X*Oqg{)G63}Z^*ROZwIM^DV?z1O1>Ke@!ugEWw z&IcogWflSSDfF&x(HUX&1@4086Xt(ik~gysqSp8j=esDMZ(V1eiu_&Ep``DED zZjcwIk|ZYEpyjr1DA*_J#B@%zZ+)4G5xoGHl1hBCWxrr42oID&Dp6}{*}CGM&i5^b zX@=~>8rGBv4P!FwuR)+3e6#BE@zyS3zZ2U&tUAyBjJM^lNS6w0jv(Xn*DAf3B51+0 zyLU4e%=R@_Mq3IC^yQ3j+di6#AH4ihh!yNdQk_)X*<40j7*p8iEcgn#3&&cOX!gcO za4op=7cdcyb6lV z@`weukJ+>)d)3VPTGs}_`zLgA@(xeMaaJTB36voSkvO~%-<;>F<@-UV{CQhcl8zsy87vOF8874KZF^$bx@f; zlDFbZUfXwZIV^&)a$AP(jc5ijM-ElaMAQ_h$5yR;g|$vsdCRq@NkhCKE<&d__waB# zMAYt}5;%G6j&TvuO6JK3@V*X(0|6T6P!sqL>1YjQ} z^@>h|DumX;`R@30A}^WYR~8fny!(R~VL{-6W*vgx=ll=_9PKgvOY04|4zw9*W}r?D#ia&INfv^=)P4~{wo`FNd#~|)?6?( zH&2NZ)6xQF(Da~LPk!XSZeu-oj7cc%9E=R`LR%@`U#@0Zfz@ZY{!rz#^ctt`Z!Rwrg=Q|IeO>m`)!P62GpR+(#nJeM5A- ze+2$u4Zt{!H@}qWmJU5&Q$?(uxj%Kwa89JJn`-@fiP8|-3BxM`Wxd+7Q2E{)GeBs= zl#q9De$3QXqonaKaiFA_Cyp(bw=+n=Sz>Pzr@3mk`hAWkoK?=p%c-hW>tV9w&4i~q z>?xgRicU#=1lX=nWG`3JKJ~5tvW%_(o>YGhG3pm&$$}5euf=_m4H;a^9n02)W((HB zpu>6ODf_RxO4&NNnMft0l6jAmQu}=%fbZxSxB*+PiS)dun?AQ|tT|Kh0KTpp`5C$x zdq_cyGpV^BDxa8|o0|(no3QabN`K^_s{1({B2(N2_rWs{R*lK%nI%@q^j;do0iJ%3 zPgfp*nqWu09kW(uR2fn-Wbzb-(TuqYFq}xF%9^kx6;soEw#3UK_*yOxJApsf*O@;t zTa&#@>aUUBJ#{YDu3H8}D(9Qr^<{u8qp#xl+rz9jV6szTRhhTG%keK37cGimG2*1g zUne4r_M^Kl%bqy%xxJe(D4=$=K{#B}*)86+L~j4?VmK5&b^^<-y?A0UhQE?jWK$p8 z5Tdk_2CeOBvdw1Vj3!C=LSz_wFYJfGjoXtrbtbE(UuSn;;1IIUF4;5Pa=zc{3}-ZI z0W?xvT&&mNHt(d{CTx#J>5RU6|7-_ni;~m}gbBr()1I{FQ4{RY_Az0GqgDZ_d2>d$ zt6}36OFp4#({F?J1-d4V$U4x&?#7a;$%vQbQFysOr_&gx!gjr_JZp4jK-AC6mKoMB z(puzcWjj{!>jeP%XkN7Fz1eGO9a{VgC4e9C{1)%d4kf<7+*&jP6uU2$+#d1lIJ^%GNR979GmZnjmVRZC-h=woV z|3GPM4KQOcA)3HFjmVE$H}&Z2?4O_;%Ej@^G4~<%J^OhT)-)-nBMqm4fUy-g#aZw< zfzUqN!Ngm)AwOUG0!4&nVCbd9$-TgQD{T#%k!u$39L15Nez#5$cxgJd-YepzBH#was6D zS6BLVaw3)g?WLX$1Eud7_g~#1pu;>pgwgDcy8SDm^3O2}&IT~EbU*8_Qxk-t!j5W3 zIT?{PWNPCNU43cRslqS38xz^L4MBn(P^sGk8Vmf4yFn%<85h%`B3|+~qu@u)2V(Ks zhOB)c%ZAX>B^j%PHoH?kn&IHIPQ}GuE!UI=bw6jeK{`$=@9<9gBVdpDye+S6>H_Am zAG1`t(*tvdevZ?)Ogr>&v%Xu)8ESaXOkq_e7!pC?(0yK1IXXAQ;3GvWmKk$vIy=tEspKj-ZPYLB6h)HpE$^M>7-I+9=V>G?&RB2ZxFA?UGXnY|?q%ic00W(CLTX@z zsuJ|t)pJ51$6FfuNVF?kflwy+aYl)$>ITfyhrhaTJlKQ~3yxvK!;G_yIj+W4nG$f> zDaAK2g{aSsI@P>;fi_799p88L?PH*OQZ+mf2b$Ts-GQ=7Am{JiW3~>MKfy5}^o*bF z2hAQsb8|;E1p(9eu1Nt#FIzkN2)_QtYf{T}FZu%t4C$7%1zc6dC(K-ZL4r%ylsg({ z4;7^Bn=NS%EcE15HEO@Z{H~F#z#(CwX>c$-t!cWRc^|<{U#wvBw}=s^fh{0d^vk_1 zO@7tB_Kz9vgs0lF*JSGskIrP0@JYZJs&{+M)4 zUe$%E-_?ynGZiwZeJF8Ik!*-y7jSzQtIV66MUd<3^z)tT(z%;FGw#JS*304ZV8U4m zB5?oh45-^qkvl9!*$?+%;k?Wp&p^tja|*3CqgaJQ;k6l>vD4g(7bH?#TnMxW{#9n9 zEIa8hd||N6Z4CkCtM8?Up;RMBP)V=>xhYR z&DxS(F0yr@d*OWT)--i%a+y0K>!|PgYK*y+tl#SDGEZxgJhjiukGefZG})3>=6vrF zmz77TdYtaKcmx(Rhb9rV}uLITy zvEqc`VavW9McRiHMIY>gkvDef;H{zB5NijATm`@FO841`MA4aK>p`A>$o%hyB#?}% z8*38=fB*DWB~>$E7QQ`P|LCl;vU#!+!iYO_;=R%W0IY8J@GJVffN0=-s19>ly3`Gz z5T=pOoEp)}ySo41BmC!gAHw_dBQ{-f)P8!)-nWK*$bG`#y<%)z z?cN+8nNssx7*s9u+d+~FtS*;14XMQ^C5dI}B)x7mo;ZB`2QFa2gA-eZclNCP#Ca4|^ z25ST~u4_7N;No{aWC+j!efGGKb(ZZX_GAcX0pWbtZxjxAQLgw==S}z3P{{-4l(`;# zVPRptyC+=D4Gdlqs9Ru%yO-1XPek0OAh?X3g~{9cf| zi?e%6onIuLcgfs6g@(e77LmVv$A9vzze)+yQ5gqOAL{&@n)Mhl$G>+G=JUSFO#5@mCW8qTMzm#EOfJ3Vz(mxacOOHo3UyXQiJf0hO+=1en4 z_p+UJ@6B1ea^9c6l3&H*4HH`|fBM!h zG^*Oe+U}F&v%waQ{KOm=Ksx`od%|zUDm?vjSg*Naty$qD;IUtbJZ*Y{|~)T B{?-5h literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/Equation_8.png b/trick_sims/SIM_aircraft/images/Equation_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2bce1615bb359d8c24137faeeb4ffd5dfcdd85b3 GIT binary patch literal 26063 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/Equation_9.png b/trick_sims/SIM_aircraft/images/Equation_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a295b375d05f0e1384159b6984c6e79b33a1bdd6 GIT binary patch literal 55663 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 V-N2@E1(v)_`r5`n4IkA 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�K2_<7 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

    4MtHSexDL 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

    Mi5#9SV~~4uNtn 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ЛemY18Kvf97cBekrBcU=CEheOXc2+q)m#^Qds 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

    gdDkt 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 TI?Fr2kN;NzN2|WP_|yLZ5&%Xo literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/HeadingControl.png b/trick_sims/SIM_aircraft/images/HeadingControl.png new file mode 100644 index 0000000000000000000000000000000000000000..4536ac2f27fea0a44e526ee16c179952cea69a08 GIT binary patch literal 160920 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

    yXz%V3-|y&iBgC*Js7MV5_1sN_YOaV1_% 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 z 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 literal 0 HcmV?d00001 From afbc78c5e79a5f83ac1acd3d5439062ac60b1075 Mon Sep 17 00:00:00 2001 From: jmpenn Date: Wed, 1 Feb 2023 15:54:31 -0600 Subject: [PATCH 125/162] Initial commit of compareFloatingPoint utils. (#1443) * Initial commit of compareFloatingPoint utils. * Update .gitignore to properly ignore unittest executables. --- Makefile | 1 + include/trick/compareFloatingPoint.hh | 13 ++ .../trick_utils/compareFloatingPoint/Makefile | 5 + .../compareFloatingPoint/README.md | 31 ++++ .../src/compareFloatingPoint.cpp | 70 ++++++++ .../compareFloatingPoint/test/.gitignore | 2 + .../compareFloatingPoint/test/Makefile | 47 +++++ .../test/dbl_is_near_unittest.cc | 160 ++++++++++++++++++ .../test/flt_is_near_unittest.cc | 151 +++++++++++++++++ 9 files changed, 480 insertions(+) create mode 100644 include/trick/compareFloatingPoint.hh create mode 100644 trick_source/trick_utils/compareFloatingPoint/Makefile create mode 100644 trick_source/trick_utils/compareFloatingPoint/README.md create mode 100644 trick_source/trick_utils/compareFloatingPoint/src/compareFloatingPoint.cpp create mode 100644 trick_source/trick_utils/compareFloatingPoint/test/.gitignore create mode 100644 trick_source/trick_utils/compareFloatingPoint/test/Makefile create mode 100644 trick_source/trick_utils/compareFloatingPoint/test/dbl_is_near_unittest.cc create mode 100644 trick_source/trick_utils/compareFloatingPoint/test/flt_is_near_unittest.cc diff --git a/Makefile b/Makefile index 6a5f5c57..dbdc6f4c 100644 --- a/Makefile +++ b/Makefile @@ -90,6 +90,7 @@ endif ER7_UTILS_OBJS = $(addsuffix /object_$(TRICK_HOST_CPU)/*.o ,$(ER7_UTILS_DIRS)) UTILS_DIRS := \ + ${TRICK_HOME}/trick_source/trick_utils/compareFloatingPoint \ ${TRICK_HOME}/trick_source/trick_utils/interpolator \ ${TRICK_HOME}/trick_source/trick_utils/trick_adt \ ${TRICK_HOME}/trick_source/trick_utils/comm \ diff --git a/include/trick/compareFloatingPoint.hh b/include/trick/compareFloatingPoint.hh new file mode 100644 index 00000000..ac0b4c5b --- /dev/null +++ b/include/trick/compareFloatingPoint.hh @@ -0,0 +1,13 @@ +#ifndef COMPARE_FLOATING_POINT_HH +#define COMPARE_FLOATING_POINT_HH + +/* author: John M. Penn */ + +namespace Trick { + +bool dbl_is_near( double A, double B, double tolerance); +bool flt_is_near( float A, float B, float tolerance); + +} + +#endif diff --git a/trick_source/trick_utils/compareFloatingPoint/Makefile b/trick_source/trick_utils/compareFloatingPoint/Makefile new file mode 100644 index 00000000..a181cedf --- /dev/null +++ b/trick_source/trick_utils/compareFloatingPoint/Makefile @@ -0,0 +1,5 @@ + +include ${TRICK_HOME}/share/trick/makefiles/Makefile.common +include ${TRICK_HOME}/share/trick/makefiles/Makefile.tricklib +-include Makefile_deps + diff --git a/trick_source/trick_utils/compareFloatingPoint/README.md b/trick_source/trick_utils/compareFloatingPoint/README.md new file mode 100644 index 00000000..42f74e74 --- /dev/null +++ b/trick_source/trick_utils/compareFloatingPoint/README.md @@ -0,0 +1,31 @@ + +# Compare Floating Point Numbers + +The following functions compare floating-point numbers to determine whether they are within a specified tolerance of each other. + +These functions are designed to never generate ```FP_SUBNORMAL``` numbers, that could result in a floating point underflow exception, even if the OS doesn't handle floating point underflows by setting their values to zero. + +## Header + +```#include "trick/compareFloatingPoint.hh" ``` + +## ```Trick::dbl_is_near``` +```c +bool Trick::dbl_is_near( double A, double B, double tolerance); +``` + +This function compares the values of ```double A``` and ```double B``` to determine whether they are within tolerance of each other. If they are, then the function returns ```true```, otherwise it returns ```false```. + +The design of ```Trick::dbl_is_near``` requires that the minimum tolerance be ```DBL_MIN/DBL_EPSILON,``` which is approximately ```1.00208e-292```. That is, any two arguments whose difference is less than or equal to ```1.00208e-292``` are considered to be within tolerance, regardless of the specified tolerance. + +Before thinking that doubles should be compared to a tolerance smaller than ```1.00208e-292```, please consider that the ratio of the Planck length to the size of the observable universe is approximately ```1.8e-62```. Also consider that our minimum tolerance is ```5.4e-231``` times smaller than that. So, we think that'll probably be good enough in most cases. + +## ```Trick::dbl_is_near``` + +```c +bool Trick::flt_is_near( float A, float B, float tolerance); +``` + +This function compares the values of ```float A``` and ```float B``` to determine whether they are within tolerance of each other. If they are, then the function returns ```true```, otherwise it returns ```false```. + +The minimum tolerance for ```Trick::flt_is_near``` is ```FLT_MIN/FLT_EPSILON```, which is approximately ```9.86076e-32```. diff --git a/trick_source/trick_utils/compareFloatingPoint/src/compareFloatingPoint.cpp b/trick_source/trick_utils/compareFloatingPoint/src/compareFloatingPoint.cpp new file mode 100644 index 00000000..76a888ba --- /dev/null +++ b/trick_source/trick_utils/compareFloatingPoint/src/compareFloatingPoint.cpp @@ -0,0 +1,70 @@ +#include +#include +#include "trick/compareFloatingPoint.hh" + +bool Trick::dbl_is_near( double A, double B, double tolerance) { + + if (isnan(A) || isnan(B) || isinf(A) || isinf(B)) { return false; } + + // If A or B is a FP_SUBNORMAL that is: less than + // DBL_MIN (2.22507e-308) then set it to zero. + if ( fpclassify(A) == FP_SUBNORMAL ) { A = 0.0; } + if ( fpclassify(B) == FP_SUBNORMAL ) { B = 0.0; } + + // If A and B are identical, then they're close_enough. + if (A==B) { return true; } + + // The tolerance must be an FP_NORMAL. Neither of FP_INFINITE and + // FP_NAN makes sense. Nor do FP_SUBNORMAL and FP_ZERO, given + // the above tests. + + // In order than we not generate an FP_underflow, we must set the minimum + // allowable tolerance such that fmin(A,B)+tolerance (or fmax(A,B)-tolerance) + // cannot be FP_SUBNORMAL. This is only possible if (tolerance >= DBL_MIN/DBL_EPSILON), + // where the gap_size around tolerance >= DBL_MIN, the smallest FP_NORMAL number. + // So, if A and B are within 1.00208e-292 of each other, they will always be + // considered close_enough. + if (( fpclassify(tolerance) != FP_NORMAL ) || (tolerance < (DBL_MIN/DBL_EPSILON) )) { + tolerance = (DBL_MIN/DBL_EPSILON); + } + + // For A and B to be close enough, the tolerance must be greater than or + // equal to the larger of the gaps around A and B. + if ( tolerance >= DBL_EPSILON * fmax( fabs(A), fabs(B))) { + + // We want to avoid directly computing the difference between A and B. + // We might otherwise generate an FP_SUBNORMAL. For example: + // If A = (1.5*DBL_MIN), and B = DBL_MIN, the difference is an + // FP_SUBNORMAL value. + // When FP_SUBNORMAL values are generated, so are FP_underflows. + // By insisting that A and B are FP_NORMAL and that the + // gap_size around our tolerance is at least DBL_MIN, then we + // can avoid generating FP_SUBNORMALs. + if ((fmin(A,B) + tolerance) >= fmax(A,B)) { + return true ; // A and B are close enough. + } else { + return false ; + } + } else { + return false; + } +} + +bool Trick::flt_is_near( float A, float B, float tolerance) { + if (isnan(A) || isnan(B) || isinf(A) || isinf(B)) { return false; } + if ( fpclassify(A) == FP_SUBNORMAL ) { A = 0.0; } + if ( fpclassify(B) == FP_SUBNORMAL ) { B = 0.0; } + if (A==B) { return true; } + if (( fpclassify(tolerance) != FP_NORMAL ) || (tolerance < (FLT_MIN/FLT_EPSILON) )) { + tolerance = (FLT_MIN/FLT_EPSILON); + } + if ( tolerance >= FLT_EPSILON * fmax( fabs(A), fabs(B))) { + if ((fmin(A,B) + tolerance) >= fmax(A,B)) { + return true ; + } else { + return false ; + } + } else { + return false; + } +} diff --git a/trick_source/trick_utils/compareFloatingPoint/test/.gitignore b/trick_source/trick_utils/compareFloatingPoint/test/.gitignore new file mode 100644 index 00000000..da4626da --- /dev/null +++ b/trick_source/trick_utils/compareFloatingPoint/test/.gitignore @@ -0,0 +1,2 @@ +*.o +*_unittest diff --git a/trick_source/trick_utils/compareFloatingPoint/test/Makefile b/trick_source/trick_utils/compareFloatingPoint/test/Makefile new file mode 100644 index 00000000..5e20d673 --- /dev/null +++ b/trick_source/trick_utils/compareFloatingPoint/test/Makefile @@ -0,0 +1,47 @@ + +#SYNOPSIS: +# +# make [all] - makes everything. +# make TARGET - makes the given target. +# make clean - removes all files generated by make. + +include ${TRICK_HOME}/share/trick/makefiles/Makefile.common + +# Flags passed to the preprocessor. +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} + +TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick.a +TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread + +# Added for Ubuntu... not required for other systems. +TRICK_EXEC_LINK_LIBS += -lpthread + +# All tests produced by this Makefile. Remember to add new tests you +# created to the list. +TESTS = dbl_is_near_unittest flt_is_near_unittest + +OTHER_OBJECTS = + +# House-keeping build targets. + +all : $(TESTS) + +test: $(TESTS) + ./dbl_is_near_unittest --gtest_output=xml:${TRICK_HOME}/trick_test/dbl_is_near.xml + ./flt_is_near_unittest --gtest_output=xml:${TRICK_HOME}/trick_test/flt_is_near.xml + +clean : + rm -f $(TESTS) *.o + rm -rf io_src xml + +dbl_is_near_unittest.o : dbl_is_near_unittest.cc + $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< + +dbl_is_near_unittest : dbl_is_near_unittest.o + $(TRICK_CXX) $(TRICK_CXXFLAGS) -o $@ $^ $(OTHER_OBJECTS) -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) + +flt_is_near_unittest.o : flt_is_near_unittest.cc + $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< + +flt_is_near_unittest : flt_is_near_unittest.o + $(TRICK_CXX) $(TRICK_CXXFLAGS) -o $@ $^ $(OTHER_OBJECTS) -L${TRICK_HOME}/lib_${TRICK_HOST_CPU} $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) diff --git a/trick_source/trick_utils/compareFloatingPoint/test/dbl_is_near_unittest.cc b/trick_source/trick_utils/compareFloatingPoint/test/dbl_is_near_unittest.cc new file mode 100644 index 00000000..0591b222 --- /dev/null +++ b/trick_source/trick_utils/compareFloatingPoint/test/dbl_is_near_unittest.cc @@ -0,0 +1,160 @@ + +#include +#include +#include "trick/compareFloatingPoint.hh" +#include +#include + +TEST(dbl_is_near_unittest, Simple_1) { + bool result; + double A = 1.0; + double B = 1.1; + double tolerance = 0.2; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(dbl_is_near_unittest, Simple_2) { + bool result; + double A = 1234.567891; + double B = 1234.567882; + double tolerance = 0.00001; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(dbl_is_near_unittest, Simple_3) { + bool result; + double A = -1.562154; + double B = 0.435837; + double tolerance = 2.0; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(dbl_is_near_unittest, Simple_4) { + bool result; + double A = -1.562154; + double B = 0.435837; + double tolerance = 1.8; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(dbl_is_near_unittest, Simple_5) { + bool result; + double A = -1.562154; + double B = -0.435837; + double tolerance = 1.2; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(dbl_is_near_unittest, A_is_FP_NAN) { + bool result; + double A = NAN; + double B = 0.0; + double tolerance = DBL_MAX; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} +TEST(dbl_is_near_unittest, B_is_FP_NAN) { + bool result; + double A = 0.0; + double B = NAN; + double tolerance = DBL_MAX; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(dbl_is_near_unittest, A_is_FP_INFINITE) { + bool result; + double A = HUGE_VAL; + double B = DBL_MAX; + double tolerance = 2 * DBL_EPSILON * DBL_MAX; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(dbl_is_near_unittest, B_is_FP_INFINITE) { + bool result; + double A = DBL_MAX; + double B = HUGE_VAL; + double tolerance = 2 * DBL_EPSILON * DBL_MAX; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(dbl_is_near_unittest, A_and_B_are_identical) { + // Tolerance is irrelavant because A and B are identical. + bool result; + double A = DBL_MIN; + double B = DBL_MIN; + double tolerance = 0.0; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(dbl_is_near_unittest, Within_MinimumTolerance) { + // The specified tolerance is < DBL_MIN/DBL_EPSILON, and so defaults to the + // minimum. Since the difference between A and B is within the tolerance, + // they are "near". + bool result; + double A = DBL_MIN; + double B = 1.5 * DBL_MIN; + double tolerance = 0.0; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(dbl_is_near_unittest, Exactly_Minimum_Tolerance) { + // The specified tolerance is < DBL_MIN/DBL_EPSILON, and so defaults to the + // minimum (DBL_MIN/DBL_EPSILON). Since the difference between A and B is + // exactly equal to the tolerance, they are "near". + bool result; + double A = 0.0; + double B = DBL_MIN/DBL_EPSILON; + double tolerance = 0.0; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(dbl_is_near_unittest, Greater_than_Minimum_Tolerance) { + // The specified tolerance is < DBL_MIN/DBL_EPSILON, and so defaults to the + // minimum (DBL_MIN/DBL_EPSILON). Since the difference between A and B is + // slightly greater than the tolerance, they are not "near". + bool result; + double A = 0.0; + double B = DBL_MIN/DBL_EPSILON + DBL_MIN; + double tolerance = 0.0; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(dbl_is_near_unittest, Tolerance_greater_than_minimum) { + // This test is like the previous, but specifies the tolerance to be slightly + // larger than the minimum, so that A and B are near. + bool result; + double A = 0.0; + double B = DBL_MIN/DBL_EPSILON + DBL_MIN; + double tolerance = DBL_MIN/DBL_EPSILON + DBL_MIN; + result = Trick::dbl_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(dbl_is_near_unittest, Tolerance_is_small_enough) { + // Is the tolerance small enough? + double min_tolerance = DBL_MIN/DBL_EPSILON; + const double planck_length = 1.6e-35; // meters + const double speed_of_light = 2.99e8; // meters/second + const double seconds_per_year = 3.1e7; // seconds/year + const double light_years_per_known_universe = 9.3e10; // lightyears/known_universe + double size_of_known_universe = speed_of_light * seconds_per_year * light_years_per_known_universe; + double universe_min_to_max_ratio = planck_length / size_of_known_universe; + std::cout << "=========================================" << std::endl; + std::cout << "minimum tolerance = " << min_tolerance << std::endl; + std::cout << "planck_length / size_of_known_universe = " << universe_min_to_max_ratio << std::endl; + std::cout << "=========================================" << std::endl; + bool result = (min_tolerance < universe_min_to_max_ratio); + EXPECT_TRUE(result); +} diff --git a/trick_source/trick_utils/compareFloatingPoint/test/flt_is_near_unittest.cc b/trick_source/trick_utils/compareFloatingPoint/test/flt_is_near_unittest.cc new file mode 100644 index 00000000..cc9dbc33 --- /dev/null +++ b/trick_source/trick_utils/compareFloatingPoint/test/flt_is_near_unittest.cc @@ -0,0 +1,151 @@ + +#include +#include +#include "trick/compareFloatingPoint.hh" +#include +#include + +TEST(flt_is_near_unittest, Simple_1) { + bool result; + float A = 1.0; + float B = 1.1; + float tolerance = 0.2; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(flt_is_near_unittest, Simple_2) { + bool result; + float A = 1234.567891; + float B = 1234.567882; + float tolerance = 0.00001; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(flt_is_near_unittest, Simple_3) { + bool result; + float A = -1.562154; + float B = 0.435837; + float tolerance = 2.0; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(flt_is_near_unittest, Simple_4) { + bool result; + float A = -1.562154; + float B = 0.435837; + float tolerance = 1.8; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(flt_is_near_unittest, Simple_5) { + bool result; + float A = -1.562154; + float B = -0.435837; + float tolerance = 1.2; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(flt_is_near_unittest, A_is_FP_NAN) { + bool result; + float A = NAN; + float B = 0.0; + float tolerance = FLT_MAX; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} +TEST(flt_is_near_unittest, B_is_FP_NAN) { + bool result; + float A = 0.0; + float B = NAN; + float tolerance = FLT_MAX; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(flt_is_near_unittest, A_is_FP_INFINITE) { + bool result; + float A = HUGE_VAL; + float B = FLT_MAX; + float tolerance = 2 * FLT_EPSILON * FLT_MAX; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(flt_is_near_unittest, B_is_FP_INFINITE) { + bool result; + float A = FLT_MAX; + float B = HUGE_VAL; + float tolerance = 2 * FLT_EPSILON * FLT_MAX; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(flt_is_near_unittest, A_and_B_are_identical) { + // Tolerance is irrelavant because A and B are identical. + bool result; + float A = FLT_MIN; + float B = FLT_MIN; + float tolerance = 0.0; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(flt_is_near_unittest, Within_MinimumTolerance) { + // The specified tolerance is < FLT_MIN/FLT_EPSILON, and so defaults to the + // minimum. Since the difference between A and B is within the tolerance, + // they are "near". + bool result; + float A = FLT_MIN; + float B = 1.5 * FLT_MIN; + float tolerance = 0.0; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(flt_is_near_unittest, Exactly_Minimum_Tolerance) { + // The specified tolerance is < FLT_MIN/FLT_EPSILON, and so defaults to the + // minimum (FLT_MIN/FLT_EPSILON). Since the difference between A and B is + // exactly equal to the tolerance, they are "near". + bool result; + float A = 0.0; + float B = FLT_MIN/FLT_EPSILON; + float tolerance = 0.0; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(flt_is_near_unittest, Greater_than_Minimum_Tolerance) { + // The specified tolerance is < FLT_MIN/FLT_EPSILON, and so defaults to the + // minimum (FLT_MIN/FLT_EPSILON). Since the difference between A and B is + // slightly greater than the tolerance, they are not "near". + bool result; + float A = 0.0; + float B = FLT_MIN/FLT_EPSILON + FLT_MIN; + float tolerance = 0.0; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_FALSE(result); +} + +TEST(flt_is_near_unittest, Tolerance_greater_than_minimum) { + // This test is like the previous, but specifies the tolerance to be slightly + // larger than the minimum, so that A and B are near. + bool result; + float A = 0.0; + float B = FLT_MIN/FLT_EPSILON + FLT_MIN; + float tolerance = FLT_MIN/FLT_EPSILON + FLT_MIN; + result = Trick::flt_is_near(A, B, tolerance); + EXPECT_TRUE(result); +} + +TEST(flt_is_near_unittest, PrintNumbers) { +// This isn't really a test. It's purpose is to print interesting values. + bool result; + float min_tolerance = FLT_MIN/FLT_EPSILON; + std::cout << "Minimum tolerance = " << min_tolerance << std::endl; + EXPECT_TRUE(true); +} From a48b39bfc14e2e06d1b698407f9f58750552b004 Mon Sep 17 00:00:00 2001 From: Alex Lin Date: Tue, 7 Feb 2023 12:46:34 -0600 Subject: [PATCH 126/162] Make ICG compatible with clang/llvm 15 #1449 (#1450) Made a couple of changes in ICG source code to handle clang API differences. Encapsulated differences in ifdefs. Added libclangSupport to ICG link line. --- autoconf/configure.ac | 2 + configure | 7155 ++++++----------- .../Interface_Code_Gen/HeaderSearchDirs.cpp | 16 +- .../codegen/Interface_Code_Gen/main.cpp | 4 +- 4 files changed, 2603 insertions(+), 4574 deletions(-) diff --git a/autoconf/configure.ac b/autoconf/configure.ac index b9100718..bde64a1b 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -233,6 +233,8 @@ AC_CHECK_FILE([$LLVM_LIB_DIR/libclangFrontend.a], ) ) +AC_CHECK_FILE([$LLVM_LIB_DIR/libclangSupport.a],[ICG_CLANGLIBS="$ICG_CLANGLIBS -lclangSupport"],[]) + AC_SUBST([ICG_CLANGLIBS]) TR_CLANG_VERSION diff --git a/configure b/configure index 528ae116..c920daa5 100755 --- a/configure +++ b/configure @@ -1,10 +1,9 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Trick 17+. +# Generated by GNU Autoconf 2.69 for Trick 17+. # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, -# Inc. +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -15,16 +14,14 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop +else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -34,46 +31,46 @@ esac fi - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi # The user is always right. -if ${PATH_SEPARATOR+false} :; then +if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -82,6 +79,13 @@ if ${PATH_SEPARATOR+false} :; then fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -90,12 +94,8 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS @@ -107,10 +107,30 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -132,22 +152,20 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="as_nop=: -if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else \$as_nop +else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -167,53 +185,42 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ) -then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : -else \$as_nop +else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 -blah=\$(echo \$(echo blah)) -test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null -then : + if (eval "$as_required") 2>/dev/null; then : as_have_required=yes -else $as_nop +else as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null -then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : -else $as_nop +else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir$as_base + as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes - if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null -then : + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi @@ -221,21 +228,14 @@ fi esac as_found=false done -IFS=$as_save_IFS -if $as_found -then : - -else $as_nop - if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes -fi -fi +fi; } +IFS=$as_save_IFS - if test "x$CONFIG_SHELL" != x -then : + if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -253,19 +253,18 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno -then : - printf "%s\n" "$0: This script requires a shell more modern than all" - printf "%s\n" "$0: the shells that I found on your system." - if test ${ZSH_VERSION+y} ; then - printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" - printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." else - printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." @@ -292,7 +291,6 @@ as_fn_unset () } as_unset=as_fn_unset - # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -310,14 +308,6 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit -# as_fn_nop -# --------- -# Do nothing but, unlike ":", preserve the value of $?. -as_fn_nop () -{ - return $? -} -as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -332,7 +322,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -341,7 +331,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | +$as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -380,13 +370,12 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' -else $as_nop +else as_fn_append () { eval $1=\$$1\$2 @@ -398,27 +387,18 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else $as_nop +else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith -# as_fn_nop -# --------- -# Do nothing but, unlike ":", preserve the value of $?. -as_fn_nop () -{ - return $? -} -as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -430,9 +410,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - printf "%s\n" "$as_me: error: $2" >&2 + $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -459,7 +439,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -503,7 +483,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -517,10 +497,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -534,13 +510,6 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -615,36 +584,40 @@ PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_STDIO_H -# include +#include +#ifdef HAVE_SYS_TYPES_H +# include #endif -#ifdef HAVE_STDLIB_H +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS # include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif #endif #ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif #ifdef HAVE_UNISTD_H # include #endif" -ac_header_cxx_list= ac_subst_vars='LTLIBOBJS LIBOBJS USE_ER7_UTILS @@ -664,10 +637,8 @@ CLANG LLVM_CONFIG PTHREAD_CFLAGS PTHREAD_LIBS -PTHREAD_CXX PTHREAD_CC ax_pthread_config -EGREP CPP MVN JAVA_CC_OPTS @@ -687,7 +658,6 @@ PYTHON PYTHON_VERSION ZIP PERL_VERSION -GREP SED PERL CURL @@ -698,6 +668,9 @@ LEX LD TEE GCC_VERSION +ac_ct_CC +CFLAGS +CC AWK TRICK_OFFLINE TRICK_FORCE_32BIT @@ -705,18 +678,17 @@ LIBXML X_LIB_DIR USE_X_WINDOWS MOTIF_HOME +EGREP +GREP CXXCPP -XMKMF -ac_ct_CXX -CXXFLAGS -CXX OBJEXT EXEEXT -ac_ct_CC +ac_ct_CXX CPPFLAGS LDFLAGS -CFLAGS -CC +CXXFLAGS +CXX +XMKMF XCRUN host_os host_vendor @@ -745,7 +717,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -787,16 +758,16 @@ enable_er7utils ac_precious_vars='build_alias host_alias target_alias -CC -CFLAGS +XMKMF +CXX +CXXFLAGS LDFLAGS LIBS CPPFLAGS -CXX -CXXFLAGS CCC -XMKMF CXXCPP +CC +CFLAGS PYTHON_VERSION JAVA_CC JAVA_CC_FLAGS @@ -839,7 +810,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -869,6 +839,8 @@ do *) ac_optarg=yes ;; esac + # Accept the important Cygnus configure options, so we can diagnose typos. + case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -909,9 +881,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: \`$ac_useropt'" + as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -935,9 +907,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: \`$ac_useropt'" + as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1090,15 +1062,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1148,9 +1111,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: \`$ac_useropt'" + as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1164,9 +1127,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: \`$ac_useropt'" + as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1210,9 +1173,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1228,7 +1191,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1236,7 +1199,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1292,7 +1255,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_myself" | +$as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1389,7 +1352,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1455,17 +1417,17 @@ Optional Packages: --with-civetweb[=DIR] CIVETWEB root directory Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags + XMKMF Path to xmkmf, Makefile generator for X Window System + CXX C++ compiler command + CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory - CXX C++ compiler command - CXXFLAGS C++ compiler flags - XMKMF Path to xmkmf, Makefile generator for X Window System CXXCPP C++ preprocessor + CC C compiler command + CFLAGS C compiler flags PYTHON_VERSION Adds suffix to python search e.g. PYTHON_VERSION=3 will look for python3 @@ -1493,9 +1455,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1523,8 +1485,7 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for configure.gnu first; this name is used for a wrapper for - # Metaconfig's "Configure" on case-insensitive file systems. + # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1532,7 +1493,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1542,9 +1503,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Trick configure 17+ -generated by GNU Autoconf 2.71 +generated by GNU Autoconf 2.69 -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1555,59 +1516,20 @@ fi ## Autoconf initialization. ## ## ------------------------ ## -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext -then : - ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam + rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1615,15 +1537,14 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext -then : + } && test -s conftest.$ac_objext; then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1633,20 +1554,57 @@ fi } # ac_fn_cxx_try_compile +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1654,18 +1612,17 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - } -then : + }; then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1680,43 +1637,134 @@ fi } # ac_fn_cxx_try_link -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () +# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_header_mongrel + +# ac_fn_cxx_try_run LINENO +# ------------------------ +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_cxx_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - } -then : + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=$ac_status fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval -} # ac_fn_cxx_try_cpp +} # ac_fn_cxx_try_run # ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES # --------------------------------------------------------- @@ -1725,46 +1773,82 @@ fi ac_fn_cxx_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : eval "$3=yes" -else $as_nop +else eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_cxx_check_header_compile +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext + rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1772,18 +1856,17 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - } -then : + }; then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1810,7 +1893,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1818,15 +1901,14 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err - } -then : + }; then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1836,66 +1918,100 @@ fi } # ac_fn_c_try_cpp -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else $as_nop - eval "$3=no" +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_header_compile -ac_configure_args_raw= -for ac_arg -do - case $ac_arg in - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_configure_args_raw " '$ac_arg'" -done - -case $ac_configure_args_raw in - *$as_nl*) - ac_safe_unquote= ;; - *) - ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. - ac_unsafe_a="$ac_unsafe_z#~" - ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" - ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; -esac - +} # ac_fn_c_check_header_mongrel cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Trick $as_me 17+, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was - $ $0$ac_configure_args_raw + $ $0 $@ _ACEOF exec 5>>config.log @@ -1928,12 +2044,8 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - printf "%s\n" "PATH: $as_dir" + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" done IFS=$as_save_IFS @@ -1968,7 +2080,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2003,13 +2115,11 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? - # Sanitize IFS. - IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - printf "%s\n" "## ---------------- ## + $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2020,8 +2130,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2045,7 +2155,7 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ) echo - printf "%s\n" "## ----------------- ## + $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2053,14 +2163,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - printf "%s\n" "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - printf "%s\n" "## ------------------- ## + $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2068,15 +2178,15 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - printf "%s\n" "$ac_var='\''$ac_val'\''" + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - printf "%s\n" "## ----------- ## + $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2084,8 +2194,8 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} echo fi test "$ac_signal" != 0 && - printf "%s\n" "$as_me: caught signal $ac_signal" - printf "%s\n" "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2099,48 +2209,63 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -printf "%s\n" "/* confdefs.h */" > confdefs.h +$as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF -printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF -printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF -printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF -printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF -printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - ac_site_files="$CONFIG_SITE" + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac elif test "x$prefix" != xNONE; then - ac_site_files="$prefix/share/config.site $prefix/etc/config.site" + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site else - ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi - -for ac_site_file in $ac_site_files +for ac_site_file in "$ac_site_file1" "$ac_site_file2" do - case $ac_site_file in #( - */*) : - ;; #( - *) : - ac_site_file=./$ac_site_file ;; -esac - if test -f "$ac_site_file" && test -r "$ac_site_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2150,650 +2275,19 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi -# Test code for whether the C compiler supports C89 (global declarations) -ac_c_conftest_c89_globals=' -/* Does the compiler advertise C89 conformance? - Do not test the value of __STDC__, because some compilers set it to 0 - while being otherwise adequately conformant. */ -#if !defined __STDC__ -# error "Compiler does not advertise C89 conformance" -#endif - -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ -struct buf { int x; }; -struct buf * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not \xHH hex character constants. - These do not provoke an error unfortunately, instead are silently treated - as an "x". The following induces an error, until -std is added to get - proper ANSI mode. Curiously \x00 != x always comes out true, for an - array size at least. It is necessary to write \x00 == 0 to get something - that is true only with -std. */ -int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) '\''x'\'' -int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), - int, int);' - -# Test code for whether the C compiler supports C89 (body of main). -ac_c_conftest_c89_main=' -ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); -' - -# Test code for whether the C compiler supports C99 (global declarations) -ac_c_conftest_c99_globals=' -// Does the compiler advertise C99 conformance? -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L -# error "Compiler does not advertise C99 conformance" -#endif - -#include -extern int puts (const char *); -extern int printf (const char *, ...); -extern int dprintf (int, const char *, ...); -extern void *malloc (size_t); - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -// dprintf is used instead of fprintf to avoid needing to declare -// FILE and stderr. -#define debug(...) dprintf (2, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - #error "your preprocessor is broken" -#endif -#if BIG_OK -#else - #error "your preprocessor is broken" -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static bool -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str = ""; - int number = 0; - float fnumber = 0; - - while (*format) - { - switch (*format++) - { - case '\''s'\'': // string - str = va_arg (args_copy, const char *); - break; - case '\''d'\'': // int - number = va_arg (args_copy, int); - break; - case '\''f'\'': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); - - return *str && number && fnumber; -} -' - -# Test code for whether the C compiler supports C99 (body of main). -ac_c_conftest_c99_main=' - // Check bool. - _Bool success = false; - success |= (argc != 0); - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[0] = argv[0][0]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' - || dynamic_array[ni.number - 1] != 543); -' - -# Test code for whether the C compiler supports C11 (global declarations) -ac_c_conftest_c11_globals=' -// Does the compiler advertise C11 conformance? -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L -# error "Compiler does not advertise C11 conformance" -#endif - -// Check _Alignas. -char _Alignas (double) aligned_as_double; -char _Alignas (0) no_special_alignment; -extern char aligned_as_int; -char _Alignas (0) _Alignas (int) aligned_as_int; - -// Check _Alignof. -enum -{ - int_alignment = _Alignof (int), - int_array_alignment = _Alignof (int[100]), - char_alignment = _Alignof (char) -}; -_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); - -// Check _Noreturn. -int _Noreturn does_not_return (void) { for (;;) continue; } - -// Check _Static_assert. -struct test_static_assert -{ - int x; - _Static_assert (sizeof (int) <= sizeof (long int), - "_Static_assert does not work in struct"); - long int y; -}; - -// Check UTF-8 literals. -#define u8 syntax error! -char const utf8_literal[] = u8"happens to be ASCII" "another string"; - -// Check duplicate typedefs. -typedef long *long_ptr; -typedef long int *long_ptr; -typedef long_ptr long_ptr; - -// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. -struct anonymous -{ - union { - struct { int i; int j; }; - struct { int k; long int l; } w; - }; - int m; -} v1; -' - -# Test code for whether the C compiler supports C11 (body of main). -ac_c_conftest_c11_main=' - _Static_assert ((offsetof (struct anonymous, i) - == offsetof (struct anonymous, w.k)), - "Anonymous union alignment botch"); - v1.i = 2; - v1.w.k = 5; - ok |= v1.i != 5; -' - -# Test code for whether the C compiler supports C11 (complete). -ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} -${ac_c_conftest_c11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - ${ac_c_conftest_c11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C99 (complete). -ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - return ok; -} -" - -# Test code for whether the C compiler supports C89 (complete). -ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - return ok; -} -" - -# Test code for whether the C++ compiler supports C++98 (global declarations) -ac_cxx_conftest_cxx98_globals=' -// Does the compiler advertise C++98 conformance? -#if !defined __cplusplus || __cplusplus < 199711L -# error "Compiler does not advertise C++98 conformance" -#endif - -// These inclusions are to reject old compilers that -// lack the unsuffixed header files. -#include -#include - -// and are *not* freestanding headers in C++98. -extern void assert (int); -namespace std { - extern int strcmp (const char *, const char *); -} - -// Namespaces, exceptions, and templates were all added after "C++ 2.0". -using std::exception; -using std::strcmp; - -namespace { - -void test_exception_syntax() -{ - try { - throw "test"; - } catch (const char *s) { - // Extra parentheses suppress a warning when building autoconf itself, - // due to lint rules shared with more typical C programs. - assert (!(strcmp) (s, "test")); - } -} - -template struct test_template -{ - T const val; - explicit test_template(T t) : val(t) {} - template T add(U u) { return static_cast(u) + val; } -}; - -} // anonymous namespace -' - -# Test code for whether the C++ compiler supports C++98 (body of main) -ac_cxx_conftest_cxx98_main=' - assert (argc); - assert (! argv[0]); -{ - test_exception_syntax (); - test_template tt (2.0); - assert (tt.add (4) == 6.0); - assert (true && !false); -} -' - -# Test code for whether the C++ compiler supports C++11 (global declarations) -ac_cxx_conftest_cxx11_globals=' -// Does the compiler advertise C++ 2011 conformance? -#if !defined __cplusplus || __cplusplus < 201103L -# error "Compiler does not advertise C++11 conformance" -#endif - -namespace cxx11test -{ - constexpr int get_val() { return 20; } - - struct testinit - { - int i; - double d; - }; - - class delegate - { - public: - delegate(int n) : n(n) {} - delegate(): delegate(2354) {} - - virtual int getval() { return this->n; }; - protected: - int n; - }; - - class overridden : public delegate - { - public: - overridden(int n): delegate(n) {} - virtual int getval() override final { return this->n * 2; } - }; - - class nocopy - { - public: - nocopy(int i): i(i) {} - nocopy() = default; - nocopy(const nocopy&) = delete; - nocopy & operator=(const nocopy&) = delete; - private: - int i; - }; - - // for testing lambda expressions - template Ret eval(Fn f, Ret v) - { - return f(v); - } - - // for testing variadic templates and trailing return types - template auto sum(V first) -> V - { - return first; - } - template auto sum(V first, Args... rest) -> V - { - return first + sum(rest...); - } -} -' - -# Test code for whether the C++ compiler supports C++11 (body of main) -ac_cxx_conftest_cxx11_main=' -{ - // Test auto and decltype - auto a1 = 6538; - auto a2 = 48573953.4; - auto a3 = "String literal"; - - int total = 0; - for (auto i = a3; *i; ++i) { total += *i; } - - decltype(a2) a4 = 34895.034; -} -{ - // Test constexpr - short sa[cxx11test::get_val()] = { 0 }; -} -{ - // Test initializer lists - cxx11test::testinit il = { 4323, 435234.23544 }; -} -{ - // Test range-based for - int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, - 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; - for (auto &x : array) { x += 23; } -} -{ - // Test lambda expressions - using cxx11test::eval; - assert (eval ([](int x) { return x*2; }, 21) == 42); - double d = 2.0; - assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); - assert (d == 5.0); - assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); - assert (d == 5.0); -} -{ - // Test use of variadic templates - using cxx11test::sum; - auto a = sum(1); - auto b = sum(1, 2); - auto c = sum(1.0, 2.0, 3.0); -} -{ - // Test constructor delegation - cxx11test::delegate d1; - cxx11test::delegate d2(); - cxx11test::delegate d3(45); -} -{ - // Test override and final - cxx11test::overridden o1(55464); -} -{ - // Test nullptr - char *c = nullptr; -} -{ - // Test template brackets - test_template<::test_template> v(test_template(12)); -} -{ - // Unicode literals - char const *utf8 = u8"UTF-8 string \u2500"; - char16_t const *utf16 = u"UTF-8 string \u2500"; - char32_t const *utf32 = U"UTF-32 string \u2500"; -} -' - -# Test code for whether the C compiler supports C++11 (complete). -ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} -${ac_cxx_conftest_cxx11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_cxx_conftest_cxx98_main} - ${ac_cxx_conftest_cxx11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C++98 (complete). -ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_cxx_conftest_cxx98_main} - return ok; -} -" - -as_fn_append ac_header_cxx_list " stdio.h stdio_h HAVE_STDIO_H" -as_fn_append ac_header_cxx_list " stdlib.h stdlib_h HAVE_STDLIB_H" -as_fn_append ac_header_cxx_list " string.h string_h HAVE_STRING_H" -as_fn_append ac_header_cxx_list " inttypes.h inttypes_h HAVE_INTTYPES_H" -as_fn_append ac_header_cxx_list " stdint.h stdint_h HAVE_STDINT_H" -as_fn_append ac_header_cxx_list " strings.h strings_h HAVE_STRINGS_H" -as_fn_append ac_header_cxx_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" -as_fn_append ac_header_cxx_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" -as_fn_append ac_header_cxx_list " unistd.h unistd_h HAVE_UNISTD_H" - -# Auxiliary files required by this configure script. -ac_aux_files="config.guess config.sub" - -# Locations in which to look for auxiliary files. -ac_aux_dir_candidates="${srcdir}/autoconf" - -# Search for a directory containing all of the required auxiliary files, -# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. -# If we don't find one directory that contains all the files we need, -# we report the set of missing files from the *first* directory in -# $ac_aux_dir_candidates and give up. -ac_missing_aux_files="" -ac_first_candidate=: -printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in $ac_aux_dir_candidates -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - - printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 - ac_aux_dir_found=yes - ac_install_sh= - for ac_aux in $ac_aux_files - do - # As a special case, if "install-sh" is required, that requirement - # can be satisfied by any of "install-sh", "install.sh", or "shtool", - # and $ac_install_sh is set appropriately for whichever one is found. - if test x"$ac_aux" = x"install-sh" - then - if test -f "${as_dir}install-sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 - ac_install_sh="${as_dir}install-sh -c" - elif test -f "${as_dir}install.sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 - ac_install_sh="${as_dir}install.sh -c" - elif test -f "${as_dir}shtool"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 - ac_install_sh="${as_dir}shtool install -c" - else - ac_aux_dir_found=no - if $ac_first_candidate; then - ac_missing_aux_files="${ac_missing_aux_files} install-sh" - else - break - fi - fi - else - if test -f "${as_dir}${ac_aux}"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 - else - ac_aux_dir_found=no - if $ac_first_candidate; then - ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" - else - break - fi - fi - fi - done - if test "$ac_aux_dir_found" = yes; then - ac_aux_dir="$as_dir" - break - fi - ac_first_candidate=false - - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else $as_nop - as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 -fi - - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -if test -f "${ac_aux_dir}config.guess"; then - ac_config_guess="$SHELL ${ac_aux_dir}config.guess" -fi -if test -f "${ac_aux_dir}config.sub"; then - ac_config_sub="$SHELL ${ac_aux_dir}config.sub" -fi -if test -f "$ac_aux_dir/configure"; then - ac_configure="$SHELL ${ac_aux_dir}configure" -fi - # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false @@ -2804,12 +2298,12 @@ for ac_var in $ac_precious_vars; do eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) @@ -2818,24 +2312,24 @@ printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -2845,12 +2339,11 @@ printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi done if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' - and start over" "$LINENO" 5 + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## @@ -2870,33 +2363,57 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +ac_aux_dir= +for ac_dir in autoconf "$srcdir"/autoconf; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in autoconf \"$srcdir\"/autoconf" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - - # Make sure we can run config.sub. -$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -printf %s "checking build system type... " >&6; } -if test ${ac_cv_build+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -printf "%s\n" "$ac_cv_build" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -2915,22 +2432,21 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -printf %s "checking host system type... " >&6; } -if test ${ac_cv_host+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -printf "%s\n" "$ac_cv_host" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -2962,17 +2478,15 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac esac - if test "$ON_MAC" = "yes" -then : + if test "$ON_MAC" = "yes"; then : # Extract the first word of "xcrun", so it can be a program name with args. set dummy xcrun; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_XCRUN+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XCRUN+:} false; then : + $as_echo_n "(cached) " >&6 +else case $XCRUN in [\\/]* | ?:[\\/]*) ac_cv_path_XCRUN="$XCRUN" # Let the user override the test with a path. @@ -2982,15 +2496,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_XCRUN="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XCRUN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3003,22 +2513,21 @@ esac fi XCRUN=$ac_cv_path_XCRUN if test -n "$XCRUN"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XCRUN" >&5 -printf "%s\n" "$XCRUN" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XCRUN" >&5 +$as_echo "$XCRUN" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - if test "$ac_cv_path_XCRUN" = "norun" -then : + if test "$ac_cv_path_XCRUN" = "norun"; then : as_fn_error $? "could not find xcrun - install Xcode command line tools" "$LINENO" 5 fi XCODE_SDK_PATH=`$XCRUN --show-sdk-path` XTRAINCPATHS="-I/usr/X11/include -I${XCODE_SDK_PATH}/usr/include -I${XCODE_SDK_PATH}/usr/include/libxml2" -else $as_nop +else XTRAINCPATHS="-I/usr/include/libxml2/" @@ -3027,257 +2536,37 @@ fi CPPFLAGS="$CPPFLAGS $XTRAINCPATHS" - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3286,47 +2575,42 @@ IFS=$as_save_IFS fi fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - test -n "$CC" && break + test -n "$CXX" && break done fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -3335,156 +2619,46 @@ IFS=$as_save_IFS fi fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - test -n "$ac_ct_CC" && break + test -n "$ac_ct_CXX" && break done - if test "x$ac_ct_CC" = x; then - CC="" + if test "x$ac_ct_CXX" = x; then + CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac - CC=$ac_ct_CC + CXX=$ac_ct_CXX fi fi -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 fi -done - done -IFS=$as_save_IFS - fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "clang", so it can be a program name with args. -set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi - - -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do +for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -3494,7 +2668,7 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -3502,7 +2676,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; @@ -3514,9 +2688,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -printf %s "checking whether the C compiler works... " >&6; } -ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +$as_echo_n "checking whether the C++ compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -3537,12 +2711,11 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -3559,7 +2732,7 @@ do # certainly right. break;; *.* ) - if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -3575,46 +2748,44 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else $as_nop +else ac_file='' fi -if test -z "$ac_file" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -printf "%s\n" "$as_me: failed program was:" >&5 +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -printf %s "checking for C compiler default output file name... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -printf "%s\n" "$ac_file" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +$as_echo_n "checking for C++ compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -printf %s "checking for suffix of executables... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -3628,15 +2799,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -printf "%s\n" "$ac_cv_exeext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -3645,7 +2816,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main (void) +main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -3657,8 +2828,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -printf %s "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -3666,10 +2837,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -3677,40 +2848,39 @@ printf "%s\n" "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot run C compiled programs. + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -printf "%s\n" "$cross_compiling" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -printf %s "checking for suffix of object files... " >&6; } -if test ${ac_cv_objext+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; @@ -3724,12 +2894,11 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3738,32 +2907,31 @@ then : break;; esac done -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -printf "%s\n" "$ac_cv_objext" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { #ifndef __GNUC__ choke me @@ -3773,454 +2941,29 @@ main (void) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes -else $as_nop +else ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+y} -ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -else $as_nop - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c11=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC -fi - -if test "x$ac_cv_prog_cc_c11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c99_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC -fi - -if test "x$ac_cv_prog_cc_c99" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c99" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC -fi - -if test "x$ac_cv_prog_cc_c89" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c89" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 -fi -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - - - - - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CXX+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CXX+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 -printf %s "checking whether the compiler supports GNU C++... " >&6; } -if test ${ac_cv_cxx_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi -ac_test_CXXFLAGS=${CXXFLAGS+y} +ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -printf %s "checking whether $CXX accepts -g... " >&6; } -if test ${ac_cv_prog_cxx_g+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no @@ -4229,60 +2972,57 @@ else $as_nop /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes -else $as_nop +else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : -else $as_nop +else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } -if test $ac_test_CXXFLAGS; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then @@ -4297,100 +3037,6 @@ else CXXFLAGS= fi fi -ac_prog_cxx_stdcxx=no -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 -printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_11+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cxx_11=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program -_ACEOF -for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX -fi - -if test "x$ac_cv_prog_cxx_cxx11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cxx_cxx11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx11" -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_prog_cxx_stdcxx=cxx11 -fi -fi -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 -printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_98+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cxx_98=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program -_ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx98=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX -fi - -if test "x$ac_cv_prog_cxx_cxx98" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cxx_cxx98" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx98" -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 - ac_prog_cxx_stdcxx=cxx98 -fi -fi - ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4403,32 +3049,36 @@ ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -printf %s "checking how to run the C++ preprocessor... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then - if test ${ac_cv_prog_CXXCPP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - # Double quotes because $CXX needs to be expanded - for CXXCPP in "$CXX -E" cpp /lib/cpp + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF -if ac_fn_cxx_try_cpp "$LINENO" -then : +if ac_fn_cxx_try_cpp "$LINENO"; then : -else $as_nop +else # Broken: fails on valid input. continue fi @@ -4440,11 +3090,10 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_cxx_try_cpp "$LINENO" -then : +if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue -else $as_nop +else # Passes both tests. ac_preproc_ok=: break @@ -4454,8 +3103,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : +if $ac_preproc_ok; then : break fi @@ -4467,24 +3115,29 @@ fi else ac_cv_prog_CXXCPP=$CXXCPP fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -printf "%s\n" "$CXXCPP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF -if ac_fn_cxx_try_cpp "$LINENO" -then : +if ac_fn_cxx_try_cpp "$LINENO"; then : -else $as_nop +else # Broken: fails on valid input. continue fi @@ -4496,11 +3149,10 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_cxx_try_cpp "$LINENO" -then : +if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue -else $as_nop +else # Passes both tests. ac_preproc_ok=: break @@ -4510,12 +3162,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : +if $ac_preproc_ok; then : -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi @@ -4527,43 +3178,272 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -ac_header= ac_cache= -for ac_item in $ac_header_cxx_list +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do - if test $ac_cache; then - ac_fn_cxx_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" - if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count fi - ac_header= ac_cache= - elif test $ac_header; then - ac_cache=$ac_item - else - ac_header=$ac_item + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + done - - - - - -if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes -then : - -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X" >&5 -printf %s "checking for X... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 +$as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. -if test ${with_x+y} -then : +if test "${with_x+set}" = set; then : withval=$with_x; fi @@ -4574,41 +3454,12 @@ if test "x$with_x" = xno; then else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( - *,NONE | NONE,*) if test ${ac_cv_have_x+y} -then : - printf %s "(cached) " >&6 -else $as_nop + *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : + $as_echo_n "(cached) " >&6 +else # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no -ac_x_libraries=no -# Do we need to do anything special at all? -ac_save_LIBS=$LIBS -LIBS="-lX11 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -XrmInitialize () - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - # We can compile and link X programs with no special options. - ac_x_includes= - ac_x_libraries= -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS="$ac_save_LIBS" -# If that didn't work, only try xmkmf and file system searches -# for native compilation. -if test x"$ac_x_includes" = xno && test "$cross_compiling" = no -then : - rm -f -r conftest.dir +ac_x_includes=no ac_x_libraries=no +rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' @@ -4647,7 +3498,7 @@ _ACEOF rm -f -r conftest.dir fi - # Standard set of common directories for X headers. +# Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include @@ -4674,8 +3525,6 @@ ac_x_header_dirs=' /usr/local/include/X11R5 /usr/local/include/X11R4 -/opt/X11/include - /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 @@ -4697,11 +3546,10 @@ if test "$ac_x_includes" = no; then /* end confdefs.h. */ #include _ACEOF -if ac_fn_cxx_try_cpp "$LINENO" -then : +if ac_fn_cxx_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= -else $as_nop +else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir @@ -4722,21 +3570,20 @@ if test "$ac_x_libraries" = no; then /* end confdefs.h. */ #include int -main (void) +main () { XrmInitialize () ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= -else $as_nop +else LIBS=$ac_save_LIBS -for ac_dir in `printf "%s\n" "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do @@ -4747,21 +3594,19 @@ do done done fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no -fi -# Record the results. case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) : + no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no" ;; #( - *) : + ac_cv_have_x="have_x=no";; #( + *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" ;; + ac_x_libraries='$ac_x_libraries'" esac fi ;; #( @@ -4771,8 +3616,8 @@ fi fi # $with_x != no if test "$have_x" != yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 -printf "%s\n" "$have_x" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 +$as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. @@ -4782,45 +3627,41 @@ else ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 -printf "%s\n" "libraries $x_libraries, headers $x_includes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 +$as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi - if test "$no_x" = "yes" -then : + if test "$no_x" = "yes"; then : USE_X_WINDOWS=0 -else $as_nop +else USE_X_WINDOWS=1 - if test "x$x_includes" = "x" -then : + if test "x$x_includes" = "x"; then : -else $as_nop +else X_INCLUDE_DIR=-I$x_includes fi - if test "x$x_libraries" = "x" -then : + if test "x$x_libraries" = "x"; then : -else $as_nop +else X_LIB_DIR=-L$x_libraries fi - ac_fn_cxx_check_header_compile "$LINENO" "X11/Intrinsic.h" "ac_cv_header_X11_Intrinsic_h" "$ac_includes_default" -if test "x$ac_cv_header_X11_Intrinsic_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "X11/Intrinsic.h" "ac_cv_header_X11_Intrinsic_h" "$ac_includes_default" +if test "x$ac_cv_header_X11_Intrinsic_h" = xyes; then : -else $as_nop +else as_fn_error $? "could not find libxt development headers" "$LINENO" 5 fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for trick_source/data_products/fermi-ware" >&5 -printf %s "checking for trick_source/data_products/fermi-ware... " >&6; } -if test ${ac_cv_file_trick_source_data_products_fermi_ware+y} -then : - printf %s "(cached) " >&6 -else $as_nop + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for trick_source/data_products/fermi-ware" >&5 +$as_echo_n "checking for trick_source/data_products/fermi-ware... " >&6; } +if ${ac_cv_file_trick_source_data_products_fermi_ware+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "trick_source/data_products/fermi-ware"; then @@ -4829,22 +3670,19 @@ else ac_cv_file_trick_source_data_products_fermi_ware=no fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file_trick_source_data_products_fermi_ware" >&5 -printf "%s\n" "$ac_cv_file_trick_source_data_products_fermi_ware" >&6; } -if test "x$ac_cv_file_trick_source_data_products_fermi_ware" = xyes -then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file_trick_source_data_products_fermi_ware" >&5 +$as_echo "$ac_cv_file_trick_source_data_products_fermi_ware" >&6; } +if test "x$ac_cv_file_trick_source_data_products_fermi_ware" = xyes; then : - ac_fn_cxx_check_header_compile "$LINENO" "Xm/Xm.h" "ac_cv_header_Xm_Xm_h" "$ac_includes_default" -if test "x$ac_cv_header_Xm_Xm_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "Xm/Xm.h" "ac_cv_header_Xm_Xm_h" "$ac_includes_default" +if test "x$ac_cv_header_Xm_Xm_h" = xyes; then : MOTIF_HOME="/usr" -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /usr/local/include/Xm/Xm.h" >&5 -printf %s "checking for /usr/local/include/Xm/Xm.h... " >&6; } -if test ${ac_cv_file__usr_local_include_Xm_Xm_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/local/include/Xm/Xm.h" >&5 +$as_echo_n "checking for /usr/local/include/Xm/Xm.h... " >&6; } +if ${ac_cv_file__usr_local_include_Xm_Xm_h+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "/usr/local/include/Xm/Xm.h"; then @@ -4853,18 +3691,16 @@ else ac_cv_file__usr_local_include_Xm_Xm_h=no fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_local_include_Xm_Xm_h" >&5 -printf "%s\n" "$ac_cv_file__usr_local_include_Xm_Xm_h" >&6; } -if test "x$ac_cv_file__usr_local_include_Xm_Xm_h" = xyes -then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_local_include_Xm_Xm_h" >&5 +$as_echo "$ac_cv_file__usr_local_include_Xm_Xm_h" >&6; } +if test "x$ac_cv_file__usr_local_include_Xm_Xm_h" = xyes; then : MOTIF_HOME="/usr/local" -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /sw/include/Xm/Xm.h" >&5 -printf %s "checking for /sw/include/Xm/Xm.h... " >&6; } -if test ${ac_cv_file__sw_include_Xm_Xm_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /sw/include/Xm/Xm.h" >&5 +$as_echo_n "checking for /sw/include/Xm/Xm.h... " >&6; } +if ${ac_cv_file__sw_include_Xm_Xm_h+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "/sw/include/Xm/Xm.h"; then @@ -4873,12 +3709,11 @@ else ac_cv_file__sw_include_Xm_Xm_h=no fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__sw_include_Xm_Xm_h" >&5 -printf "%s\n" "$ac_cv_file__sw_include_Xm_Xm_h" >&6; } -if test "x$ac_cv_file__sw_include_Xm_Xm_h" = xyes -then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__sw_include_Xm_Xm_h" >&5 +$as_echo "$ac_cv_file__sw_include_Xm_Xm_h" >&6; } +if test "x$ac_cv_file__sw_include_Xm_Xm_h" = xyes; then : MOTIF_HOME="/sw" -else $as_nop +else as_fn_error $? "could not find Xm/Xm.h" "$LINENO" 5 fi @@ -4887,7 +3722,8 @@ fi fi -else $as_nop + +else MOTIF_HOME="" @@ -4903,62 +3739,55 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lxml2" >&5 -printf %s "checking for main in -lxml2... " >&6; } -if test ${ac_cv_lib_xml2_main+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lxml2" >&5 +$as_echo_n "checking for main in -lxml2... " >&6; } +if ${ac_cv_lib_xml2_main+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_check_lib_save_LIBS=$LIBS LIBS="-lxml2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int main (); -} + int -main (void) +main () { -return conftest::main (); +return main (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_xml2_main=yes -else $as_nop +else ac_cv_lib_xml2_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_main" >&5 -printf "%s\n" "$ac_cv_lib_xml2_main" >&6; } -if test "x$ac_cv_lib_xml2_main" = xyes -then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_main" >&5 +$as_echo "$ac_cv_lib_xml2_main" >&6; } +if test "x$ac_cv_lib_xml2_main" = xyes; then : LIBXML=-lxml2 fi -ac_fn_cxx_check_header_compile "$LINENO" "libxml/tree.h" "ac_cv_header_libxml_tree_h" "$ac_includes_default" -if test "x$ac_cv_header_libxml_tree_h" = xyes -then : +ac_fn_cxx_check_header_mongrel "$LINENO" "libxml/tree.h" "ac_cv_header_libxml_tree_h" "$ac_includes_default" +if test "x$ac_cv_header_libxml_tree_h" = xyes; then : -else $as_nop +else as_fn_error $? "could not find libxml development headers" "$LINENO" 5 fi + # If 32bit is specified, set some compilation flags. # Check whether --enable-32bit was given. -if test ${enable_32bit+y} -then : - enableval=$enable_32bit; if test "x$enable_32bit" = xyes -then : +if test "${enable_32bit+set}" = set; then : + enableval=$enable_32bit; if test "x$enable_32bit" = xyes; then : TRICK_FORCE_32BIT=1 CFLAGS="${CFLAGS} -m32" @@ -4966,10 +3795,10 @@ then : LDFLAGS="${LDFLAGS} -m32" ARCH="i686" -else $as_nop +else TRICK_FORCE_32BIT=0 fi -else $as_nop +else TRICK_FORCE_32BIT=0 fi @@ -4978,18 +3807,15 @@ fi # If offline is specified, set some compilation flags # Check whether --enable-offline was given. -if test ${enable_offline+y} -then : - enableval=$enable_offline; if test "x$enable_offline" = xyes -then : +if test "${enable_offline+set}" = set; then : + enableval=$enable_offline; if test "x$enable_offline" = xyes; then : TRICK_OFFLINE="1" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for trick-offline" >&5 -printf %s "checking for trick-offline... " >&6; } -if test ${ac_cv_file_trick_offline+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for trick-offline" >&5 +$as_echo_n "checking for trick-offline... " >&6; } +if ${ac_cv_file_trick_offline+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "trick-offline"; then @@ -4998,21 +3824,20 @@ else ac_cv_file_trick_offline=no fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file_trick_offline" >&5 -printf "%s\n" "$ac_cv_file_trick_offline" >&6; } -if test "x$ac_cv_file_trick_offline" = xyes -then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file_trick_offline" >&5 +$as_echo "$ac_cv_file_trick_offline" >&6; } +if test "x$ac_cv_file_trick_offline" = xyes; then : -else $as_nop +else as_fn_error $? "Offline mode requires an uncompressed directory named \"trick-offline\" in TRICK_HOME" "$LINENO" 5 fi -else $as_nop +else TRICK_OFFLINE="0" fi -else $as_nop +else TRICK_OFFLINE="0" fi @@ -5021,16 +3846,14 @@ fi # If offline is specified, set some compilation flags # Check whether --enable-offline was given. -if test ${enable_offline+y} -then : - enableval=$enable_offline; if test "x$enable_offline" = xyes -then : +if test "${enable_offline+set}" = set; then : + enableval=$enable_offline; if test "x$enable_offline" = xyes; then : TRICK_OFFLINE="1" -else $as_nop +else TRICK_OFFLINE="0" fi -else $as_nop +else TRICK_OFFLINE="0" fi @@ -5062,12 +3885,11 @@ for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_AWK+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -5075,15 +3897,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5094,11 +3912,11 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -printf "%s\n" "$AWK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5113,12 +3931,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -5126,15 +3943,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5145,11 +3958,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5158,12 +3971,11 @@ if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -5171,15 +3983,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5190,11 +3998,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then @@ -5202,8 +4010,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -5216,12 +4024,11 @@ if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -5229,15 +4036,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5248,11 +4051,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5261,12 +4064,11 @@ fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -5275,19 +4077,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5303,18 +4101,18 @@ if test $ac_prog_rejected = yes; then # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift - ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5325,12 +4123,11 @@ if test -z "$CC"; then do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -5338,15 +4135,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5357,11 +4150,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5374,12 +4167,11 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -5387,15 +4179,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5406,11 +4194,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5422,8 +4210,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -5431,129 +4219,25 @@ esac fi fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "clang", so it can be a program name with args. -set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi - - -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do +for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -5563,21 +4247,20 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { #ifndef __GNUC__ choke me @@ -5587,33 +4270,29 @@ main (void) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes -else $as_nop +else ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+y} +ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -5622,60 +4301,57 @@ else $as_nop /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes -else $as_nop +else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : -else $as_nop +else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO" -then : +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -5690,144 +4366,94 @@ else CFLAGS= fi fi -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c11=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC -fi - -if test "x$ac_cv_prog_cc_c11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c99_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC -fi - -if test "x$ac_cv_prog_cc_c99" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c99" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_c_conftest_c89_program +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : + if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext conftest.beam +rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC -fi -if test "x$ac_cv_prog_cc_c89" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c89" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + fi ac_ext=cpp @@ -5846,16 +4472,15 @@ if test -z "$CXX"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CXX+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else @@ -5863,15 +4488,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5882,11 +4503,11 @@ fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -printf "%s\n" "$CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5895,16 +4516,15 @@ fi fi if test -z "$CXX"; then ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CXX+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else @@ -5912,15 +4532,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5931,11 +4547,11 @@ fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -printf "%s\n" "$ac_ct_CXX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -5947,8 +4563,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX @@ -5958,7 +4574,7 @@ fi fi fi # Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do @@ -5968,7 +4584,7 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -5978,21 +4594,20 @@ printf "%s\n" "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 -printf %s "checking whether the compiler supports GNU C++... " >&6; } -if test ${ac_cv_cxx_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { #ifndef __GNUC__ choke me @@ -6002,33 +4617,29 @@ main (void) return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes -else $as_nop +else ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi -ac_test_CXXFLAGS=${CXXFLAGS+y} +ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -printf %s "checking whether $CXX accepts -g... " >&6; } -if test ${ac_cv_prog_cxx_g+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no @@ -6037,60 +4648,57 @@ else $as_nop /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes -else $as_nop +else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : -else $as_nop +else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main (void) +main () { ; return 0; } _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } -if test $ac_test_CXXFLAGS; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then @@ -6105,100 +4713,6 @@ else CXXFLAGS= fi fi -ac_prog_cxx_stdcxx=no -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 -printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_11+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cxx_11=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx11_program -_ACEOF -for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx11" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX -fi - -if test "x$ac_cv_prog_cxx_cxx11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cxx_cxx11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx11" -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 - ac_prog_cxx_stdcxx=cxx11 -fi -fi -if test x$ac_prog_cxx_stdcxx = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 -printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_98+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cxx_98=no -ac_save_CXX=$CXX -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_cxx_conftest_cxx98_program -_ACEOF -for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA -do - CXX="$ac_save_CXX $ac_arg" - if ac_fn_cxx_try_compile "$LINENO" -then : - ac_cv_prog_cxx_cxx98=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cxx_cxx98" != "xno" && break -done -rm -f conftest.$ac_ext -CXX=$ac_save_CXX -fi - -if test "x$ac_cv_prog_cxx_cxx98" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cxx_cxx98" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 -printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } - CXX="$CXX $ac_cv_prog_cxx_cxx98" -fi - ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 - ac_prog_cxx_stdcxx=cxx98 -fi -fi - ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -6206,34 +4720,29 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test "$ON_MAC" = "no" -then : +if test "$ON_MAC" = "no"; then : GCC_VERSION="" - if test "x$GCC" = "xyes" -then : + if test "x$GCC" = "xyes"; then : - if test "x$ax_gcc_version_option" != "xno" -then : + if test "x$ax_gcc_version_option" != "xno"; then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5 -printf %s "checking gcc version... " >&6; } -if test ${ax_cv_gcc_version+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking gcc version" >&5 +$as_echo_n "checking gcc version... " >&6; } +if ${ax_cv_gcc_version+:} false; then : + $as_echo_n "(cached) " >&6 +else ax_cv_gcc_version="`$CC -dumpfullversion -dumpversion`" - if test "x$ax_cv_gcc_version" = "x" -then : + if test "x$ax_cv_gcc_version" = "x"; then : ax_cv_gcc_version="" fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_version" >&5 -printf "%s\n" "$ax_cv_gcc_version" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_gcc_version" >&5 +$as_echo "$ax_cv_gcc_version" >&6; } GCC_VERSION=$ax_cv_gcc_version fi @@ -6242,12 +4751,11 @@ fi fi -if test "x$GCC_VERSION" = "x" -then : +if test "x$GCC_VERSION" = "x"; then : -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking gcc version >= 4.8" >&5 -printf %s "checking gcc version >= 4.8... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking gcc version >= 4.8" >&5 +$as_echo_n "checking gcc version >= 4.8... " >&6; } @@ -6280,10 +4788,10 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version if test "$ax_compare_version" = "true" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } as_fn_error $? "Trick requires gcc version >= 4.8" "$LINENO" 5 fi @@ -6295,12 +4803,11 @@ CXX=`which $CXX` # Extract the first word of "tee", so it can be a program name with args. set dummy tee; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_TEE+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_TEE+:} false; then : + $as_echo_n "(cached) " >&6 +else case $TEE in [\\/]* | ?:[\\/]*) ac_cv_path_TEE="$TEE" # Let the user override the test with a path. @@ -6310,15 +4817,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_TEE="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_TEE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6331,26 +4834,24 @@ esac fi TEE=$ac_cv_path_TEE if test -n "$TEE"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5 -printf "%s\n" "$TEE" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEE" >&5 +$as_echo "$TEE" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$ac_cv_path_TEE" = "notee" -then : +if test "$ac_cv_path_TEE" = "notee"; then : as_fn_error $? "could not find tee" "$LINENO" 5 fi # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_LD+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else case $LD in [\\/]* | ?:[\\/]*) ac_cv_path_LD="$LD" # Let the user override the test with a path. @@ -6360,15 +4861,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_LD="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LD="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6381,28 +4878,26 @@ esac fi LD=$ac_cv_path_LD if test -n "$LD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 -printf "%s\n" "$LD" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$ac_cv_path_LD" = "nold" -then : +if test "$ac_cv_path_LD" = "nold"; then : as_fn_error $? "could not find ld" "$LINENO" 5 fi for ac_prog in flex lex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_LEX+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LEX+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$LEX"; then ac_cv_prog_LEX="$LEX" # Let the user override the test. else @@ -6410,15 +4905,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LEX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6429,11 +4920,11 @@ fi fi LEX=$ac_cv_prog_LEX if test -n "$LEX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 -printf "%s\n" "$LEX" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5 +$as_echo "$LEX" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -6441,26 +4932,15 @@ fi done test -n "$LEX" || LEX=":" - if test "x$LEX" != "x:"; then - cat >conftest.l <<_ACEOF -%{ -#ifdef __cplusplus -extern "C" -#endif -int yywrap(void); -%} +if test "x$LEX" != "x:"; then + cat >conftest.l <<_ACEOF %% a { ECHO; } b { REJECT; } c { yymore (); } d { yyless (1); } e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ -#ifdef __cplusplus - yyless ((yyinput () != 0)); -#else - yyless ((input () != 0)); -#endif - } + yyless ((input () != 0)); } f { unput (yytext[0]); } . { BEGIN INITIAL; } %% @@ -6468,161 +4948,116 @@ f { unput (yytext[0]); } extern char *yytext; #endif int -yywrap (void) -{ - return 1; -} -int main (void) { - return ! yylex (); + return ! yylex () + ! yywrap (); } _ACEOF -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex output file root" >&5 -printf %s "checking for lex output file root... " >&6; } -if test ${ac_cv_prog_lex_root+y} -then : - printf %s "(cached) " >&6 -else $as_nop - -ac_cv_prog_lex_root=unknown { { ac_try="$LEX conftest.l" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 +$as_echo "$ac_try_echo"; } >&5 (eval "$LEX conftest.l") 2>&5 ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5 +$as_echo_n "checking lex output file root... " >&6; } +if ${ac_cv_prog_lex_root+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -f lex.yy.c; then ac_cv_prog_lex_root=lex.yy elif test -f lexyy.c; then ac_cv_prog_lex_root=lexyy +else + as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 -printf "%s\n" "$ac_cv_prog_lex_root" >&6; } -if test "$ac_cv_prog_lex_root" = unknown -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot find output from $LEX; giving up on $LEX" >&5 -printf "%s\n" "$as_me: WARNING: cannot find output from $LEX; giving up on $LEX" >&2;} - LEX=: LEXLIB= -fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5 +$as_echo "$ac_cv_prog_lex_root" >&6; } LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root -if test ${LEXLIB+y} -then : - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lex library" >&5 -printf %s "checking for lex library... " >&6; } -if test ${ac_cv_lib_lex+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - ac_save_LIBS="$LIBS" - ac_found=false - for ac_cv_lib_lex in 'none needed' -lfl -ll 'not found'; do - case $ac_cv_lib_lex in #( - 'none needed') : - ;; #( - 'not found') : - break ;; #( - *) : - LIBS="$ac_cv_lib_lex $ac_save_LIBS" ;; #( - *) : - ;; -esac +if test -z "${LEXLIB+set}"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5 +$as_echo_n "checking lex library... " >&6; } +if ${ac_cv_lib_lex+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_LIBS=$LIBS + ac_cv_lib_lex='none needed' + for ac_lib in '' -lfl -ll; do + LIBS="$ac_lib $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ `cat $LEX_OUTPUT_ROOT.c` _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : - ac_found=: +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_lex=$ac_lib fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - if $ac_found; then - break - fi + test "$ac_cv_lib_lex" != 'none needed' && break done - LIBS="$ac_save_LIBS" + LIBS=$ac_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 -printf "%s\n" "$ac_cv_lib_lex" >&6; } - if test "$ac_cv_lib_lex" = 'not found' -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: required lex library not found; giving up on $LEX" >&5 -printf "%s\n" "$as_me: WARNING: required lex library not found; giving up on $LEX" >&2;} - LEX=: LEXLIB= -elif test "$ac_cv_lib_lex" = 'none needed' -then : - LEXLIB='' -else $as_nop - LEXLIB=$ac_cv_lib_lex -fi - +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5 +$as_echo "$ac_cv_lib_lex" >&6; } + test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex fi -if test "$LEX" != : -then : - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 -printf %s "checking whether yytext is a pointer... " >&6; } -if test ${ac_cv_prog_lex_yytext_pointer+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5 +$as_echo_n "checking whether yytext is a pointer... " >&6; } +if ${ac_cv_prog_lex_yytext_pointer+:} false; then : + $as_echo_n "(cached) " >&6 +else # POSIX says lex can declare yytext either as a pointer or an array; the # default is implementation-dependent. Figure out which it is, since # not all implementations provide the %pointer and %array declarations. ac_cv_prog_lex_yytext_pointer=no +ac_save_LIBS=$LIBS +LIBS="$LEXLIB $ac_save_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define YYTEXT_POINTER 1 `cat $LEX_OUTPUT_ROOT.c` _ACEOF -if ac_fn_cxx_try_compile "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_prog_lex_yytext_pointer=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 -printf "%s\n" "$ac_cv_prog_lex_yytext_pointer" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5 +$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } if test $ac_cv_prog_lex_yytext_pointer = yes; then -printf "%s\n" "#define YYTEXT_POINTER 1" >>confdefs.h - -fi +$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h fi rm -f conftest.l $LEX_OUTPUT_ROOT.c fi -if test "x$LEX" = "x:" -then : +if test "x$LEX" = "x:"; then : as_fn_error $? "could not find flex" "$LINENO" 5 fi # Extract the first word of "bison", so it can be a program name with args. set dummy bison; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_BISON+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_BISON+:} false; then : + $as_echo_n "(cached) " >&6 +else case $BISON in [\\/]* | ?:[\\/]*) ac_cv_path_BISON="$BISON" # Let the user override the test with a path. @@ -6632,15 +5067,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_BISON="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BISON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6653,26 +5084,24 @@ esac fi BISON=$ac_cv_path_BISON if test -n "$BISON"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5 -printf "%s\n" "$BISON" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5 +$as_echo "$BISON" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$ac_cv_path_BISON" = "nobison" -then : +if test "$ac_cv_path_BISON" = "nobison"; then : as_fn_error $? "could not find bison" "$LINENO" 5 fi # Extract the first word of "curl", so it can be a program name with args. set dummy curl; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_CURL+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CURL+:} false; then : + $as_echo_n "(cached) " >&6 +else case $CURL in [\\/]* | ?:[\\/]*) ac_cv_path_CURL="$CURL" # Let the user override the test with a path. @@ -6682,15 +5111,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_CURL="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CURL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6703,26 +5128,24 @@ esac fi CURL=$ac_cv_path_CURL if test -n "$CURL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5 -printf "%s\n" "$CURL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5 +$as_echo "$CURL" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$ac_cv_path_CURL" = "nocurl" -then : +if test "$ac_cv_path_CURL" = "nocurl"; then : as_fn_error $? "could not find curl" "$LINENO" 5 fi # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PERL+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PERL+:} false; then : + $as_echo_n "(cached) " >&6 +else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. @@ -6732,15 +5155,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -6752,20 +5171,19 @@ esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -printf "%s\n" "$PERL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +$as_echo "$PERL" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -printf %s "checking for a sed that does not truncate output... " >&6; } -if test ${ac_cv_path_SED+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -6779,15 +5197,10 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in sed gsed - do + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -6796,13 +5209,13 @@ case `"$ac_path_SED" --version 2>&1` in ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - printf %s 0123456789 >"conftest.in" + $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - printf "%s\n" '' >> "conftest.nl" + $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val @@ -6830,91 +5243,21 @@ else fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -printf "%s\n" "$ac_cv_path_SED" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -printf %s "checking for grep that handles long lines and -e... " >&6; } -if test ${ac_cv_path_GREP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in grep ggrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -printf "%s\n" "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - - if test -n "$PERL" -then : + if test -n "$PERL"; then : ax_perl_version="5.14.0" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl version" >&5 -printf %s "checking for perl version... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl version" >&5 +$as_echo_n "checking for perl version... " >&6; } perl_version=`$PERL --version 2>&1 \ | $SED -n -e '/This is perl/b inspect @@ -6922,8 +5265,8 @@ b : inspect s/.* (\{0,1\}v\([0-9]*\.[0-9]*\.[0-9]*\))\{0,1\} .*/\1/;p'` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $perl_version" >&5 -printf "%s\n" "$perl_version" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $perl_version" >&5 +$as_echo "$perl_version" >&6; } PERL_VERSION=$perl_version @@ -6971,22 +5314,21 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort | sed "s/x${ax_compare_version_A} fi -else $as_nop +else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find the perl interpreter" >&5 -printf "%s\n" "$as_me: WARNING: could not find the perl interpreter" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find the perl interpreter" >&5 +$as_echo "$as_me: WARNING: could not find the perl interpreter" >&2;} as_fn_error $? "Trick requires perl version >= 5.14.0" "$LINENO" 5 fi # Extract the first word of "zip", so it can be a program name with args. set dummy zip; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ZIP+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else case $ZIP in [\\/]* | ?:[\\/]*) ac_cv_path_ZIP="$ZIP" # Let the user override the test with a path. @@ -6996,15 +5338,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ZIP="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7017,16 +5355,15 @@ esac fi ZIP=$ac_cv_path_ZIP if test -n "$ZIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ZIP" >&5 -printf "%s\n" "$ZIP" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ZIP" >&5 +$as_echo "$ZIP" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$ac_cv_path_ZIP" = "nozip" -then : +if test "$ac_cv_path_ZIP" = "nozip"; then : as_fn_error $? "Trick now requires zip but it could not be found. Please install zip. We recommend you use your OS package manager" "$LINENO" 5 fi @@ -7035,20 +5372,18 @@ fi # Check whether --with-python was given. -if test ${with_python+y} -then : +if test "${with_python+set}" = set; then : withval=$with_python; PYTHON_HOME="$withval" for ac_prog in python${PYTHON_VERSION} python python3 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PYTHON+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 +else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. @@ -7058,15 +5393,11 @@ else $as_nop for as_dir in "$PYTHON_HOME" do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7078,11 +5409,11 @@ esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 -printf "%s\n" "$PYTHON" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7090,8 +5421,7 @@ fi done test -n "$PYTHON" || PYTHON="nopython" - if test "$ac_cv_path_PYTHON" = "" || test "$ac_cv_path_PYTHON" = "nopython" -then : + if test "$ac_cv_path_PYTHON" = "" || test "$ac_cv_path_PYTHON" = "nopython"; then : as_fn_error $? "could not find python python or python3 in the specefied path. Please install the python development package" "$LINENO" 5 fi PYTHON_MAJORMINOR=`${PYTHON} -c 'import sys; print(str(sys.version_info[0])+"."+str(sys.version_info[1]))'` @@ -7100,12 +5430,11 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PYTHON_CONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else case $PYTHON_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path. @@ -7115,15 +5444,11 @@ else $as_nop for as_dir in "$PYTHON_HOME" do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7135,11 +5460,11 @@ esac fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 -printf "%s\n" "$PYTHON_CONFIG" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 +$as_echo "$PYTHON_CONFIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7147,23 +5472,21 @@ fi done test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="nopython-config" - if test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config" -then : + if test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config"; then : as_fn_error $? "could not find python-config python-config or python-config in the specified path. Please install the python development package" "$LINENO" 5 fi -else $as_nop +else for ac_prog in python${PYTHON_VERSION} python python3 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PYTHON+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 +else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. @@ -7173,15 +5496,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7193,11 +5512,11 @@ esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 -printf "%s\n" "$PYTHON" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7205,8 +5524,7 @@ fi done test -n "$PYTHON" || PYTHON="nopython" - if test {"$ac_cv_path_PYTHON" = "" || test "${ac_cv_path_PYTHON}" = "nopython"} -then : + if test {"$ac_cv_path_PYTHON" = "" || test "${ac_cv_path_PYTHON}" = "nopython"}; then : as_fn_error $? "could not find python python or python3. Please install the python development package" "$LINENO" 5 fi PYTHON_MAJORMINOR=`${PYTHON} -c 'import sys; print(str(sys.version_info[0])+"."+str(sys.version_info[1]))'` @@ -7215,12 +5533,11 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PYTHON_CONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else case $PYTHON_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path. @@ -7230,15 +5547,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7250,11 +5563,11 @@ esac fi PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG if test -n "$PYTHON_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 -printf "%s\n" "$PYTHON_CONFIG" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5 +$as_echo "$PYTHON_CONFIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7262,8 +5575,7 @@ fi done test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="nopython-config" - if test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config" -then : + if test "$ac_cv_path_PYTHON_CONFIG" = "" || test "$ac_cv_path_PYTHON_CONFIG" = "nopython-config"; then : as_fn_error $? "could not find python-config python-config or python-config. Please install the python development package" "$LINENO" 5 fi @@ -7319,14 +5631,11 @@ PYTHON_LIBS=`${PYTHON_LIBS_COMMAND} | tr '\r\n' ' '` # Check whether --with-prepend-path was given. -if test ${with_prepend_path+y} -then : - withval=$with_prepend_path; if test "x${with_prepend_path}" = xyes -then : +if test "${with_prepend_path+set}" = set; then : + withval=$with_prepend_path; if test "x${with_prepend_path}" = xyes; then : PATH="/usr/local/bin:${PATH}" -else $as_nop - if test "x${with_prepend_path}" != xno -then : +else + if test "x${with_prepend_path}" != xno; then : PATH="${withval}:${PATH}" fi @@ -7336,12 +5645,11 @@ fi # Extract the first word of "gnuplot", so it can be a program name with args. set dummy gnuplot; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_GNUPLOT+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GNUPLOT+:} false; then : + $as_echo_n "(cached) " >&6 +else case $GNUPLOT in [\\/]* | ?:[\\/]*) ac_cv_path_GNUPLOT="$GNUPLOT" # Let the user override the test with a path. @@ -7351,15 +5659,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_GNUPLOT="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GNUPLOT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7372,24 +5676,22 @@ esac fi GNUPLOT=$ac_cv_path_GNUPLOT if test -n "$GNUPLOT"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GNUPLOT" >&5 -printf "%s\n" "$GNUPLOT" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GNUPLOT" >&5 +$as_echo "$GNUPLOT" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$ac_cv_path_GNUPLOT" = "nognuplot" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: could not find gnuplot" >&5 -printf "%s\n" "$as_me: could not find gnuplot" >&6;} +if test "$ac_cv_path_GNUPLOT" = "nognuplot"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: could not find gnuplot" >&5 +$as_echo "$as_me: could not find gnuplot" >&6;} fi # Check whether --with-swig was given. -if test ${with_swig+y} -then : +if test "${with_swig+set}" = set; then : withval=$with_swig; TEMP_PATH="${PATH}" PATH="$withval:${PATH}" @@ -7399,12 +5701,11 @@ then : do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_SWIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SWIG+:} false; then : + $as_echo_n "(cached) " >&6 +else case $SWIG in [\\/]* | ?:[\\/]*) ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. @@ -7414,15 +5715,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_SWIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7434,11 +5731,11 @@ esac fi SWIG=$ac_cv_path_SWIG if test -n "$SWIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 -printf "%s\n" "$SWIG" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 +$as_echo "$SWIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7447,14 +5744,12 @@ done if test -z "$SWIG" ; then as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 - elif test -z "2.0" ; then - : - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5 -printf %s "checking SWIG version... " >&6; } + elif test -n "2.0" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5 +$as_echo_n "checking SWIG version... " >&6; } swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 -printf "%s\n" "$swig_version" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 +$as_echo "$swig_version" >&6; } if test -n "$swig_version" ; then # Calculate the required version number components required=2.0 @@ -7462,12 +5757,12 @@ printf "%s\n" "$swig_version" >&6; } if test -z "$required_major" ; then required_major=0 fi - required=`echo $required. | sed 's/[0-9]*[^0-9]//'` + required=`echo $required | sed 's/[0-9]*[^0-9]//'` required_minor=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_minor" ; then required_minor=0 fi - required=`echo $required. | sed 's/[0-9]*[^0-9]//'` + required=`echo $required | sed 's/[0-9]*[^0-9]//'` required_patch=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_patch" ; then required_patch=0 @@ -7497,21 +5792,21 @@ printf "%s\n" "$swig_version" >&6; } \+ $available_minor \* 100 \+ $available_patch` if test $available_swig_vernum -lt $required_swig_vernum; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&5 -printf "%s\n" "$as_me: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&5 +$as_echo "$as_me: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&2;} SWIG='' as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5 -printf %s "checking for SWIG library... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5 +$as_echo_n "checking for SWIG library... " >&6; } SWIG_LIB=`$SWIG -swiglib` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5 -printf "%s\n" "$SWIG_LIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5 +$as_echo "$SWIG_LIB" >&6; } fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 -printf "%s\n" "$as_me: WARNING: cannot determine SWIG version" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 +$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;} SWIG='' as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 fi @@ -7520,19 +5815,18 @@ printf "%s\n" "$as_me: WARNING: cannot determine SWIG version" >&2;} PATH="${TEMP_PATH}" -else $as_nop +else # Find path to the "swig" executable. for ac_prog in swig swig3.0 swig2.0 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_SWIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SWIG+:} false; then : + $as_echo_n "(cached) " >&6 +else case $SWIG in [\\/]* | ?:[\\/]*) ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. @@ -7542,15 +5836,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_SWIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7562,11 +5852,11 @@ esac fi SWIG=$ac_cv_path_SWIG if test -n "$SWIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 -printf "%s\n" "$SWIG" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 +$as_echo "$SWIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7575,14 +5865,12 @@ done if test -z "$SWIG" ; then as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 - elif test -z "2.0" ; then - : - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5 -printf %s "checking SWIG version... " >&6; } + elif test -n "2.0" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking SWIG version" >&5 +$as_echo_n "checking SWIG version... " >&6; } swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 -printf "%s\n" "$swig_version" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 +$as_echo "$swig_version" >&6; } if test -n "$swig_version" ; then # Calculate the required version number components required=2.0 @@ -7590,12 +5878,12 @@ printf "%s\n" "$swig_version" >&6; } if test -z "$required_major" ; then required_major=0 fi - required=`echo $required. | sed 's/[0-9]*[^0-9]//'` + required=`echo $required | sed 's/[0-9]*[^0-9]//'` required_minor=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_minor" ; then required_minor=0 fi - required=`echo $required. | sed 's/[0-9]*[^0-9]//'` + required=`echo $required | sed 's/[0-9]*[^0-9]//'` required_patch=`echo $required | sed 's/[^0-9].*//'` if test -z "$required_patch" ; then required_patch=0 @@ -7625,21 +5913,21 @@ printf "%s\n" "$swig_version" >&6; } \+ $available_minor \* 100 \+ $available_patch` if test $available_swig_vernum -lt $required_swig_vernum; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&5 -printf "%s\n" "$as_me: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&5 +$as_echo "$as_me: WARNING: SWIG version >= 2.0 is required. You have $swig_version." >&2;} SWIG='' as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5 -printf %s "checking for SWIG library... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG library" >&5 +$as_echo_n "checking for SWIG library... " >&6; } SWIG_LIB=`$SWIG -swiglib` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5 -printf "%s\n" "$SWIG_LIB" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG_LIB" >&5 +$as_echo "$SWIG_LIB" >&6; } fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 -printf "%s\n" "$as_me: WARNING: cannot determine SWIG version" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 +$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;} SWIG='' as_fn_error $? "Trick requires SWIG version >= 2.0" "$LINENO" 5 fi @@ -7652,33 +5940,29 @@ fi # Check whether --enable-java was given. -if test ${enable_java+y} -then : - enableval=$enable_java; if test "x$enable_java" = xyes -then : +if test "${enable_java+set}" = set; then : + enableval=$enable_java; if test "x$enable_java" = xyes; then : USE_JAVA="1" -else $as_nop +else USE_JAVA="0" fi -else $as_nop +else USE_JAVA="1" fi - if test "$USE_JAVA" = "1" -then : + if test "$USE_JAVA" = "1"; then : for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_AWK+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -7686,15 +5970,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7705,11 +5985,11 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -printf "%s\n" "$AWK" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7721,12 +6001,11 @@ done do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_JAVA_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_JAVA_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$JAVA_CC"; then ac_cv_prog_JAVA_CC="$JAVA_CC" # Let the user override the test. else @@ -7734,15 +6013,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_JAVA_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7753,11 +6028,11 @@ fi fi JAVA_CC=$ac_cv_prog_JAVA_CC if test -n "$JAVA_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $JAVA_CC" >&5 -printf "%s\n" "$JAVA_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JAVA_CC" >&5 +$as_echo "$JAVA_CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7770,12 +6045,11 @@ if test -z "$JAVA_CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_JAVA_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_JAVA_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$ac_ct_JAVA_CC"; then ac_cv_prog_ac_ct_JAVA_CC="$ac_ct_JAVA_CC" # Let the user override the test. else @@ -7783,15 +6057,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_JAVA_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7802,11 +6072,11 @@ fi fi ac_ct_JAVA_CC=$ac_cv_prog_ac_ct_JAVA_CC if test -n "$ac_ct_JAVA_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_JAVA_CC" >&5 -printf "%s\n" "$ac_ct_JAVA_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_JAVA_CC" >&5 +$as_echo "$ac_ct_JAVA_CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -7818,8 +6088,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac JAVA_CC=$ac_ct_JAVA_CC @@ -7838,8 +6108,8 @@ fi test -z "$JAVA_CC" && as_fn_error $? "no acceptable java compiler found in \$PATH" "$LINENO" 5 JAVA_VER=`$JAVA_CC -version 2>&1 | $ac_cv_path_PERL -ne 'print $& if /\d+(\.\d+)?/'` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $JAVA_CC version >= 1.8" >&5 -printf %s "checking $JAVA_CC version >= 1.8... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking $JAVA_CC version >= 1.8" >&5 +$as_echo_n "checking $JAVA_CC version >= 1.8... " >&6; } @@ -7872,25 +6142,23 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version if test "$ax_compare_version" = "true" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } as_fn_error $? "Trick requires javac version >= 1.8" "$LINENO" 5 fi - if test "$TRICK_OFFLINE" = "0" -then : + if test "$TRICK_OFFLINE" = "0"; then : # Extract the first word of "mvn", so it can be a program name with args. set dummy mvn; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_MVN+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MVN+:} false; then : + $as_echo_n "(cached) " >&6 +else case $MVN in [\\/]* | ?:[\\/]*) ac_cv_path_MVN="$MVN" # Let the user override the test with a path. @@ -7900,15 +6168,11 @@ else $as_nop for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_MVN="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MVN="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -7921,16 +6185,15 @@ esac fi MVN=$ac_cv_path_MVN if test -n "$MVN"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MVN" >&5 -printf "%s\n" "$MVN" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MVN" >&5 +$as_echo "$MVN" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - if test "$ac_cv_path_MVN" = "nomvn" -then : + if test "$ac_cv_path_MVN" = "nomvn"; then : as_fn_error $? "could not find maven" "$LINENO" 5 fi @@ -7945,36 +6208,40 @@ ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -printf %s "checking how to run the C preprocessor... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then - if test ${ac_cv_prog_CPP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - # Double quotes because $CC needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : +if ac_fn_c_try_cpp "$LINENO"; then : -else $as_nop +else # Broken: fails on valid input. continue fi @@ -7986,11 +6253,10 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue -else $as_nop +else # Passes both tests. ac_preproc_ok=: break @@ -8000,8 +6266,7 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : +if $ac_preproc_ok; then : break fi @@ -8013,24 +6278,29 @@ fi else ac_cv_prog_CPP=$CPP fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -printf "%s\n" "$CPP" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#ifdef __STDC__ +# include +#else +# include +#endif Syntax error _ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : +if ac_fn_c_try_cpp "$LINENO"; then : -else $as_nop +else # Broken: fails on valid input. continue fi @@ -8042,11 +6312,10 @@ rm -f conftest.err conftest.i conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : +if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue -else $as_nop +else # Passes both tests. ac_preproc_ok=: break @@ -8056,12 +6325,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : +if $ac_preproc_ok; then : -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi @@ -8073,79 +6341,6 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -printf %s "checking for egrep... " >&6; } -if test ${ac_cv_path_EGREP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in egrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -printf "%s\n" "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - @@ -8169,41 +6364,38 @@ if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then ax_pthread_save_CC="$CC" ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" - if test "x$PTHREAD_CC" != "x" -then : + if test "x$PTHREAD_CC" != "x"; then : CC="$PTHREAD_CC" -fi - if test "x$PTHREAD_CXX" != "x" -then : - CXX="$PTHREAD_CXX" fi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 -printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 +$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif char pthread_join (); int -main (void) +main () { return pthread_join (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" -then : +if ac_fn_c_try_link "$LINENO"; then : ax_pthread_ok=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 -printf "%s\n" "$ax_pthread_ok" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +$as_echo "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = "xno"; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -8218,12 +6410,10 @@ fi # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). -# Create a list of thread flags to try. Items with a "," contain both -# C compiler flags (before ",") and linker flags (after ","). Other items -# starting with a "-" are C compiler flags, and remaining items are -# library names, except for "none" which indicates that we try without -# any flags at all, and "pthread-config" which is a program returning -# the flags for the Pth emulation library. +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" @@ -8281,12 +6471,11 @@ case $host_os in _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 -printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} + $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 +$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} fi -rm -rf conftest* +rm -f conftest* ;; @@ -8300,67 +6489,16 @@ rm -rf conftest* # that too in a future libc.) So we'll check first for the # standard Solaris way of linking pthreads (-mt -lpthread). - ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" + ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" ;; esac -# Are we compiling with Clang? - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 -printf %s "checking whether $CC is Clang... " >&6; } -if test ${ax_cv_PTHREAD_CLANG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ax_cv_PTHREAD_CLANG=no - # Note that Autoconf sets GCC=yes for Clang as well as GCC - if test "x$GCC" = "xyes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ -# if defined(__clang__) && defined(__llvm__) - AX_PTHREAD_CC_IS_CLANG -# endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 -then : - ax_cv_PTHREAD_CLANG=yes -fi -rm -rf conftest* - - fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 -printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } -ax_pthread_clang="$ax_cv_PTHREAD_CLANG" - - # GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) -# Note that for GCC and Clang -pthread generally implies -lpthread, -# except when -nostdlib is passed. -# This is problematic using libtool to build C++ shared libraries with pthread: -# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 -# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 -# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 -# To solve this, first try -pthread together with -lpthread for GCC - -if test "x$GCC" = "xyes" -then : - ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags" +if test "x$GCC" = "xyes"; then : + ax_pthread_flags="-pthread -pthreads $ax_pthread_flags" fi -# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first - -if test "x$ax_pthread_clang" = "xyes" -then : - ax_pthread_flags="-pthread,-lpthread -pthread" -fi - - # The presence of a feature test macro requesting re-entrant function # definitions is, on some systems, a strong hint that pthreads support is # correctly enabled @@ -8378,45 +6516,175 @@ case $host_os in ax_pthread_check_macro="--" ;; esac -if test "x$ax_pthread_check_macro" = "x--" -then : +if test "x$ax_pthread_check_macro" = "x--"; then : ax_pthread_check_cond=0 -else $as_nop +else ax_pthread_check_cond="!defined($ax_pthread_check_macro)" fi +# Are we compiling with Clang? + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 +$as_echo_n "checking whether $CC is Clang... " >&6; } +if ${ax_cv_PTHREAD_CLANG+:} false; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then : + ax_cv_PTHREAD_CLANG=yes +fi +rm -f conftest* + + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 +$as_echo "$ax_cv_PTHREAD_CLANG" >&6; } +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + +ax_pthread_clang_warning=no + +# Clang needs special handling, because older versions handle the -pthread +# option in a rather... idiosyncratic way + +if test "x$ax_pthread_clang" = "xyes"; then + + # Clang takes -pthread; it has never supported any other flag + + # (Note 1: This will need to be revisited if a system that Clang + # supports has POSIX threads in a separate library. This tends not + # to be the way of modern systems, but it's conceivable.) + + # (Note 2: On some systems, notably Darwin, -pthread is not needed + # to get POSIX threads support; the API is always present and + # active. We could reasonably leave PTHREAD_CFLAGS empty. But + # -pthread does define _REENTRANT, and while the Darwin headers + # ignore this macro, third-party headers might not.) + + PTHREAD_CFLAGS="-pthread" + PTHREAD_LIBS= + + ax_pthread_ok=yes + + # However, older versions of Clang make a point of warning the user + # that, in an invocation where only linking and no compilation is + # taking place, the -pthread option has no effect ("argument unused + # during compilation"). They expect -pthread to be passed in only + # when source code is being compiled. + # + # Problem is, this is at odds with the way Automake and most other + # C build frameworks function, which is that the same flags used in + # compilation (CFLAGS) are also used in linking. Many systems + # supported by AX_PTHREAD require exactly this for POSIX threads + # support, and in fact it is often not straightforward to specify a + # flag that is used only in the compilation phase and not in + # linking. Such a scenario is extremely rare in practice. + # + # Even though use of the -pthread flag in linking would only print + # a warning, this can be a nuisance for well-run software projects + # that build with -Werror. So if the active version of Clang has + # this misfeature, we search for an option to squash it. + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 +$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } +if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then : + $as_echo_n "(cached) " >&6 +else + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown + # Create an alternate version of $ac_link that compiles and + # links in two steps (.c -> .o, .o -> exe) instead of one + # (.c -> exe), because the warning occurs only in the second + # step + ax_pthread_save_ac_link="$ac_link" + ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' + ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" + ax_pthread_save_CFLAGS="$CFLAGS" + for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do + if test "x$ax_pthread_try" = "xunknown"; then : + break +fi + CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" + ac_link="$ax_pthread_save_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_link="$ax_pthread_2step_ac_link" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main(void){return 0;} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done + ac_link="$ax_pthread_save_ac_link" + CFLAGS="$ax_pthread_save_CFLAGS" + if test "x$ax_pthread_try" = "x"; then : + ax_pthread_try=no +fi + ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 +$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } + + case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in + no | unknown) ;; + *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; + esac + +fi # $ax_pthread_clang = yes if test "x$ax_pthread_ok" = "xno"; then for ax_pthread_try_flag in $ax_pthread_flags; do case $ax_pthread_try_flag in none) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 -printf %s "checking whether pthreads work without any flags... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +$as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; - *,*) - PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` - PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 -printf %s "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } + -mt,pthread) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5 +$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; } + PTHREAD_CFLAGS="-mt" + PTHREAD_LIBS="-lpthread" ;; -*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 -printf %s "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 +$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ax_pthread_config+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ax_pthread_config+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else @@ -8424,15 +6692,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ax_pthread_config="yes" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8444,16 +6708,15 @@ fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 -printf "%s\n" "$ax_pthread_config" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 +$as_echo "$ax_pthread_config" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - if test "x$ax_pthread_config" = "xno" -then : + if test "x$ax_pthread_config" = "xno"; then : continue fi PTHREAD_CFLAGS="`pthread-config --cflags`" @@ -8461,8 +6724,8 @@ fi ;; *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 -printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 +$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } PTHREAD_LIBS="-l$ax_pthread_try_flag" ;; esac @@ -8488,16 +6751,10 @@ printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } # if $ax_pthread_check_cond # error "$ax_pthread_check_macro must be defined" # endif - static void *some_global = NULL; - static void routine(void *a) - { - /* To avoid any unused-parameter or - unused-but-set-parameter warning. */ - some_global = a; - } + static void routine(void *a) { a = 0; } static void *start_routine(void *a) { return a; } int -main (void) +main () { pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); @@ -8509,20 +6766,18 @@ pthread_t th; pthread_attr_t attr; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" -then : +if ac_fn_c_try_link "$LINENO"; then : ax_pthread_ok=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 -printf "%s\n" "$ax_pthread_ok" >&6; } - if test "x$ax_pthread_ok" = "xyes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +$as_echo "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xyes"; then : break fi @@ -8531,109 +6786,6 @@ fi done fi - -# Clang needs special handling, because older versions handle the -pthread -# option in a rather... idiosyncratic way - -if test "x$ax_pthread_clang" = "xyes"; then - - # Clang takes -pthread; it has never supported any other flag - - # (Note 1: This will need to be revisited if a system that Clang - # supports has POSIX threads in a separate library. This tends not - # to be the way of modern systems, but it's conceivable.) - - # (Note 2: On some systems, notably Darwin, -pthread is not needed - # to get POSIX threads support; the API is always present and - # active. We could reasonably leave PTHREAD_CFLAGS empty. But - # -pthread does define _REENTRANT, and while the Darwin headers - # ignore this macro, third-party headers might not.) - - # However, older versions of Clang make a point of warning the user - # that, in an invocation where only linking and no compilation is - # taking place, the -pthread option has no effect ("argument unused - # during compilation"). They expect -pthread to be passed in only - # when source code is being compiled. - # - # Problem is, this is at odds with the way Automake and most other - # C build frameworks function, which is that the same flags used in - # compilation (CFLAGS) are also used in linking. Many systems - # supported by AX_PTHREAD require exactly this for POSIX threads - # support, and in fact it is often not straightforward to specify a - # flag that is used only in the compilation phase and not in - # linking. Such a scenario is extremely rare in practice. - # - # Even though use of the -pthread flag in linking would only print - # a warning, this can be a nuisance for well-run software projects - # that build with -Werror. So if the active version of Clang has - # this misfeature, we search for an option to squash it. - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 -printf %s "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } -if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown - # Create an alternate version of $ac_link that compiles and - # links in two steps (.c -> .o, .o -> exe) instead of one - # (.c -> exe), because the warning occurs only in the second - # step - ax_pthread_save_ac_link="$ac_link" - ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' - ax_pthread_link_step=`printf "%s\n" "$ac_link" | sed "$ax_pthread_sed"` - ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" - ax_pthread_save_CFLAGS="$CFLAGS" - for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do - if test "x$ax_pthread_try" = "xunknown" -then : - break -fi - CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" - ac_link="$ax_pthread_save_ac_link" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int main(void){return 0;} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_link="$ax_pthread_2step_ac_link" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int main(void){return 0;} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - done - ac_link="$ax_pthread_save_ac_link" - CFLAGS="$ax_pthread_save_CFLAGS" - if test "x$ax_pthread_try" = "x" -then : - ax_pthread_try=no -fi - ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 -printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } - - case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in - no | unknown) ;; - *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;; - esac - -fi # $ax_pthread_clang = yes - - - # Various other checks: if test "x$ax_pthread_ok" = "xyes"; then ax_pthread_save_CFLAGS="$CFLAGS" @@ -8642,53 +6794,51 @@ if test "x$ax_pthread_ok" = "xyes"; then LIBS="$PTHREAD_LIBS $LIBS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 -printf %s "checking for joinable pthread attribute... " >&6; } -if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +$as_echo_n "checking for joinable pthread attribute... " >&6; } +if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then : + $as_echo_n "(cached) " >&6 +else ax_cv_PTHREAD_JOINABLE_ATTR=unknown for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main (void) +main () { int attr = $ax_pthread_attr; return attr /* ; */ ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" -then : +if ac_fn_c_try_link "$LINENO"; then : ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 -printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 +$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ - test "x$ax_pthread_joinable_attr_defined" != "xyes" -then : + test "x$ax_pthread_joinable_attr_defined" != "xyes"; then : -printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR" >>confdefs.h +cat >>confdefs.h <<_ACEOF +#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR +_ACEOF ax_pthread_joinable_attr_defined=yes fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 -printf %s "checking whether more special flags are required for pthreads... " >&6; } -if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 +$as_echo_n "checking whether more special flags are required for pthreads... " >&6; } +if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then : + $as_echo_n "(cached) " >&6 +else ax_cv_PTHREAD_SPECIAL_FLAGS=no case $host_os in solaris*) @@ -8697,50 +6847,45 @@ else $as_nop esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 -printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 +$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ - test "x$ax_pthread_special_flags_added" != "xyes" -then : + test "x$ax_pthread_special_flags_added" != "xyes"; then : PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" ax_pthread_special_flags_added=yes fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 -printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } -if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 +$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; } +if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then : + $as_echo_n "(cached) " >&6 +else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main (void) +main () { int i = PTHREAD_PRIO_INHERIT; - return i; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" -then : +if ac_fn_c_try_link "$LINENO"; then : ax_cv_PTHREAD_PRIO_INHERIT=yes -else $as_nop +else ax_cv_PTHREAD_PRIO_INHERIT=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 -printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 +$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ - test "x$ax_pthread_prio_inherit_defined" != "xyes" -then : + test "x$ax_pthread_prio_inherit_defined" != "xyes"; then : -printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h +$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h ax_pthread_prio_inherit_defined=yes @@ -8758,31 +6903,19 @@ fi #handle absolute path differently from PATH based program lookup case "x$CC" in #( x/*) : - - if as_fn_executable_p ${CC}_r -then : + if as_fn_executable_p ${CC}_r; then : PTHREAD_CC="${CC}_r" -fi - if test "x${CXX}" != "x" -then : - if as_fn_executable_p ${CXX}_r -then : - PTHREAD_CXX="${CXX}_r" -fi -fi - ;; #( +fi ;; #( *) : - - for ac_prog in ${CC}_r + for ac_prog in ${CC}_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_PTHREAD_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PTHREAD_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else @@ -8790,15 +6923,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8809,73 +6938,19 @@ fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 -printf "%s\n" "$PTHREAD_CC" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +$as_echo "$PTHREAD_CC" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" - - if test "x${CXX}" != "x" -then : - for ac_prog in ${CXX}_r -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_PTHREAD_CXX+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$PTHREAD_CXX"; then - ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_PTHREAD_CXX="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX -if test -n "$PTHREAD_CXX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 -printf "%s\n" "$PTHREAD_CXX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$PTHREAD_CXX" && break -done -test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" - -fi - - ;; -esac - ;; #( + ;; +esac ;; #( *) : ;; esac @@ -8885,8 +6960,6 @@ esac fi test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" -test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" - @@ -8895,7 +6968,7 @@ test -n "$PTHREAD_CXX" || PTHREAD_CXX="$CXX" # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test "x$ax_pthread_ok" = "xyes"; then -printf "%s\n" "#define HAVE_PTHREAD 1" >>confdefs.h +$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else @@ -8919,12 +6992,11 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$PERL"; then # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_PERL+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PERL+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$PERL"; then ac_cv_prog_PERL="$PERL" # Let the user override the test. else @@ -8932,15 +7004,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PERL="perl" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8951,11 +7019,11 @@ fi fi PERL=$ac_cv_prog_PERL if test -n "$PERL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -printf "%s\n" "$PERL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +$as_echo "$PERL" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -8964,18 +7032,18 @@ fi if test "x$PERL" != x; then ax_perl_modules_failed=0 for ax_perl_module in 'Text::Balanced' ; do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 -printf %s "checking for perl module $ax_perl_module... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 +$as_echo_n "checking for perl module $ax_perl_module... " >&6; } # Would be nice to log result here, but can't rely on autoconf internals $PERL -e "use $ax_perl_module; exit" > /dev/null 2>&1 if test $? -ne 0; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; ax_perl_modules_failed=1 else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; }; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; }; fi done @@ -8988,8 +7056,8 @@ printf "%s\n" "ok" >&6; }; as_fn_error $? "could not find perl modules Text::Balanced" "$LINENO" 5 fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 -printf "%s\n" "$as_me: WARNING: could not find perl" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 +$as_echo "$as_me: WARNING: could not find perl" >&2;} fi @@ -9001,12 +7069,11 @@ fi if test -z "$PERL"; then # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_PERL+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PERL+:} false; then : + $as_echo_n "(cached) " >&6 +else if test -n "$PERL"; then ac_cv_prog_PERL="$PERL" # Let the user override the test. else @@ -9014,15 +7081,11 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PERL="perl" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9033,11 +7096,11 @@ fi fi PERL=$ac_cv_prog_PERL if test -n "$PERL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -printf "%s\n" "$PERL" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +$as_echo "$PERL" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi @@ -9046,18 +7109,18 @@ fi if test "x$PERL" != x; then ax_perl_modules_failed=0 for ax_perl_module in 'Digest::MD5' ; do - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 -printf %s "checking for perl module $ax_perl_module... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for perl module $ax_perl_module" >&5 +$as_echo_n "checking for perl module $ax_perl_module... " >&6; } # Would be nice to log result here, but can't rely on autoconf internals $PERL -e "use $ax_perl_module; exit" > /dev/null 2>&1 if test $? -ne 0; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; }; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; }; ax_perl_modules_failed=1 else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; }; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; }; fi done @@ -9070,24 +7133,22 @@ printf "%s\n" "ok" >&6; }; as_fn_error $? "could not find perl module Digest::MD5" "$LINENO" 5 fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 -printf "%s\n" "$as_me: WARNING: could not find perl" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5 +$as_echo "$as_me: WARNING: could not find perl" >&2;} fi # Check whether --with-llvm was given. -if test ${with_llvm+y} -then : +if test "${with_llvm+set}" = set; then : withval=$with_llvm; LLVM_HOME="$withval" # Extract the first word of "llvm-config", so it can be a program name with args. set dummy llvm-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_LLVM_CONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LLVM_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else case $LLVM_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_LLVM_CONFIG="$LLVM_CONFIG" # Let the user override the test with a path. @@ -9097,15 +7158,11 @@ else $as_nop for as_dir in "$LLVM_HOME/bin" do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_LLVM_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LLVM_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9118,29 +7175,27 @@ esac fi LLVM_CONFIG=$ac_cv_path_LLVM_CONFIG if test -n "$LLVM_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5 -printf "%s\n" "$LLVM_CONFIG" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5 +$as_echo "$LLVM_CONFIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - if test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config" -then : + if test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config"; then : as_fn_error $? "could not find llvm-config" "$LINENO" 5 fi -else $as_nop +else # Extract the first word of "llvm-config", so it can be a program name with args. set dummy llvm-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_LLVM_CONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_LLVM_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else case $LLVM_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_LLVM_CONFIG="$LLVM_CONFIG" # Let the user override the test with a path. @@ -9151,15 +7206,11 @@ as_dummy=""/bin:/usr/bin:/usr/local/bin:/sw/bin:/usr/local/opt/llvm/bin"" for as_dir in $as_dummy do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_LLVM_CONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_LLVM_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9172,16 +7223,15 @@ esac fi LLVM_CONFIG=$ac_cv_path_LLVM_CONFIG if test -n "$LLVM_CONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5 -printf "%s\n" "$LLVM_CONFIG" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LLVM_CONFIG" >&5 +$as_echo "$LLVM_CONFIG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - if test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config" -then : + if test "$ac_cv_path_LLVM_CONFIG" = "no-llvm-config"; then : as_fn_error $? "could not find llvm-config" "$LINENO" 5 fi LLVM_HOME=`$LLVM_CONFIG --prefix` @@ -9193,13 +7243,12 @@ fi LLVM_LIB_DIR=`$LLVM_CONFIG --libdir` LLVM_BIN_DIR=`$LLVM_CONFIG --bindir` LLVM_INCLUDE_DIR=`$LLVM_CONFIG --includedir` -as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_INCLUDE_DIR/clang/Basic/LLVM.h" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_INCLUDE_DIR/clang/Basic/LLVM.h" >&5 -printf %s "checking for $LLVM_INCLUDE_DIR/clang/Basic/LLVM.h... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +as_ac_File=`$as_echo "ac_cv_file_$LLVM_INCLUDE_DIR/clang/Basic/LLVM.h" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_INCLUDE_DIR/clang/Basic/LLVM.h" >&5 +$as_echo_n "checking for $LLVM_INCLUDE_DIR/clang/Basic/LLVM.h... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_INCLUDE_DIR/clang/Basic/LLVM.h"; then @@ -9209,22 +7258,20 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : -else $as_nop +else as_fn_error $? "could not find clang development headers" "$LINENO" 5 fi -as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libLLVMSupport.a" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libLLVMSupport.a" >&5 -printf %s "checking for $LLVM_LIB_DIR/libLLVMSupport.a... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libLLVMSupport.a" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libLLVMSupport.a" >&5 +$as_echo_n "checking for $LLVM_LIB_DIR/libLLVMSupport.a... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libLLVMSupport.a"; then @@ -9234,24 +7281,22 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : -else $as_nop +else as_fn_error $? "could not find clang library files in $LLVM_LIB_DIR" "$LINENO" 5 fi # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_CLANG+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_CLANG+:} false; then : + $as_echo_n "(cached) " >&6 +else case $CLANG in [\\/]* | ?:[\\/]*) ac_cv_path_CLANG="$CLANG" # Let the user override the test with a path. @@ -9262,15 +7307,11 @@ as_dummy=""$LLVM_BIN_DIR:/bin:/usr/bin:/usr/local/bin:/sw/bin"" for as_dir in $as_dummy do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac + test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_CLANG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_CLANG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -9283,29 +7324,27 @@ esac fi CLANG=$ac_cv_path_CLANG if test -n "$CLANG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CLANG" >&5 -printf "%s\n" "$CLANG" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CLANG" >&5 +$as_echo "$CLANG" >&6; } else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -if test "$ac_cv_path_CLANG" = "noclang" -then : +if test "$ac_cv_path_CLANG" = "noclang"; then : as_fn_error $? "could not find clang" "$LINENO" 5 fi OLD_CLANG_LIBS="-lclangFrontend -lclangDriver -lclangSerialization -lclangParse -lclangSema -lclangAnalysis -lclangEdit -lclangAST -lclangLex -lclangBasic" NEW_CLANG_LIBS="-lclang-cpp" -as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libclangFrontend.a" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangFrontend.a" >&5 -printf %s "checking for $LLVM_LIB_DIR/libclangFrontend.a... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclangFrontend.a" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangFrontend.a" >&5 +$as_echo_n "checking for $LLVM_LIB_DIR/libclangFrontend.a... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libclangFrontend.a"; then @@ -9315,21 +7354,19 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : ICG_CLANGLIBS="$OLD_CLANG_LIBS" -else $as_nop - as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libclangFrontend.so" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangFrontend.so" >&5 -printf %s "checking for $LLVM_LIB_DIR/libclangFrontend.so... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclangFrontend.so" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangFrontend.so" >&5 +$as_echo_n "checking for $LLVM_LIB_DIR/libclangFrontend.so... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libclangFrontend.so"; then @@ -9339,21 +7376,19 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : ICG_CLANGLIBS="$OLD_CLANG_LIBS" -else $as_nop - as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libclang-cpp.a" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclang-cpp.a" >&5 -printf %s "checking for $LLVM_LIB_DIR/libclang-cpp.a... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclang-cpp.a" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclang-cpp.a" >&5 +$as_echo_n "checking for $LLVM_LIB_DIR/libclang-cpp.a... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libclang-cpp.a"; then @@ -9363,21 +7398,19 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : ICG_CLANGLIBS="$NEW_CLANG_LIBS" -else $as_nop - as_ac_File=`printf "%s\n" "ac_cv_file_$LLVM_LIB_DIR/libclang-cpp.so" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclang-cpp.so" >&5 -printf %s "checking for $LLVM_LIB_DIR/libclang-cpp.so... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclang-cpp.so" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclang-cpp.so" >&5 +$as_echo_n "checking for $LLVM_LIB_DIR/libclang-cpp.so... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$LLVM_LIB_DIR/libclang-cpp.so"; then @@ -9387,14 +7420,13 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : ICG_CLANGLIBS="$NEW_CLANG_LIBS" -else $as_nop +else as_fn_error $? "could not find clang libs in LLVM library: \"$LLVM_LIB_DIR\"" "$LINENO" 5 fi @@ -9409,13 +7441,34 @@ fi fi +as_ac_File=`$as_echo "ac_cv_file_$LLVM_LIB_DIR/libclangSupport.a" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LLVM_LIB_DIR/libclangSupport.a" >&5 +$as_echo_n "checking for $LLVM_LIB_DIR/libclangSupport.a... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else + test "$cross_compiling" = yes && + as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 +if test -r "$LLVM_LIB_DIR/libclangSupport.a"; then + eval "$as_ac_File=yes" +else + eval "$as_ac_File=no" +fi +fi +eval ac_res=\$$as_ac_File + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : + ICG_CLANGLIBS="$ICG_CLANGLIBS -lclangSupport" +fi + + CLANG_VERSION="" ax_cv_clang_version="`$CLANG --version | grep "version" | sed "s/.*version \(0-9*\.0-9*\.0-9*\).*/\1/"`" - if test "x$ax_cv_clang_version" = "x" -then : + if test "x$ax_cv_clang_version" = "x"; then : ax_cv_clang_version="" @@ -9423,12 +7476,11 @@ fi CLANG_VERSION=$ax_cv_clang_version -if test "x$CLANG_VERSION" = "x" -then : +if test "x$CLANG_VERSION" = "x"; then : -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking clang version >= 3.4.2" >&5 -printf %s "checking clang version >= 3.4.2... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking clang version >= 3.4.2" >&5 +$as_echo_n "checking clang version >= 3.4.2... " >&6; } @@ -9461,10 +7513,10 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version if test "$ax_compare_version" = "true" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } as_fn_error $? "Trick requires llvm/clang version >= 3.4.2" "$LINENO" 5 fi @@ -9475,31 +7527,30 @@ fi # # Handle user hints # -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if zlib is wanted" >&5 -printf %s "checking if zlib is wanted... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if zlib is wanted" >&5 +$as_echo_n "checking if zlib is wanted... " >&6; } zlib_places="/usr/local /usr /opt/local /sw" # Check whether --with-zlib was given. -if test ${with_zlib+y} -then : +if test "${with_zlib+set}" = set; then : withval=$with_zlib; if test "$withval" != no ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } if test -d "$withval" then zlib_places="$withval $zlib_places" else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, $withval does not exist, checking usual places" >&5 -printf "%s\n" "$as_me: WARNING: Sorry, $withval does not exist, checking usual places" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, $withval does not exist, checking usual places" >&5 +$as_echo "$as_me: WARNING: Sorry, $withval does not exist, checking usual places" >&2;} fi else zlib_places= - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } fi @@ -9522,18 +7573,18 @@ then LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" CPPFLAGS="$CPPFLAGS -I${ZLIB_HOME}/include" fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 -printf %s "checking for inflateEnd in -lz... " >&6; } -if test ${ac_cv_lib_z_inflateEnd+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 +$as_echo_n "checking for inflateEnd in -lz... " >&6; } +if ${ac_cv_lib_z_inflateEnd+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -9542,42 +7593,43 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif char inflateEnd (); int -main (void) +main () { return inflateEnd (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" -then : +if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_inflateEnd=yes -else $as_nop +else ac_cv_lib_z_inflateEnd=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 -printf "%s\n" "$ac_cv_lib_z_inflateEnd" >&6; } -if test "x$ac_cv_lib_z_inflateEnd" = xyes -then : +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 +$as_echo "$ac_cv_lib_z_inflateEnd" >&6; } +if test "x$ac_cv_lib_z_inflateEnd" = xyes; then : zlib_cv_libz=yes -else $as_nop +else zlib_cv_libz=no fi - ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes -then : + ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes; then : zlib_cv_zlib_h=yes -else $as_nop +else zlib_cv_zlib_h=no fi + ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -9594,7 +7646,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu LDFLAGS="$LDFLAGS -L${ZLIB_HOME}/lib" LIBS="-lz $LIBS" -printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h +$as_echo "#define HAVE_LIBZ 1" >>confdefs.h else @@ -9609,47 +7661,44 @@ fi # Check whether --with-udunits was given. -if test ${with_udunits+y} -then : +if test "${with_udunits+set}" = set; then : withval=$with_udunits; UDUNITS_HOME="$withval" -else $as_nop +else UDUNITS_HOME="" fi -if test "$UDUNITS_HOME" = "" -then : +if test "$UDUNITS_HOME" = ""; then : - ac_fn_cxx_check_header_compile "$LINENO" "udunits2.h" "ac_cv_header_udunits2_h" "$ac_includes_default" -if test "x$ac_cv_header_udunits2_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "udunits2.h" "ac_cv_header_udunits2_h" "$ac_includes_default" +if test "x$ac_cv_header_udunits2_h" = xyes; then : UDUNITS_INCLUDES= -else $as_nop - ac_fn_cxx_check_header_compile "$LINENO" "udunits2/udunits2.h" "ac_cv_header_udunits2_udunits2_h" "$ac_includes_default" -if test "x$ac_cv_header_udunits2_udunits2_h" = xyes -then : +else + ac_fn_cxx_check_header_mongrel "$LINENO" "udunits2/udunits2.h" "ac_cv_header_udunits2_udunits2_h" "$ac_includes_default" +if test "x$ac_cv_header_udunits2_udunits2_h" = xyes; then : UDUNITS_INCLUDES=-I/usr/include/udunits2 -else $as_nop +else as_fn_error $? "could not find udunits development headers" "$LINENO" 5 fi + fi + UDUNITS_LDFLAGS=-ludunits2 -else $as_nop +else UDUNITS_EXCLUDE=$UDUNITS_HOME - as_ac_File=`printf "%s\n" "ac_cv_file_$UDUNITS_HOME/include/udunits2.h" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $UDUNITS_HOME/include/udunits2.h" >&5 -printf %s "checking for $UDUNITS_HOME/include/udunits2.h... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop + as_ac_File=`$as_echo "ac_cv_file_$UDUNITS_HOME/include/udunits2.h" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $UDUNITS_HOME/include/udunits2.h" >&5 +$as_echo_n "checking for $UDUNITS_HOME/include/udunits2.h... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$UDUNITS_HOME/include/udunits2.h"; then @@ -9659,21 +7708,19 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : UDUNITS_INCLUDES=-I$UDUNITS_HOME/include UDUNITS_LDFLAGS="-Wl,-rpath,$UDUNITS_HOME/lib -L$UDUNITS_HOME/lib -ludunits2" -else $as_nop - as_ac_File=`printf "%s\n" "ac_cv_file_$UDUNITS_HOME/lib/udunits2.h" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $UDUNITS_HOME/lib/udunits2.h" >&5 -printf %s "checking for $UDUNITS_HOME/lib/udunits2.h... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + as_ac_File=`$as_echo "ac_cv_file_$UDUNITS_HOME/lib/udunits2.h" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $UDUNITS_HOME/lib/udunits2.h" >&5 +$as_echo_n "checking for $UDUNITS_HOME/lib/udunits2.h... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$UDUNITS_HOME/lib/udunits2.h"; then @@ -9683,14 +7730,13 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : UDUNITS_INCLUDES=-I$UDUNITS_HOME/lib UDUNITS_LDFLAGS="-Wl,-rpath,$UDUNITS_HOME/lib -L$UDUNITS_HOME/lib -ludunits2" -else $as_nop +else as_fn_error $? "could not find udunits2" "$LINENO" 5 fi @@ -9703,47 +7749,44 @@ fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -ludunits2" >&5 -printf %s "checking for main in -ludunits2... " >&6; } -if test ${ac_cv_lib_udunits2_main+y} -then : - printf %s "(cached) " >&6 -else $as_nop +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ludunits2" >&5 +$as_echo_n "checking for main in -ludunits2... " >&6; } +if ${ac_cv_lib_udunits2_main+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_check_lib_save_LIBS=$LIBS LIBS="-ludunits2 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int main (); -} + int -main (void) +main () { -return conftest::main (); +return main (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_udunits2_main=yes -else $as_nop +else ac_cv_lib_udunits2_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_udunits2_main" >&5 -printf "%s\n" "$ac_cv_lib_udunits2_main" >&6; } -if test "x$ac_cv_lib_udunits2_main" = xyes -then : - printf "%s\n" "#define HAVE_LIBUDUNITS2 1" >>confdefs.h +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_udunits2_main" >&5 +$as_echo "$ac_cv_lib_udunits2_main" >&6; } +if test "x$ac_cv_lib_udunits2_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBUDUNITS2 1 +_ACEOF LIBS="-ludunits2 $LIBS" -else $as_nop +else as_fn_error $? "could not find libudunits" "$LINENO" 5 fi @@ -9754,31 +7797,27 @@ fi # Check whether --with-hdf5 was given. -if test ${with_hdf5+y} -then : +if test "${with_hdf5+set}" = set; then : withval=$with_hdf5; HDF5_HOME="$withval" - if test "$HDF5_HOME" = "yes" -then : - ac_fn_cxx_check_header_compile "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default" -if test "x$ac_cv_header_hdf5_h" = xyes -then : + if test "$HDF5_HOME" = "yes"; then : + ac_fn_cxx_check_header_mongrel "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default" +if test "x$ac_cv_header_hdf5_h" = xyes; then : HDF5_HOME="/usr" -else $as_nop +else as_fn_error $? "could not find hdf5.h" "$LINENO" 5 fi -else $as_nop - if test "$HDF5_HOME" = "no" -then : + +else + if test "$HDF5_HOME" = "no"; then : HDF5_HOME="" -else $as_nop - as_ac_File=`printf "%s\n" "ac_cv_file_$HDF5_HOME/include/hdf5.h" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $HDF5_HOME/include/hdf5.h" >&5 -printf %s "checking for $HDF5_HOME/include/hdf5.h... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + as_ac_File=`$as_echo "ac_cv_file_$HDF5_HOME/include/hdf5.h" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $HDF5_HOME/include/hdf5.h" >&5 +$as_echo_n "checking for $HDF5_HOME/include/hdf5.h... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$HDF5_HOME/include/hdf5.h"; then @@ -9788,12 +7827,11 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : -else $as_nop +else as_fn_error $? "could not find $HDF5_HOME/include/hdf5.h" "$LINENO" 5 fi @@ -9802,65 +7840,61 @@ fi fi fi -else $as_nop +else - ac_fn_cxx_check_header_compile "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default" -if test "x$ac_cv_header_hdf5_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "hdf5.h" "ac_cv_header_hdf5_h" "$ac_includes_default" +if test "x$ac_cv_header_hdf5_h" = xyes; then : HDF5_HOME="/usr" -else $as_nop +else HDF5_HOME="" fi + fi - if test "$HDF5_HOME" != "" -then : + if test "$HDF5_HOME" != ""; then : LDFLAGS="${LDFLAGS} -L${HDF5_HOME}/lib" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lhdf5" >&5 -printf %s "checking for main in -lhdf5... " >&6; } -if test ${ac_cv_lib_hdf5_main+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lhdf5" >&5 +$as_echo_n "checking for main in -lhdf5... " >&6; } +if ${ac_cv_lib_hdf5_main+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_check_lib_save_LIBS=$LIBS LIBS="-lhdf5 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int main (); -} + int -main (void) +main () { -return conftest::main (); +return main (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_hdf5_main=yes -else $as_nop +else ac_cv_lib_hdf5_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hdf5_main" >&5 -printf "%s\n" "$ac_cv_lib_hdf5_main" >&6; } -if test "x$ac_cv_lib_hdf5_main" = xyes -then : - printf "%s\n" "#define HAVE_LIBHDF5 1" >>confdefs.h +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hdf5_main" >&5 +$as_echo "$ac_cv_lib_hdf5_main" >&6; } +if test "x$ac_cv_lib_hdf5_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBHDF5 1 +_ACEOF LIBS="-lhdf5 $LIBS" -else $as_nop +else as_fn_error $? "could not find libhdf5" "$LINENO" 5 fi @@ -9873,31 +7907,27 @@ fi # Check whether --with-gsl was given. -if test ${with_gsl+y} -then : +if test "${with_gsl+set}" = set; then : withval=$with_gsl; GSL_HOME="$withval" - if test "$GSL_HOME" = "yes" -then : - ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_rng.h" "ac_cv_header_gsl_gsl_rng_h" "$ac_includes_default" -if test "x$ac_cv_header_gsl_gsl_rng_h" = xyes -then : + if test "$GSL_HOME" = "yes"; then : + ac_fn_cxx_check_header_mongrel "$LINENO" "gsl/gsl_rng.h" "ac_cv_header_gsl_gsl_rng_h" "$ac_includes_default" +if test "x$ac_cv_header_gsl_gsl_rng_h" = xyes; then : GSL_HOME="/usr" -else $as_nop +else as_fn_error $? "could not find gsl/gsl_rng.h" "$LINENO" 5 fi -else $as_nop - if test "$GSL_HOME" = "no" -then : + +else + if test "$GSL_HOME" = "no"; then : GSL_HOME="" -else $as_nop - as_ac_File=`printf "%s\n" "ac_cv_file_$GSL_HOME/include/gsl" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $GSL_HOME/include/gsl" >&5 -printf %s "checking for $GSL_HOME/include/gsl... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + as_ac_File=`$as_echo "ac_cv_file_$GSL_HOME/include/gsl" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GSL_HOME/include/gsl" >&5 +$as_echo_n "checking for $GSL_HOME/include/gsl... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$GSL_HOME/include/gsl"; then @@ -9907,12 +7937,11 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : -else $as_nop +else as_fn_error $? "could not find $GSL_HOME/include/gsl" "$LINENO" 5 fi @@ -9921,63 +7950,59 @@ fi fi fi -else $as_nop - ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_rng.h" "ac_cv_header_gsl_gsl_rng_h" "$ac_includes_default" -if test "x$ac_cv_header_gsl_gsl_rng_h" = xyes -then : +else + ac_fn_cxx_check_header_mongrel "$LINENO" "gsl/gsl_rng.h" "ac_cv_header_gsl_gsl_rng_h" "$ac_includes_default" +if test "x$ac_cv_header_gsl_gsl_rng_h" = xyes; then : GSL_HOME="/usr" -else $as_nop +else GSL_HOME="" fi + fi - if test "$GSL_HOME" != "" -then : + if test "$GSL_HOME" != ""; then : LDFLAGS="${LDFLAGS} -L${GSL_HOME}/lib" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lgsl" >&5 -printf %s "checking for main in -lgsl... " >&6; } -if test ${ac_cv_lib_gsl_main+y} -then : - printf %s "(cached) " >&6 -else $as_nop + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgsl" >&5 +$as_echo_n "checking for main in -lgsl... " >&6; } +if ${ac_cv_lib_gsl_main+:} false; then : + $as_echo_n "(cached) " >&6 +else ac_check_lib_save_LIBS=$LIBS LIBS="-lgsl -lgslcblas $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -namespace conftest { - extern "C" int main (); -} + int -main (void) +main () { -return conftest::main (); +return main (); ; return 0; } _ACEOF -if ac_fn_cxx_try_link "$LINENO" -then : +if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_gsl_main=yes -else $as_nop +else ac_cv_lib_gsl_main=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gsl_main" >&5 -printf "%s\n" "$ac_cv_lib_gsl_main" >&6; } -if test "x$ac_cv_lib_gsl_main" = xyes -then : - printf "%s\n" "#define HAVE_LIBGSL 1" >>confdefs.h +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gsl_main" >&5 +$as_echo "$ac_cv_lib_gsl_main" >&6; } +if test "x$ac_cv_lib_gsl_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBGSL 1 +_ACEOF LIBS="-lgsl $LIBS" -else $as_nop +else as_fn_error $? "could not find libgsl" "$LINENO" 5 fi @@ -9988,31 +8013,27 @@ fi # Check whether --with-gtest was given. -if test ${with_gtest+y} -then : +if test "${with_gtest+set}" = set; then : withval=$with_gtest; GTEST_HOME="$withval" - if test "$GTEST_HOME" = "yes" -then : - ac_fn_cxx_check_header_compile "$LINENO" "gtest/gtest.h" "ac_cv_header_gtest_gtest_h" "$ac_includes_default" -if test "x$ac_cv_header_gtest_gtest_h" = xyes -then : + if test "$GTEST_HOME" = "yes"; then : + ac_fn_cxx_check_header_mongrel "$LINENO" "gtest/gtest.h" "ac_cv_header_gtest_gtest_h" "$ac_includes_default" +if test "x$ac_cv_header_gtest_gtest_h" = xyes; then : GTEST_HOME="/usr" -else $as_nop +else as_fn_error $? "could not find gtest/gtest.h" "$LINENO" 5 fi -else $as_nop - if test "$GTEST_HOME" = "no" -then : + +else + if test "$GTEST_HOME" = "no"; then : GTEST_HOME="" -else $as_nop - as_ac_File=`printf "%s\n" "ac_cv_file_$GTEST_HOME/include/gtest" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $GTEST_HOME/include/gtest" >&5 -printf %s "checking for $GTEST_HOME/include/gtest... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +else + as_ac_File=`$as_echo "ac_cv_file_$GTEST_HOME/include/gtest" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $GTEST_HOME/include/gtest" >&5 +$as_echo_n "checking for $GTEST_HOME/include/gtest... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$GTEST_HOME/include/gtest"; then @@ -10022,12 +8043,11 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : -else $as_nop +else as_fn_error $? "could not find $GTEST_HOME/include/gtest" "$LINENO" 5 fi @@ -10036,16 +8056,16 @@ fi fi fi -else $as_nop - ac_fn_cxx_check_header_compile "$LINENO" "gtest/gtest.h" "ac_cv_header_gtest_gtest_h" "$ac_includes_default" -if test "x$ac_cv_header_gtest_gtest_h" = xyes -then : +else + ac_fn_cxx_check_header_mongrel "$LINENO" "gtest/gtest.h" "ac_cv_header_gtest_gtest_h" "$ac_includes_default" +if test "x$ac_cv_header_gtest_gtest_h" = xyes; then : GTEST_HOME="/usr" -else $as_nop +else GTEST_HOME="" fi + fi @@ -10053,36 +8073,32 @@ fi # Check whether --with-civetweb was given. -if test ${with_civetweb+y} -then : +if test "${with_civetweb+set}" = set; then : withval=$with_civetweb; # --with option was provided. CIVETWEB_HOME="$withval" USE_CIVETWEB="0" # check whether directory arg was also provided. - if test "$CIVETWEB_HOME" = "yes" -then : - ac_fn_cxx_check_header_compile "$LINENO" "civetweb.h" "ac_cv_header_civetweb_h" "$ac_includes_default" -if test "x$ac_cv_header_civetweb_h" = xyes -then : + if test "$CIVETWEB_HOME" = "yes"; then : + ac_fn_cxx_check_header_mongrel "$LINENO" "civetweb.h" "ac_cv_header_civetweb_h" "$ac_includes_default" +if test "x$ac_cv_header_civetweb_h" = xyes; then : CIVETWEB_HOME="/usr"; USE_CIVETWEB="1" -else $as_nop +else as_fn_error $? "could not find civetweb.h" "$LINENO" 5 fi -else $as_nop + +else # else check whether --without-civet or --with-civet=no specified. - if test "$CIVETWEB_HOME" = "no" -then : + if test "$CIVETWEB_HOME" = "no"; then : CIVETWEB_HOME="" -else $as_nop +else # else --with-civet was provided with a directory path. - as_ac_File=`printf "%s\n" "ac_cv_file_$CIVETWEB_HOME/include/civetweb.h" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CIVETWEB_HOME/include/civetweb.h" >&5 -printf %s "checking for $CIVETWEB_HOME/include/civetweb.h... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop + as_ac_File=`$as_echo "ac_cv_file_$CIVETWEB_HOME/include/civetweb.h" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CIVETWEB_HOME/include/civetweb.h" >&5 +$as_echo_n "checking for $CIVETWEB_HOME/include/civetweb.h... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$CIVETWEB_HOME/include/civetweb.h"; then @@ -10092,25 +8108,23 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$CIVETWEB_HOME/include/civetweb.h" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$CIVETWEB_HOME/include/civetweb.h" | $as_tr_cpp` 1 _ACEOF USE_CIVETWEB="1" -else $as_nop +else as_fn_error $? "Could not find all of the civetweb files." "$LINENO" 5 fi -as_ac_File=`printf "%s\n" "ac_cv_file_$CIVETWEB_HOME/lib/libcivetweb.a" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CIVETWEB_HOME/lib/libcivetweb.a" >&5 -printf %s "checking for $CIVETWEB_HOME/lib/libcivetweb.a... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop +as_ac_File=`$as_echo "ac_cv_file_$CIVETWEB_HOME/lib/libcivetweb.a" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CIVETWEB_HOME/lib/libcivetweb.a" >&5 +$as_echo_n "checking for $CIVETWEB_HOME/lib/libcivetweb.a... " >&6; } +if eval \${$as_ac_File+:} false; then : + $as_echo_n "(cached) " >&6 +else test "$cross_compiling" = yes && as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 if test -r "$CIVETWEB_HOME/lib/libcivetweb.a"; then @@ -10120,16 +8134,15 @@ else fi fi eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_File"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$CIVETWEB_HOME/lib/libcivetweb.a" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$CIVETWEB_HOME/lib/libcivetweb.a" | $as_tr_cpp` 1 _ACEOF USE_CIVETWEB="1" -else $as_nop +else as_fn_error $? "Could not find all of the civetweb files." "$LINENO" 5 fi @@ -10137,18 +8150,18 @@ fi fi fi -else $as_nop +else # --with option not provided. - ac_fn_cxx_check_header_compile "$LINENO" "civetweb.h" "ac_cv_header_civetweb_h" "$ac_includes_default" -if test "x$ac_cv_header_civetweb_h" = xyes -then : + ac_fn_cxx_check_header_mongrel "$LINENO" "civetweb.h" "ac_cv_header_civetweb_h" "$ac_includes_default" +if test "x$ac_cv_header_civetweb_h" = xyes; then : CIVETWEB_HOME="/usr"; USE_CIVETWEB="1" -else $as_nop +else CIVETWEB_HOME=""; USE_CIVETWEB="0" fi + fi @@ -10156,15 +8169,13 @@ fi # Check whether --enable-er7utils was given. -if test ${enable_er7utils+y} -then : - enableval=$enable_er7utils; if test "x$enable_er7utils" = xyes -then : +if test "${enable_er7utils+set}" = set; then : + enableval=$enable_er7utils; if test "x$enable_er7utils" = xyes; then : USE_ER7_UTILS="1" -else $as_nop +else USE_ER7_UTILS="0" fi -else $as_nop +else USE_ER7_UTILS="1" fi @@ -10201,8 +8212,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -10232,15 +8243,15 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -printf "%s\n" "$as_me: updating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -10254,8 +8265,8 @@ printf "%s\n" "$as_me: updating cache $cache_file" >&6;} fi fi else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -10308,7 +8319,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -10324,8 +8335,8 @@ LTLIBOBJS=$ac_ltlibobjs ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -10348,16 +8359,14 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop +else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -10367,46 +8376,46 @@ esac fi - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi # The user is always right. -if ${PATH_SEPARATOR+false} :; then +if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -10415,6 +8424,13 @@ if ${PATH_SEPARATOR+false} :; then fi +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -10423,12 +8439,8 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS @@ -10440,10 +8452,30 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -10456,14 +8488,13 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - printf "%s\n" "$as_me: error: $2" >&2 + $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error - # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -10490,20 +8521,18 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset - # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' -else $as_nop +else as_fn_append () { eval $1=\$$1\$2 @@ -10515,13 +8544,12 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else $as_nop +else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -10552,7 +8580,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | +$as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -10574,10 +8602,6 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -10591,12 +8615,6 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -10638,7 +8656,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -10647,7 +8665,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | +$as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -10710,7 +8728,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Trick $as_me 17+, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -10759,16 +8777,14 @@ $config_files Report bugs to the package provider." _ACEOF -ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` -ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config='$ac_cs_config_escaped' +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ Trick config.status 17+ -configured by $0, generated by GNU Autoconf 2.71, +configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -10806,21 +8822,21 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - printf "%s\n" "$ac_cs_version"; exit ;; + $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - printf "%s\n" "$ac_cs_config"; exit ;; + $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) - printf "%s\n" "$ac_cs_usage"; exit ;; + $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -10848,7 +8864,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -10862,7 +8878,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - printf "%s\n" "$ac_log" + $as_echo "$ac_log" } >&5 _ACEOF @@ -10887,7 +8903,7 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree @@ -11115,7 +9131,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -11123,17 +9139,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -printf "%s\n" "$as_me: creating $ac_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`printf "%s\n" "$configure_input" | + ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -11150,7 +9166,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_file" | +$as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -11174,9 +9190,9 @@ printf "%s\n" X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -11229,8 +9245,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -11272,9 +9288,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -11321,11 +9337,10 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi printf "\033[32mconfigure script successfully completed\033[0m\n" - diff --git a/trick_source/codegen/Interface_Code_Gen/HeaderSearchDirs.cpp b/trick_source/codegen/Interface_Code_Gen/HeaderSearchDirs.cpp index b0c50098..a2fe7046 100644 --- a/trick_source/codegen/Interface_Code_Gen/HeaderSearchDirs.cpp +++ b/trick_source/codegen/Interface_Code_Gen/HeaderSearchDirs.cpp @@ -184,7 +184,7 @@ void HeaderSearchDirs::AddDirsAndFiles(std::string env_var, std::vector & include_dirs, bool HeaderSearchDirs::isPathInUserDir (const std::string& in_dir ) { +#if (LIBCLANG_MAJOR >= 15) + for ( clang::ConstSearchDirIterator sdi = hs.system_dir_begin() ; sdi != hs.system_dir_end() ; sdi = std::next(sdi) ) +#else clang::HeaderSearch::search_dir_iterator sdi ; - for ( sdi = hs.system_dir_begin() ; sdi != hs.system_dir_end() ; sdi++ ) { + for ( sdi = hs.system_dir_begin() ; sdi != hs.system_dir_end() ; sdi++ ) +#endif + { #if (LIBCLANG_MAJOR < 4) // TODO delete when RHEL 7 no longer supported std::string curr_dir = (*sdi).getName() ; #else @@ -252,8 +257,13 @@ bool HeaderSearchDirs::isPathInUserOrTrickDir (const std::string& in_dir ) { return true ; } +#if (LIBCLANG_MAJOR >= 15) + for ( clang::ConstSearchDirIterator sdi = hs.system_dir_begin() ; sdi != hs.system_dir_end() ; sdi = std::next(sdi) ) +#else clang::HeaderSearch::search_dir_iterator sdi ; - for ( sdi = hs.system_dir_begin() ; sdi != hs.system_dir_end() ; sdi++ ) { + for ( sdi = hs.system_dir_begin() ; sdi != hs.system_dir_end() ; sdi++ ) +#endif + { #if (LIBCLANG_MAJOR < 4) // TODO delete when RHEL 7 no longer supported std::string curr_dir = (*sdi).getName() ; #else diff --git a/trick_source/codegen/Interface_Code_Gen/main.cpp b/trick_source/codegen/Interface_Code_Gen/main.cpp index 0cc557a0..b1371b5c 100644 --- a/trick_source/codegen/Interface_Code_Gen/main.cpp +++ b/trick_source/codegen/Interface_Code_Gen/main.cpp @@ -160,7 +160,9 @@ int main(int argc, char * argv[]) { // Set all of the defaults to c++ #if (LIBCLANG_MAJOR > 3) || ((LIBCLANG_MAJOR == 3) && (LIBCLANG_MINOR >= 9)) llvm::Triple trip (to.Triple) ; -#if (LIBCLANG_MAJOR >= 12) +#if (LIBCLANG_MAJOR >= 15) + //clang::CompilerInvocation::setLangDefaults(ci.getLangOpts(), clang::Language::CXX, trip, ppo.Includes) ; +#elif (LIBCLANG_MAJOR >= 12) clang::CompilerInvocation::setLangDefaults(ci.getLangOpts(), clang::Language::CXX, trip, ppo.Includes) ; #elif (LIBCLANG_MAJOR >= 10) clang::CompilerInvocation::setLangDefaults(ci.getLangOpts(), clang::Language::CXX, trip, ppo) ; From fb25ea70d236e39d74f9b9bd48da4902e5745199 Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 7 Feb 2023 13:11:51 -0600 Subject: [PATCH 127/162] Fix undefined behavior in vs_format_ascii (#1446) --- .../models/test_client/test_client.cpp | 6 +++ .../VariableServer/vs_format_ascii.cpp | 53 ++++++++++--------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/test/SIM_test_varserv/models/test_client/test_client.cpp b/test/SIM_test_varserv/models/test_client/test_client.cpp index 712e096c..37e58504 100644 --- a/test/SIM_test_varserv/models/test_client/test_client.cpp +++ b/test/SIM_test_varserv/models/test_client/test_client.cpp @@ -251,6 +251,12 @@ TEST_F (VariableServerTest, AddRemove) { expected = std::string("0 -1234"); EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + + socket << "trick.var_add(\"vsx.vst.n\")\n"; + socket >> reply; + expected = std::string("0 -1234 0,1,2,3,4"); + EXPECT_EQ(strcmp_IgnoringWhiteSpace(reply, expected), 0); + } TEST_F (VariableServerTest, BadRefResponse) { diff --git a/trick_source/sim_services/VariableServer/vs_format_ascii.cpp b/trick_source/sim_services/VariableServer/vs_format_ascii.cpp index 1dc3e9f2..932f2f4d 100644 --- a/trick_source/sim_services/VariableServer/vs_format_ascii.cpp +++ b/trick_source/sim_services/VariableServer/vs_format_ascii.cpp @@ -33,42 +33,44 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si // handle returning an array int size = 0 ; value[0] = '\0' ; + // data to send was copied to buffer in copy_sim_data void * buf_ptr = var->buffer_out ; while (size < var->size) { size += var->ref->attr->size ; + char temp_buf[MAX_VAL_STRLEN]; switch (ref->attr->type) { case TRICK_CHARACTER: if (ref->attr->num_index == ref->num_index) { - snprintf(value, value_size, "%s%d", value,(char)cv_convert_double(var->conversion_factor, *(char *)buf_ptr)); + snprintf(temp_buf, value_size, "%d",(char)cv_convert_double(var->conversion_factor, *(char *)buf_ptr)); } else { /* All but last dim specified, leaves a char array */ - escape_str((char *) buf_ptr, value); + escape_str((char *) buf_ptr, temp_buf); size = var->size ; } break; case TRICK_UNSIGNED_CHARACTER: if (ref->attr->num_index == ref->num_index) { - snprintf(value, value_size, "%s%u", value,(unsigned char)cv_convert_double(var->conversion_factor,*(unsigned char *)buf_ptr)); + snprintf(temp_buf, value_size, "%u",(unsigned char)cv_convert_double(var->conversion_factor,*(unsigned char *)buf_ptr)); } else { /* All but last dim specified, leaves a char array */ - escape_str((char *) buf_ptr, value); + escape_str((char *) buf_ptr, temp_buf); size = var->size ; } break; case TRICK_WCHAR:{ if (ref->attr->num_index == ref->num_index) { - snprintf(value, value_size, "%s%d", value,*(wchar_t *) buf_ptr); + snprintf(temp_buf, value_size, "%d",*(wchar_t *) buf_ptr); } else { // convert wide char string char string size_t len = wcs_to_ncs_len((wchar_t *)buf_ptr) + 1 ; if (len > MAX_VAL_STRLEN) { return (-1); } - wcs_to_ncs((wchar_t *) buf_ptr, value, len); + wcs_to_ncs((wchar_t *) buf_ptr, temp_buf, len); size = var->size ; } } @@ -76,10 +78,10 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si case TRICK_STRING: if ((char *) buf_ptr != NULL) { - escape_str((char *) buf_ptr, value); + escape_str((char *) buf_ptr, temp_buf); size = var->size ; } else { - value[0] = '\0'; + temp_buf[0] = '\0'; } break; @@ -90,25 +92,25 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si if (len > MAX_VAL_STRLEN) { return (-1); } - wcs_to_ncs((wchar_t *) buf_ptr, value, len); + wcs_to_ncs((wchar_t *) buf_ptr, temp_buf, len); size = var->size ; } else { - value[0] = '\0'; + temp_buf[0] = '\0'; } break; #if ( __linux | __sgi ) case TRICK_BOOLEAN: - snprintf(value, value_size, "%s%d", value,(unsigned char)cv_convert_double(var->conversion_factor,*(unsigned char *)buf_ptr)); + snprintf(temp_buf, value_size, "%d",(unsigned char)cv_convert_double(var->conversion_factor,*(unsigned char *)buf_ptr)); break; #endif case TRICK_SHORT: - snprintf(value, value_size, "%s%d", value, (short)cv_convert_double(var->conversion_factor,*(short *)buf_ptr)); + snprintf(temp_buf, value_size, "%d", (short)cv_convert_double(var->conversion_factor,*(short *)buf_ptr)); break; case TRICK_UNSIGNED_SHORT: - snprintf(value, value_size, "%s%u", value,(unsigned short)cv_convert_double(var->conversion_factor,*(unsigned short *)buf_ptr)); + snprintf(temp_buf, value_size, "%u",(unsigned short)cv_convert_double(var->conversion_factor,*(unsigned short *)buf_ptr)); break; case TRICK_INTEGER: @@ -116,18 +118,18 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si #if ( __sun | __APPLE__ ) case TRICK_BOOLEAN: #endif - snprintf(value, value_size, "%s%d", value, (int)cv_convert_double(var->conversion_factor,*(int *)buf_ptr)); + snprintf(temp_buf, value_size, "%d", (int)cv_convert_double(var->conversion_factor,*(int *)buf_ptr)); break; case TRICK_BITFIELD: - snprintf(value, value_size, "%d", GET_BITFIELD(buf_ptr, ref->attr->size, ref->attr->index[0].start, ref->attr->index[0].size)); + snprintf(temp_buf, value_size, "%d", GET_BITFIELD(buf_ptr, ref->attr->size, ref->attr->index[0].start, ref->attr->index[0].size)); break; case TRICK_UNSIGNED_BITFIELD: - snprintf(value, value_size, "%u", GET_UNSIGNED_BITFIELD(buf_ptr, ref->attr->size, ref->attr->index[0].start, ref->attr->index[0].size)); + snprintf(temp_buf, value_size, "%u", GET_UNSIGNED_BITFIELD(buf_ptr, ref->attr->size, ref->attr->index[0].start, ref->attr->index[0].size)); break; case TRICK_UNSIGNED_INTEGER: - snprintf(value, value_size, "%s%u", value, (unsigned int)cv_convert_double(var->conversion_factor,*(unsigned int *)buf_ptr)); + snprintf(temp_buf, value_size, "%u", (unsigned int)cv_convert_double(var->conversion_factor,*(unsigned int *)buf_ptr)); break; case TRICK_LONG: { @@ -135,7 +137,7 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si if (var->conversion_factor != cv_get_trivial()) { l = (long)cv_convert_double(var->conversion_factor, l); } - snprintf(value, value_size, "%s%ld", value, l); + snprintf(temp_buf, value_size, "%ld", l); break; } @@ -144,16 +146,16 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si if (var->conversion_factor != cv_get_trivial()) { ul = (unsigned long)cv_convert_double(var->conversion_factor, ul); } - snprintf(value, value_size, "%s%lu", value, ul); + snprintf(temp_buf, value_size, "%lu", ul); break; } case TRICK_FLOAT: - snprintf(value, value_size, "%s%.8g", value, cv_convert_float(var->conversion_factor,*(float *)buf_ptr)); + snprintf(temp_buf, value_size, "%.8g", cv_convert_float(var->conversion_factor,*(float *)buf_ptr)); break; case TRICK_DOUBLE: - snprintf(value, value_size, "%s%.16g", value, cv_convert_double(var->conversion_factor,*(double *)buf_ptr)); + snprintf(temp_buf, value_size, "%.16g", cv_convert_double(var->conversion_factor,*(double *)buf_ptr)); break; case TRICK_LONG_LONG: { @@ -161,7 +163,7 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si if (var->conversion_factor != cv_get_trivial()) { ll = (long long)cv_convert_double(var->conversion_factor, ll); } - snprintf(value, value_size, "%s%lld", value, ll); + snprintf(temp_buf, value_size, "%lld", ll); break; } @@ -170,12 +172,12 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si if (var->conversion_factor != cv_get_trivial()) { ull = (unsigned long long)cv_convert_double(var->conversion_factor, ull); } - snprintf(value, value_size, "%s%llu", value, ull); + snprintf(temp_buf, value_size, "%llu", ull); break; } case TRICK_NUMBER_OF_TYPES: - snprintf(value, value_size, "BAD_REF" ); + snprintf(temp_buf, value_size, "BAD_REF" ); break; default:{ @@ -185,9 +187,10 @@ int vs_format_ascii(Trick::VariableReference * var, char *value, size_t value_si if (size < var->size) { // if returning an array, continue array as comma separated values - strcat(value, ",") ; + strcat(temp_buf, ",") ; buf_ptr = (void*) ((long)buf_ptr + var->ref->attr->size) ; } + strncat(value, temp_buf, value_size - strlen(value) - 1); } //end while if (ref->units) { From 8be3e30f7aaaceeb3f9c64813b6c9bc0399e4b2c Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 7 Feb 2023 15:35:22 -0600 Subject: [PATCH 128/162] Fix Mac pipeline (#1454) --- Makefile | 1 + share/trick/makefiles/Makefile.common | 3 +++ share/trick/makefiles/config_Darwin.mk | 1 + share/trick/makefiles/config_Linux.mk | 2 ++ test/SIM_checkpoint_data_recording/S_overrides.mk | 2 +- test/SIM_test_varserv/S_overrides.mk | 2 +- trick_source/data_products/DPX/test/unit_test/makefile | 2 +- trick_source/sim_services/Clock/test/Makefile | 8 ++++---- trick_source/sim_services/DataTypes/testing/makefile | 2 +- trick_source/sim_services/Executive/test/Makefile | 4 ++-- trick_source/sim_services/Integrator/test/Makefile | 2 +- trick_source/sim_services/MemoryManager/test/Makefile | 2 +- trick_source/sim_services/MonteCarlo/test/Makefile | 2 +- trick_source/sim_services/ScheduledJobQueue/test/Makefile | 2 +- trick_source/sim_services/Timer/test/Makefile | 2 +- trick_source/trick_utils/SAIntegrator/unittest/Makefile | 2 +- trick_source/trick_utils/comm/test/Makefile | 2 +- .../trick_utils/compareFloatingPoint/test/Makefile | 2 +- trick_source/trick_utils/interpolator/test/Makefile | 2 +- trick_source/trick_utils/math/test/Makefile | 2 +- trick_source/trick_utils/unicode/test/Makefile | 2 +- trick_source/trick_utils/units/test/makefile | 2 +- trick_source/trick_utils/var_binary_parser/test/Makefile | 2 +- 23 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index dbdc6f4c..27edae41 100644 --- a/Makefile +++ b/Makefile @@ -288,6 +288,7 @@ premade: ################################################################################ # TESTING ################################################################################ + # This target runs Trick's Unit-tests and simulation-tests. test: unit_test sim_test @ echo "All tests completed sucessfully" diff --git a/share/trick/makefiles/Makefile.common b/share/trick/makefiles/Makefile.common index 5e3ea318..77978933 100644 --- a/share/trick/makefiles/Makefile.common +++ b/share/trick/makefiles/Makefile.common @@ -72,6 +72,7 @@ export TRICK_SYSTEM_ICG_EXCLUDE := $(TRICK_SYSTEM_ICG_EXCLUDE) export TRICK_SWIG_FLAGS := $(TRICK_SWIG_FLAGS) export TRICK_SWIG_CFLAGS := $(TRICK_SWIG_CFLAGS) export TRICK_CONVERT_SWIG_FLAGS := $(TRICK_CONVERT_SWIG_FLAGS) +export TRICK_TEST_FLAGS := $(TRICK_TEST_FLAGS) IO_SRC_DIR := io_src/ OBJ_DIR := object_${TRICK_HOST_CPU} @@ -193,6 +194,8 @@ export TRICK_SYSTEM_CFLAGS := $(TRICK_SYSTEM_CXXFLAGS) -fexceptions TRICK_SYSTEM_CFLAGS += $(TRICK_ADDITIONAL_CFLAGS) TRICK_SYSTEM_CXXFLAGS += $(TRICK_ADDITIONAL_CXXFLAGS) +TRICK_TEST_FLAGS += -Wall -Wextra $(TRICK_ADDITIONAL_TEST_FLAGS) + TRICK_INCLUDE = $(shell $(PERL) -e '@inc_paths = "${TRICK_CFLAGS}" =~ /-(?:I|isystem)\s*(\S+)/g ; foreach $$i (@inc_paths) { print "-I$$i " if (-e $$i and $$i ne "/usr/include")}') \ $(shell $(PERL) -e '@inc_paths = "${TRICK_SYSTEM_CFLAGS}" =~ /-(?:I|isystem)\s*(\S+)/g ; foreach $$i (@inc_paths) { print "-I$$i " if (-e $$i)}') diff --git a/share/trick/makefiles/config_Darwin.mk b/share/trick/makefiles/config_Darwin.mk index fb533ad1..249c565d 100644 --- a/share/trick/makefiles/config_Darwin.mk +++ b/share/trick/makefiles/config_Darwin.mk @@ -12,3 +12,4 @@ RPATH = -Wl,-rpath,${TRICK_LIB_DIR} LD_WHOLE_ARCHIVE := -Wl,-all_load LD_NO_WHOLE_ARCHIVE := +TRICK_ADDITIONAL_TEST_FLAGS += -std=c++14 diff --git a/share/trick/makefiles/config_Linux.mk b/share/trick/makefiles/config_Linux.mk index bcd966bd..8a8876a0 100644 --- a/share/trick/makefiles/config_Linux.mk +++ b/share/trick/makefiles/config_Linux.mk @@ -61,3 +61,5 @@ ifeq "" "c++11" TRICK_ADDITIONAL_CXXFLAGS += -std=c++11 -D_HAVE_STL_RANDOM endif +TRICK_ADDITIONAL_TEST_FLAGS += -std=c++11 + diff --git a/test/SIM_checkpoint_data_recording/S_overrides.mk b/test/SIM_checkpoint_data_recording/S_overrides.mk index 16badce5..bce1c170 100644 --- a/test/SIM_checkpoint_data_recording/S_overrides.mk +++ b/test/SIM_checkpoint_data_recording/S_overrides.mk @@ -2,6 +2,6 @@ TRICK_CFLAGS += -I./models TRICK_CXXFLAGS += -I./models clean_logs: - rm RUN_test*/log_foo* + rm -f RUN_test*/log_foo* clean: clean_logs \ No newline at end of file diff --git a/test/SIM_test_varserv/S_overrides.mk b/test/SIM_test_varserv/S_overrides.mk index 8910cd4f..a2619dbe 100644 --- a/test/SIM_test_varserv/S_overrides.mk +++ b/test/SIM_test_varserv/S_overrides.mk @@ -8,7 +8,7 @@ clean: clean_test_client TEST_CLIENT_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread -L${TRICK_LIB_DIR} -ltrick_var_binary_parser test_client: models/test_client/test_client.cpp - cd models/test_client; $(TRICK_CXX) test_client.cpp -o test_client $(TRICK_CXXFLAGS) $(TRICK_SYSTEM_CXXFLAGS) -I$(TRICK_HOME)/include $(TEST_CLIENT_LIBS) -std=c++11 + cd models/test_client; $(TRICK_CXX) test_client.cpp -o test_client $(TRICK_CXXFLAGS) $(TRICK_SYSTEM_CXXFLAGS) $(TRICK_TEST_FLAGS) -I$(TRICK_HOME)/include $(TEST_CLIENT_LIBS) clean_test_client: rm -f models/test_client/test_client \ No newline at end of file diff --git a/trick_source/data_products/DPX/test/unit_test/makefile b/trick_source/data_products/DPX/test/unit_test/makefile index b3a58dca..472b154e 100644 --- a/trick_source/data_products/DPX/test/unit_test/makefile +++ b/trick_source/data_products/DPX/test/unit_test/makefile @@ -30,7 +30,7 @@ else endif ifeq ($(TRICK_HOST_TYPE), Darwin) - CFLAGS += -std=c++11 + CFLAGS += -std=c++14 MOTIF_INCDIR = -I/sw/include XLIBS = -L/sw/lib -lXm -L/usr/X11R6/lib -L/usr/X11/lib SDK_DIR = $(shell xcrun --show-sdk-path) diff --git a/trick_source/sim_services/Clock/test/Makefile b/trick_source/sim_services/Clock/test/Makefile index be4f65dc..fe58b277 100644 --- a/trick_source/sim_services/Clock/test/Makefile +++ b/trick_source/sim_services/Clock/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} LIBS = -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main @@ -38,10 +38,10 @@ clean : rm -f $(TESTS) *.o GetTimeOfDayClock_test.o : GetTimeOfDayClock_test.cpp - $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< + $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< GetTimeOfDayClock_test : ${GETTIMEOFDAY_CLOCK_OBJECTS} - $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) $(TRICK_CXXFLAGS) -o $@ $^ ${LIBS} + $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) $(TRICK_CPPFLAGS) -o $@ $^ ${LIBS} exec_get_rt_nap_stub.o : exec_get_rt_nap_stub.cpp - $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< + $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< diff --git a/trick_source/sim_services/DataTypes/testing/makefile b/trick_source/sim_services/DataTypes/testing/makefile index 72d28572..348d9325 100644 --- a/trick_source/sim_services/DataTypes/testing/makefile +++ b/trick_source/sim_services/DataTypes/testing/makefile @@ -7,7 +7,7 @@ CPP = c++ DECL_DIR = .. GTEST_DIR = /Users/penn/gtest-1.7.0 -CFLAGS += -g -Wall -Wextra -I$(GTEST_DIR)/include -I$(DECL_DIR)/include +CFLAGS += -g -Wall -Wextra -I$(GTEST_DIR)/include -I$(DECL_DIR)/include ${TRICK_TEST_FLAGS} LIBS = ../lib/libDecl.a diff --git a/trick_source/sim_services/Executive/test/Makefile b/trick_source/sim_services/Executive/test/Makefile index a614e9ea..0e07f746 100644 --- a/trick_source/sim_services/Executive/test/Makefile +++ b/trick_source/sim_services/Executive/test/Makefile @@ -10,7 +10,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Mak COVERAGE_FLAGS += -fprofile-arcs -ftest-coverage -O0 # Flags passed to the preprocessor. -TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = -L ${TRICK_LIB_DIR} -ltrick_mm -ltrick_units -ltrick TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main @@ -52,7 +52,7 @@ clean : rm -rf lcov_html Executive_test.o : Executive_test.cpp - $(TRICK_CXX) $(TRICK_CXXFLAGS) -c $< + $(TRICK_CXX) $(TRICK_CPPFLAGS) -c $< Executive_test : Executive_test.o $(TRICK_CXX) $(TRICK_SYSTEM_LDFLAGS) -o $@ $^ $(OTHER_OBJECTS) $(TRICK_LIBS) $(TRICK_LIBS) $(TRICK_EXEC_LINK_LIBS) diff --git a/trick_source/sim_services/Integrator/test/Makefile b/trick_source/sim_services/Integrator/test/Makefile index 0a4d991f..1c599bd6 100644 --- a/trick_source/sim_services/Integrator/test/Makefile +++ b/trick_source/sim_services/Integrator/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -I${TRICK_HOME}/trick_source -I${TRICK_HOME}/include/trick/compat -g -Wall -Wextra -std=c++11 -DUSE_ER7_UTILS_INTEGRATORS=1 -DTEST ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -I${TRICK_HOME}/trick_source -I${TRICK_HOME}/include/trick/compat -g -Wall -Wextra -DUSE_ER7_UTILS_INTEGRATORS=1 -DTEST ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick -ltrick_mm -ltrick_units -ltrick -ltrick_mm TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/sim_services/MemoryManager/test/Makefile b/trick_source/sim_services/MemoryManager/test/Makefile index dd729046..000226ff 100644 --- a/trick_source/sim_services/MemoryManager/test/Makefile +++ b/trick_source/sim_services/MemoryManager/test/Makefile @@ -14,7 +14,7 @@ COVERAGE_FLAGS += -fprofile-arcs -ftest-coverage -O0 TRICK_SYSTEM_LDFLAGS += ${COVERAGE_FLAGS} # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -Wno-sign-compare ${COVERAGE_FLAGS} -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -Wno-sign-compare ${COVERAGE_FLAGS} ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick_mm -ltrick_units -ltrick -ltrick_mm -ltrick_units -ltrick TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread diff --git a/trick_source/sim_services/MonteCarlo/test/Makefile b/trick_source/sim_services/MonteCarlo/test/Makefile index 039d8184..c0f892b6 100644 --- a/trick_source/sim_services/MonteCarlo/test/Makefile +++ b/trick_source/sim_services/MonteCarlo/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_TEST_FLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick -ltrick_pyip -ltrick_comm -ltrick_math -ltrick_mm -ltrick_units TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/sim_services/ScheduledJobQueue/test/Makefile b/trick_source/sim_services/ScheduledJobQueue/test/Makefile index 1bf900a4..274a9097 100644 --- a/trick_source/sim_services/ScheduledJobQueue/test/Makefile +++ b/trick_source/sim_services/ScheduledJobQueue/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick_mm -ltrick_units -ltrick -ltrick_mm -ltrick_units -ltrick TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/sim_services/Timer/test/Makefile b/trick_source/sim_services/Timer/test/Makefile index 98338472..c6912124 100644 --- a/trick_source/sim_services/Timer/test/Makefile +++ b/trick_source/sim_services/Timer/test/Makefile @@ -8,7 +8,7 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../../share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = -L${TRICK_LIB_DIR} -ltrick -ltrick_units -ltrick_mm TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread diff --git a/trick_source/trick_utils/SAIntegrator/unittest/Makefile b/trick_source/trick_utils/SAIntegrator/unittest/Makefile index 56f8d811..c18f1b40 100644 --- a/trick_source/trick_utils/SAIntegrator/unittest/Makefile +++ b/trick_source/trick_utils/SAIntegrator/unittest/Makefile @@ -3,7 +3,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common RM = rm -rf -TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_CXXFLAGS} +TRICK_CPPFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_CXXFLAGS} ${TRICK_TEST_FLAGS} INCLUDE_DIRS = -I../include -I$(GTEST_HOME)/include SAI_OBJDIR = obj diff --git a/trick_source/trick_utils/comm/test/Makefile b/trick_source/trick_utils/comm/test/Makefile index 3671db95..4c6dfaee 100644 --- a/trick_source/trick_utils/comm/test/Makefile +++ b/trick_source/trick_utils/comm/test/Makefile @@ -7,7 +7,7 @@ INCLUDE_DIRS = -I$(GTEST_HOME) -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include # Use the trick_comm library only. libtrick.a would also work. TRICK_LIBS := ${TRICK_LIB_DIR}/libtrick_comm.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -TRICK_CXXFLAGS += ${INCLUDE_DIRS} -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += ${INCLUDE_DIRS} -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} # Automatically determine all executable names produced by this Makefile. TESTS = comm_test diff --git a/trick_source/trick_utils/compareFloatingPoint/test/Makefile b/trick_source/trick_utils/compareFloatingPoint/test/Makefile index 5e20d673..c07ff30d 100644 --- a/trick_source/trick_utils/compareFloatingPoint/test/Makefile +++ b/trick_source/trick_utils/compareFloatingPoint/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread diff --git a/trick_source/trick_utils/interpolator/test/Makefile b/trick_source/trick_utils/interpolator/test/Makefile index 05ff5f11..8ce70863 100644 --- a/trick_source/trick_utils/interpolator/test/Makefile +++ b/trick_source/trick_utils/interpolator/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread diff --git a/trick_source/trick_utils/math/test/Makefile b/trick_source/trick_utils/math/test/Makefile index 3a090399..5a193e4b 100644 --- a/trick_source/trick_utils/math/test/Makefile +++ b/trick_source/trick_utils/math/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I${GTEST_HOME}/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I${GTEST_HOME}/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick_math.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main -lpthread diff --git a/trick_source/trick_utils/unicode/test/Makefile b/trick_source/trick_utils/unicode/test/Makefile index 64af3645..ca752639 100644 --- a/trick_source/trick_utils/unicode/test/Makefile +++ b/trick_source/trick_utils/unicode/test/Makefile @@ -8,7 +8,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CXXFLAGS += -I$(GTEST_HOME)/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lpthread diff --git a/trick_source/trick_utils/units/test/makefile b/trick_source/trick_utils/units/test/makefile index 97001036..fb3ae2f5 100644 --- a/trick_source/trick_utils/units/test/makefile +++ b/trick_source/trick_utils/units/test/makefile @@ -7,7 +7,7 @@ include ${TRICK_HOME}/share/trick/makefiles/Makefile.common # Flags passed to the preprocessor. -TRICK_CPPFLAGS += -I${GTEST_HOME}/include -I$(TRICK_HOME)/include -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} +TRICK_CPPFLAGS += -I${GTEST_HOME}/include -I$(TRICK_HOME)/include -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} ${TRICK_TEST_FLAGS} TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick_units.a TRICK_EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main diff --git a/trick_source/trick_utils/var_binary_parser/test/Makefile b/trick_source/trick_utils/var_binary_parser/test/Makefile index 8609774a..59090679 100644 --- a/trick_source/trick_utils/var_binary_parser/test/Makefile +++ b/trick_source/trick_utils/var_binary_parser/test/Makefile @@ -5,7 +5,7 @@ # # make clean - removes all files generated by make. # Flags passed to the preprocessor. -CPPFLAGS += -g -Wall -Wextra -std=c++11 ${TRICK_SYSTEM_CXXFLAGS} -I../include -I${TRICK_HOME}/include ${CXXFLAGS} +CPPFLAGS += -g -Wall -Wextra ${TRICK_SYSTEM_CXXFLAGS} -I../include -I${TRICK_HOME}/include ${CXXFLAGS} ${TRICK_TEST_FLAGS} # TRICK_LIBS = ${TRICK_LIB_DIR}/libtrick_units.a EXEC_LINK_LIBS += -L${GTEST_HOME}/lib64 -L${GTEST_HOME}/lib -lgtest -lgtest_main From 930dfbc683410883a36e6d1aca985ed9f52a9dad Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Tue, 7 Feb 2023 16:41:53 -0600 Subject: [PATCH 129/162] Add check and warning for unsupported types in data recording (#1441) --- test/SIM_test_dr/Modified_data/dr_typesASCII.dr | 2 ++ test/SIM_test_dr/Modified_data/dr_typesBINARY.dr | 2 ++ test/SIM_test_dr/models/dr/include/DR.hh | 2 ++ test/SIM_test_dr/models/dr/src/DR_default_data.cpp | 3 ++- trick_source/sim_services/DataRecord/DataRecordGroup.cpp | 9 ++++++++- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/test/SIM_test_dr/Modified_data/dr_typesASCII.dr b/test/SIM_test_dr/Modified_data/dr_typesASCII.dr index 7d290b62..9189faad 100644 --- a/test/SIM_test_dr/Modified_data/dr_typesASCII.dr +++ b/test/SIM_test_dr/Modified_data/dr_typesASCII.dr @@ -25,5 +25,7 @@ drg[DR_GROUP_ID].add_variable("drx.drt.k") drg[DR_GROUP_ID].add_variable("drx.drt.l") drg[DR_GROUP_ID].add_variable("drx.drt.m") drg[DR_GROUP_ID].add_variable("drx.drt.n") +drg[DR_GROUP_ID].add_variable("drx.drt.o") +drg[DR_GROUP_ID].add_variable("drx.drt.p") trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) drg[DR_GROUP_ID].enable() diff --git a/test/SIM_test_dr/Modified_data/dr_typesBINARY.dr b/test/SIM_test_dr/Modified_data/dr_typesBINARY.dr index 2afbec4e..6c2de8a9 100644 --- a/test/SIM_test_dr/Modified_data/dr_typesBINARY.dr +++ b/test/SIM_test_dr/Modified_data/dr_typesBINARY.dr @@ -25,5 +25,7 @@ drg[DR_GROUP_ID].add_variable("drx.drt.k") drg[DR_GROUP_ID].add_variable("drx.drt.l") drg[DR_GROUP_ID].add_variable("drx.drt.m") drg[DR_GROUP_ID].add_variable("drx.drt.n") +drg[DR_GROUP_ID].add_variable("drx.drt.o") +drg[DR_GROUP_ID].add_variable("drx.drt.p") trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) drg[DR_GROUP_ID].enable() diff --git a/test/SIM_test_dr/models/dr/include/DR.hh b/test/SIM_test_dr/models/dr/include/DR.hh index 0afebe8c..a4c132d7 100644 --- a/test/SIM_test_dr/models/dr/include/DR.hh +++ b/test/SIM_test_dr/models/dr/include/DR.hh @@ -87,6 +87,8 @@ class DRTypes { unsigned long long l; bool m; NUM_DEFS n; + char * o; // Should not actually be added + std::string p; // Should not actually be added UINT_BITS uintB; INT_BITS intB; diff --git a/test/SIM_test_dr/models/dr/src/DR_default_data.cpp b/test/SIM_test_dr/models/dr/src/DR_default_data.cpp index 77586c42..d4564c3f 100644 --- a/test/SIM_test_dr/models/dr/src/DR_default_data.cpp +++ b/test/SIM_test_dr/models/dr/src/DR_default_data.cpp @@ -25,7 +25,8 @@ int DRTypes::init() { l = 12345678912345; //unsigned long m = false; //boolean n = THREE; //enumerated type - + o = "3 May. Bistritz.—Left Munich at 8:35 P. M., on 1st May, arriving at Vienna early next morning; should have arrived at 6:46, but train was an hour late. Buda-Pesth seems a wonderful place, from the glimpse which I got of it from the train and the little I could walk through the streets. I feared to go very far from the station, as we had arrived late and would start as near the correct time as possible. The impression I had was that we were leaving the West and entering the East; the most western of splendid bridges over the Danube, which is here of noble width and depth, took us among the traditions of Turkish rule."; + p = "We left in pretty good time, and came after nightfall to Klausenburgh. Here I stopped for the night at the Hotel Royale. I had for dinner, or rather supper, a chicken done up some way with red pepper, which was very good but thirsty. (Mem., get recipe for Mina.) I asked the waiter, and he said it was called “paprika hendl,” and that, as it was a national dish, I should be able to get it anywhere along the Carpathians. I found my smattering of German very useful here; indeed, I don't know how I should be able to get on without it."; /*============================================================================ Bitfields diff --git a/trick_source/sim_services/DataRecord/DataRecordGroup.cpp b/trick_source/sim_services/DataRecord/DataRecordGroup.cpp index 7429d24a..36d40292 100644 --- a/trick_source/sim_services/DataRecord/DataRecordGroup.cpp +++ b/trick_source/sim_services/DataRecord/DataRecordGroup.cpp @@ -380,7 +380,14 @@ int Trick::DataRecordGroup::init() { delete drb ; continue ; } else { - drb->ref = ref2 ; + if (ref2->attr->type == TRICK_STRING || ref2->attr->type == TRICK_STL || ref2->attr->type == TRICK_STRUCTURED || ref2->attr->num_index != 0) { + message_publish(MSG_WARNING, "Cannot Data Record unsupported type variable %s.\n", drb->name.c_str()) ; + rec_buffer.erase(rec_buffer.begin() + jj--) ; + delete drb ; + continue ; + } else { + drb->ref = ref2 ; + } } } if ( drb->alias.compare("") ) { From 9c7becb4ffa655c78d05e58a8d71f7f72117875b Mon Sep 17 00:00:00 2001 From: Jacqueline Deans Date: Wed, 8 Feb 2023 17:58:59 -0600 Subject: [PATCH 130/162] Handle thread shutdown gracefully and test (#1448) --------- Co-authored-by: Dan Jordan --- include/trick/DataRecordDispatcher.hh | 4 +- include/trick/MessageTCDevice.hh | 4 +- include/trick/MessageThreadedCout.hh | 4 +- include/trick/SysThread.hh | 56 ++++++++++++++ include/trick/ThreadBase.hh | 6 ++ include/trick/VariableServer.hh | 2 +- include/trick/VariableServerListenThread.hh | 4 +- include/trick/VariableServerThread.hh | 4 +- test/SIM_earlyterm/RUN_test/input.py | 1 + test/SIM_earlyterm/S_define | 31 ++++++++ test_sims.yml | 7 ++ .../DataRecord/DataRecordDispatcher.cpp | 2 +- .../Executive/Executive_shutdown.cpp | 3 + .../sim_services/Message/MessageTCDevice.cpp | 5 +- .../Message/MessageThreadedCout.cpp | 4 +- trick_source/sim_services/ThreadBase/Makefile | 1 + .../sim_services/ThreadBase/SysThread.cpp | 77 +++++++++++++++++++ .../sim_services/ThreadBase/ThreadBase.cpp | 7 ++ .../VariableServerListenThread.cpp | 2 +- .../VariableServer/VariableServerThread.cpp | 2 +- .../trick_utils/var_binary_parser/Makefile | 5 +- 21 files changed, 212 insertions(+), 19 deletions(-) create mode 100644 include/trick/SysThread.hh create mode 100644 test/SIM_earlyterm/RUN_test/input.py create mode 100644 test/SIM_earlyterm/S_define create mode 100644 trick_source/sim_services/ThreadBase/SysThread.cpp diff --git a/include/trick/DataRecordDispatcher.hh b/include/trick/DataRecordDispatcher.hh index 55d58932..f1509da2 100644 --- a/include/trick/DataRecordDispatcher.hh +++ b/include/trick/DataRecordDispatcher.hh @@ -13,7 +13,7 @@ PROGRAMMERS: #include "trick/Scheduler.hh" #include "trick/DataRecordGroup.hh" -#include "trick/ThreadBase.hh" +#include "trick/SysThread.hh" namespace Trick { @@ -32,7 +32,7 @@ namespace Trick { bool cancelled; } ; - class DRDWriterThread : public Trick::ThreadBase { + class DRDWriterThread : public Trick::SysThread { public: DRDWriterThread(Trick::DRDMutexes & in_mutexes, std::vector & in_groups) ; diff --git a/include/trick/MessageTCDevice.hh b/include/trick/MessageTCDevice.hh index 8d2656e1..c117903b 100644 --- a/include/trick/MessageTCDevice.hh +++ b/include/trick/MessageTCDevice.hh @@ -7,14 +7,14 @@ #include #include "trick/MessageSubscriber.hh" -#include "trick/ThreadBase.hh" +#include "trick/SysThread.hh" #include "trick/tc.h" namespace Trick { class MessageTCDevice ; - class MessageTCDeviceListenThread : public Trick::ThreadBase { + class MessageTCDeviceListenThread : public Trick::SysThread { public: MessageTCDeviceListenThread(MessageTCDevice * in_mtcd) ; diff --git a/include/trick/MessageThreadedCout.hh b/include/trick/MessageThreadedCout.hh index 740fc9d1..dfef3f76 100644 --- a/include/trick/MessageThreadedCout.hh +++ b/include/trick/MessageThreadedCout.hh @@ -7,7 +7,7 @@ #define MESSAGETHREADEDCOUT_HH #include -#include "trick/ThreadBase.hh" +#include "trick/SysThread.hh" #include "trick/MessageSubscriber.hh" namespace Trick { @@ -16,7 +16,7 @@ namespace Trick { * This MessageThreadedCout is a class that inherits from MessageSubscriber. * It defines a type of MessageSubscriber with its received message sending to the standard output stream. */ - class MessageThreadedCout : public MessageSubscriber , public Trick::ThreadBase { + class MessageThreadedCout : public MessageSubscriber , public Trick::SysThread { public: diff --git a/include/trick/SysThread.hh b/include/trick/SysThread.hh new file mode 100644 index 00000000..a565b8c5 --- /dev/null +++ b/include/trick/SysThread.hh @@ -0,0 +1,56 @@ +/* + PURPOSE: + (Trick Sys Threads implementation) +*/ + +#ifndef SYSTHREAD_HH +#define SYSTHREAD_HH + +#include +#include +#include +#include +#include +#if __linux +#include +#endif +#include +#include +#include "trick/ThreadBase.hh" + + +namespace Trick { + + /** + * The purpose of this class is to ensure safe shutdown for Trick system threads, since user threads are handled separately in + * the Trick::Threads and Executive classes. + * + * This class was implemented as a solution to issue https://github.com/nasa/trick/issues/1445 + * + * @author Jackie Deans + * + * + **/ + class SysThread : public Trick::ThreadBase { + public: + SysThread(std::string in_name, bool self_deleting = false); + ~SysThread(); + + static int ensureAllShutdown(); + + private: + // Had to use Construct On First Use here to avoid the static initialziation fiasco + static pthread_mutex_t& list_mutex(); + static pthread_cond_t& list_empty_cv(); + + static std::vector & all_sys_threads(); + + static bool shutdown_finished; + + bool self_deleting; + } ; + +} + +#endif + diff --git a/include/trick/ThreadBase.hh b/include/trick/ThreadBase.hh index 085b0b76..41ec3273 100644 --- a/include/trick/ThreadBase.hh +++ b/include/trick/ThreadBase.hh @@ -130,6 +130,12 @@ namespace Trick { */ virtual int cancel_thread() ; + /** + * Cancels thread. + * @return always 0 + */ + virtual int join_thread() ; + /** * The thread body. * @return always 0 diff --git a/include/trick/VariableServer.hh b/include/trick/VariableServer.hh index c65951b0..10cf4ee2 100644 --- a/include/trick/VariableServer.hh +++ b/include/trick/VariableServer.hh @@ -18,7 +18,7 @@ #include "trick/variable_server_sync_types.h" #include "trick/VariableServerThread.hh" #include "trick/VariableServerListenThread.hh" -#include "trick/ThreadBase.hh" +#include "trick/SysThread.hh" namespace Trick { diff --git a/include/trick/VariableServerListenThread.hh b/include/trick/VariableServerListenThread.hh index e773d3cb..4b7af4e6 100644 --- a/include/trick/VariableServerListenThread.hh +++ b/include/trick/VariableServerListenThread.hh @@ -9,7 +9,7 @@ #include #include #include "trick/tc.h" -#include "trick/ThreadBase.hh" +#include "trick/SysThread.hh" namespace Trick { @@ -17,7 +17,7 @@ namespace Trick { This class runs the variable server listen loop. @author Alex Lin */ - class VariableServerListenThread : public Trick::ThreadBase { + class VariableServerListenThread : public Trick::SysThread { public: VariableServerListenThread() ; diff --git a/include/trick/VariableServerThread.hh b/include/trick/VariableServerThread.hh index c92ef72c..fed81f59 100644 --- a/include/trick/VariableServerThread.hh +++ b/include/trick/VariableServerThread.hh @@ -11,7 +11,7 @@ #include #include #include "trick/tc.h" -#include "trick/ThreadBase.hh" +#include "trick/SysThread.hh" #include "trick/VariableServerReference.hh" #include "trick/variable_server_sync_types.h" #include "trick/variable_server_message_types.h" @@ -25,7 +25,7 @@ namespace Trick { This class provides variable server command processing on a separate thread for each client. @author Alex Lin */ - class VariableServerThread : public Trick::ThreadBase { + class VariableServerThread : public Trick::SysThread { public: enum ConnectionType { TCP, UDP, MCAST } ; diff --git a/test/SIM_earlyterm/RUN_test/input.py b/test/SIM_earlyterm/RUN_test/input.py new file mode 100644 index 00000000..242edf3f --- /dev/null +++ b/test/SIM_earlyterm/RUN_test/input.py @@ -0,0 +1 @@ +#Nothing diff --git a/test/SIM_earlyterm/S_define b/test/SIM_earlyterm/S_define new file mode 100644 index 00000000..79bcc0a7 --- /dev/null +++ b/test/SIM_earlyterm/S_define @@ -0,0 +1,31 @@ +/***************************************************************************** +PURPOSE: Provide test of simulation early termination. Ensures threads + come down appropriately for unit-test-like cases +PROGRAMMERS: + (((Dan Jordan) (NASA) (Jan 2023) (Deal with it))) +*****************************************************************************/ +#include "sim_objects/default_trick_sys.sm" +##include "trick/exec_proto.h" + +class EarlyTerminationSimObject : public Trick::SimObject +{ + public: + double x; + + EarlyTerminationSimObject() + : + x(0) + { + ("initialization") early_term(); + }; + + void early_term() { + std::string message = "Terminating with exit code 0"; + exec_terminate_with_return(0, "S_define", 24, message.c_str()); + } + private: + EarlyTerminationSimObject( const EarlyTerminationSimObject&); + EarlyTerminationSimObject & operator= ( const EarlyTerminationSimObject&); + +}; +EarlyTerminationSimObject test; diff --git a/test_sims.yml b/test_sims.yml index 68df7f32..db89be36 100644 --- a/test_sims.yml +++ b/test_sims.yml @@ -189,6 +189,13 @@ SIM_sun: runs: RUN_test/unit_test.py: returns: 0 +SIM_earlyterm: + path: test/SIM_earlyterm + build_command: "trick-CP -t" + binary: "T_main_{cpu}_test.exe" + runs: + RUN_test/input.py: + returns: 0 # Special cases diff --git a/trick_source/sim_services/DataRecord/DataRecordDispatcher.cpp b/trick_source/sim_services/DataRecord/DataRecordDispatcher.cpp index df5533d7..19911b21 100644 --- a/trick_source/sim_services/DataRecord/DataRecordDispatcher.cpp +++ b/trick_source/sim_services/DataRecord/DataRecordDispatcher.cpp @@ -33,7 +33,7 @@ Trick::DRDMutexes::DRDMutexes() { } Trick::DRDWriterThread::DRDWriterThread(DRDMutexes & in_mutexes, std::vector & in_groups) : - ThreadBase("DR_Writer"), + SysThread("DR_Writer"), drd_mutexes(in_mutexes) , groups(in_groups) {} diff --git a/trick_source/sim_services/Executive/Executive_shutdown.cpp b/trick_source/sim_services/Executive/Executive_shutdown.cpp index e453ed80..0d6dbdc9 100644 --- a/trick_source/sim_services/Executive/Executive_shutdown.cpp +++ b/trick_source/sim_services/Executive/Executive_shutdown.cpp @@ -17,6 +17,7 @@ #include "trick/message_proto.h" #include "trick/message_type.h" #include "trick/release.h" +#include "trick/SysThread.hh" /** @design @@ -75,6 +76,8 @@ int Trick::Executive::shutdown() { except_message += std::string(" then exception Message: ") + ex.message ; } + Trick::SysThread::ensureAllShutdown(); + getrusage(RUSAGE_SELF, &cpu_usage_buf); cpu_time = ((double) cpu_usage_buf.ru_utime.tv_sec) + ((double) cpu_usage_buf.ru_utime.tv_usec / 1000000.0); diff --git a/trick_source/sim_services/Message/MessageTCDevice.cpp b/trick_source/sim_services/Message/MessageTCDevice.cpp index 6849f69a..e0c0fde3 100644 --- a/trick_source/sim_services/Message/MessageTCDevice.cpp +++ b/trick_source/sim_services/Message/MessageTCDevice.cpp @@ -8,7 +8,7 @@ #include "trick/tc_proto.h" Trick::MessageTCDeviceListenThread::MessageTCDeviceListenThread(MessageTCDevice * in_mtcd) : - Trick::ThreadBase("MessageListen"), + Trick::SysThread("MessageListen"), mtcd(in_mtcd) , listen_dev() { /* And a TCDevice for message server @e listen_device is configured. */ @@ -25,6 +25,7 @@ Trick::MessageTCDeviceListenThread::MessageTCDeviceListenThread(MessageTCDevice Trick::MessageTCDeviceListenThread::~MessageTCDeviceListenThread() { free(listen_dev.error_handler) ; + listen_dev.error_handler = NULL; if ( listen_dev.hostname ) { free((char*)listen_dev.hostname) ; } @@ -81,7 +82,7 @@ void * Trick::MessageTCDeviceListenThread::thread_body() { if (status == TC_SUCCESS) { mtcd->add_connection(new_connection) ; - } + } } } diff --git a/trick_source/sim_services/Message/MessageThreadedCout.cpp b/trick_source/sim_services/Message/MessageThreadedCout.cpp index c2ca6348..99fe0c3e 100644 --- a/trick_source/sim_services/Message/MessageThreadedCout.cpp +++ b/trick_source/sim_services/Message/MessageThreadedCout.cpp @@ -10,10 +10,10 @@ Trick::MessageThreadedCout::MessageThreadedCout() : max_buffer_size(4000) , print_immediate(false) , copy_ptr(NULL), - write_ptr(NULL) { + write_ptr(NULL), + SysThread("threadedcout") { /** By default, this subscriber is enabled when it is created. */ Trick::MessageSubscriber::name = "threadedcout" ; - Trick::ThreadBase::name = "threadedcout" ; color_code.reserve(6) ; StringNode * temp = new StringNode(max_buffer_size) ; write_ptr = copy_ptr = temp ; diff --git a/trick_source/sim_services/ThreadBase/Makefile b/trick_source/sim_services/ThreadBase/Makefile index 6f722048..44838eb2 100644 --- a/trick_source/sim_services/ThreadBase/Makefile +++ b/trick_source/sim_services/ThreadBase/Makefile @@ -1,3 +1,4 @@ include $(dir $(lastword $(MAKEFILE_LIST)))../../../share/trick/makefiles/Makefile.common include ${TRICK_HOME}/share/trick/makefiles/Makefile.tricklib -include Makefile_deps +TRICK_CXXFLAGS += -std=c++11 \ No newline at end of file diff --git a/trick_source/sim_services/ThreadBase/SysThread.cpp b/trick_source/sim_services/ThreadBase/SysThread.cpp new file mode 100644 index 00000000..cfb98f6f --- /dev/null +++ b/trick_source/sim_services/ThreadBase/SysThread.cpp @@ -0,0 +1,77 @@ + +#include +#include +#include +#if __linux +#include +#include +#include +#endif +#include +#include + +#include "trick/SysThread.hh" + +bool Trick::SysThread::shutdown_finished = false; + +// Construct On First Use to avoid the Static Initialization Fiasco +pthread_mutex_t& Trick::SysThread::list_mutex() { + static pthread_mutex_t list_mutex = PTHREAD_MUTEX_INITIALIZER; + return list_mutex; +} + +pthread_cond_t& Trick::SysThread::list_empty_cv() { + static pthread_cond_t list_empty_cv = PTHREAD_COND_INITIALIZER; + return list_empty_cv; +} + +std::vector& Trick::SysThread::all_sys_threads() { + static std::vector all_sys_threads; + return all_sys_threads; +} + +Trick::SysThread::SysThread(std::string in_name, bool sd) : self_deleting(sd), ThreadBase(in_name) { + pthread_mutex_lock(&(list_mutex())); + all_sys_threads().push_back(this); + pthread_mutex_unlock(&(list_mutex())); +} + + +Trick::SysThread::~SysThread() { + pthread_mutex_lock(&(list_mutex())); + if (!shutdown_finished) { + all_sys_threads().erase(std::remove(all_sys_threads().begin(), all_sys_threads().end(), this), all_sys_threads().end()); + if (all_sys_threads().size() == 0) { + pthread_cond_signal(&(list_empty_cv())); + } + } + pthread_mutex_unlock(&(list_mutex())); +} + +int Trick::SysThread::ensureAllShutdown() { + pthread_mutex_lock(&(list_mutex())); + + for (SysThread * thread : all_sys_threads()) { + thread->cancel_thread(); + } + + auto it = all_sys_threads().begin(); + while (it != all_sys_threads().end()){ + SysThread * thread = *it; + if (!(thread->self_deleting)) { + thread->join_thread(); + it = all_sys_threads().erase(it); + } else { + ++it; + } + } + + while (all_sys_threads().size() != 0) { + pthread_cond_wait(&(list_empty_cv()), &(list_mutex())); + } + + shutdown_finished = true; + pthread_mutex_unlock(&(list_mutex())); + + return 0; +} \ No newline at end of file diff --git a/trick_source/sim_services/ThreadBase/ThreadBase.cpp b/trick_source/sim_services/ThreadBase/ThreadBase.cpp index f924ab51..11af01e7 100644 --- a/trick_source/sim_services/ThreadBase/ThreadBase.cpp +++ b/trick_source/sim_services/ThreadBase/ThreadBase.cpp @@ -300,6 +300,13 @@ int Trick::ThreadBase::cancel_thread() { return(0) ; } +int Trick::ThreadBase::join_thread() { + if ( pthread_id != 0 ) { + pthread_join(pthread_id, NULL) ; + } + return(0) ; +} + void * Trick::ThreadBase::thread_helper( void * context ) { sigset_t sigs; diff --git a/trick_source/sim_services/VariableServer/VariableServerListenThread.cpp b/trick_source/sim_services/VariableServer/VariableServerListenThread.cpp index 00f6e868..17408e38 100644 --- a/trick_source/sim_services/VariableServer/VariableServerListenThread.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerListenThread.cpp @@ -11,7 +11,7 @@ #include "trick/message_type.h" Trick::VariableServerListenThread::VariableServerListenThread() : - Trick::ThreadBase("VarServListen"), + Trick::SysThread("VarServListen"), port(0), user_port_requested(false), broadcast(true), diff --git a/trick_source/sim_services/VariableServer/VariableServerThread.cpp b/trick_source/sim_services/VariableServer/VariableServerThread.cpp index 4cc33293..45b75747 100644 --- a/trick_source/sim_services/VariableServer/VariableServerThread.cpp +++ b/trick_source/sim_services/VariableServer/VariableServerThread.cpp @@ -8,7 +8,7 @@ Trick::VariableServer * Trick::VariableServerThread::vs = NULL ; Trick::VariableServerThread::VariableServerThread(TCDevice * in_listen_dev) : - Trick::ThreadBase("VarServer") , + Trick::SysThread("VarServer", true) , listen_dev(in_listen_dev) { debug = 0 ; diff --git a/trick_source/trick_utils/var_binary_parser/Makefile b/trick_source/trick_utils/var_binary_parser/Makefile index b816c264..5c956098 100644 --- a/trick_source/trick_utils/var_binary_parser/Makefile +++ b/trick_source/trick_utils/var_binary_parser/Makefile @@ -42,8 +42,11 @@ ${LIBDIR}: ${TRICK_LIB}: ${LIBDIR}/${LIBNAME} cp ${LIBDIR}/${LIBNAME} $(TRICK_LIB) +real_clean: clean + clean: - ${RM} -r ${OBJDIR} + ${RM} -rf ${OBJDIR} + ${RM} -rf ${LIBDIR} ${MAKE} -C test clean spotless: From 096881a6be99ef1086f203155a4191dcb130ad72 Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Thu, 9 Feb 2023 14:59:06 -0600 Subject: [PATCH 131/162] Remove old Trick 13 Tutorial Review. --- share/doc/trick/Trick_Tutorial_Review.pdf | Bin 4144662 -> 0 bytes share/doc/trick/Trick_Tutorial_Review.pptx | Bin 3568470 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 share/doc/trick/Trick_Tutorial_Review.pdf delete mode 100644 share/doc/trick/Trick_Tutorial_Review.pptx diff --git a/share/doc/trick/Trick_Tutorial_Review.pdf b/share/doc/trick/Trick_Tutorial_Review.pdf deleted file mode 100644 index b780417e76fffd3439ae507ea41d2be1adf86858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4144662 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∾o?5|h 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 )QVB= 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 -%9tgutW1)p@XBT8C%yGC<- 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 < z2KV@qV7uZ!KDxQjvHztyMqu8w&Mkq2^RtrVDHHeeT0#$@eS|s^h3MpN*bD>nQ6Mqk1 zCa_&41tpX*8gyA--}t_reHUglS|J0n-TwkZ$B()YjH2vwUY|0x4d}tIA379%c&3ez zDZ^!Z$L2M9BM;MhQuhq2V|yN=YEw^wZ7vO=a?2g4OS$Uw^%r(x6vx|PJz8gx-V&61 zW)_j^Dd-fDPQ#I{D6`QdsvDA##ttkI?_kw1geEXW%rK3|uz1duv6jkbhKRC;biIA+ z(PA#WpDzJ&t-7r~&g??xO6rH7@}>|FlkkpPKPD2aA>yT^r&GZaI3h_hfsi;Bd}6V^ z-|ABi)pWBcXlff{ywcIaHfypb#pmdy>R6B$CDz4^%*>#O(k=@iCJH5|i`D!V*k3Hc7k!>&j$K5z?mg9Qr2Ixo~Vj4a7N9 zmtwU${N@8+njwc7TB$$GREA}Wm4Zj^Ge)MSgC5-7Jf5t5h%I4{s2XIAAZ(Coc)BEC z#z}6h_Z4guYJ=$S+>_>UmNk-ugL=mMkNy`LM`B;uqY5(GjRj5YJU*5Pk(<3{rxFH zs6+U#blU6TLXM1tuMC_bkXv(P0%RXm&_Ad?)_=6( zf1B!K;pBk%H}u}WaDIPU3M2$&3>+NQ^A`G-c<0Wf;Sbsso+foZz_0G!J7)+RPd&P zHx>MsRM5`N!06PV|L-`^SD5fG4wR9Z0i?Id}NKC@c7j5d_E`c4qB|*?d3<5qRSc-NQ^A`G-c<0Wg8x@4IAvlG%e(UbcP^P%H_NL_hJ}fp`JWz{ zKR%KFF%^{U?>y80(gY9xlSk%1{4X&7XXbbK?-M|ETz#j6F~-m$S3H%z5sG{#ZxL58 z2c@PIhXmOplmQ1R^oJsb5w8pTR#31@A%duYsvwXPfEvBR?V4!2k}7Sg=)&Gq=epF9 z%1>85_B%1re88F|0_M+TXn!V5SrUXo)oryDUEtpJ+EYgP;Ma&#do2;ThU2W`Lx!}W z*w6jJPkTq5nicjzgMaYH{y`Uh0_ci6l(e663hMR6Gjyk{W8jD?Ns~}Qy??lzKq0au z8QCvZpYLTzTPZ&Y9+Z}suXLv{oYcr`S(IA(0QZ-nI??&J$wfQx#)(^?ITJ>H!~WB= zfdywb3(NaDzv!pxU{Mn3p=rnYVRB=Tb{D8QW?9^9f8;;sHXU3PSZ|g|8=F5#HJf{k z3zzjP-F~CEvXld_z=i+77eno<@@sz!(IvUd8ZWlYS^Nq1*!H?Umq(Sp$_KJ|M(?ZW z<+GcxMRCJmP+a!W`fx-H95ZSHq zl-9_)Ta1JpN6s^Np--Urj6*{-KSJuL-dA`d`j;a^8T+%uRj z%ZeMlxne=3FbCTH8+%{b6lbt?i@OF11HnB6cb5qgT!Op1yIU9t?k*V!4uiY9ySux) z!<+L~-Jfu7)vdap`pfR8x>t2|uU@_Pvox)@DPIvzq0xmhx+>(5h8xIF`3fmz>Bsr| z{HUx_;6$rlw+6Z(*D2shaAq~Xl+a(avAdipDK{w)U|FGd+!z^}isd3?{t?i} z!RUmUDjWNmTHt3F5mx&_GW>>s!ojwTx|%ae&tMQfs}#*mgAzQuYz%V%{B ze?n>^DmpSgerCm#76%+dLwW}%$E&5_)Azk{m@DGyR?E?I_EN`j`~+goUU?mOmWrp~T(^LtJ5{)w@x zIt)1aOG-R$hb?&(2gZD--zli#2l)O*8!K84SL#!E(&+7_EkL*{Vz~J=Lvh^i7B`R9 zX8+1;rt$VH8Ipuj=Qt3O;n{jwzjQuWaN|fZMo%`+g>uJ2W zqIn4T3oI<<;PDaO)41z9J!*)^>9LUL9Te6uHSj7529Nx25@KTqowPUTD|d&{+@yu8 zpZNaZWPHh|qYmPsf~JZ+=TZm;?TR>1y9Sf7S>+D?S#p)6YUi~3A^xpClAI0q^N4cU z3HM1lxkQmu0)A;=i|lW*d-$rV?3*-u2$A2FF#0FmU`@_X_CZ}2YMKO%!epniDI#%~ zqd3E$&1MC(y?AiUrA2)Q?cS|XYi_mqq0T>m4tm?Q;RH^x`qo3WrXz{c*1|oP&jBU2 zIHF5aabUaOKS#ne9*eduV;Ra4e%9C#O)VV_QBeRpTrJ!)3`RL%)?Qg)78sn z-Qd;8pk`}Rr-nsSG%?4{&cdiw{ZXORRmT%`# zkI6W4?;93m1CyidU@`VaM(&~K}|yiIE4 zf7S^p8&zby$eSB8q&4ET2-T1`!wp+?KONy@u-%UR%pXL7uiha`-xN8Q(V}VA8CKon zSc5F8hCD9Wv2m0JnAuWhZ~cSF&X4{o^J;qN#t9j_DI<`;3P}x4D#7+pLoluy_&Tfkk)aB@CE9WToTY>BpC55g=6zo35x9wOT z5uzWLgSJMe9_X+Xy|P0k4Jv>vTaQ}T6hs~>I#XvVihJjSZ^0E+B0LVl;}2Qu*vKVy zAU;Tn8Up|-wjV`lmcR>7GheEvb;tvhjPX5ii`Ow(}8`vX9D(^->O zIN@h%GVsqsI~|qZno_4Rr4nz#I%+3SnES2M;*`w`b`lc$^Gd9o&wY2D4Gz zXe4izSpfMY3}}|(6QPbyN%}+%wDz?aKiI6*VdF>?;wae&8h2nScX%#kW|LI3#h7(` zw5@B6kQ$-SgXd}EGZ*~Q(@!Skl_jaPXB(D4OZRg8u_Z*W=^-i@$e1ZK&@hc zA8{_4tRq$2)|2P3f$UVGK?*U|$eyNP2no2V$BpA(t(^dV(NxL0nLH&8T2%hxYe5IF z%JjDuGR!Gl?G@Jes*QP2e^IOS$Z_T2X6J`Nap`}HFK!fSVsL&{GNb7SoP$3ngMt z`U5o&m!tX@D{$osE~}iXs9t>DB)`8gC?5&Cp#l$@(ve{-HB^GB8Ub$H7_`5!=W>?~ zo|8X1@LbSyXz**wuM3In@$YNhGNeDeyk$s*vt8e7B%P$S#;eN7C~)EHP+CnKq6IpC zanU0<5a8Gqs>O+3uSYjsHFhhW-}A?_-JFAFPSv5`GmixT!fy~aleQUw>^n{hjT|u&EkK9oa3)E`eAituRNJ%9>R@*`Z~;?|Hydwaa$n$Zj~Z5s%XY@NyRb3* zIvIT7umH4ov0cvvb}V%CSd)GSX|0$XSc%*|#=AL+J&|MG7wKrxa%6A&{|C3sSl2{m zbc(l}ficlX=S^Y&;jmVA)_IM9sOPr$L#lELFd(As;+QvL3g@fH(qQBywSL{Lk~p|a zg7ld`mYcTg8ERyw(|dTbdvV%dJA-Evg~tZ)49~HPI#uRCY-|8jAjO9`B=h`E0nfwL z{wyI5z^Nu|Mapd(wnhxgrvw6t_FhCBbaMu^ueeUc)5)J$q$;i~TkArgo5nVu%`PoSW$aDZ&C^s7e7wA08+nSSj%O2}Z_M5x`q&?q< z6u+E1jcAdkvMw~=`9X~jrh`#MIHqrhc!@r9MWdk?V-iDEx%z&K$v)=GdkS7J@)z-I zOw?rjq}keP7_p;egL=e^B?j=dApYZ)(LBiX5!ksL8Vxt)Fe5R-`nbjv=}p|5AnRBU zXcWhXp!Mknk&Yc2Qc$>y|&&UR>_@2LU1!4Dc=e-UH)2C>TT9l~9R>Cz$L14?r}VSTL2$)~pmlnVkU zasNsmMu_!0+CVds2| zXhsG7o1Z~SC;k)zSxH^ymb+CyqnJ-I2Ao&O#FmR724Y-VXo78$X)# z<~Vd^yHOMqzqsytaM2~kmqdF730^%}frS6%MW!Gg`$o~WjPz#+B!@$<%+7STMx2Nr zhL|(T94tN%zpCgrwpT^;S)NdEZ!L$3z|0q|E(hps=e1L)xkEF)@{Pr)`|;m_aLRrs zXCIl?-dinRB}t>pQ0X6kmajz+zer9-)TGUVW zWVmGzv`=cE0xZ?}`gD}_n?X`n{(YxdxeW^3t;O5nFSDTqhi9N3y+}@_5)3v`&Y@$L zjNUHYIKVDT9Wn6i*&|g`yoHL1;F?|x40NLn4(<9hfL-W^szzw){hjVq`jX~pOp$Sg z&=B&aVr@eA?LCU1!X-1D{gqC(w*^1YL@1v8qR%tv=h3rSD%8PBX*h0kk_&nqA@meR zKFZWeAyG6?#$_5d>Tj9(v_lpdHoceF z3J-^Dh!=U=I)N)n@x}QGf3Jy=ut4nKc6PhXI)Z6CB@Gf6L4wc+phO&<6{NvFm=sfX z!l(CpWTXE@j#T26zW>Iycu5#dp4E)o!cp`#<*I)bH&_*`a4_$6otm)kX`xu@;gqeB zQd3t8E0GR8niDqY`pRImkfHzANN}5aLO10;Q*9#rOmBDXt;~%`jRE0C=IF9L7vcDE z0&=i=4#&p!U}{rd_|h>W`$psW75_o~rxnoDnSO&elTS^d2UUT%D<1ItJPn=VIrk`2 zw28$jo80*nf?B}E`Zdaqy9c84XvVB$%@7)m+)IT=Vd8uKnLSIsJad*V3!Ceby!q{+ zfA+Z>F^UpoC|>h&^V4h7ct>8i7`dd)3MQ4PP>h*sZYZcYa9{9&)-w#(H(Gl5|@5w-sPMwL*8}W z9PdMyUHrsO^B0rIuay=}dnyU$<55FLK!#C2y3VEG(nUXe^)0fYk-`v@f78eM#Y`vO zjDy{|^h{(Ze6t@5M%M2OY174J=_7|?CfDiUKOKvHR9rAji9{if6@hcInKFK%VF8tT zS9$C9QBlDKeJ5+S>3)C>DvKZeUx)GkuI=f6j8&yL;HHze^Z!0_+T|B?=lSzE-48DR zX4>Ey(w)AP*(QbdcDUc)DSTkMz%A6I-eP6_~*xcPh>Fs11D`1E4D+wrLe5d z(o*jq-`h2$wrf9oK)L8*z5t)om#S<#iT6!793M2pYpO)#E$ZBxXQb#?ptJF%(UQQh z0q^RPwb<;iQWA;%S^al#Y?FVeDw|oD-bqH#YG@IK0cf<#^dWeI>9<2j(A2<((y{PI zwWfl5`|ocwu0K-2@Cw6LfH`qnJE-Qiz8f1b)c#+22_!lIpQ>&0Rn#}#*Y7@?Mrb`~2JivD!bep6d5pYI4$l3WqW~tg`RWy;4$mXE+ux zFnhHbXlh@oi?qcAnq?;E&>9I(ukXF#ZTNXZ?fyssM}hf#t@8-ZAXSew9r_+Z5AcW2 z@<(BV!>=bCh96%*2L-W)l}H94zthX^3;C=A>+qn)K?graG`|=&WOf&ZpAF=KTzANS z?vA6)T2Q68D`sQFOnbdI0q+-vjSI5VzbH4e!BdZONL70MK0LHSItKGkC^{!pCqQda z+Z0ryx}Ay_X7-HjoKy_RNo1TL`?~$vt9LBd6WPChj|m6bV@rg7&ZDesG`1k7UmQft z0V9a|Ev-jqEl9-g69!<`;bmm_wCvb-SCEoimW(-f*n0v(4I&8E&mHXb# zm-=o~!q!=RWQLzWO94jOy?AL_MHJv0Z)P6~GADV$)PbS9>TvV6d1H?G$|+H+W9`Rt zHkf!!YMWIA2~7oigSImj-giCS!mcVl;Sc>`=kV>*s?(LmbHz5R_TGG z_XG!?<)M4M{PvLwIBthoFc22iFzPDEDGa-q;VWs(gICyI$bkN-hoN5CeU<2%5(`*s z9I2%P?bJB*8T+gJ{$&l4=!T3s_Bn7jE)UEau-CS&xSNwZoQ_DV3Q1+Uk0uSrZ$9Sj zzA4%VA5l&lP+f}prIo{-tDm`z_Ll$GiTYL;uug$ZgM>h$oDK5US=(b$3qrMY-`_-8U(w(&>0ro$|A}r` zJ(9)7sAnesC|+Rr7q{5xudViJ=bsP^{$g-1NUj&E1s@btR1+KKz251DvpUVxC^xg^jcw7P?w>*J<4ff2z+RyFu? zFSu~3xX`hpW<~e#aE^>E)5~J~ny-I7gvBuua*R#IQrcT)i9ovKu1xCJ)W+9Gj^k+?+F`++(gqwOOkkx z&I4K5=VyF#3zAc!`GRV$a2{G1STgvW&)4gzvB7Yqmc z43Uw=l%ifLlRe3DKE#3hI$2KhTI;sScvsn)UGscm%iDTJ*&o&;ci8`;V}LtE|sa_G7qAe`S0-eme08)nk_cU~+D-|&O{R|d9P zny`6o;&h*TLu#h3gNb37z#ph>b*tC-#5hf67SKqq5uYB3uog+B;ailaYY!vs`eqiF z5VcrzxajdNU#KoZwa^Rt@P#dhS0=P`H4lAINe}^oXPAI{DH>OBk;O(uQ`M{zwXp%q*t-cnzvN(tJF_CKK~|SmDrG+Hgr3n?3#X_{1{+^kxjO#n);smEsW=Lf z+Z?znt73{R?$0V)gD>TenZ!LN8j=K*kVT<{nJ4tp9u1{GvU_M+A6CR0Stx+oFzgfR z9;q$a5BVH>=YVJ7uy3Te>zJns1u>#F>4jo z*}dju;<|D_2smIW>!)@$*a{OSpqSZeKe4p<^sQnpJGIw}o&VeB;0`Da^R`fvqeBn6 z?!o>d!8#)V%!}wU_zAAuAK2c3svtYC1Mhy&ZhNM<#c=RJM^K(|Hx?bb#j(OLSu&bj zumUG(lGfj9{GAI|KRC$6a^h6}j0W{NK#PFsILZiQNkXuD$EG&0nM044*>GgvaDDLU zO0i2Xc=#ch%O;xbd*kwwd3$FGA)lq}xsupBG91eNm1%=Hc+fKj$!&ntG4?~QdlIGv zV=B~22Kv-^o}150e`=us5mQI== zmn|!lMsUE_nFQAC?|?{5@D(R)!9c*2jF$`Ns6*{^Tl);D&S|3U8_OTh@lGyh_f_!1 zU0NU8)l3Pz)tirhuxYoqFzk?nV&Qg0R6C=WnA`}@E1}AJmv2;u5L+z@Q_BG`G{X$z z*KCI7YQT?Wv^g3P20H*$Sr{<&xV*UwZSV5-e6XXZ7lXh5DxUsW=oYwQ@WJI?Kw5A#n@hXmfDV765X(B^7uJE z)>~kEXS=-qL;mv6yCoyvwVi6BYk%!;@{BmC{kg=>rb!!5Kh<3Cm^#SH)j)zwy0s~c zi#VYbbB<%==v7_A5`~tXV66On_LXTIE?PhQF1cqs)PTx4++E_%&^PoqJEMA4TNThD z3hj$>OnpZ|>mE6>5{`~0GO3#Y|LQ!>o~ z>;ykeZhCS8=EY&h;MCKwvs0nLGXH|ExU!tLSB;~t(L&7N!l5_a29w>lIC_?Ad(SO- zCcoKg_=M&+_s35pS~?&4q|WM!k1ykj<(sRhhi;CL>!9XKt+%5TgyDR`#qk6(Qw1rO?Q!~pjM((z7+fsEpX|iKsEb(9g=R%#`2*Z3rqpF@$$w=U&V1E zEY5K7AAxLMaK`en@*glMGS?VnVa19Cc=foZ^w*6`KUU)u91>54Hj9aL{}m&X)Yi+k zOXm;!$}TwFf7!y1#LPwwhx8w2{a@tnl@wS>zf&UP)S9})R~J4|-<>DaTul&qChm=6 z)Jm!LDM-9*?~;2$BHxXAa!NOj(kD_Zi-ks<9;f33Sg~0?^xyl_#qPbr z-CmG{-jb%67Ou-0$NeYBHQ&C<+rBn=SuB1;>c6{ltcLzUerFQ$SWitEuv94;dAW?3 zWg;wO{Lvj1kOppkk0Rt(SP6NRLAL`8`|pxKEZCmc3e1hGL>~{VSaLEWs$X$m{O9#G zM&`WMg(#U!i_*z{NH74rMAWp-5#NUpTDiuBem;$zncQShDtu)$BfYX_R-nP+R50UG zR8O3EO62lW`pifNge6a-^P&bODX?5_FmORK*@1-wgl6;A4=rIONLVi8TO2!3B}S{k_Qmb-$GJ%Y*dAzn%NcdE z>mB(<#>gP-{fqttP#LW~OQv7{g75`KE61|=`r_qJEZgjNYD?r%#Q}Sk8-)nn_j3-N zFXo_Yn)P^n_wIog~X=k`v8?zJD)}hcE8xI+$Yl^&OfsikYDhW zcVNgPb@QYkQ0Cps@U0QinBx@$lpdT6j1?p5Q@3b`u?yioZHLpod5Q46N|5b;DB>tT zRQT+dtsxwBPed?9cY!{|qTOU(R0Q{6uPg@gL!h5k=4jy=RW@pSOC|O5Z4S8H&5=Gc ztVRg@_apKmV*C&V6|iXsc2BnLDeT`e%sUUi?;l)vt3vnS{E}I}!HD3T;+^*0Hb4i%}d=L)C?Dh0n~$brZFm%rx4V?qd0_yMJbWwz$YM)kvxJbP49} zlF`r$_|jUnPcGQLt0rQI@Ouzj?eOUyYSM-Nl5wF&d-iLaF_gkb&wX9za*JZwYg6Kg zz)@z-S10-9Nri4S+rbXQ6N@;%_MD|nMPwvm2K#m{#UcIdpfP9_=R3Vm>N?R`CBIB8 zh)#v|Zf8?*Eq~omi6|xZB%2SsegB}JJzdnwJbYu~y-HKOHl8-M*rm_^t;Plkt5fQ7 zeuUS%(biW&(kd&wpqvdX=zZ8z#qW#SB#wT@i3MX{cK%$jUvF2qOH!cNEMs<>t0OFIPW>&C5OB?NnW0w{GlMal99+XO+ZE zY?G?H`I&J;1JaWk#4C;)u<13Cb53U}?6o*b)MLOA6EHZ;{8P(5L4*y4*8%3CV>k*y zkr?D}OqKI@us5K4g3DvAots->tuCo%w7L1K{l-_p^r7XV%_ci6*TSk8&3%-L9Z?0x z@Z|!fX4}L-GUUO@!Gy(B9?}RM1v%M$i7{IABKrDR=ZlaTPW=d}KIcoKtG-&o3@mg? z;M2h#rm&gp#PxQhOoOR~>!ri#BC1q(bMl0cVV_pR^&62BnBuD&N$H$hvRHwpo$RnX zrKsYUl!Mb+tyHUy@312YlyBxK7lkxrz&ePBT*0$#x9#6AFopczGZiHTo-Cb0Vv%XH zeHC-w*en`$ar@Kjq2L;95>w8QesAkyX9j-TG5vc)r>o68qZ>RXbY)q5FNwFrOvx55 zoLbFCMFp%wAT8J5ucDvVQo&U(Ti+qp;{29z1%Ps{wRpzt^rgi4Ia9f@>ubZTn9WRQ zvs48m)&3JMQnp)ZUCXgjCjf2CN{*dJrOD`4dtohiM4a^AJb6Yy6mX2@-tr?i-9ONt z8!BjFGiGoSjRiG|8Jum8N7K}`P^%wsM5hXXRc2dgGOK{NA3Z zL58%%5;GI)u`P3 zr8*IvKA|EO?+M|7y`*ytVwD>6`kH=C$@Is-KO4i=&j6N30vLjG0l* z4WU6EGki$V9&O8mNdaILDtFz3K06nD2;>iPh_9_vv=nKYpl~vdX92p4M(B)C+cSGM z)@@KQu%EZs`hPo#lj}jBs>9F1EFj~c(`#4zV7km%iK73vE2R3^?!-;CV;0C~K8-IM z2jnb;3L%evnVFaVF0$d>|J8Xbo(b4D&&jc@cid9@4LVonQRo1Q8Jh%D@Jhvaf#}z; z%PS7BlI-2}hwi+sAjN`tO@W^ZHFA5S|9MY24!o$7IrEt|EdqHrc?jJLt6wi?B#{Yu zQU7!hZ$I9p)skWHRU!N?n&KdPotcYPM@jK$6p$mNSeb6NWIOBtTU+-RzxdEa=aQFh zOr7Fa+}n}dC$mFehG<;}hC(g^`^E?^n#)u|cUBkEnpuTTP{1_eG#TQhH`PQjoQcIa zjbhn{h!ti|(32!IbAE~s6!?>G5vU^ktj*qs%4r z?_apXnI=3~fSY{=(_R{q4p(p}IuG+Rb9)fN@#k2NY1&#XXAaSRmaJZp&%?|%T1|HpdZvnwXCUnaNkNEy*dh*|I0O(-7^nTp6qalF_X?9gqFg!nr57f^n>4)iTgHRj z&7BOTh|{p54$%-oj=cfz50ibzJFE;E1b*J5VY;P|^U6V9oX-w-#q%r#nTbiMB`u7H z-+0EGH#t&r^y1c-nzX*=Cj8$d| z8KbP&OFrocEwjdppqZh@G3@Bz7NW-g=e4f7MW74CKJ6l@lGc~O`?o2s zmWe;~2Y6A$ePARcpR{n5y|z=k!%+NsB1h(nbMbB>Sc!S-TY}sZ*KO@u@OESk#U}>c zWS`}p5yy>au!}>PY1q))e#Ix4zx6&^K)73{(=j8zi#`_dmA@sdk8_?gk^+7)6*XZ@ zGk&+FH)b7d&Bk~G{Fv!#ms1C{6WQFpJ{zHBF;$)%4`_F)3F7~t`#CesO~T>kav}L@ zGgEjXco6l(O=5dY~t}rs9cy~ z`Uwcdj>`uWghUAQM?mm5+~Apq6;au^_9+iA!p4FYMUV#3<}l%^Iq&pE?XJZDR=L|^ zE-laD5sBZs$o`ldica`#guVV1nq@aLA)tVf29*#6zUK*2ahcNr-(ba;e^JKTrz&ML z5`C`}(+wrGo9E6CLJ}?b-@HgHnE&7WUxr}S4=M4K)Aqc!eGkY}b=W-7!D_Dj(n{VK zKT-}fm=vYMTx&*vQ+JL+=VM+WL_8=Gzkg5h?)TN=ky2+<(1Bx9A3HA$a`aeAf2xv_ zF9ADB1XcH>{vk}h;y>~%a8rbsWHuuGBEBX0&{3 z@ege!|JiY!BWcjd(pLkLHmE~}r`G0pT_Z{?G9XUNGfV#lQgPiPQdrMDQ%u&O?$zcq zox5B}+u?|z4MB)B7EFU2C>ivPKVuAva?H>`@I1Z^sXhmp-~`H@Ppi_UwGZhZpNg2L zCk`B&P^yz>J@DKup8n%j%pvc&E!8h#B*$$W1Lsyh^h{m3P-dC_3JpP*O%Brz6-h`j zpJ?iaNW6YgGP@nM;i9!Yu&hCU`ld1%CXrwk*l1JEIO=*~EL(|DPacDzkgqkT>5+)M zbZxwI`C1|{b$9{h%9J+36AxV5E3W^>GDw9(`wn<<-C5F3o<-uLv5PxTts{~&gzm*mFef_UeG3E31$$KUeLR!hY243Mws{+bdwpNGlv9e2cvANpeUelvqLeO2`Rx zr*k5D%HASmWt%VIUFjY{j;Y}*)>#R7x9rq8V_yjT;~^q!Hi`d@_Q%MVPWyz`&n0L~ z^|#`BHbeakFd19YJj1>qZ!_wVSu{L_cH(GRMQC5j4Y$MXMH4au%`*pf_+(3v^`BRR zmx$bM!6`)CK!s}NMvS;)y1{y2{DatC5P{9~PG7Q3D}~|*Oz7P81Nw}2n5+^f&^jCM zUcEyD14mJ9TaBp+ZUFgEfLKZm!}snU@k9}Fk|J6`;4CAbe8kmXQXp2 zN`@HF3|AsojV3oRQJvL66VF5i2XoHV6~7t}PQRzoc@?a@3)3CA(~A5GU#%J$*4dV! zv2>EJkMXt5Q)=wyba!y_?-{TzC?~U}sXX{#KOSrjCpJDw3l1M3d)S9oMWY*>ToyU> z6*Wst%@N%O=w#FT%B@o`N;ra?^o&I+#?|!+VN#B14 zg%R}SMer+}1M2Hmc6Rf7Rw%bfN#M;7LxSHe)q2@=)gXEJg@^AEGF@Uvxkyxhp`(v# zMB^&P;aF(v+~LT8uADh28`iG(b;dC*a!l4wVh({xpE=8?UY(m{lHBO2x0XaUtMQJr z%ofq%_J3WMBnW?en%wocH$ao_<#W*O1WfolMq}%b)d&K-B%maDZt8}A+7ir?YG$)~ zjZSVm=o${_^$bKkBM$p-NhY7PJo;juI8H>lah^gkhV>CiT07vSPGPjjzI~oJIUHSK z?(`CVw^!~h6&YB&aJXX_3~kuc_Oq1&5W+BQ27U3Wcc~wRFLCiapmOk{#Q%ChBy7Ki z0I!!f8MoZ*sD~{l!|k?4k9DTqm3?JM>g9AMW63!>89}5sk-r9CYIP48Y*ov5G8@(g z&pq02&dCWz3m0ORC+W3PIL2dfH;5KD*IeeO7z0l2nlAlxcBH1_J>qFWYE2b$n3HO6 zwk_sR?c6+BgM^*ovtY7G_{uswkB`8+d?r)(zg*hk+LvgiLEMk*)Dq=}me#FTRR6L_ z0Ma)>SHA&07I(t@gqn^-1JEbUV ztWf6LrvjR1MkhVyMP0j@ek?nF-P985WskLE)+pgf5t`ogwj-k{RgOD0pW}Q-F24G1 z8jNH1K$Fxf@~6}9Zo4vVbvsjWjJ$MqbG&dWSw@_c9VmQ|C!lf$eSny?&aGcFYS;Dk z)f8lt@$MMO{_X?0xR^EBpwP876Ndy3gldZG_<$zKeezd>SR5V>doIGTVIpn7L1` zCF50lCV{G6o~j<5sgQ2m=baUT(`-+Wk5GPMLHW^21QVJFHm&?|4oLUcJtd_ES}El6 zlqVb>H3$HmF|=RFledqX7@hD}lOLfBL6gbEV*$MjbvE93vhnK9D$jM9xD8AG z8buWJ9`uS;8_omIDuZC7iC5#Fj6xOsE5t|QQiSy7!oc@M%fwcyAx0oCA2Y0510S$1 z#o--MjyFqQr!FO+ubQzUwuw~bLqS6;T7AU%rjSXix3gE?DI)P4_s~mQb?=GLvi_yE z)2h^IjBI`kMd#O>r4O=d4w~h#qVQ*G8R{wH@bYF3+O1DDYVvM8Wtes%+p4h^p151AW1OPc2$|^v;#9rinRN8$yVEp`et}_^@N3u`}nb!f&yzc z>`h=d#~c5lF7VRh71bn-kpdOx4U-_UdayQ-Y(`QegrxBs%U2!t6zj$buh9>@TdbtC z?+bP-Q*?FZB*iCr1?kC_o$iG@cQr&3pDPJX?3eW#`SyF8GTaY65ad-gTx@L7MCS=0 zIxc&G_Vz}wimy-l>qYrmyLR)?+jx`V9o0|OB;KbtcEzfklS$?_EnNcc6BXt8-Oc>9 zgZ5QvXys1Cd+hFSyHMJ_dW*MSZw_SE#d9I7++Uu=sElYi(83$gh~Wy%Kvvj1mmNmM zw2GkmP^^?{O&=qN&5z}UHT$YMmMHSn>h2XZAMuFah&0ya$Ms9%G&^0;zg{Lkkxz)m z9zDOFAMkYHoA1mqsH?lc$gWLqmspNLP)YX=9k+FkgKxqU+J{n?Dhbnxl(Z+f)k{Ou zwXB%xq?_%^j3=vze-h~f(k-jmyjKeeWQFInY^#Xs< z=1AZ^Dj4e!h9}E6uhaX)tud+@NIpxJFpTHE$PBq4&8l8!7de)>H<@I8egN@ERGHB+ z-J~KsQ2rYFJWSB2g|sx44c5lZqGIs0H0|G+hAy_2`?Zn-lCV|I^b%ajP$&N8I0736 zq=5S3YhtlRX+S@ctXz`7+#KvusdQy@F_2PdwmRex}7h}Yc1FdL9nS_ zL>yE+y|Y_4b)0f2HReh%{if1lqE$N1+<2_ zjDs6RRXB{|m#8cWI#+awzrE#X&8+1v8VQM%#&&GsyBDqbah}1_?AKju@ask37H~qs zS-P8JN( z>c)U|A)C#U%Ap@<U%UgeDpBPvQl-ZfU5?_as;`=f_&E_=b_L2AA$gP{HxZvL=Em9V=%&I ztHyDgqC!9nNleB&*NfI4N1Zqj+1w5yQNIFA!|;A_8^XT@5`Ea4j2z;x5?^g=p_vWJ=;Sv9ek85!z6vS+^ln3x^Rn-=Z$d#gh7X)7C7& zWz3Is3QR&n&&QktRYJC9X(erFE)&34y1#&Y7B@^?zm2#5<*A|n)KdFdUD^d|}?a=zGIR%X|{PT&fX(%-1J9eoLRww|A&Ln2exP@tIXs3vOJv)#T8?VU3wjKT;7j z{$7Fx!1#(gp=itVGde`@1C0w9!XO-7!#S-F`lsW!>~mq3=Y~C6TNYS_W#pOr%H#gL zxHKsuoDzE(n)IB;+Ls=n9w|O@kT)dWb8ZDQO_Q}U0yENW71?TG3H%JL2&Mp3dTh5i zERk(S^kmb-pB2$_6qg4lzwL9K!ZC^hyw+0B2Hl=UCg~mg_!A9-Tauty8T4OGXYe-9$^bcP4*oQ_W~S>Yr=Rvr;G$B+X#MUWjUex$Uk9~%d|8%!3SvAo$9*(-Iy zE@j}ywBbHQXNq!Cnm5Cx&s-l1M_dD1h|>C0D9AhU0t>Owj8TuxMW8X&*(`vZNa`Pi z7%VOfJFs9)L=fJB(@=fXP9zoEt(`H08!J1qYhuhxRZ<@R?CTiNQPZ>6bl4qwoTfe8 z!j8m%ctOWvZs$v-kC^l`%tz2Jj?~;QhjZ&EDv~|xG-NMgJ0!h-GrI=^RlkG>*QB8J zNe)V=Cij?dW)ejahxYZEm^Ckzvc-W3+Yx$Gg1gKPU(PfvXHEmrtPB$F*Fp>W+jd0@ z@~OBwk$q^MdLpB4s?#rEqgC>ES~|HCd|--AWp4Z59PLzDLg z7J!)Mpk5i!w%N?y%=ontnMM?&S<#?g0pc|$do4_}ALf0RS&@%(Z#mZnV41i?AY-b} zlEy+WKD;Avg32>z7S`agp;$iTK}0@5fo_WtXei};``E57?eGHs677rnPqa7ZQn28? z)MKlqB3N%6aG9m>L;U@3hUX93M@LyDVZju$#>}*dy6_Jk{|?~Nt|n}a5N=?Ds190$LAEUNb3QFSZ$L5!g{~=5Qo+pX+1;%D7*wx1pMe zda%!$lP-Uf*LcIEUxGv~h=ewvBC)c*$5{#E3ZXoWHLf4si>9vojq3iitUog{byoYF z6hr(Xp%}r2iOvSBihD?(!^?i&05qh&t{3Ii*PFpn%?Et5i(OXzu6nxuz*MT5+EiLLK2x8%nDJ1HytZ`kXN)}h z+GAzHG3JG&cP%G_f&CqMl_JAbHbJl4dC??2nbciFGEcyW^)YK?o8_9JGeyqj3MnCD zpXhd9hfZItvrTF|?PtshN$Mk~l)LPX!q@8iY~+?jbu*WPHQ?Np^CU@V{6$>mosVH1 zyl}wF@-tZE+ z=$D6Gn$ChA#J|t&7&h~`st4MWl}2WVusa^!*f(>nZOpiRJX+%Ind{T&&TJI^d2t)v zm%igpe5)L?{_GE4#K)~%59P&-QLa+ON;L;Y$7RIoyo!tuk*Rm6nQIdcBsBw0JhFv{ z^)u@*@ZAjrMQOgX(ZxcI{q#5#GYQx{IkT9qLw)bR&xf)M=)Hg1xnsHrrlgn3ODO<% zc>8L@!Z*mCT6=msph(y3k`&<6Trqa;$RcS!1YiS)jof3zG{_74$zhk!p)8#(A&Lj6 ztVwjh#_euM2jBZr`_6|}y$yL5OJ^@jM3 zX#&%@cdlX4nA-yGb7;qmbi#$mW7TeX;$=HkcE+pC+>K?8-#Tm8*ei3zX?Ps(2c7D& zSY!2+gJd6rcFAZ7F{b553pC7TWUTeOp^aQ$5$;Y3eXCeWj|WX&U-+|f=Uoq4-?Es{ z->Wp5&*KJi9^%IjENU}+SAn|W0BW{dV8pCRFDPq~>tD642I7}8N&)|pqPxt2)W=xK zFy8{q3KCk_Zv5zrqA_XX)#8#s$O5O_Ft~gEB3+B|M6YybXW#KWwGU zd91XCOp{4OgdeVq_0p}M5hZ0)7Ot<257Ya4wHH3OMcCX*M^m+SbUq z8lD<0#qQRaJ55r>?1&9Q9A2HttB_ispEOk%2?EASc1sH||w-Mbk`bo4{ zA!fB|*bK$$SPXL7b>x+pDZfRya?$J!RnyG1{)fG{42$bo_JwiRV8I6nmf-I0?oJ5q z?(Xgq+>_u85@aB_yTjlboZwD?Oa6QBbM`s!{&4Pd-+S)8&%>u#tEYQ)O-=u*YgJWO zWu$S|#$7Iwvc9**hony|&{2am_mj zq%xrgr`4rYXh);OVEDUR^t8q$^U_c*>0~ch6YDh?Ee_e$*kgC6Foo$cod&@o*XGW19^erOk|X~%tl7*<8J@)HYN$71>vs=5G;XPt&QLHUhvy=^d__K~h@ z#cx>>r=1-0cpWjaajjn!7}6uR({@qt9ie(hYNt2>VYJ&-Wn2s)yCdOd$$(t(Qw#RG z0K^+LUs5{QI&Q?w`Lw{=wdQ>JARTDUvj~!BsZZr8_L%DBzIZhJeHY)(I@M^Ov%9?E z61UtcX$e;oHX^UJzMS?*uPUo7H5hJgQ~dt9;$XEx93=FCXknZ53KL8W1({=3E0Lcg zry!Bz&!f$mO5hGpo?sa-Hz{kcomaOU=rBPGA1jnNj+S?&ANM@Zv=_k<9`j404Q9Ky z4K)Q`p5u$jm_*!)<07Y2vAcp?$ggt~H0ddJ^fmvKmF(c=ktd3qIL20@>UkLG6OV{D zr~zs_goqp?@*JHx7KQcv`%qiY_~{WK4A~?gy}O>gKWM!&3OF^RJbhmp0h$y&2DL~x zV=+9<)?)x?k=i5ccK9U&^;7dN1uw%fltY2bynd)QcMEs{aQmMZQqVouiCl{ zbXsoPe$R)j^uUu&XFV7720EU~rqZ?^1#vc2g*oB=4!2)J?qy%NPr(ozdC)WBbj*K5 zz2|z;Ei7EEJ0}&{4Eo)Bp0qSN-+vh4L3@+Vg`c_o*gdSe>F+9s0p{3eowe-fcYUg{ZCx}Du+Ozypd1tVPCG}{Y@0oAhZQxgsQHXPM= z^Tr1J4wPv7=fn9`+@!Nn9-|Fi7+|52i8nsQD&C{CR-g^kd&K>^{WJ*qRl)QEWyg9C z%sm2{($LA-+z!Quck*Ej`|oAa za8pk#Hmbhnbf4h5cC20J?c+prfyqQUaZRuB@r-IWixFCy*O=XCIYbw5y4dBWOiHSB zPDL>t`}{CIy{q+27uz6@-X+UB ziX|>y#i%UKU2nPyDT_pV8Fi+9>2ILlf8SPaH2>|rrY2~ouF0zO!%U?+QUWIKl~uF< zYR~b&U3!1xAhnYaiVdyl@iSKq+ogbEM)9U1CZ?uFvOq2$jh%Nl#n5L9`Fsin zY3S8qzgQc&A<+x=DSpSlGclIPO#pgx9)gzw_MtbeRkpn@>_>t|C)?&o*F79^F8TOq zD(j<1OyK4uy8l#MVC|DMwN{rvu6n0U5ovjm@2e<%h|rc9&F;-l=U#ulDGm$Me- zQzDHaFPg&FymdBP$kSB;mJ81Gp&X0f58apya$_nl)_Rq><&>Ku9Z zLiDR7be+B)GNn$aphZb3@e_&jlW{v`U}Kj0n*lh{tyrVci9rz?ZnR`u6@Ql1+=3zW z(f7ybGUkG64AyXkg1>S1PGsJF=CcwQ8EcgP3{AW=RzdToz1NKSCCfzJsC;x7YoO#E zqh1Tjq|JA;H5jv!H%9tymeIr=zDfQ_M|`NFmYq&%mooxz!l>dH=`l@^0?j0shY*3H z@RrJA`AKa1jaY(XK`~9KzbHdtA8XFl!!( ze&Ls$Fl$OIdPQhU@ocqR(hoiqIR)>YMEQ{+kZ8aJ4%Wd*e3S_4n0#ZRY;*a$HyUpX z)p}H^a^%*2V?=9VIS^9Q1?3~(H!R!R1M;1yWRjPxL3{$nXPd+8!*m`Qyfop(VMTpM zi~Q?tGnuJh2FY`oGdk)A>%}XI5VUytfw1Ibyj7>_o`yS!~6If#EFjn>&D){ z9DQppbNV1p$i30!Cbz(|!#Vl#=UNRKgJ}I{46$c$(;M|oDoSnSOyglCd21Mz25NJZ zu$92Oxm7x!4zqD3HXf*Jw~GKD<6Sziy|_35;?Ug{PVg zv{e)6jHZH_LZNue0E4x4V0Wv-=L0$)y1pQmH;()`#YqABtcs@nT-P@~orMv$iq(En zw9{ErXu?^WJKT1>2V~VFQPH6npZP3`K14B=Nf_?@h)b5gs?1J#`8@cLkTrd=BBA46Vf`#Ax20drva}6y1^+h+eIB_>noK1j zjjPWRJ);73YSfa@blI5=BHz%5GZ8Y1c5{P+<8bJZBAjkj?)S%|6Awy~VPQ-|);c}V z@n8iG{*t05a|=;WSf1>jVeNIE2{+C$O6)qtUAt_5eR)h)s_Dbf5-ICtS+k-V^kPZc zbe)eBUl|AEp<@C+WFcvwm!kU1AtejM2#0F^_tPJz!ve-+Nv$H^@?ohzlQrplh_VhU zlEC&RU3{za)0ZT3LV)eoSy~TW5T8eJ4n=>|anR}gGJaX4Edz-BnU2s(Tiz(F&C;@q zp!%@Vl78cDfTF6AoX?x*=@qLfrL)=|sw0Ts(lCe{2Yd43=Tx#PJ1tHIfR!!I@PAd#mAZy(+H)TrbZ$<5&rwM`2n_~W1 zhBpi$s&;*l9q5QeA=({w1LEA}JE}ykRzGQF&RJg4tq5NiNJ2~}j9ui`WX-d3YCAL_ zBr=KS)%0Y;n0;aYC2nc=EuXUq{9XkVC5No&3e*jL>49Fa)2v8O9VbZ zieB?E`A|Sno->c*#)$i}o1(a)!N%9-I03CU?TJw_wXt*eA@JfuK= zFxzu;jm$vJ)2N+Q!UNIS!G1&-S}zj9kNM&qFl4UQiS8_n%_S-b&3bcQM43xX1uymn zYXGj}x5>RYG3@G6>bVWm=h!O5BXqN`Dbg>2yxpxTL+pn?{ND74JU&7Da1y*3QSvPy z>NHYv;*T!+4E@8oX_^PgZf#xdd!=X^2Ytvrl%DsX3_Cpz!|_Ncbt^SsGqpW$M{hBHcQPNMM$ClVX;L{PAIOlp( zF^(-FjO&xL^P%)oj6MjVhAaj;w-DYi<*9VnAfy(8pblp+u{B1OVFqh$WByW49_8({ z4~>wUrIc}7zaFR`q3#)9Pf*0kgO_7*2&%Q3^sQzol=l5s|_uJs% zi?PNI2tE7A2N4sR`E^(r^3*C)mQU1WC;NsizRJ~iU-RZU_T<~N+2QG~hE-$XOv?E8 zE>z`C(dGnDKR;g&!s)4vnhqS?N8#~o*EKLyEbC~<|Nc>bcbd@Jo2GSWUmJxk;?*IpB*7Zvi zf-ksF-FV^-Bq2_384G`wcN&OX)i3nAr~1bpb-=|*_%5%Nw>>QQY=d~Me*bRLglPqN zUOoHuZ9^u@vGcves)d1jSPq1lY57{7ez5C$-VDXuvX6ths|6b^x1TwlsI#xSFu1!F z#`;e_K0MkxP-kq*VG7#H=Of)jYhM#BG?=2B!IZOqT+m|dP~5l&`nJe6@?CW`JL~s_ z@#L}L5BGgviv6~;3CM~XuIoNfZ2&-r47b#KQquM4L_F7G|1z{uA3W&Ae~#?>@Rdh( z$X7$z;k?fmW6^+i^VBd%zc8)Clco*EDATseCd|6O>TBs{j~S40wMMZ(Aqor4-DjcyYDHv4p97JIa5mKd=MdKv3^-khsnHF>Nj zVB<{*Rry<==_|Y(7Djf_XDz9#GZ9VmHqD^x^EccUStUF<%?m@U@r2HUF0su42N@c$ zOg3Vl(JU6)psFaXFMu55b~%J4#02T4d)NGCOR=`mJZDVH3u|jbl^0(vTP^Ue+s}Ti zS%2&Mjr-|_SCxj#hP~Z=GyeCf7j;IimT_i-Y)sA5^2v#SCjIAc_!(Y|-3#ki@{DQI zL+eehmg#dwZ~TgmN*HfeKJ8+=yUfnZFl->lJqOF*G6H|?`Z;UP59Nl9)~ystq%TIJ zS9d)7F0*w}0{th|cDRQ!ZoleKwUuL=e$CTW4(Hi<1Xz3e<0Z0Rg) zv%Hy`0l5)Lpw;#1{!b$y3kC%>*k|q&x(k&{&l9jVmL{#6u9haPc7x_8< zv4TXUYe9+7UJ&M~Usd(DtBkymw0F=rhk5#nY%>D(5g>V?%IO~SlevHSNPEcy|Ob);@^GT#?HV%i0L3I^$8<}WLR6c5Z3x+`@%^1sNh{8!TCKbe$SSU5QTspJ*+-_tJh@c|g+ zOzq5FEC9?LOfQWp0LK4Pf@NlQ_Ln+WQl^&X7A^obZZ0Iof6uTC`2Q!vGLnD*lCz7G zsi7^B2js6=W>g3=2$;?wI8+Z$+4c6Imt)m$sM3xWB?2HIpZ47*ay$zyBKaW&&F9waY7CUKc~)D@a}?!>c%a z-6mf5##e>lRUvp)2woL}*H;CYSB2nJA$U~?{_j-?0-NIgX7pesY0#hX`B(OzKQ^7e z>T9ubGyQvgEw+DU{$c-{`A5Ri#>Ld>KNKDR54EmxG?wfLIWc_Ks?yt}p~TLb-(g-- z+L5Z{3qdm`gug>j6R(-App-qV6M8OwUg%x|wv-Q8n2Np&|2e|l-LxlVzb{pur7%%M zf%)8wTACSCxgS`;JhFwA_N!Wree2f3s(YcfOsBb+F}mctCYi_R*FmHqkupGZntaCE zH1DG1w6u|D3v~wjtR*3*X1lFo)~~JUMpxNl;)G(>Y_1H4b!=`$K!V=S#y09%+QuDDMY$;za5Tl6lEqb%r zPjeH45KDbw6|KW*f2W8;ieWkqVh_}_=^cq9E?S6szXf;tcImqt@L`|!1sg+8BzKgf zwDG_>o&9QZEz}r;H}K-dh2jsXM`+uAp|yZd4#8}%psXJ8+)$Vi7vT0~aEn*`gU=&QQAUnmi#e6^)e0Xg;Xg`PLFs626%oION=1zzW#aNODwv=%{ipTlMH+eb}Dmyi|3csU% z)-`9xi@ZK>qS^lVi4NO6C>*Q~H`Ar7ZCj_*3WNTcQig_BE#k?kJWcJ!CHftdBmRNd z>05NMc$&9{QC$Vfn0orjsj1u@L1$q3p!X$#ib-F#szVOz%L%?(Oe1^>586Q%Q1}pyPZhHyAv``o&y>!N!_OyB{W5`wAW;EZ$B#$ac(ySOheSFOS zEF~B;@!@Sb@U5xpn4Nx6kRds=Bj1Unq2YzxdlNu^MHG-WcL8KUlW5 zTQ`#KM1%H78kfe`eR5dd{~Si=4N|7LVItqQYivi_>SEO;?Uqe&lUjPpFh%O+qC3m^ zsBw*XHBLF+Rx(`JfoPA7`raBh(->ij^eIh7Em`S&G($#RsjYY+i(5r}$|kS>#TDRo z@!qatH{@M^q?^m;i66Xqa*`-XG|SIXNh?3$9kl|?>kJAMY=W(`ial&vd$@2UW!7jo zrdy$GNIMpwYNvXPebl;j26oR9`JP0w6S=zQ1=$e%7hte)gf7e;T5AOtY%r=f9UWcIl;e<@$zO>|GI zBe%`urX9u}Rq*(dLYh^zUr@eqC=k(Xh?jNyEtro0c-?=miqPQNzr{%KY!5hV`FB&EG7`N`~g9 z07fN4CsR8Y0LLFu^kQ^YF?F_gbuu<}ez8My{H;mU-p=Kv%b%9Ncak?Xu{0F1_dwG9 zBi1;%SpXc&Ec$<>lc}A_UsL}z_RrNH!?u#s%dtmO7l7`|rI^HvVcXQh1;8k6`!c`C z-#7u5_!oc)G-`@!S zbH@x|W@Y}zE$hpdEPpB-{;{g7F*7hBG5=l2zT7eW8OiodVw+cE?GHuKBV z{+U64`u>AK|7Q9B2aTQ%FaOLxre;)iHFEi@@&){zHdT2;XKMg6=ihlFV(H?nWa=bpZ|h)h_h%h&y>Ruf zjR%QQ;?IM`OpWbLO#j2i^J{_`5&{CEEB_$c4oNUV$gm^ewW#T9QPclZMNMBh|H}DS z`SXf`R}{RW;1vb0D0oG|D+*pw@QQ+06uhF~6$P&-ctyc03SLq0ih@@ZyrSU02?guC zOk@D^(0}Ee`{UvH(2EzG2bqs{%<#v0qTv626bLY_{7BjV7ly*WtbczDg>2lc?Ehvc{3~qxKSzyo{uPA&U(XlwpQ6V9 zDMtK%OTHLk)BvWJd@%;O9%jPLA`c)<;&}0cm>I; zWOx;auiM1y-uS8zK)osi|2+zUbN28b%fjEA14RRN*fe zfqrFWaQ9+{uq<_A03cby?*=z;3n|zO2mFw{7w0xN6XV#LRqOvIP)h6**D@O`1#>ctGZsO@F2U|a6Jmu=o@PG7~` z(MR|iN4buzooZ!Csh{!me$*n&)aY?9~=hz+-{0iaG_vuWX8x-}r&ePOX4>tg4g!u!@q#fy+50(@^ zy)UQI{k&wOIh#@aO2ep;{ygdsD#S2{z*es@Ft|#B3j9dZbCrEKC8$0NZ{O6*DdDtY zxL5OF4aKu%7O>usr-F%vQ36fPLG%3^?S=5iVRAR>boiaVOCJ?-_qo-9FJXrc4Clb5 zYmZ*np*N5b7F*3cWG!<8Kbv(#^v0Wj6l_C}U7{}pZ%vpDi}gFiu0t3$3%^5VCJE$s zFv8Q#+9v}?vJyu`?CU95>s3*bKEv+w+y4d^l>hQtd23-o*eJ|eu&dYTjXw3x1=M zG?{?q3!7H*t7H&WCZ-9Ai`3=@I(ulWLI5AotF*4Fuj@2ti5H7-zWQ+7uDgv&5Qbv+ zeuBa6+Fz#TaA1@g*~gmf(qHXxjY>LyE9RNh`RQ2KbYc_L8t>9`>HMI!b42A-dLT(# zoGmJ;diCpxzYa@-gwOXt(u+F$?0f2Ll-Q##Ik_>!^yTZ&^`7k?@=s62uCjd`&fnvF z(Tu!V!{t}3HqT=Z)8sAe^)b(BPoGZ3tvMO;t_&faC8h6>OJ+uiI9!JjhdJ%EI0~SF zDooEF^RmRmi%tAdDghaQY|y>GqswkocnG{R1!! zE|cL?=SWheTlNVofqk@ux#OpMmQ?`mUHfsEwfDSht03WsBQ+E0ikL4*sC`!zI9tTT z=F0TreP}<4S8v@x^!5TBTxN$X(AymA6_$t|O|y zxjAi5;zD2)jp;EOhZ5B3;3Uylbe|d5G9y^#Ouw`GBrM3;XBb+~G>Q_l4^=AL9;w!}dBeXnDky9+r3y4= zy|hbSRSWf2DPyz3WV)44fupfpD0TXw8WT1hMk}$VKnrRC#x3b z%*owD%g&+~9W!exz8v;f4n0jRzHepC5wSViGswTmio(#0gg5qXzLhE;`1gI#W5c}w zYAm_Ny^H0Y)C8rbTf+UE538VwuYn3QkrE(HU&_qiF!Ird8oM#TlF6Dq9>N7WZ|F+d zR5EU$clE|Dc*3nZ;b|zdM8(1785K&5S8WyuOoodSx6AV)PFwAJQHTG`60B1vqu3stC(N{^DvlkAL<0G${16b z_M?uMs_qp)hAEfXaUr6}LBr_NvNB^sw)j=uFVq1!`8URYrJC6u37c&2zbNSAtc27ihpWhVU8;IP|AGctzBrSK7fP@H7KOukFM1^WI?&?A%Ge#V&);F{`+0wOkI}M#=GNXIb zO+X===Oe;95M*(Ep1f#OtvcaVdYhlAu^Dy-_z?RWSI?SgMW4vWtoYa}%`%&0Z5OCQ zgWEo-9hEro{xNGrPucd*6D1S1TStp)bEQT#H$|IY-5Al8PIjj=snIk?^or|N{dV{i z;;Temq|9$le~j7hwK-=Zpwj7SiW9oE-22+yxXWUf&WGCUYT?zirgsAYG{nRz(!(T#0^ES)0?DmbMJ90 za<=sntlexAHN3h)y0Q^ z2_^d1?p$p_8E$N#GCym3SvZ6-d*lZi6@pd-ADH4RzkvEFu`Zzl+49BMo*~!4{Gct1 zj~J2fOBjj8s0gCHkreswBa4I(%zyIGH(WpEr5=MRE8intwXocj!lY|~(D=H1+tIie zyIf_$?zi7065#ZjV}+b_N8L|41Iy6@XT0ULBKRbgJK(@))@{T6j35(_5bXm=U0`{P z;W4MNMw7oJq(e?B2630GmcUDOCcWaX}b zV@EUJ`e5nMzw`!asVMG{nP&47nM^*ecX_FV;FQA!)qICFKOHPh{g$>hYY9=E*b+N+31hT5lz?3ngvBL)qr~=Co6b@9{E|SpTt#9_{_&1t;2Q60o zm{R>a2;PwDkshW&+a(Yi4LQW0#RYgveYbY-NFVKM`(SYdhrrRGf~|^SfoA@zX|yU) z4LY=W;WOf{y{2tLq0Nt%^1XK=*|MLq4{%I)qx~p^oyL=!ga97%PWn=Y{O9CMWk5V> zDk~6!d)7F$FT1VU&0?N#j;g$?SEnn!2q0ktC!ZJ~%@CrX{bOyO`+J}7Tm=jtogD%} zQavH~TQBI|0u!ZCc)2kmI^!_m3vt{bKqT&lov4jycB_>H!-WJ<=Gm*)RTeO2=t#`n zPk}Kh&hoRl{f<}m7CMH9`3X5ySP(sKVsnnfyUo`ad+vCwp~k<<0j%GXEDXosgM#V7 ztv`#9JNEQH_UU0e==Uk#9)&MTMZo~AQ4`S!7tz|WYPHjD8%IV72=E#uuxbC-sP$oU2xWG-vqIKtC*W{s9l;l5~EA?WJiUipv-(+1J{LUE71Gq{?Nt^Q@&OR0dGYw9Iw^1b!>JEkxfEQ19;&<>PFW?XmaFw;R$^e z+L@G!r;_bRj8+hPXdyH08N4t-Pp$`sb*B_3A|G@01T3#fysZs5LP`uBbwzxJQRU~? z*PD1tJ2Is(dcx3B@aBY*{$}PfC!9(UDlk?bg*9KT4+f^8OIz0xoYWXsUJ#P@d#?Q8 z9WNGd#^=Lx5gd?KQ2E^F*pHP$hl4@-0InVc;Kd_arjcA?hbtGAt%aC04SQcNuW02M z=-7XKS}nq4glCgy+3)xKUI~b)wm_VU{L~Ch7at19q3)`i42z`=Iq`!SOlx@^lv})> z7_9sSJS*NzlV>!tODFIrYV;53$91l-Xl6*l9r9vejoR z_{owFZ zmaRDYPBt@(Yc$OD8WFN@W!rY<<3PvG5r#X>_y9J_t^9sMU^ygaJ8S)$Hhjb@al`p7 zo?p=OVT7N41W|9fMbcK+q~F>$N0i>;%9*JNBf=w;S2)o|4kFNn%LZ1?i^+&q>NO%B zbYO0BCLG#Sm~jnAyfrmUh3X`ua?n?`h`2WEj#A8;^=@ARkunI;z5&@W^jL1e1*d?8 z%O5-D2Ij6ZT?tw&1hKOnSLm47FW9U4tbyL>n`H;zXMNd;1PH$0+tY|=A4UnK8@Ko- z$PyP09>3A{&@0yNWn44f3B!sf!+3XNZ2D$$-{3qaZd#nUSoxd&40!^y+u003qIP8H z;ptt)P6&@c*dp5DNn#KUnOz=xP(?R3g0K-3cq3|}yauvj1$0e{s0SwH0VRmD6T=6n zJchQ*Lz++EgRdaRDT_Q>_SnH>D{zW)jgf~U{Fu8u?RXf)ME3cqgh+)35i~YHYn~v3 zS?x@^4lPO4nij@&h`@%f2bw8XFU)jk@EB>LPI1N|(#j6ld`@Wq9rv&smv74+ErRF4 z2hbCN1hlp{AeFJ*spc*qw&FjYc{B8~#&7^*7estaJMRF#>a}p2zrs^4pifUt#sTwl6i-N1Ikj)BcuJUcVU0Xqsl;PNREb|bKV-czYo8!V_ z24J-0!*y!dOr&~jf5hBHS=hvc+AW9zvv*=iWQFK~Y~$-l7!1==CHJBT+}W^B_5KLk z6G&p!ut;4u7H!GO)e#xI+;BnBp@#v=22SpJYwk~DgKr~fea;ii*4-s`zHc-itUGH| zO%)@z$-MA#*BggCPp&e2j-|Aovd|O&LgaZ$azWG!Y>Yc>gJ7NJr53ownYZlDdSh>^ zF^luHuxq_=9RCAxU}5qJRf5Rf(g^Sx+%Y-e%B4mud=S`9```ywU$+*o+2Z*rcLiZ@ zkIyxDpo%0XOoQN!H86UVlkA;&93qq)(u919D+a)Wg$_ZelW67``5nNJ5(sSHi~jl=9iHO|k9 z&!iTKAJxYs_^?vu>la;lvl2r22B0q!jAYby%uIR(nWFOqxN zdPE-bN{!xo)j(wJ@zcuh#K?;p5)xA!xb9>F=1HKt2&5ZP(LEilhE9-9an7cdc*r5r zD!SVEw4r*7dt0D69omULtdw^OLSE)gHT z@}FrFZzNLpWyf`NGAtL3Pj-CK5 zoCfp$QMgA~vOTM)_t8yI0a5+4A0WDz!er%^k+UN>_**Cj=ar=fcD$s+ejp0otg*9% zoNi=v)yPi~4u{?pcvD3VITC@5Lw+_M6tXp*!I<7HQWv4r@U~VD|CKuB?>FmoYU+xV z0TF&bGDI;H)CIkJhn}HbRdl?XZ^|7hiYo5IvE2jTcUiK*JZJ*W5hPO}3rQgLD%v8! z3h&eWtR_QOf<%HmIC^vlf6c*}mr*)f`ltk>jb#MmjJO=Ek>ih2fURKy?+lXicO zAO0kfES`BN_a)-9m(_dm{obgZExCzJsgVk0(S0sNy5(Y`XKf<(PW1rhthRCsmL}*8 zs;rQ@Tl~uRS+-w*ThPMF_e;Fp=g{6_8FX+)%L-JbAN7RFXVI2i3Ucq1v9@|d()KdQ zW@>OLJ@pI9(!Li0>G4)3U$WdZCswgnk?fJSzoRMDs#-FSM|BCV5&rkH0hqp@6=l^kAEgqyat8aNGd+Sd zZ0Jftj~r`)L^hS+V$r&5CsaB=4)_HE8Gft=&8o=%swJGWYz{K2w7c-M=}Xp(F7(9m zg`r@R8g2`rl+!C>8!8Yh^34?B)K|rj2jUcuo~}?vUHSORKMJ;*49LC9y+9TDs3i++ z9iH6?O8==~GS%Zes-iN7$NyoYM~#UG;-k)+T-Nb=G7XK+uN-@hpS3Wo7N}i?F*h!0 z#bRe5MMARPL5D;O!E;&1Q<$O#&#LRbH57JH_q}BI#9&1hFZIf{7+5pN5wK~;X}$by zFOuzm(!Pg29zVy@T%#?#-}p$t zgAG32*~f{@5JlS+fJ~NOesaQ%`9wC0X-VP2Y7K=Vy5E0b6q?|#4C9iXB*)gD(|seP z@(Y8{zxOQqS~ZwSx$<317HCv`NM2Bri`0O5&;Y3195`N;C+|#@zKS6NWK>Qg3q^ z9{IJF*tIe1vIPss?Q2tI=i@8yR+i=!*BEH+u-w%QCz+?ySws4R+}(qv`Q#VEePU-v zEP@r|#YjgxH(T05ntcVc7r0JBwvL1yJU>eByzMmhwvhXYhCx10zE2_mb+u6eix0dy z%^@Eo{}?DiyaXQJwzwvcR_8%TE|Q2Ivn?}q`!p!OnPxjzsvcV+JlXD%qmi@3R$&yI z`@=8X?Fu<*MQatenETlXqfuGiTCZ2V&UAMN$8o&VlFexM*=<^((#i~RdcV?Yl()Vz zkzS6F*L3lql9!#40wX6Uv69ZRwC@)Wdu8gF#(wOCE7EbM6bZm%8e@M85o&3@Vq>Hq zi_!7}rbjSlN7{RXX^0KfF#aHYMHFkg0+(&tpqj5g#MVcJK7|nhdb+TF!80;eM24cK z$)_T;aKK1damrV>E#59>l6|;F3FH``?WhK8@s;`a zIp8@(Qw^_~D^mIMFU6JeU}dcOZ#M1KUZj3R_3VRtFWeDA5d%1Z6!A|ZG=Jk(Y33MNB+~tH8refYCHA<2QIu>kJjB&Ge~4|{>*2-fr9Ht_X$-sK z>At&oc~}QwfY3X~6&uVlblNJu;(kRjQ$You7afdHy0UA`qMd6Wxi{@L4)UTs=qLaubw7xndI*YYv*`2y=!z&TJw7iq^v6E5yyRviGXFQkE^md!$ zUG<(`u1R?CA)WI)z7SpBfg64P?e~vgGim^_4cteRm9-N@UWBQ_+qn0$vn&)Z90ZB4 zPaAWdh#X|CC#yP8SkjtUyC!=U=2Az>psw7sRY_;qH~`ek#x-5JJr;u-y|Mg!f_hih zcyci~pX!_&YqZ^?KgbkS4L0nZe9I88$*aPsyw-I2a!(YUJ6YY>2U8(7{Okrc8*`}J z<#<-2v^@dz&*+W~$`=0g;=mO=`GTA;)?4d9`u!MIScHD1XIYmN4`9(;;d9;b+KkRl@j;E)zv?;}F^Ng%|> zGRj7^NBhbMH~=Y(c2S$0ZH>nT+kV)iu_y(zNeA_1L!eq3Z{7)1*pp>E6^@3xehUF7 z*f%4m6rOmMW9gzQ8h$XR>!QBY?WIBJn3Sk5A^bJ7Y0SK>1n2x@e{v<}@J(A=!yL23zWMQTv)-m| z97x$LHy$&4Ht->?prq|P5S8`26ne4wu!aW;>gamI1oDJ~w+P z+ROY;p`@Ye*f0rK4))~2)iwA=w7&~9(3wcz)j@>ix`);V+u*5ev%?oniIHQ3W8NN( zd;vJImK?N(>JzdNx5Q&V$0&NOP~48|xIC2HofQ15&j+^G ziwlsa!~+c<%80@Xzl=uOgsilE4V+4x+|qZRSG!G0-MPkMCqJtD+1)IVees$LW4K!f*3zhkiNO-LzP>7k$yCi@+uL8u{m zVRbv3fl7%ynaJ3Eu98kz1?_jJNkXSgPWtc|h~L`^wA}h!wL3VbniTdDb{C{Jc)ksS z*WxkEPjeeZyIAG5hPnDBK__hu92E%Ar{ntwKCL0*M5038pa51zB9UlW@!xiiqW9_f5tW z0(xiagg|(jf2Qh;?NEh+q?MWS?w~e}Ksf1!N))?~E9F_0$PqcxM zN{FA$X~d(z79s?+u(v=-z?((|$A$w+Fn#DJO#P~@(JOK=vJLud&bTN2j!;#0xH5Esxu{9AbyB7`pHeo_o5fTQZ!A# z{%F?p)ZY0cw$U+!fLM4#*uA93HPJdKKMA*nyJg^&6bfR(?7cI)v6%=WKi8@fLQ z7rQD@)gE@P_87+sacIWNdd!)0*X#WCGc_UJ{Xmsy4;;V*(=x%JnDUP3BrNINeZC_! zQ0#X#Q6(fWROsYJMXmp^j^e`!RttD5cu_kd{j$rF00Q*fIfX87p^i&qGhqy1G2IM1 z5!{U=h2n}#T*K%EJ)rfNGKz{uh8*-@QjctT$~trAnU_bR9rXziyjOaSX@FS(r#@H0 zj+FNBH1w!;#{ZSgTJ#IAA;C+bTN9A)-jM-`< zcA|H}r5?kr8_nz(CZu`d{k#ZJ;d*J9R9l^}mdGk(_Nkk{$hgt_U1j>7iMfr_p7iv` zh!%@}W7a)kXBBgXP2t=($H&%JmRNC06}ckl%F?DF^fm<_<@dMfcSlD6`%x0xL$Q22Huq#)G(KggWt}+ z2$T<lmsBH=9qR3cs9;*(P}3#7mBqg>!|@yneQq_L$T^a#Ve1zWoJ z9M2Lec2^dBQ#GNwXP_PZb|Z64TK&5WqI2VIik+JgvJ9eNr)K)1R`$Fs|IL5hRJN756pLE{s6s2`gk(Wj*`M}^gii;rFFG_Pv%WKOWGQU9(-TKdF zw?y;F>hjMtgueV49?I={z_`@g_VQxAXd70Ky(#3OA3gj4Rm>rHQ6$>Vx z(d^5zazdY|IL0QX#`ia)rS@l>g0hk_G zFM^G*@auyO>DV2~@8!UR`C=7;R?o;TO`r&pCd9 zi3$S+KxsbVcZO+?bjR1Y_n(xlC97ta8VIL$s)i2(q2Zn_rtH=l3@c8p9Uz0BztQu| zaIaDgyl7CrKnlt%K35nyd2}O1U>dVR&sMZDVD)Dd(<+p67pQU?__{HKA1g+RCLhU9 zi^w{f7-DjZfwR{0yDMe$@ffu;#{v!>?PKcDT?p$EpAS}YMFmfesepu}@S8rB@F>r9 zmT;p}s=(>=2A4zNulJxYpI-tVqLOMQ9)P0@(f(-7RaqtzeIdG6Nh4A)t2QtW_C`{A zz3YIODW^=YT|YEymO9)o{%F>=!OnyIiznl|PIe6RFRz>gkdj-?^HD-&X#}&O>4NK$ zzz6THkh9=&uZfx<-+uY@YElp@!HprmMP6)agD2aF1fBQ`bY2)b;tJdrlJ`#^|KLPy zq2>zG-fj3zvIY@HuZPDd#b4}yzuRD}LWb!fiV^YSCFlsv&%5B7Jx@CD@HpMoZkP~( zyK8N}%XKLGJLU4VD+BiP1yRN=NfAb-GRL|cWU^zROo zA7KyGAsmRC@Kd!I03vdRcJ10%?IHd)sqhk7$Rx!v|JQ?IUG7H@+g|An+hWi{k=rmp+r0`SDAtv{r^%s{(nXY z1ZM_|h`{|o=(3GdQcZ^PJKsQh(9P+W+Di$0k-Ytwo#eCLxEy($u*0KDl-!6;(7nanc1pnCWxb*5(im5g|=upuoj@NGu10lA* zW_kHq{BI?{qT|I-ZEx_F!8{4^`@byoM9c7LisJozuXoMeN)n`1%IiUSfq?Qk-i5AB zLFvkdEn^Q@r`rFScY=aK*b3R-SfaX6uxBl5!nL_r@hIkC1Yz8=K`{6C{Epr^lMRD9 z|B{Kx^#2z+ANSv$eXn2KWt0w9Glc_Thn2!)6mL9zmaSU9lZp91Y6u^K;>|SKqQIq} zI^PnxzS-4j`dB<3k~StuLmc|gXQFDbkCzqMj%M%uuk3=`OEM|o8vdS zB8Tn^mhu{OyUYgEnDe_r$QDEem4IR0vXdxG?tg6C04s%}>(iDWG`g{9&0)|Q*i~34 zQ})#S8s81}0oa~%>20wQwy|^)*!#$w`ZdgLAI@97s@N~(!D3Ty$J!ZVbufRAO?B7| zC|rDB^?Oco#p1UXq7{zefoDQvvA7k9!>G~Epy@Oivz~We5`N1h;13XGVIURpCSmzL z_U!&IV8Fb!>5?vtGx^J)4@_kP&zL50$XZnC_DRIG-t(UP=Mm!J9levUg{tGi3I|we z4ZK077o9h5z0;Y>Of^jrwRo(8jw0Xmt+FJ(5APXrg8n7s3%Nw#TtrXCNCB$?bgbhu z{qM3$4sb+KoS%Nj-imn(L!Mj%Q%39by&+8svRlUdv2H`NpSv_aLhBTax+ZV-C08sw zJ>60`Q6cyaQzcA@+R)}_*`|Z0>Dm2TV-YtDl>?E25fqQ!EY{O9Q*FJ^pIZ@Lnq*%t zav`=hXwO*pYmgeD;9J~n+ps?n>Z$yc<$|eLisA~6>`JH|qdIW_uu}N&<>E(e&kd5!&}U=F zOx7{RP#g9Yu)odU@sPjvkB-Q zEjz5z2PKM%OrqSbG$p76uiGZk;Kjo6NlkmGAE4BP>irkMJa}zk5m7Aw!PnX_9T;Mn zK20yV>C`uSm>s<;AC zpKX2)j@0+W(l;IK9PG}g_PeU0Gn_DiWi{7?2t6o+^l4EcDm#jGvk^}1QW48cj66v) zu#|aEWPW}b2W6P2Mx5dB9E>x*O{zb1!*BfveNcD?(|_ij4Rn+6JctZI@35 z2f`D2=f*w|EdIxl{(_k188#;U4?Aanp{>?H;V=10N2{!3JMj8v^?Q|{&GfOwx0)cl z7f0q!uTz&IZe*OiRk&y&~SClghc3_s*N{xIIT5G^5-pMj>*KLE7;U@q^;dLs69ma@sCKeyK9WucaW}bFYyGSNT$oV}wQeu1qU3BN{=1|6NJD&B|Y#b(p?tI;` zc(<$@DtE*n>e}gOL6>+FOJv6!uXWQe;~A=wNAwz%DA{VI7C?h_`E)@=L-8h%@m0-+ z5+iEu3oCHmgRIH@8pcnUwCoxiCmk< zB}nTltGW?NiHn*%rOOE|W(=cCG8N&ULRU=rVVnBI(#1JR)*qK^TA!E0 zia!RDZ}0gr@m9zQ2b=N5yxRd7#Y7Omb<;n*TR-PvBt`ars(#YF{ZJ8TXNWYqIA_2*|rd!wFSYamb8p zZu$+YyY47Q`V(_wV6tca>7=)`i%T<6^M)0bDH{Hb&?jQ55scAyzT&WH_x%X9(Sh}6F;+B_IfCQ%=-R!k6XX)`FVX>y(n&q58m;oC#~BVnQS?jT`CCABe#U~ zxNy7k-c@E3@Rc+3jg4)7cifKVo5VlyzK*Kr&F` zPdi^>NzX0*nLXN8=g@u_t z@wly!7ZiVnO~=*~S-x#933cOl8DXO`kzqpl3^I@)444BP7|k{%)lG_sMV&uoL|s zkafbZ;;b=ZE@@6Vk-{KYxX9t~ACyV`I3C#I(i^C_Iz7JXg+=c#BQ6*bTvK}DO9_&J zpZdjBoRaetA>Gj~jm%F+WRRRVGRYaq{86D5K|91EJfW`zbv(cxsqm4;cXhqUKhSVB zI|YcDgW?%zW{TlU&=k{=yKYkhTl0iU;QSAp`~vp})oDW`#fcQIIo{Q z8=*R7Xpv@xV~mzF%;E30j60-CHKpbc2kG3FJp||xn)&Wej~dX=*wdrpe4oS&QS zDA4(JQvh%}n4l!ErB{dYk{ynJNWu?$a);8d*vh0g-i9WZ%0tYP9&qy6u|5J!!;`+p;FO9C^cmmDK;^(5dd3L z76}()MZFTsR;y1L@eei6>(+~E4=I^+Md)%p@*=Tx2$>w5nINJ^$s!+fat>JNsWL5l zPpZ}Dg;F4pf!XDT0^;wFoF)^z$kcFtS%dQmBhJj(xvz|GOyP$;^t9dd{M z*@hW%UT9&)zc2iMifyA?wE^tnL&| zszgN@Df?Tib=2W)-7?~n`{8R^PzpHC)<_zBw;%0Jtk-Hav)8gk5EkiT@X_PLs(MHO z%U)U5@-(g9Q-jL4Uhv#G+87evSk8uK8aE@R7-U(_9C1??R9tvER^1@xn)mn+F`1;o z#p)`aj`Ab9Nani4>>|$H6&p{ioaRUv0Yy!oCUf`4+40yYBVLzF0C6B(Bc4`Un7`^` zCmYbBTJ+5ZX$O5$p9ki@XUE)H8d(|i?P&vNT-A^}p!IQE+kgZfXJ5swiekXKq?(IH zW~eL8yGQExsbJKQ%WxQ)W#pj+is5@u2emRmdU*VQye zQ5Kkj9r(3viWOKz;|?DbsMLkCd)hYjNacP%t7mG|?6(jHCJ-@LRM6<|F-^doAxRcE z=twx`=B*w+f=bDKz)=|hq!kR)Ja7$LpV(NprJFK?=xZJgyFAWU9jqN~L5^~pusyg#jc8M2-5LNH(#Xio9FuWd1myy4{nzJBtlMCIHsT+9#3MCBgYWC%l=}*87@M`n31XcQx;iM86i+i zFHmgFj1`1IH7?2sncW;tXzF^ETC{#^-)@Z3=}ZD0%OlK-dAIFw5HGV!t}rn5-=32c zCH8L4+&2%^sc>M+N3h+09z=7zO#}p(9Hj6 zua!2NE(#0#%J6Ry*G!O-{72^4CJ4@|&X zlY{ci+XqQ)=wktHZTeHX^+Hd8%vyA%znU`tm&#iY)SN=~A`b^}M${#9K=K&V>cW^w znSx4@+B7QHhH){S$&^VW$Z@SeMrJM0rVGi(Z3EGfGAU=CsWYNI;~C3gxyQuD&i;`k z{{*$!M=)|yzsNiC5PPyy-6vkhw%JjOC&LhnLx!>CY`LP#o8#M(tQM48gg56=_eoxMU5;h5B32RoC*X^%63qvb=R`s>;qg?{< z@)Yb@gp!!tmJO5@WHy+gu~@*8+4%6P(`{4J%c8TcBiW4l0Tdm zDQ~ntD&4)ToqhQ;oIcO?>wohI777Qe0ff`R^Yl3W1N{+jm#m24FV)>pJ-Udio3bLc z`x5|k$5d6fHAeN1?|4o`B#ee@Mx*aOe=iP!J=%|}70>O4Dh)wJ=R_@ks_pR9{o5N; zFsQDa;yNr%=_agbj>5bedi_R(UA7K{*}lZxCH->?@w@rPaZ$KcWZ{i6>!$Sn(|d}O zu1Tzb1>`um(d;&1KG4cEDRnVEbYxJbAjsG7=Pz~IEc+Ig>eeUf$Ng~$fB#YsH3C(U z+R!`Lh~8m65-#AXo%4yF#-+c}{B|j}K7c!kk<(h~6$a5<@Svk9Z<5$(lxV5ttg!l1 z_ZQfPah6{t(mJ!W@7CHJ<|ivudy9!QoAF@R_lXeOktAvxZzSOb?2@!Gdmi1lTB7El zR$iT$k#1|?+?IS9aqF&SR(dD7{rk+F zp1y`i(9rsA_N~N2#o^GSIqAFgc4TN=QPAnxS9Hy5oQuD%qxFDBou5RlZ1CsSUVl5A z(7v&vY-h;KNQb!5^aoit>LrPD*Lva4@>Z^{np+r6yp&x8WkK@~92POH^#0P*XJ(M1 zj~K60@BGlpZqE~~8$}i)1j^kKcSp{iSfY{k!8cqx2AkH%RASpj0}5})o%oWgRK(u# z+D*_FkxTFLu|r=GcGOJ52ahw!BJFY70+=c~N5>4VYp7{JT34Ju#p67rBb_(%}$?n1)nsH!!KHE1K+HFih^wMgL9%@Bl~4AP`urF+?Jn= z-&!}}B%fhnU|~O-3+4{ILyOwaGrk3IX^`U>s5$tpsET#1&>W~hp(D)5i6ktCXTu3( z8z3#zMSgLSr;s}EEH9m4w!QmjHHh-w0t&C}$cbeGY0X?$qo`#5%a1Bjx+t#H(pD12 zF8TJ+#+x{sicFL#D;(3wmL+0)&`}B1n7>tf=%6O>S?SH&!3VgF3neIQv?c0g`2uqi zudD$LD#5}M_%4f9$+@q(I01O-h|Z^7AztUJ)_*|4QSyQh)+fP9^9gZkDqc5L-KwQj z=bZ85QM}z*?MPGr>dp?hY$(Q|+Y%I(U;!5!a~+=Nt$t5yYIL&_SUZJA93;){iK7| z&WusDc}QpYwN&?RSAbBM3r*z}*hp7jfELS!Xd;%= zc|zpstz|V1ONl+fs>$`ePV(ZiDQJur=)1|^2#dIztwpX{h5BopdR8+1HE{I4ueuqi z{Y;5kW1Gjk@}3Evc|*q{6{Wz8fOt#9P59*z!E!4!=$oE% zMVXtn$f2AkNQjEzX594#*I1WAn@37(6b$olw zE|w8ur)O+O3&XTmyl1L0sdamTMLghuYW!E@)LyUE^|zznbe<4xY3z#9z<%j-YKnxR zkpnjJfHhoUsXgCLT*Vn+zm<0WG&9JQnt2;7Pr?fbMS-VBqrk+ zGREXy$4%;TZOt!E%PGTEmahORv1?W~oM|xh3Ovnv)n4cLG7=?-Uf~j>;(^B;bjD_s zH&A$WFw~aO0Ric$-eMn_i!R*n2a^rsvqv*4B`H$VtD-C=^v1k8`>$1Uv}s8+hP{-{8x9{qkcbE#-P~egnD&q#N;=4=2ItZ z<>N}pRX@c%lwubBRAi+-TLo@OgeTG0q-2+BBOrxjEY1)*4Ulr-hOr$Z<_zA6iEEse znUzi!k{C*NQZlTQJK|Qyysn$JBF`9b{B(FyVRDK?=&s ziQVx->w5LYl?JzJ`sHcFAnLZD;j&G)0+mXaePFGm!SN0Z-pcfVoU`t#)vD<2=;tRA zSfhb9MZM1x0JvgZ_%Aa4Uufw#scShgwqpmZkU;b@NLWKQBi}+CXA8qQTt`^ljKtG? zk-p|o8C(-34y*3|BMnlN!#$C1Zg%Wlm!L$@rRCT6yH=7TWLaKw@vmtR>@Sg8t{?hE9X+m z;ad+ns<#;u!0Ewcg?s$nicaiCqDTvg?TpD$vTYY+$A;YVX)Et=qRxsGKj6b-iP*l} z=N%-|!D`w%2u6^*5xJLg)X;qdslSEj?CupKGtQbZv#vN`n!2D{`>fgsBsE8p%>yFE zl+{TatbBFxjyK43*^k!JqgG$G1s&eVKnY->zH+;}HL;4Q#%SStTee25>M4AS;?#W> z=z!u}Smucwh%6xK^Wx~4xX?ZBNVC4WENlo4e@(JTbf zx8xswMo?I!4B-nPy|yCcv0|VN)XOFzg(uo$$8NE=aVgV z=n5XXAV-vSut1s6^+1-Cvkl=_U*NzFY60{WK0J1m6@J*yDL~YG=#Ir#F?S|^FYpQ0 za7$V~?5Tx`8#PER2^n@?&LJ8)p6+q;{YQ9I&0a6m>3z952bV%O|Qn47LIX4uZ5D~hj6 zAm0D@lVF=HVG}B%uFuO+rOKq6O2P9LM)nsqs@ZKN<<&&+)BL_1t1WYf&2#y7ho4#i zT1bcbJ%VDrynbsM&khvc&+$Vl^EH<=RRWlFQr-F;exlO~{~^X+<|(gIgxTfVJ{UZ6 z?Z4-%ypg2}Sw|VLUs9U`Af!B^>5y$$YhLlxo#!cIh<}34XU+8IQ^^cIwp88n_`l5S6U5Is< z&>4%L2O=B+Vm7*=$VlEIF4(`Z9LQSNY%x;W6jz|)&FQU;gm8MHPdvlmVpVDYY z4%}Oe;ctzTVwxl+^k9*lpwDTRWHGitwX2jD*Zs;j0cQ*Jlu~7$-mWjrh%A zAVPCR>YBT;oYxK;5*iFf3^He#-*XX;B62aHsOuu*-J274gv3Qk?aUj$#LLd+X0c5G z@#_3&x(j0qpESG5PC`(+wNkmZ|2)-V=zRK&Q99tK5k8b(tJZWc7njp$`tBlRxE`5Kf_<$;qYyFtKSi)qxz6Kp z0@ad9m%c}3N&CCIiUZB!MD!BHj|OE0ic*xJ!bUN>$jn!2xei8@GynF@xY~$d9YFM{ zBcB|aU&ciJ8Swe&+y@gW=JTK;G$Hd97Hvz8z}pubt!+aFf%_@KM824|ts#Z(<3iF) z=TJW>fojHI@CL1{WXal285=k&%k&=!Vd@ngA!1KkHEqOz!`I}M?m72XonVq)sK^NU z%s^^nJ1-wwlttp^(X7bp<0x>U1*#rAh{sEb>?jQEZ0OoQQo-CFy-4#j#pjf#Zkli~-LDC>b=&sf+wgz$Fn#tK8rn*}#OjkEG zV7R3dehfzrDW^ps-5r+%0M@RM?ug$4b-`~~np{||F^!9yC(1z$rri-Are?a5T)L}+ zf*Uv>ncjYodV-N>x0Qaz zC*(`J3@)WM-*d=%9wJ;En(y=LEBe}$2ZOK`r!YV$kuRN@6p}AK#Dkt`uYTv=I|WdA zI3i*|Ur3@wFfCYWV=g9yFUkuF_?mzl&$r!SNEULA@;iyI=r_1w`%6Bo_qBY@-_u9w z>zLZ=QC{0eFMS>?pN=pM@q|v1rRedl%z+nyP&{uhWNP6rLo#bdxh&w*B%6rF~*47A(wofQ-jYXz- zsLwQ@J-=lmqGdKj3sNvo_@VSFK^0{LPuEEbdPA~hXX!=Od2?M_pYLDpo7<5m<4gc= z!l}#%fYXFGW@^HX9}-3P+qNOjVCB?Li)N5|Gpb!bKk;>j{vJQqlMGZL7w-7H0}b7x zrx?7$&G^G8Z6?)A*q}}&pq!pC_(+PpT+Glh+6Sn1D84vi0N$>PZQa(QQ`)iM;Y(~s zy+)#EiLgV}h_2Q2VT;u85Q(!8TTUZ$h7?Id2PDV%ynaCcPOr}>)7N_Uq8qF)t?K8F zn=xivgXv<<9(J5CMy6xIw^Z`N{GfnS$g9j~VAqqBVf{Qo`s#vks2Z|x!!lT|f_M4r zihCsiyzZ9E6&<_Ym>_d;BH7Ol1ZswE! z+B%jAVdYS(`uxK@G`l`;K*`QwZdR?z^5@JmT)WIGLMR1)Y|Y22pc@w{WYgyqgj5!{ zC|3cU-w^Vzhs&W6ooSfs$PG?>!)V)IC!W#85Fhgb|1lG+|8&+ZxwRYm!XOw7_iwn0 zX3IAN2j=ih@`|+@^fNCXC*t46pFw&^QGmKB8mnKv;VqZeDdcU85qqckI*11(Ha6;v zuc6%!a~=5syZih%_QYgi%Nn|taRa88KQ`XD_0YjGz`Aieh$Z{`3)?4Mghl}+T%Ut4Z<1ZHK3 zMmQGwv@Nt|&^ysbKn2#-0P-o-Yt?M|2}V)e=BBjG8teqqYa#)jt-dqo*R~#KluCHy zL^H?d?{tq>jg?JM!I5Bqc~DcPG$3^^1?(T813U*;at zc3OlgL{(>G#D0t0YB@j*T5&cg)I;aqck2(j{^F_E4y4k~YDsU3Sb(ozh0a+Z82#Xw z6WF=rWj!JLQpnzk&Y(7Wq+R@*bDUFDS&^<<>_F#%^G7q*_+4Okagf;YdTKQQIOUa5 zW^Cc{kK_zkmwb(ftq&qToiAesdIln@#;3)TqH0h&o{}eI*vpG`hdW;djU1=lDi5ABluUbea zSw<=h0qcq@J)GWaJd35J$BV6z9^v8qM<>#AVCT`xH6q6DhFrsk1EcsI@sE7B zPzGEe`xA?*^8{c_(S3QYLbLNevy)E1!}@J@43LGPeZN>LdOwcCpxt4Zx5%47cG+mr zqtwyb4f-BF)?)aSn%a@%VM$hUG%gI(tu|i4N%?|R20+&-rCi0fl;pKE^p+7flJk-j z_;Yrjn>JfK@t#B1?T_W@t2Xh0OL%vD=lpA@tMw5sTR5b=merTVS%!ezN2B`ksKp7F zPN(RI;uk}OFHE-qHyb2Dki-Bx&XwzqH{F4AaIkSZzkPSdAIjVH;v~oI%-nr1Y`-&U zbd6IRdS8LtTdvurYSa}fD&i<9S~PUE!5je?wP{-9KuD(09~8%l#51byEO$fI4oldHs_ZHrm z@>p0Ad(ou~|5^SFVcOY?`aA2G%?XZy*vpclU0X)8W$Gu&0ZF;l^h8X!*xBV7^KV{4 zk`KBD5?r`*sP4x@%OQ$2zu3}FU;l!kWV(H&O+A98^ zwQj|_qhi0~Uk&fGXTPdMUHGmPa-)^Q*k$M1+>X5xNj2 z7lBj>^dapg7V~7910F;KFjtQdVXRyPm6bcjceC3{=B)nIF|#AX9#r}1dh_#y;!7d2 z7aoWuuaPgg4_9*qc+qFy2@Hu9p+Pr15Ev>u=n48pi7kTO)BW+Bn@kCL2>$1w$YBOzd42|Lvjiwd>D z9Mb-TYQ>Wa#2JEBNV08_d6T*)$@VCrc2dEgU@Hl5ZW}*0w^F^Ez4>SW^u*-z*2$=+ zkaJcvMs8rgAdZNwPWP{Ej)g{B(X&_MLeF=l4B1Dq88rrKgh|{Uvj7uqeCsXC63ow- zxlhdbI2p`A3L0;#M14KK%z=GxLwJFf(z+CyvKs8KSTBCj!tpm3IQy%CURXd|{TD9lO90Mm-wo4DDL$jEw3$54 zE_q!0+tcDRdyeLNy3Hudf;k0;Ju_81Ae&k#5AjQAfUgYDEko|3jJ(uv(z=B|;dCIo zQBySvsdn#_img5}(ST~MF2sy(4 za})wZVlKuGcNzXvlR0-|FMeyVT~Rhw%6-XHTeWV@mG&|wE}6unHO8DTaAmF` zDV~42RPd5^I6?6??IV%yEi{m5%du@oA`cX@m_AaQ`2MTt(qYn5mRG9fG&wQPTBhr? zLZ{N@AJm*C?L&NtomtG>%cJi$WvO%q4pk$H6XiEZBgo~8z^r(}VuJwewf?hD0c)y^6qZAyB`P!_kZjt_FFGr zC_iUwT;eWi-PbA&0gC)Ofh;60D!mB{c4l|6T4xEnkxHA;A>Y7gpl?r`D|#qQo9_oW zrxzslFbAnyh5<0NCp*uxPx|Ga+swjNRF6+%H|}E2OnTQzo0Z$4;hKpz@=HXI*Iw;(+>YX)yHi5=ZM2YsWYoKo5t@hKI4mT`=c9gfZ49U={d{!zP+sxuE`$;R8Q|5upn^d zhtJ5|rk$O{!{RU5*%IfPKJwngZ&5A-&wCsvH?vBuCtArbwoKwb+^S*zvVhoyBsVV? z!EddjJ$dMCCR@FIVWmmJRts1PwoXSb%`9OVo>&jQ1`2-*iQ5eGG7q_b{{<78yj)Oe z%&#-Y;&y*6yR!EiyU%KM1ebE%Ml>@I|KJlKm3|2WNPl~ME~5^uiazGOL7u03gKu1N z)Zr_!`SgZ9I00x2v1>Gp6pamJx0_v`-fW3;l8J}Nbab2f^b%elMry$6ljpa;0ps)z zYZXs;AU$;KXr&8#jCXKkrqe75PEYVro6ktvbT?D_svc zv&7@Or|F`(r3X)!ftwvWo%DisStP#MI_aoJ0j)M0ApzLuG%69SOa1mJ0e*+N8cxOL zJo+jv_>qoO3VF>eYdF8hrLdxPp_Ib9{ArjW ziwzA&48n^8o9epSI5~NFejRE0EurYUyGIfF{2Zb0*=8~Tr!kRTXB%$>3>b*;svV>T zstJYL>AaCu{~jUEMJl^*rz{a)`^?kAfJcvEW}bvM4zOryWo{h)@z+qPD5CHFskYs5 zpMR!&`hL=_F}~zi9?QfCJuo)0_2d4p;bYx4E+q_UpG@HPkl*O)%L}?}uBFBx8^T6T zly^5lNhP$IVU?j)EY$G!(iD~38}$|YkTC8ff2+m6!64pYdSKB9OjGPy!U(aX*p2IZ z>(9BOTxX{B8*@{1`b8<<|3>2w@+ft|9@r#Kc#W76&|}F_TqAwutC};N2n*~4xAnw_ z9c??U@AAWLAq8a+>{`mscw!r(>7gb&eB?v@oKsq_YwgJ;rmr`XPwJZICJJMGe>t4Y z>A5`h2nF9a@f;8;0md|W`NSHSC9nCaPs&sV_^slX!NM*H;5pmI<=0Xk+J8#H%`=|AI$HkI+>>`=!}S z$|n`QqBs%^7=75v_FnBu-1sYs+3zpXS+xmwx7+szQFruG&xbVxa6Ll<`ghr40V83` zo5GT2>aC_yX1YQgLTK_OGde13@>^%HY!=svt3Kv;e?`b(Um2#|)9QA^?J;VG(!%x8 zRyO~_8=3Cl!r+zeUfaIcT`6Qn8f(=Vf8JSZuM^m0%@wM{WW&B4+GG_m_uQal)$d|G zyE*f$T#ro3W<@8vj9L3EXHhlaoL=dS9!2}!5XSVE#4ia?(Lj}W4Ff%3V&Fkn1vLCX z(zE%H*dm=K=LvZ+bhC=mDtZ7S60DIgVf_FHEsDxwQ7?A7JbuWJ-P%d!PhJGF%yNP% z<7H)7s#}0s8vDWua~1wyQ*@!Qj+-BPDs=-*r=9-(PFbie7&^H}=paL#q?`+S%F(!2 z7E=pLz-vvDIW2F)G)UoV@Sl_dw7iGLFTPjb*3qYtREp*fT#q*V`*S4pz^zcfiFTf5 zB8QuAS6UZun#Fz8z_DDl$JVle{rnNBsU_*e7`Z)N<>Q%%^nvvHUA(FhVCa$i&%P=R z9JbYPVeIVF9WJ!InSfz4sQzVk5~~1r_}ny^pW#9Zgw@gl?1yzYsFlu?d*ac77qss; ztjQ298SvmQT=6r92(LsNo{xqe4h!7{J1oCS3K-@8sQy>hTvn%4>67tD6>;z~kJC?{ z-R?-Ic}@&U+n(&1!cgEoBxP=O-3S22>FH}R!1z4i!$Y}2luA9q6{n|}ZX7NDC%Z}r zxx8lmC^C~})iHxg$0>>er&paGYPXU6g!(_l6`T#(d%UDRErcAqVsy!w!O!74g90Y# z=|@t%_X|+R5CDB~MXLX>1x~g@{kYv9^ce$m&(`>A3;so*>Bpv7l|lifg%g0I?gx|q zS^Pg*t2gLS8A7wgHpQb3Enl~5yS}Tf>FT|X1;YD4Rm?I-ABNw5u8H82V+nu*f!jxm z6lv}LKh-Y0G(V<=e!J#=Y<*gfA2i{l!qq-&;E5uD=&)=#(PqyH(Ho0P9)5n%6Nk1d zLQfpHroo35dFy9%k`&(==CbW~D9EJ1;aQR$<>OYqd=hPS%`JSQlF4>w&m5!zjwkSD zN?S~sT=PK-zDze<{zBRFX`a_cHF!H)WkqKI+mv}bu%Ew7BL7ca^|D=pideK`;$lDp zLobcD>8MdMyV#W#cDRu*Bfjo4Y#ol|*p)d6AP6}4v}1kP5%r5(zjn*$7~p6|RFIrEO{*Noky^K>T#%cZatPDRjFcScc|*f~x@N*6$wBot3Ys35+## zao}XmkBj|Q`tGm^%GTuxK+HaW;#4z-84*aQO%Z_(kM!TxH{f?To-^t|t3Q&<4F3tY z{``S7&V_S4Ez?w<6NVc)I3eD4ZhLzyVJF z>QZCv`p#ss!|*I{D&7UvOrSA&zBCk|KQeKB;mHFeM9Oe*PXuEguo!j6wazazl~m#= z4ZK+LX@&ENj6 z5xcru)z+X{uELhliL#wqQmH{tV0=o-SjwpPc3!O=wd-OKf>!F!g*JCq09)5n{bpt2 zy;C7gI~+7Z&O}+ zjUB-Id2tjOu-uEa=jyIEO+o}(PM83iFVDq99ykQmze#ou7dK1t{muP~R%<7*1cBFc zip$Z1@foJa_|EFnak5j)Py(fw94Wuryl-C!uyo1CgH~=)L*|_(%rE|`T2gu*v}RAP zD@|4UIG9NGF^qreGWMm1#oY|q7VTWiu8kfWCk>M7Zf*KC_Zj^Axgxk^qZU*`;v8jf zsIR9#Kla&y?aWuq?guw6pGo=R$JxT9pPu~EwL*y;`QBE-ui2oWcUtkj+gb#vQ1!gy zCtW-y|6ZNj0NAnt{+=Siy!)qA%|2J>Zk-z%XMvoW*bZ4>S)BPI`Ddv$>- zFCLH$*E>f`V~Z9ImKF{{4udR&Ih7v-qh`Iu|L%-)UWbB@lS1H`wniR#fTiRC*0S;?uCbZTj)K ziipEfYOgOH7MAse?&wbVyS1sx7(WMh=nGn2si!Wi zM-o;rDQI5AT#sNX(gIfj4=^N^qbpTpcJTA?D95D!mR{Kl-&qzOt*c%BrN;vh?8SJ{ z;Vj~R6m_GNmldUTZ+DypX9qf?;jmVl!FAIxafmmbF(L8?+u7#Ym7hlK$o3x_x)^Bq zA>Y0*V~uEEN&D`kmNtam;|exSim@-tj;A^|IU5M>6h}oY-XF(c#=9+>nGzyDm%X&< zSZDF&qzQbL9Ko5O3EJAA0gf}THu^c+9nukv8Wu*y7gEgu-39U6m}8l7*vZemy0}C9 zcyP_8oNZ1#suVOIhAcV+Cx4lnOB=?sRn#8sn=rWOa%*=_E3BU@VBt8KIvdgpB+mMO z{y~c8aVw+UyZYgD*#TWe*YZw7E)tY9gRu+ECK}^T4>gA+8iS&&EJ033fk@$(A3|}X zT>nW);-_JlL?zjmFq{r5QCkrh zJbM~#uMRWN4SYszW!|%O%u#ZSc4LHdP4R_wrW=egipeT-yj+#Xnl}A(ypi@+DXM+4 z?c0Y#Y|5v^6lfL_-hHk-o63!E{3F;LQa)KACb7oAw8;ePRauzI@dMVv^TL+RgfC-6 z%G5td8EgQztbeWaN-A#87XdJDhK|EbrQ~RV?^syqZ}nnAi*qr68jTWLWF1D9tVqD~ z0{S<1Mv{ahyNeAR!v2SyMYjqWY4nW#=DHZo{sD_f=m{rLUr|ztUI`P^Y=R|NzL#!_ zX;nS?^jTYpumGJ|8Q0{JbdK>`bsL^ojk9l(h|L;QB=;vLv4v*E{4eBWjec9&9NI-aW-|ftiEOVr7Was@P^BgYjus{v4qN5)6NEo1m}-4>XJzI#bSb!@=4OaQ zbsZ|N2-$+Nn>p8ce;ETZGa!X80;o_X?dZ8)yOjWs3`8 zQ!baXu$6OYsqVQDA z_VXag-x`}%6$cY@zBC8M3utOj-^?p=J{VR^=Z2%Qa%{rRv+|OWwGyUDzT5Ry+hijx z@cFS=S8Ho!DU?*@P?R$7+Fkq*6heH529O^a?w%7zewU-4W=twI$(>bumUv|O^??fD->x(t0SJ&QR#c{CkXutPUs~8+U)52={r6KWi$%tt6p&(Ls6)t>Lb955Xq!Fp z!fd8+uE)y79x<6C?#J$7H5OQCIiWpz15Qov z-7ne*C6SL+rKU~!PSJNqpcP)pU!JUhBkALz>=qhW9t0m*(`t#L?nE>Aylvkk!^D%e zWd0=w$aWtNKm!VR4piu`K2-lh7f?kaOEn^#SG$In+CAp@1D`{oU`+HLBJ1bFrbV4y z&!p}SNZNlTU65%)#@Pa{Dz+o>!1W>+7n$X%bm6}hPXIFQVdBF0Gt%s7?_5ly(TOL; zerCur=_-Z4?EU$kN^84Dk=(4o0D84MM6n&)^aMsQnm7S#uLz!~B1Ma?{Mx@|(cQ?E zHwLkx3C2=BeF2(=k=}XHwGLN(U3%W(WKHbNCan_Sg%&JHswl^ihy7(0U`?U>CofOq zs~9{_$mU3>>oNPTKVUWACnm;^^8%(I-Fx z!QI{6-JRg>7ThJc6Wrb1-Q6JscXxLg+?`9l@7;T!sPb5`5B@?K&gA69Cr6 z{^Ld|%rmg6skgpjgox&S0LJ0R9Vm(+hp(M`N}$f(sO3!1Znmsp#<+n#cVpE1ec8%f z^D!Dc0tT9G)ca0Ou*pN(JelH`28&|+VxMxE*~&uEqalXOCtc;V;}vU>$Ab*rI3J0~ z$0iVtelOZELz=qW95SSy2Sikg7jyS${&YQUp*tFd*4ov=i0_20uuU!rlAbR}H1Oew z!oamxK7|aXuA8$czwRq|MDyx_-}wB1F+lN|sr)%Fm2hSdELixbKztm(gWURk03v_1 zXASJYj}54oQ`)Q=iXj8D*rIT-%%dS*CK&y-h1_K@^dMAUquv>O7QFgUiY&jF!v_pH5G~=!zj=zQ;&>L?|A;wpmP0bBk6iZ*l`KCu%ZMOM<2t@ zzyX!ydKQAg0K{nYNekB8HsWde!WRg!<`88uY-S7}N0Fx&|3`n+na_&5)9ZZ5G~^tU2;KJhj*S*KbVsJD*6k ze_yQjl-?nDU|&MWf89D=|9*Mwr>SLg&DrNeRSUiC;9efK!iAJeP(Y6bva;8z=3Je* zpvH#I9VwuB30_lC_5)^D3;-ielY{s>B+yX+pM%cE_R4Nw1YUXSgz+{5NpeJ|))kKb zp&dJOe%_2dy@vL4`R?K7O}*aQ%Ap2f5^5&X{3&=`d+zr49~ElOd=PmeI05Josca}d zlC_(QWj{)g+0+g|SH`{fo)PjHv|#o!!&vb^yl&fJ?ZpZ>1gxhCVZ}Hm+EA298GfFl}@%AP>>1{$1k`q;{7($90MN< z;)`Pp&u`qdQUYP0;`M{XUn*Aag}Y?c*WPruPvT4n&|RD<2yZTjW- zI#t)oPJWhA13RUvzeau$y`^>!Z%w~T4?heuzopTkdlaij4MIj+9qF4qPiTb5>|B)% z&uA@qNo2w}gc96`@8i|>*x?5d>Z_=5;q2qLVpdB$Lodt3d5^4<_`txVTy28&SOBNx=}nbt##_S@h0f04~~PD#6BG*RT#3 zgzzh?t%+Tt*}lR+F1(r|WD9P>4glIK&s?Xx1)94#SA(rpQ`y2HY=0lHE%^VEn*g}^ z43_Y75``UnrsgJ$#W8q-OXk0qnuabZ_jeS{siFgPyvB=#sWpY$-?%{^@3Vk7AO-kg z_>6=SBJFDBzVK~6ndx}Og^>5uj3v`e`px}~xKSZRwYzM=T`m154GW&A zv+1rRMccP>Dk$3R0w}>#(5cg&)=wVr5Dbf91@9V*kc!3Ey{E@tD=Tt^rZE7B+1>Tk zl}Mt>q<7&=Wchvz=`pLUT$AxnYUAnp9CgnZIUnT%o0(0K=>lNTJQ04C5jyV!W zQro)a_H_BA_Y;2xI0|L^oS`O(2o&3VQjf^YzVw2Fn*YM-fmXJ?W-&^lzt#s5-UG!8 z!zuaQlnskSr5X39NlLu3J!uf9TYdL$ zTc5W-BJ?x*i&xoWwl1{0_TLWsNI}_UZfV4Ci&ZmzfCv5iW9afRS|CyWg**9}Xg%q= zsGquq9s5ZXum&>E^80t{;GNPi1_1V#xQ_h9Nc&mgIDnpvWuhIfNO$*jKKc#b*Q8uA zQ###0^(q6$jyO_mhPE13Y(LO*n=X^66}H#KbTgXNZmjuFtJHGOeo@?Tkzq%q(EbdE zdnON&NI8=j#oCoRWJh3;K(cr*XSf1rF80@kNDlH1lHt4T*@0TtU`AX3G`k``nfA;U zB3T;>)XQ`1J-=&5kQJ;~mBo-AlfR~j1CpA_=CkPrxqPHwpf%Avh84HZT0>MkJx{dA zd~%WIckMIW;JqmEZwljT2j*~^*g-`_eFO$|kn?*jpX4i}ZCV>Xt)tA-{7OBB0%;y> z9RghGQ=Zy#mPXBeHT_XQYd>OyQx5e&L2~&8qfvJtY_ft@Nw8-8gyx3V;nXz&qL9Bs zT`&)cM!;30oxg}`#OEs3V_mA=rOGYHu`{6NuySU*lyJH|)OB^Hmhr5#iY*buWcXw3 z>;Y#7my~o)fJd6GOGxW(b^ZYsx3w9QXi}}&gam-zs7=U_NS2ClslEf4+ui{87PI8-|&zB4^e=*-(z;yg^LA1a<%1U zAO%?cfusEzb-dApKw$gl9`OOMTm8HeBhXPOf&FSO8nh_bv6k&fIJfoVwkHl@dKnxk zJlM2B>KU$Jnd^L?Z>9Kof?~0{z#741kxq_zesJizR&C0I;hk4kvanyiRD5zTBUgtI zZT4FWnJ_SG__4~W?JCr=0m+QV=^hTEAU9=Eo(H!*W}we>xyoUx`}_q{E6!qu9s6B_ z5v^DeLh+Y{r3ho|A1?5GrJBVB5Ixq1^(Fs8k*lPFWd{v4kazRl+S3Wzgp@b{(HNU(j9o)oqnFTPnLxz2ALK*kLCEeinY zGV*hqHmR+wriH`JCA-!8xOH3^&hCG@Du0;u$!pRcdzGu8FLbb%HQj9w%Q8jE7 zMp7{PA5mTUiCMIAGJVb)+cQ4isuAijIb$#up-}$i4tF0O9Z8;*oh?`}`Hmmn9 zW-2XwL%RG(6|5EjXdmjRRYI7|YzfwZ%r0AHaMk+dMZaWA=NHo=kS-*-j|EN2bIOP_ zrw5RbDC{RV#J99lO?vhdJZ@)!>uM4@89!5-L#y?5l6UWx+)fOE7|B6u`Z3Wo9aYKH z_@mze3X1l5RblvhdD*29_1BLNw^dHMu!WO<*X(}|<}L=TR6EGUOzzuAcRP*Z32XWP zo~h6Op&U<&^FT3btw1YO_8c9arVe#FJR067ztND7aq)Iu!SO8tw(2n8m~zIfJsC+` zWF!NtQ^`35PRP-IIj;Z;m1@Iju&TM@5yeXJ*^eqSrT$_Lv$xW&?WYUivI-WmTxj8C z!hKeE#}GLkbBVP4dv~;3MptSUPh5|PS&`Jj16ka+O(tC;H8ABH+1DS9TFPi&^+8y6mYyFm#za+OMCWg zr^>(S9eaAHwbOIMVk9d^Ix2ro#^QNjiFLr82dWH(Irh-5S`bX8L)R# z0vuglOe4%;!i;K^eO?#_xn2&5LAyElf7uu+OTu2^wPSq^J44teQ&-QC`K13y7@TwC z!SE+45oNPmbE+;@wYWsM4{B|JTtd)#PeOLV%*}J?mPmK9(Cq7ABBFcOtDt))*h5de z$RK)mBT{$sC$$9b)6pn*m$bWf%spJWDpeA*neh$|s4S#sMr!sB5IFrn5D_SD6dL{< z->?TqUbWioYqX?cfLG;>O9l~@BxNRVB|WA@Om?iBz3w?wiYRy3(=m0_yiy@X$S~&k zp}?{A=J-r2>z9GHql_#SZDmaW1jzT6ME;l#WC#`=JB5^en`usz(!$dWz$-Ny zQzZMN5md;QtSX{r0%U!~OR|?{{YPkETfh6b{@zdkl@jVWQZWV3``H?VJo(ci)huCY zXy}9ZpBWP5fSun;6c9zv@di+!QQ64g;r=uNXqtUlEbqx>a*2JF||*U*C0s1)}ADlA(t#S&r(8`f5olxjX?V9t1SpaFmE$kw6m|cn@Yf>92p1i zYiabBFf_W#zVgXfhEhp)2)d*$Ok4M7*;E@F0=&L_|eA;7^$5~b?I z+sxz-yI0aIR}e#jG)^==kD+M!uJ$R0QQC6tGFd_qQ8b-pC_%Hr?%NeC`RC=<6yKdA zNIDW52r{Y$}k#ON5{%_7P)guTOFhN}{lBxb*j9J&US@0-foG#NlnRfz)59j3J= z9yPx8>o?lhv7gAqJXH)NeQnRIB!wAQcEP0jw#FZpXu7PnT-#dXg4%*5dV0lc+%&p=zS=p zc0WWj{ev?moj_tNTXrH6$Gms+X*-NsWQSFoN&Mz?apV9^v%2 zw@O{x)3l+*AG}{C-{d9m%6i!!qz{8xdg(xL-EkhGl`V1FnOWE_wqP+_W7{pVL-n|e zJ}pe0e`GQHDGw5m zTc6%QQhmrN{O@-8cuo?9?XLMh1$^+kr(>v%-K=dxGk4bLRy%9u9dXr8=zU&#hfXAj zk)+`=-*U-(zpv-!(v{5KWlyG%ku^+4<^K-r*iCWVnN_`<9u0R__o7Ay1j}!!fQp8r zPma5l8X)5p7}>m!0!V97?TRNoqqY~?JKsQ!TtMAMzS%n(7f`7&8M*Vg`$xvQ<-Z*f zMwZt5cgtZ1krww1_Wg8svR3Ez;>U6->`&hlBifUV*3}p*eu~CLS~y+pd|IK6jvyyd zjoyxp<~GYyexX_3`~llJDpCQ5+S_LndLlG0L027_{smC+m1}qUgEui@?V_r;`=8^F z6aph%aA+14ML!3r`sv}EL>zv@1yRe5|B(L)Awz$vp5f_H;dMCYaRY`IVaX$ugebx;5&uqvb)*3iKw zyn(s`nv=+?h%>@Sa?`0Ek%KuAOK-dR>E_n z9<<)x^GI#hJ-@r0Mh=yZjc`Y<`;Rn3JHZ!0)NG|OWpCLnQ(QZ_qK?$xy?PO$DnBk$ zrh{e0ZJi(IH-CJDLXVeH@*AuW4E%DYbTcNws*3S^-8WT)HGPt&R9NrLpJC&*ovy?l zHxbh$Wku_=rzIR=$l@(bBzQRD$vaK`d2+-R`c9wHP%*RsVqVr!-D4( zI(7TP54-2YIg0Q2MCT}i= zOQ@I5`34m=bG>Gv-kVz)ZH(%eYw~Jh-V&o8 zQ)}dg01e)Z3x<<)hofG^WVk0Ai=wcN@_phF{k1e>kIr&dwG^DFcgZ|5{*?M(ox=`1 zqnJLvj%ekaQSB~(H`oyXw5~@)SXb9!&HIwd*7NG%B|RSLctMo5V!YT}(`1SEFURe@ zP)*zT1nIDQoM)zw&(HXO+u`#j3=`2v;htz7kp%N#m%uQ^f@=w4*}_qCE=Y55HQ93% z<+xfOYPjL(v15x*(FAy3`3W7D-I#gN|7^U0<-??N`Ht20cEn`Ip)+j(cBQEUM?{yd zA=#3pma;zcie$ZW^zAxDU9qgkay-b3OTZP0H_f>pwbP>m-DVZzMH@v^b zeA~q&P1~F=Paxyy?KfGQ1AW@SQIY5Eu6~o{dPe$%jU!mRbCUG+F_*IorBhj6!4hAo z!5XS`O3x<5gTK;+*05`gWt-WF4RPfs+ug^E#sLRW9Ef9Jc`O%LBT4RnjS$=@F(-j+lm^+0>?W z`r;91Y|0k(kDsBAzNRnzO6Q_%2wz!EeXeu#)Y%%&>p9=-se?F|4`Z_kWN&FHR-n&G znlp~Su9^wO;l55e!6fEl=(VLDStotb;c(pQ<-oq z^5+8?M|d%*8#k8|71=&C#^)E65>_ti(J{{yIwAeBNEsY&2XUP3hNT)+b<%y2V>!;r zfdo9kK}LZCFgthA-#u09LuPT;4o8W+$xkIVdeU|0G%Z~#5uo5S!5UjN)EGwYE%(-V z)orcs6@@g{?5Zl%S#w8~xakgu9(6;KiWnP%l^k$|GkVeXTD#%=;}9PYg%Q8sL2V-4 zHX)6y4ecH5jP$JjPTA<2Lo%>2QXh98B>U*w{V_ z74Ydq%`6>^>^`0?^&E_ZjSOrIjqrJSA^&-2m(LZdE7mKb@SX>%QX9lyG)_+f+Js|x zd&h*JkWI}$dsavML5Ww3FdT@@K!$kYc%8`XkZ0~2jKo@|zvr|cPf6K(N?f0$8Iy66 z3d8yNvPAQJ!BATo%WgjOtL#bTy|y+~$iO6LIZcPTwCar$qE#cQ+PvVBWwt{+tijJZ znp3K$jLJL!^S0q?k$>Hs69$<{7j0A6UQpZf2#b{}f9Cx6Si_#y@w2`_V?L{7ulCRB z{L|u*N|XR4!$L@=FZi&}Nb+|%X=rf~YhYvID9?#Qn9Hzjq1EL|VF)%gtg6?<9kplZaCHo1mkQoVV7f!$yT~4k+R^-6H zYm`{T9Z}7Et)lEBtcgw2aFe5>Aw`xAGL)o@Ig1nS@bANkCC?OHh~7PTWS{A8_vORIFKolFE*wg<>N=M%E^2RP1;a5^+=9q0Zp*vp> zfWy|Eu1CnkWe2O(fp?6(1we=fq3lXc4D4|t2=7FtogQl+c4YUu+chmy`)sq@%yILz zYNN+ELxFaH`O)3cM+RuZ402T);zrBYd8$~}UEM8yc zBgK+IUZvll!xQ%xp#1&G2RlFzc)-dZ%*J1Op8?yli6*Ea)akwcg*Q(IS*DtmKD{a6 z$$QKHU_#&1j;yi35_c)H*qUBU$)1R;tN0=vRBSGL;vFP&AZEp(h1*<{dPi!3K%2Qm zbg@<^Rm!PTWI2#eOFm(G^K{OzMO0#1PaPp*u9Wx85a~I(T4A?ipgvt0V2H;2{RXQ!pi! z$VXIOOSx{`JbCYXt@Gz?SG0#6QSgRN4J7sDSHagEd(LPh(ZNeKpq!+MI@f9TUC-xp z{?1T`BKv8RUMnD>(kybKI6a}Z<4hjbxeKDA?}M@Wm`|TheegWAe)VHZEo|iDPQ9Ru z5xlTz4QTU}XtsE20~uxzbytHswl&8?wFBX4Xm6gTFVV{RyjN0OIcD`Dz6HG+?Q{&D zbE2M2S$)KBNOH<17H#F)0S*%Vuwv^lsw1D{wCLSQweo%}R|k%4Wk1-wfi8Oz5dC-I z?r#YDSKwn{W&E#b$MQc!J0(|JBYZkJJ(GVu+8J3p;IsY>k{^Lj!N}gm(aylg{v#H$ z|GP-Y#@gXyk-sH>L*~aq(nf}6dV)4Ckec)#1#BFQ_^b?!+J6J&f5zOu>;A38-{2}| zXJepf!uSJxU7-{M88UCr>-#G?+1}27o*H%f1>ElJlfA&U6 ziGh|LlHqT2eC)}`9R1%lng4TD){j+LnEv(Z-%Y5=>YE!G{Cg|nR!sN|jQ?Iy+=}sI zhK=Lz9OTEoFf!vau>Z5ck2!pXzb*5z0dXq^{C{uxBj4j6UrDtn}~x z`HxN0DLU#q{Hw?Q)nxc|s%D0N$10YOYSMi-GBYuCz~^9R`KZN5KiS#Z{2j9J9qb%G zI`@BQ$$thmMQJ^Ii;t@Qdk^UZ%^d9IjO>JLtZZ$p{~ibI|1tJK{x8SAlS!XXA78)l zZ>P{G{2@WVLZj3F`2FiMa01u}z#{>u0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{ z0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{ z0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{0H^?{ z0I1;qgo0)qPSn4tfY5hsctSD)qJb%ZfO(LB$)JD=fC_*L{%;k~Lxb_^QI7sM84UlG z2JdffJVttYX7>NgDfqASdjC_(ynpiX{Xa{Y$IQ(5Un%q082;a-%=;&0;Qvm_ywgdB z&mZIDpX}o>>#yFy{CdFilm8RvC&09Xz}$?$yp%u%Km|YrKm|YrKm|YrKm|YrKm|Yr zKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|Yr zKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|YrKm|Yr zKm|YrKn4HbRd4|Vy`G0K^WUW*`kPwlZ@wW0b|z-}|4KvjHxJPNl!l1)qfh~#?te24 zk&un0jh&*co`DfQov@LUnSqg*ot`T`ow&7wk)5rLrJjQkzJs0P$E*MA>_hl;qJNhY zHZrg=G=k*ig|v6DGt#qyboqRe@vU8Y4sBq<6ExFRhM1C3BrxBQRAE?7oPY!dlUP0` z$Deo_pCmSvk=c~~#%3}-H)Pa4hWPrSee303;~DxH`hMMhW0%M4`P%jVq~lJ*;{3Yf zzPxUN_c^`D>^uG^kpJe}RsxCrAkT4vBxBk=IAeqpL}-D!g&fe{jRf(FpBaSjxb@9} znPk@Q6T%^d7j+wy-J`2VAf#WS{fHWcU7= zz1XCLtHG&Z7Sfmeidtf+SMy1+>5*75;Cf~f;_Lps>&UtI>(Kh@QfN(ir;W0 z7TDsWa&Mt-Panx8iobq_A7li3NOi2%$43F7CH1C=!504cJ85DNW9}HsMSR={AjBs{%jRa9ET(~?sL>> zZ=UID-`4jSERupM%%r`fcRkH0tr!@DCnO_TgQ&@aV6_L`hc+uR3PD}|XJ#_S;R$gQ z6+@g^-%k*RI6ezU$Vmb4nNL-)ap z;c93Z1%GS)j#RuxRi&Q@C5LFDAIpEV`aD9hi*IC0Sv#yj_+(ZLmaK+GFM$1kBw<0( zjX)C1ntnGW1c_{#Q-tRZ;#JMCj;WaHaI=-GJ zd*$ik9U2b+KG;V~yMd6vPBAPf{^TatmerXp3MVCUNLfK60UW_m+-}vP!DTcDc#OG4 zPR|DP>j!cDIm$x3QX~`%;+?+rv~iGPBy?yX7;$`+gX%grf%NR=dz$0_3W6Vv0~R>V z&=esmCrX(vh{$s*nfm(uEf!qbO@g3~bNkMqmYIwK$^E=&o7K?;cZ!ovB@+?h3Gyk^ z;g!B(eX6MO>vwD!wq>iE-5}>^kqu;uvO<)6`w0V3n|) z)%S~KwRN1$W;R_dSq1ZN<|Ay1d~wGn+Pz;JC?)U0EBC8}sJIkin8=2HkaY8mz?pkW zw2=*EXuWYi)zHECN&FLn<}$B-M@BU{V$rA9%c3CV;l+J4cK7k_b!hrJN=x>yF9lotCW8w&y$!dg`n}kMrD3#L<|iU ztgHPd3)S}|m-}kv8BG?Zt4lT-CP36!xd9b7MMtNqb)b)m?(%G9L^{<~(UHQ^-Ssl^ zURW;gI^=i$PhhnH{4d6wq=pD10{t2&9EUOx68OP zV$Nb-co&RP_?W}Nwzz;Fs@I8=e_2f^fC|QsuldcE{8Ez)d%!uO_w%FY?=2?h8H^mE z_Cl#DiqcZ_JVPQuP1&YF28ZshvCYjz9URMr9Tm><=8G1ir)Gr`;X~4WeDxC6x-3%- z5_@xD(eWkY1nWl@#y5oJHdc=a7PFbzCL@dEAJud5mF|Q$5jrb4cH8YWO``0ayD1>f z_qr5GOdHIMDhQ=ZE5#Pzp{0bo0w4Vw!_URJuR!%&PoHki9&u3uL#Dxxx=&L&;tEzl zXSBzP_g0fZxrg4mdp$B=A&DYlfZIB**)_sK)Y|zlPwKcLyUVdfvX%OCSTk1F^Psmf z;#h0hz7$*5+qi@n_SyQh)e&$P8;O|H0N`7aBGlIXY0#5oXg#rp29vE-8(c`U|K1%} z$0&%F^)S=w=%K9lu}21j*-4tqf?yBvdvVW=6}m;@c&?Rgv(ra+N5_uX(C-MZ+x7c^ z=Za;2f(-?4^=_OTiy;JutI@QySqrX1aC41?q!CB<1m5(nA7;HNnxO zWqU>@{#1q2Qru35t=QrDkc6(<)MRJu1i{m%JQs$AW4a=e@t9&J4x6J0mi?1h=p;ACPUxiF(iPRu#OqMN&^4{WP;U67ZnDJ%+}>HrJ&M&9(sKnc1J%kJ}v)5KdV;zmMp7UdO_7wUc*(% ziSQHmKK|nkFtH>?KHZZ0FXk5xuBu0=L^pVMj^Gu??E9uHf&^YD9DEv*X#$#S zwk4R%WUkAP|2_mPiRBUwyfj@jAuc_6G$a|qU`O%@szSSZadP;S;Y{z*Qwf9Z6L*47 z6F@~Q+OP?dqQIMGwId^e5S8xu^OJGc>8!-!J2`OIM56OFSB1qY@5=k_aki6RG-`<*UdMbbz4fg5si5G4mRwZM^0`%=&Gp6pe4~5BIb&{!A*3H840*o zKak)ASeELvgcj_G$(i!V#gtL8!^qteqlL(+mZ4q{gZym%LrkE zf(RN>*pGuO4Pr2fdNs3P{q%$4+TJt4Ny|nu;SB&e(sxW~gok{?>@b|JDfJo$YqZaK z|7_3DzccZPHu2BsnYVTj);Z?&nK9)@b6zW5HtoX>oi6P@$)-#g`a5wtC1vIXdO1tV z|2==D1@Svf9@$Q!E=JI3%d`>3%~9@8*AJa!Sf$|J=?>Z@gq@P`d3xRD;#;L!s-+T) zA`GqM3h0WXHmXl&g3maX*!$QcL5C-C=XHu*KsFrlhSZplB$^(dBugEQvaUVwME@ZNDZ@kfG@UbH3E&b)iT!t^^slX$HQ00f*@HoQ_ zgt=Rohnsw3pzOcG;_oO@Y=}2{iR?~xqWb=%{wIi@dJdeutQ4>1%N6E7qKBJx*lR2^Ib73_z0~mM-?^8QGjc>Z|Mk642TpNv`mL% zn$%Fk4s#_qM%P7ed!L-TTy_1 zsieXwTfFilX6I&-R%leP;cru%?xC%X>!F+{C?QlTaq@>H*Oc2xp@f5n*{yip!{}*SNCpA)3N|gqIV6h%iyX%x0`uGc~$cV8wk}gXElrTj>?47kIN@b-c*I!GgGkPnFbEcbTC->Xb`8LXM+nW^m!*{GYodV~A&icr=Mq$ubUM{Wy54LRmCbD@ZWwGQpLOqI$p-qmS+f^u7CVfm z#kJpM_75D$UBXjWn?Hl%`+Ndw<8|M^Jj@Cv3{>T-1g70f&5&tC7_-M!Ct#;72x2&a z3Vj@C*t+~gpb(^chuD_ns z1>0`gJFqsE6qv+%-a?GKTTX4zopxDlB3mP_ltqW%EK!H|P;whiRG5-?Lh^g=P9(mr z{f7QH^zeO*9pX(+B~d$V!CvtFtkBn!{1 z4jr%%I~6o@(^-vyW?A}CMHqWW3pMbO2wTs z4ODL{Kg<-#;;0WCT5n%?ADJ%9B*K*C@`w%7t;sq!hOTp^(C8kEACr2uN|*1LDq+!UzLn zZHI~a6(_#=y~n)1x(c&cfhc#}@SEMOnuaf&2Oq1jVT~~rhTnJEYsLf`vU@J0UmF+B zQoaOp9K39Rzm_E@!gP2Q@fw49l_ZV+>tt zE2R1ffP9P(2q5hWKg1)M_soeq1)A0uw9Qu^?dFV1(MxBa0@rysnH~6~k|~Px={2e} z&jDCsUAjkRr0*mPw`cSH&t6c@6-BCl; z=L;y1A}pWUmuyg-TH997bBq<;OncpE22Hh(-=uqGve6ah`G9 zVSvfN`a~kHp{7>?q&jEhdAf)e-J#LLA4h zrzoh#L_ATlmZ=dl-cNe3>jsq@TZeQN3o%hV(kK@1N{mb%X5%aL7E$g?xYctZg?OLs zHzLn7E3w?cF}tcyvO3bxxaCMmXC}vH&cuU<{>ZirwmiP{M*Hxu6GxvLXcxvHJbQnp z8oN0pZnsGe8`F}tQu#*9UJQ69$`Y(CEg5|*F_>DMp4_9T849k76>;Q9(wZ56o2xxO z{n((dzx=GaOkG&td`M`R^oY>?fIf#-atBVBPn31r`SdNQwg)9Xh)=utChN87u$upw zUTT!)g*oZCHfX8^2*!y^7(#3WM$X3Y=_LhElbr=lA^iPC388r^5S zzMBBkWrfct9F67+Nw_+q&* zkLenS$ijf(M~i(^;xosV!w8!^ND&g+B55OZI0BvRn`00TiM!J#M|dJ>L*iy)#9o?O0ay?`r#R+@4C~}PKhO} zoheH2amq^~cW|^cax@u?onwKMcaz#g)sX4-oZ-B#E{OYae#R#>e(SW}XrJXzbaU1h zhBkIoq-BP;g+tHVZg40!krIYVxBmUMCOpTR!0!u79jKs>)$a3PkBRA*sy#29Z`_nt zf{9P9kzeYsqU@sI7+t_!-#A+oY(bOu@vWb$)G_Wi?Scs*b|FEUrs=rs{3E9)B!`4p zMGmh9h8}&%c?NOjuyc5{U!$G)-vJF>raKXnwSXu^BWMIp-U#TM*`!z0Aj8=FZm!O--2e7yc?;fo9N7yJJ^d=O;M*}qWIEWhl3bDy6Iao zLaW046rD8Yvb;`if4yXkF~|5hi}{tL!FemWpYzkMXFVx{BU!1Pe%^DI+vAc?1=NFS zzqZ{(b5a(DgR4LmC(S#_eWcrEA4AjJbr(iL9D>FS=4CucK!L92vm5;B$`;^F5+z+e;S@;p=r>!&S-r zO9l0lg#^JdtJonKXWGE?Wd#D(WYDFm`;j#q3*rc9hfI6bG&06JEwi<N*ZQUnPfJD7wjW}c8BSwY=L>?M~qFb7d7YCxv@7a286t%1R>gEdyu8G=_i53D+ zHKQNbL6Ft@c5EcuA*aZ2ehP*J2#JHH|iO2t#5j6?e^9wfs9% zZ6Z_VDd>>pBS7{ns(=2rI0?qpWoWw$Y%LoAFUu+VjWkq^yy=&mGdM8mYfF*FY?vdwr+@ix9XQ9>=H3^;a>hrOxwM=T=Y3h~I+ZwIdNI+w3 z_j_(hK*<2L7&<-tfjNlPp%~o^*wR$3vHF5H{x>mGO;Wo7tfjVIi_7rkMM8&FupmYG z#ZBDWTF(u6-vc0v*atx$n*s{<|*z^Yz=Z z*BWS3RYF1)XHrfMGx9FW>v{Ao>>9q8MG8aqa1kg1i_}pmkL7gAi*w`E$Lpa*#Z^P| zUM?tv;_x{{Qv%x7B-!CPZ6myaOa;PB z5w6nYLZ($rXI7!Q@+% z17|O61r{!(HmQPo#rnOwf_VKqOs3PJv}=q4Z+qKL1JN#WFiu!l=hMMfo>)|2bRdo6 znTJ7XIw0OmNSu7%&18M1riW(2ddv5%Qj$V~p?3m_GOw2W386Gh`W-+|H(3yAiM|3T zJ(Im=X{f~N8JWi4TIi56FR0u3QuhUtq53xw%oyrp`>YRya`Qq%~8STIg$QhHl zocrEvWI;4k-&BIRGH*Xpjl^*+eRK?#=uK5HB*#N>^)i|8HY{_LVOU!Eom6HZofARw zQ8qegfauu2qLWD;sR-|oC`q6AW@li1dY483mhP!D zv!DHDdPD6Iw1;H_jOz#d4C48!Y{S{eWgKH*A*@pkZP+eN4=U0|`d-|6IzFCINH7%= z!V|1-Yzjohs}wG8=werOf^Lk}T=iV>C!bY`ALy?RL1F7-*`qPJsVe^clLOZyup{b` zQIHsG2cIva&OAfVb6(Go$8#H}Z5m&dp3{iC7JWap+!^MUQ$hSd6c-Ua^t+>WSA?Ak z8zOyoGB}7}!hxDn zSEIo&t#feZ+zT-#u*NYWpKS9ZLSap-KMp#R#j-S%%Ny-hgzgm8q@J4SrXlokZI>^j zkg+mP>ncD(JEws-m6YULP;vEh02W|S>|r~|lV=SHhH%2}!ZB>1-;|!I4*MkcLFpL3 zKeyrbbKX~ zc8_h$i-5gEcgvq^dr@kdqQp!IMp!n1UW;tc=i!l%=03-oA>JX{6`82bizK>1bX?eW zbxRR_vXPhEnd3Z#M0_;~E>!eUcxrr)IQOa)nxal`XQ*ckmPyf?KamY=%w%BRFo0o( z%Xnm9?m`r9N?HJ01KlaA;KQ5! z*wnQ+CWgur8ww3qz2B~kqV_tfn63kxlju9MXfV5ys`ISbO7S#AzsXsyZvrdqwR)o6 z6=6LO!YcybG#aH+FBuA?T_x4`=VpP=3~^v%A2G*Lb{e}(X@)q~HB_;8tIjzVd=1>n z1*vjNlV;m2MPL3#4hEzp<~Pz!9iCboF9nZo^x1Yn>O>S+=wwY~&ZAv|roE?&aWm0p zEP;M9LbG0_0fZ;SAaOMFEfE3<)D@vfO6fGo1Y^t6p378X#?zMWf(kP-DnZ?sh@}!; z4f!I-4lBMw!}*K53qXGdxa((&0X`zElWG$)~<

    _oT-eI}8OqlRLR8GQD9!^|N9`^?Q34hTKO2QjAFIj^Ash=>Y9?D!BB=WH5yg{;Zk|g;O(_~|li*KLR+wu> zMWnfDX60g(TFq9$yRf?Xsqw4Il;rOW!*jwScHC=o@9*5dZxm%*$uenc-%*T{j$l=U zhAKhdRghq#l#)Se7QPP6{%l$-g^Y6zq`vbn2`8p??7=d0`{OlB8OwUikME4I$u8Wr z>HT$vtccbat&T+SI^$1AhxJ{4q;Z`<<5)}4KIJYxDuN@sAXT^6413_k%3`9N;&nZk|1+19TN1u>21v3+zg%zqXxoBa~^@O}7oh%T64FDQ7l1NSvK z)Xyh}5+Ssc!2!c|htLF6V>}&XLXEtljDlIsL#3@j2jDK|=}8gTato%r2L$ysH$qa_ z*ldZSb+<6HbvuvLvgt#Y5Nl>Qpon;pNh^IY4_8rhyhl-VXO2#bO-iX=gh%`1s4L>q z$#IvRUmK(So;l-&6AT|^rRidX$dBMyxQZr=dHVT<`o*h+B|(+fa9X&8b=r%NTsif*4Et5R2{0Mg@lSsy08LGY?e z_4dacSnF-0+$m3#wsu*XJ-eVTvDj6vNmmPpeG$_WLq_(yx$wN1(jvMcLa=G&r-^(F zD9W(Q6Ez{raV5?U{KRmaLOseY6C!T`+M>UXartE4cuz4JSWJU2EEZ z!lQ1l@OWn$tl!YNdO1pPk2v$0l%X%Y>Q6wX55!^(_2`eQFa_~a4IoTh#e)hK~H zPH#thGhU8MisO2(uz}X2q#(GrDj%^Idb6T6fh)-N{OgMp+zbeiPR6OZly`{XGfG?` zBEhzr>~u1S7YVV*%KNGMNz#-A1EC6b-QhS>Pm<+0`I1@(85Yo~Q5k-} za9wY$fJS|AJ)iJ+tpUd#;&lCTCeMxVD#* zBFbARhq&J&5M$=f!wB*%+h*gRyz!`>egN!(du%8z_#tI(q9jipe_k~hA>f%d$z z62Y>KsGOi^Tb6Ix;5uX3Sz$@OPe!l1qq22;p{#{??-u{hf9k3J2!CJ~dJXFt9Jilo z1X5ig_9DudLIPoTyn1B-e-qWv>Gul|_|RC7>ExH78{EUqAH{tn?m3GwBkR}T+* z1TIq4*kstcS67H9!!AwVvJE%;ez{>+QNC@eNHMI7!6vz3=M}T>4!qC>m%7^rT{{{4 zBYi<*Z8aZChU*$yT`?QriHpAC$d@7Fr*0uGp=MnapB#Os#!;4jze-8Ds>FB@tVN z?FR8>dGif6_6*iY5N~@tFqC8;jGir?!m0f#{(ZsE~M`gDUh9b_n8fCNrHJxf{@I4SVe&A`4sxqzG)e0m^ zL}u_heP*!)+b)+cNowo9v!g~~t@L1zNh-H?^;`mKT&Hdt3Ual|Xn;%5 zGBXop&<<4$`_|!n8?erJOz%?mP22ShRXrwIFg=#g1*;xnKu=0@ zfY$%obw!=y6OB%Gc@X?1l92}A306I&HTOf-Yjml$m6>+MdW8TT?aD$%)T58zuuK9A zOudY~=Sx0}>r;cruZ(x?fdR+LV!^1$iLATkvY-hW?>{LRAP5;;B|$CYg4H2==aLp!W#Q74RAV9~&) zam~p~Y3Jt>g`>fN+om~h81LT$mBoRg7@AXf16t=+RGwDj*E^ihE(gAsnHL(oT7id~ z*`?)gN3clDU8m*S6i}cc6Y)Uw7mPAu1CS&t9+fp?nf;Sta#_+Zr$wV{gdM3wtey3hSY_${J%wZ9&wDzYC z3$WGktWLvYmp*uWrBt^TRCg<0!&716TGXst9rLergqSX&Cp#J&20*d$I=CyAUD=+W z`&@$fpqbHdz|6|v%Tmg)t|E9;UNgL!+40F~HTVIY<(X{n{6Dp}W_}F{t(Gz6fd2Hy z3y>>f&3PJH#E|$ZdTvd)7+vq9_@Icq+g`3E?(-L%c(TFuASOhbe{(uRDrj(I3?jgL z`pB9Z%T7W31E)2TP%{&GIL3urG=*-(deKC&f5Pp=5_b2d)OXNW_RO0NV*MHGCAE>- z~2~=JJ%6msN68h+nid+GcFtP zIzaQ=a*gx-8@nTs_Jbg8C(|^BZAtoBt5g}Dw%*o3wpU}?6yo=huU>e7kUUqHC4!bM zx|d|^+1@=KK}Sp7m7<9vT!`Iehlxk!s=}ow%VWUEy*zBrLSR|9QfY_#sBWyE0(82h z9K4np$62=PdCb`@?Fn_b$6#A?MoxuzlfgPdHIBtA!Tv2+O(&Y6hv~^Um*P9}EmJi| zvA)O&W zQcw+Z;<5dMir7W`hzYuWfJFcUKiE#Zl4a@umaUjx&m#|`iE|Rh8eBmRuQn{5p1&`> zlh)~L{F!jduxQAH;lo+~j79oKCVKJ;17hnTed|T!5>nYtMy#ShN+<$je5n0oZLmwLbNACP5%X3Mx z2;~-s0!c>jxmq+*I7{PmuN+Qig&gC?(G9nvPnSYPfmoQ;+GvyYAPI|tLtwDCdw|W~ zgUy7dD0RJi=Gh;Uz2j<=QOojWdZK8k?9e%jy+R2u$&x`Ps5gauX>=r%>!NHQN6rST zIz1KwXqP(_d@NMyR&yPXeGI5)7Lu{|pP1UayT;-Ddm7$j_^WBmx7FUTrA$38xVI(z zCX>Bn(F&3pF6Zn_Vw)Yt)<{7{#A52HbftKc?|(d0$AFeKMFs~T8FNpERim`yX`t#} z3^eI=ZD#f2IZIB;oZQ0klHV594{ZL)it%NSU5W250_Vg>5Sr3uJ2w8!^aT2AKCpl5 zsY-N0JvC)9|JooN6wK_sr_YnRh1uw^=@^Kf)&>~PR%#t;L5;oX^QJ8fu=xGzu>AE$ z8)n>OgJ>B*ZvFcEw>Jpw+^6}xk*bN}SEqN=orUvWIOFyrua=wM zwxPH7a*Z0sA!AUODH)!mcSrn-ToK@NK%9W$6At|}fRGOR?^z^gAOO3K6Kfq=$iwD8 z&9KI-v6o&PzfWme5R$pX9WHTXG{*1jL5@^O*tXc-jo3)iMVu*rZnk$$-*d=V02<>z zg&N`IVoye07%4uXe;n{&1!*(jgf{{IH`tEPep-!qz zmyXxI+K3tC$T5U%yx@!^X0->%@sdH#C;8@ui@`Ggc%!(4WhVaVsAVkn;Vb3#7^=U< z-Xi9A2(ik?2fxX&W=Vuo8plt<2Nkv^{H>p~`#%Ybr`|jw(^uQx%}?GUVBeV9SPQNJ zjB!*q;E~FUoG%- zEcP~P@LN^j)}ZfdgW;-b&MrXC;=jEML3_~T7YR&pJpST1SOZ=lU{Yp0XYfy3C`O1p zV@P~kGO_`d{5IhYG_5b1K8~xFJO&Xw*l*D(VM{?1$~f|+DiNTd6~1R#;>1hY!pY=1>#pvH8DqW z*A`2yO?3pjj62y!MDeFw=_~g=sx@uh&G6lPycFs}oW(_BDxnP|}24e{pCwP;!Twb&jW@ zS9n+Eg>PgjLZrK)d((I1`OTi^>!3Y2ck!H?Qe$dil~muwg#QWo#$+VNIx|HxaZF|C zUvw}X^V^8ZKyu$l<5;)3d-!b>8oF12pFoIk#44cjkXbUYw3m@|#%{s%ce{8a$fUPX zsYUZSU`$2jV6Jqz4ZMBK@pI>2GA0?lf5C%HMt*WZ_nRuG1frT~j1Kzs8Er3dpy!#{>J)G5lx^ZSBJP1KtA`Qu!ZS&|)WA((nBQgLsl4sIxu-gy@ zWz6B8zqV}Z8`4RA3#~ienEcKGlTAI9oBP0t@%8t@483on>not?iXT+C&k4zqM;*EQVz! zSKs<9MOS|RPl3_DRR(81m1P!fkGu*W6%sj+Gp+BuYKBLgj1&|Y-tP3s*>LU?E#Lgg z(soS*BlCx4)>%^C)zHO)hq^(fY)vj`|0Qu=Syg&|ttZawF_9l{twy=pm@yrr zWO_mjH0rwPHO@hdIg$j7eIkCeYkwbSMv%6DKGRU9=8or9!aZYu(?e<(=BoF&x@VFJ zhZJqlh1b%bi)}KlXpp8V{8AwKAG0KV$K$RYBq9|aw^Zby@kx~GOp4x0>CgoW>2y#K ztz$en48~DY3;@YZimwHz#hglfLV8Lh+f_Gby%|-XpnWvR3wK)*g$m>o<(Xt1C+gsQ zTK61zXG;JoIq(JlVp0Fk1zc449S3;`&8zAgMYj~L&V5Dr@ZkxXXOV~g*O=>nmX3tf zpj~Gca`Z^z(l_XeqI!{r)P>UgU1BKnzY4JAfsIB(fsXRn2uMk)YNMGrCk zp$x{wY*rjEVLmq+q_9f5c+{3f`#b9Yb599MaF5>2uvoh*!icC?JYX%19OlxRDc^C{ z^PLhr^p#clKbzc+ab>_b9i`@U&Y#%bKXj^jRU-kcx|qqusn>bg*~qK}92RO*W_OOM z#U7XBiV`4IPA{2&s0_=8rJ>GS6I=+nh$eNnWC?@HR=V zjF$)h`RmpgF@jsu!K^nsPXfgWO{*AHjc^9&%n&1?XhV$Hm0LHSP&cEw2ly-e;Fs@1 zzF*A={~5aH4*+`}>&$;T@xweLdzi?V!!8>){I_qd+xCzMB*0nwX)^z?Ofc;ujJ=He zVTjEe%|=7u2N{B*B9o@y5FG92>)bXkrp`yJD)vV=Lpnmo>G$Md$LB zWzWo;YG{W?f!h|`zW1X|S(Y{Z)gti^y)S-WBHyf1<2PuxT8Mf%ih%uqf%(57;7c$;iOe)r{da1O@X8OVq4Ki@AOV61k3?EmA=(- z^Dlw$jhbHV8D3C$rkZok?#AiIJAX{U^hNt@x?UkPes& z8xhMmQ33IbG5(&~cKp`47uZ!qa~4DW9b~=y$p-U8lOm*`ipV5|pI7PTX}s#C%5iCc za7KJ}{m2E~SfNYNGK8+8uJ%qvqEH8bkP&q_ta^<=12YA=LnU;<6c;c($>~hi_Td-0 zW!sfLiGgJg>yc&r>a}kcv!Wpq<22sQgINJlo!Va~%!lQadxuy06zj=c4KkS%n%1;L zBtZ`aREyJQ0oPLz!1!cqUWTUcipXuy3YYGYmxRZ|;fNR^(&y3p=S4AV`OYBHZV|V0 z6JB-L0}^obII#*Nj#tP}tKJVT#V^bykG5iP%7PXZ25-cyb9vPte!$b2b4Pb(Cc6F& z93VHU-3?(vtFLb?R>Eg+#037805h1aKDA@2q&RCUhE};23787i;|Bd7_EdKIY^zws zY4{ng6sUxo)^hp^6`|Z#AURQ6Lcn3;1q`#h!TL|@WcR3gzFOU0G;N-dm}dOb%%bee z#La?s5(>=d!lwJyg}^4>gih~|;d{<_6wCu(<<*gInea8nnd6`G-N50rIteTEaxsyy zA@#|hmuty_DUBm=!NQ0tUTdHe&as2goF)U`*Yag04(_l!UsIEKG|t*)aYxL~uZPN9 z{M_6N9*T~mw(H6jr}4D+l^_1~VEK#J%+O@yz|{cNnCv|*VjlAkfpKz4DMq;G$`OW% zx39{aSgL0vWq&*p2M@`|KoaL=_h5GIEXaa~>>Cx1-Y>TO)<#~O2CgS9I&IQE_{6OX zv9pjjlz$!Ad?K5>vD-lwPuMf(V}zhpsFPAyP}QUPHq7$veY8aQjpngH`K|6d+e$@# z&KmJrAkQ^4`-rEZ_&furL?%x^?ln9n>bpCxunMFof_2!MYv zBV>DA8mr%vm*L9rwE!;aKA_zHt#T3PM5}%rpU+a5@6KoEg{NWV>K=3UAJ+{6=IpjL znnVR5cL%B&5o09V0LHir@0)iRqA;XUzsmoIekxL`3;xjTIN-7r1K}%UT3KeU1}W~m zID60G#wD}%k@`YSp~s!e)3sDsMRHylUQ_W&EB31d3%e0Aa@kFTpiCX%n7Y z!mc;mH&Z^qQB-oZXFtLI zZ@6>dkBp#DC(+xz6#6O#dqVuYOy!;_8@dl9OI(e0r`QGSrNJJ%d#ZZRz2y<8?G* zONmn(m5jF64u547|d@~@q*Df=jd6*X5Tgd{nKo>!6 zX$;8`wq;DIB|gbzFY&ZdJC}O*a1*H?(|VoSYy# zlXamBy~YEUoz!MGP^V*m6`xtB`Tc!9!w};&3?sGLUv)Y5&xXVx?4iL%OA~yl3^0A3 zh3C+cUDPKlT9-;5k-!>-w{`zEowZ|Oi_pu;aAIVYqh*X%xM6V*V^_na!_%p~^xF;W zzWJZlS3-p1IZSmTTVczAJlh>2cQ;{*jMf1R4Rg8Al*x7(O=IR6(ew>--qDMT$7-SX zxqBDDZBC(oG^#HKT&Ew-W)vl{5~9D$$9E=f4QIi=Xw5;wA=Hj)Ic4Gv_&=nvghUz=9f416)&t+@YXMIW z*FI)%Z$4Oa9B&6g(asUi%fKL^$-mV);-9}F1B5++r10!aqwPbPp(FQr$hiB{@);4k z&joX^DiYgoQ=oW;&MCY+)*ixxlmvu!vF!XCo44{mV562$o!))@(I{+8Ac#!X9?)NJ zhKlF-*H~gGBVoufDrLafG(Ft44GcuHdL{SwAK%lZZ|`|KZ#6U5o5Eg=@s90|lIo!g zg)#m0b^rJIUk&`fqyg#bcj^s3x5m^JyCc=vC)sRkh+P^-urQR>2GGjxbmG&WzK*<~ z5~VjDOTanig?;bEAU+w&S~L~Mb2jgvLse}r^H8eG;hnicW5qjOIy(bqQ=K&cDy%&l zbZovSQ*!%Djga$g^pO_om0vO4A18cS`9~R0d-2^v9+6f!3Kv1JjZS?|_!5Z!3SycvkYW_6YdU0q|-xA`z4U6NxfsF$?#~b?TJm`c@k_+;w5E6`gRi&T_PLg1QO=I)(~o-E%0zT}cbnWgZXZ4wA>Hnb{gIRJN79Ye*+yx9 zkgZs59s9N8nWbtz!bWFTJN`Xo-=Wbu%vka;Ww>fC+!E8PHPjZbX>;2p1Z9h>kFW%1 z#xHbF!^~l8vr0qx?ThZm*yg*`yN1qVpsMkW)gOHaBT5X)g+~byeZE;($NR)7LuP@|ilL_LGJZWciL>qAlsDfzuE&XNh#XmG+f=6?v^U>GHj>56oSUq@$f-&xe<<}ZOx)FT&FDutM{*xJc zi${aNy9pvffajCYf%AmC4SxL>G-RQS-iCO5qHm=8Ox9qc$BHpKB*%(FW=*B|35us? zmo8gtJ-%l-GkKL-XN~Ja98lJt+5dTv2()$Lvr~;FGfO4Q?BVZ}WuEe>0pr-|l_kLt zaWKwDnB>(oqQB#|$8E}h+T7uQfZn~hE46e0LFkJYAOQY3FkN<4uFuDbd6!@J13a;Ud(dSbZZ>oIzm`mlH2Xj+xI3TpkWa?poI-+)Q5TuD#B zMr>+o{feG{jj?&|=YV68`L>ytwVP=u9?4aw5Vv1WI*)sn8&4W#7zeYjsu{vJmERLIN{^4YeG4KwRht(XT4BzAa$ zb);+tIvkvE%g>+LRxCl(yrQxt>Mp7blx!`zy(F>qkLDIB`wsGw9it-*^LFe{((CnQ zjDYbV?zbDHo?5vY_rUhC)*tT-_g~xDe?Cz4P^ogOX>aA$IZ0Tny6Z5u6`RS+WIeS3 zK$?K0h!1Zhf+ju$++v$WwLOdm6(5QjcdP46v5EgWa}M6){@0Sl zN-S8(Hj7T{fOBT)Q#}hxqO0~BKgH_C^$ZoSyX+<*O(SK(HbQ+kc(q$lJ8q;uK%WB7Niib+yBF6KpX&vQIRM^E2zH+X3)&zJa&R(V0Vi;{vQ{)Uc zI5)hO-FlP0xt}qo%MrZZuo#m{%4QEgsTVWd6+KJA%`61BLEo=xjaC*{Ifn)&Ytz=v z4rtyxA!Q$vhdml0@`<^h-=+JS7T?Bfgj(ucn%65j#CN)Vk+M*xO_EP!J~nBs4&oG! zYsRs(!qjKi_)+A~K}M0s#;MUrV1A68WHBpx3Km2+7lp{Pu}=(qT;&MM2<9y>?h;dEVN zsZ|*}7J4YsYUDKIew+~Q@_51>Z6CUu0Cp&c>n+*&$4lRrx9oCgjx3Np1oB>A%{zga z_0;rf)aD-6ChWugvN1kyX^pCMs%U!_^3StHa+l6ggP0S}d`DyF5=UwlEGJUvKzm*l zB%L0?1xoBR6=oDnR18F3ihMykX{-W@p?GD?#87R)D4(546 zM!8U;Q@AtfwJ-%_f>f(+KI>=;w|D212#Eu*g~E|}N3Vnm)20G6thYf+mg!p+a+l4A z)mNz^sV=kpy?~QP2IE7+l&e_6ZgtA#~G-G=kn;+$H=qC99SPY3GZ)mT?c7N*5Gm_H*#s01ntb9lKm7?C}Rz zB!3rArU>dsL`{oE*O6S^RIfSYz?=Q#BPoa3ijg!Ij+tdSew!z7=Od52jX9chHPkj_ zxv_plQ^X;suspIU zxCPo0@u4I7Ei@@o?i6;2da6o`0Ke+_$qwnjmEpFA&)cUTb=e64l-33gLSCPr)AY&? zs9Pm+V(F`b<{bHgCe|LuKeu^);FM%H@KH*68>ERj(-E{y@t}*KqOY+hav~crkE4~p z>6Ugs^7rv}Ztu=#=`*>?68~o-s1`eihp`z7g`)GqZVqc00;{~%{U@I zOF~UV2<-moZ4>QY8zL!eaT^kNs~Oeq1fyZ&4%&Q?F<$DPfb|d;oKjYO;w{2=Drv|^ z0BWx@d0OU@3*D+eO_SXTv5rP5`UVY;*L>CMW@lTpi;a4@R4@|2pb$&Zk1DMf+Vv^N zhg2wXx&fYj*Z1})kj5vM4+lxEk(*)k3eDjZvk0)FlZp6&1@!$6U*o>q2;|chlebzA zib$1QzV>gEqMYB>1ODpMEaTcE(!I&Ie`v`FVMOxa2RRun1D=Vl?B_;2pTnbr>G`|) zKSx5Yhp!ka^wT2=K(RK=F@jTR_C@N;e+mYYYM`5=Nwz~en|{2SQ@FjMXSSN^$RNPM z2Isr!dE-iwb$i;UPtEE!uOev}v;qk}%?BNS-YS7tt^SaW`lC%EZp2h&;}D)~k8uVE zlnbcMMRi?XVO!ox=6yrRzpbyI)vf>Cp=TN8HjM0c6E$zUo;HEco4lTxvhV+HI#6I! zLLg3^oM{iBu+-Y^dc4E*kNGGF;uf}{sTqAQl9jcdne>hu&h)6G7VM}`FWJ=iHdeic zRl>%;B;xZQ5|ET>0XlAxe~qg~t^?(8mUF1_rxAS`P}1t_+q{nb^(&TJ7pT#j9Ytb! zL=)Spb&Yw|tbkk>V=y7ed3%I*#9%4Dj;_}nwodq<=mc{{G{_HG2}LCe_wa=QMRFKq z?3eZ|8p4>k?g9g`pubvzEs{PmnWFAond+80PY7A!4GM!@4<&00UGf%H9Nb<86AY&4 zjdz_T9HHuq#;cV%UzBPpjyQnUf*-vy?CBd?iO82O>Uiyc-4Py_p8s_Ap~>tve|qRI z`xvQjm4)??hidFid$AqN8Q@>CHdk(?tJ|Nf_9-?GIP}!PvpaZ z9}x;HLg7F?trNz?{g32>nn~FAGS2+A{RtOFU({6X2meK#bzpLl2xw+z8`kA2_!gMR zfl~;#8WfsK#`{hrmu<9Z67ZsAj4hUl8RKf_TBFb(n+Yh(XD9A=khM|FxfH^T+#^?NF)%g?|jo0!NvJtTm_~kanIN!N$ zXkdsq0vy`2-2S;?^{vcXwb$PbR7@DNzsmuX@8x)F&b18>G!*iEw^lZ0pmxtp?<{tIaWjsZ zUWkJD%YuEj&f~P7=;8$gX#D;6UG(Kvj41aKLiI;^GATO7=C(oi{zxb17ZR2YKgfZm zW4g?t!l#*Y`m~^VEp}!q1vXq?_s+USrY4^>X|D&Sc)dJon@{?kwYA(-bze3gV0$Zz z3k>egz*56tlEMo>iJppNCP{C0kBkrw`AHg$I+rfgk;Sr0Q&}SIU8C?nnU`a`ZL9}{ z47j?La)NUh0X!m)Bl`s`xD#H>ym64}<2vR&B9IhAcU&TaS_vA`6fdQ`h+A$8&k`B9 zm!WbCoqGsq^yMru+CHUCH|gvnH;@ps#&|`|%pjmon31mML7{8sm~|bV5DEMsV;5#H z=VBKT3DFvE3aMJk7^zvboCu4BfH8M+@9Qo!5|@9#8b%*5swxjbflFm!^_IyO^ugY7 zzrdRFQiU})Zf?wXQOk(B;}sSyStn%YRDX|R_zIYDZB3+efC_|NRp$pA!F6rFVUN&F znAI-#%>>So@f@X(T+=BaiC+?p`RePckvus$Z|WY>5;2~r?|1lO_jdt5ka7_lT%8ny zid|iTR=C`_ZZI50)<;X)E6ozd>Sq|O>*%j?-|eZxwj$F$t{iD?5C?paG}JJzuIuX6 zJyKQNI_BL&HlUKxYT{x8vw;-!I9+mycqQ?vtx_3iJtl;VP7ipZd=h_GT|sF`ngh7E zLFU+Qw1MYO6JckpNKqK%VH(?oY17gb$~^*2zbI2m7LX1S-^Vi^cT(VH?oEr)V`}@4 z^T_&sHd%_H1HE*`HT7Zc*6`F?d06VUThn4xtptn3prgJ#{Z+|!Gw8S%qdo^?TxrsR zsy5{@;T+r3hav?!==1V5!1}#`h;%h=`T#NLG3jNAIlNPSE(&5$M$9D>U!ZvF3|>}P z!x$fxPL3v(bc1g4a;f6pL0R4RTch*^!%w7-r_n6gEa5+Z)gB%w{T;G&uGj(1W}b1( z*Il)uh!>IZN9Rm#a@8Pm9+`Ng9VvMCkwNZByn-=jzq21%VoS#0u5huRE3UP2Qrto{ zh}%_a+c9=UsuaNukN4#{@|n`yP)6<)mWO9VqiRgRnfspnvNKXB_lt_vh}qS5k<2oW z)jOps<&;$){KfG#!F6JNtyxsEdZ}7ehv>88C1F^()75K)lONb+E?G8F^lryC85+15 z#x)m^IAV9Sje3rAh@fWGb(~qjyZF6>xptx@;ZmDcOW4g-9$2kGsV^>%H=dv+scTKP z$nJt5V@`jBKe;b@T=UNHh!7yzA^gW(|KO($OXD|v{$?Z@)!*MkEdbf4R=a_ciFAtE;UGB>uATDo=1HObnKVJW8~P@6*pd!;|9}<7 zKV0#%ab9_wC~YD;r2+iwjRW9QxN#!-YJ5#}feekp=Ohov?jj4~SwOD1UyjL0t|TB+ z8JD{2qwAmBrTGMbM|TpcxS z-b>oTIBw;sW_bf@(ql(Se2TFU|GuY$x@Xs(S$gr2s6=k8=yWc+p-pql^Zk$~$`cG* zGFdTKk3E+2?T4ih&&t=}K%tf`Ngl1kPgL_g<1gcwXixOg*Bq;P~4DfAfya&94lG4-jEFV!dWHsrg``cEA*9Q_TQxyq=<)4$9SBwx%Qe#qh{ zqO!}7?iH>0`{iAJ}E$}_{eiM_i_|JZkr!eW;2>&+6fpe?kxKlL=_rM4kuH;2p= zKQ&)L=fg0WIa_M7fx4bM}a%t#FCOR~1Kl{E81p_Z>5;77o^ zo<8?0JOjO|MW>S!LJ=8iTV0y9F3(vj8t0_Gd-hveS^JlBN?Yaw_|I#vnf&cDCo#sG z^ZT_n?B@`iYQ_0Q1N3;@DV%MR{Xamqsj%*gi!$f)Ul!>1GtH&GU#6|nDW0oLuG5~j zU^dqRzTwW{n{#IF>ddkQ1i7;w&;Wz5nv=29)g`<_u7PF3h*WT^Ghb0~(tcTF@UW>ln<@Mu)OFnwLyv!_o(+ z(7_>X_Emm51F&TyDPuv>jFW1DojgK-y`3EH#gC<>c5Gyn)GHBe(8<-SxY@;s-QCw~ zaa^eq=m94pnHTC%9I84C;f;N_gi8c!47X~rer&*7<+4KdEOpL;C&xJwk>*|u#M37) z_JTq!47}6GLDycD7@WHemzT4tRaVTY1F!ZqRKQq1m7+4_G*6!MUvHZTv zJs{nmWW3vIu~x-v;yjF6)}Hi8=cu^M4QfTJ+Cv7|dYe;y%k%iJ(`kdkgl=hHu2`!CbtM@>Tx5s86g7@QfN?e#LLfr8ZMMUi^FROS%_#eQt4NRru`e&M2$#lpJr zkD*Ql$045v_rnFGet@6{A6hV~pm__$P}}|G z^cZ=Ys)($>S~0}9PmjG^d*!aD4TW0XXMG`d8MS))D^1g^vu}3h+t!cNdY;eJt)@M@ zrCGn-hct#r(4sCrxn$c%$+%YyJWkL~BU-a#35Q|>Lty+O)eX0-D;yEUIvW)Z53JN} z;5j`YGlLBCxkaxaPw=6l&MsR-1?=+AZ5zebk*b0Xts!eb)~KXI?YLKy?ZsgVXD3R> z_dnGIE5W)}9^|L%1~ZgU5hy$cftPag5GmDr7H0`+)$vYWR;K_dR}AJy9yw z$BOr^or82gL=S*Jr8{rvhYd`sQ^DkS=efk$aSjNF3+n4+GULi&5{ts(Hy44in{ScF zyy0eA??ePX&-|ps_MmuU@zJIV?^u>0m#3T+4|PYTb;yzij}zQ5 zmT!F!2M1))PB#a*G+#axJnXP7-5l4nXt$mcwf(B9Zwh#9YMdP+wG;DbY*Cgv+c{Ib z_;m9T_TCGttoNl~clZA9;A^+GRx7`l?2SJ(xGTH~GS>&?P@HYhL+Fl~a6-pP=ZD7r z)`;8o^eu&H@1sp>;=VY?XNM_|lgQdARI8dIR#>uxRHv(nrE|yzLqlr!d^_b0?TTSvC(Z!mub-|sls)M)lS<#JinW55cns2|QKX_4iZV7@r?)JIFDByfHxoCwX z?Opm)`QzQ*vwDKmFQ*MY39wMnpQeUl_Y^OS*JES==1ghBjeJD+WGOYa5I*&+`m}0~ zxO;8XpOJ}j@0=0l-gN*Q2EwbOvFE5bUFzVl(HHtq- zBK#}D-kT7L&G@))_6E7;POqxNqD4rUM^kt*^yTGaxaFzLnNU?^pnHU5d8*J{Y`o0#Ew+P zxb=6=gzFgD8Cm`ghj$nZRP&Ov2qXxr>rmM5vhc9YC;KW*ZxXw*J-5ws6}i3L%bsPA z4fTz?!0o0{RNa-s6A=&hyrNga79V{pOm)8%w;m|QB_v{DhC|)a>M$?PV6>(sx@_

    kvX0N-I1sW^cSB(QQnTowair8*6m$jH=F3B>2 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

    -iWm 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

    #YLk3Q^MD?CC?|5#XsUoPbe@?^BcZQ4y%r0Wt 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

    8EK#jZSa~bE`H+p2Bb>A_ zjo~weQ5BvhKywjsI}iLN0ik8EEyn$cVvk&cq80f=-0L{Pp+Dv!j)^gLuu zyawexoJJx?VT(fRRL5vU`V!8+OMQC=gM6J7~+(R_?aCgP^Ca3nd8g)L)1H}rHuP!WJb0@dfuffqd9Wx z&)MYSPQmN*Ovfo3IxRln$F^l*Im#5zOHU!|^qB}g5u8;sPBX`)gx^L7G^sAkdRT|y zSZ-<+&X2DXqzZ_7?i2|#vnz|P^&P}T2EAd1FD!fg(ZinsRcu&Z#);ORVJAxUKdeM2 zyiGH0ea*6o3(bx!amduT9o|ftpGD4&dmpM3saaTqMCTDsc)y54B^*!tGN%aE&ue+3 zJJSA`Qx1*xd?=f7w75*4snAN@V_|d0L*LA*mSKvU3K8uTK9)_OhiwB7TZNr3A^7Va zQcie}d4Ngiuwi)|qQKW%w7SWlz?1Z)m!y-nk(%}*6Q_Bh_~)s#@g6kLu*U>X1iYac z(B)B*Nt=OEQaYrYlBQ2fEErG!Qg#5RQF%ciJz01X>-5!HLf;JCyL&1d{lQY5goMKi z(o3k{LmqE&>X)T&vaI6RjQ8j`Hr5(Jadg>}ZIZLv?#tD}E;bVm!?F>o+y^ zIy&-d-g*kP1etWvdD4{LLl~Noq`El2hQdv3>Upg>JD>64{B{2{ZL8`6$B*R)45K5m zEvYoDjXC#0i{jWs5^7;zk-T&qp&J~=ccQF@0<+hrGAP)3438xIap(v3qfFmTN2Zlv zafAfel5LueZUjQiR3@kI$R;3dX1~`>f)>7y0yQRxnBcLG!f}m!`33#9cwzW0m)TX~ zkI{}}=Io3C6-J4~k)CbUUY)49rqdBWW#RJ*)Gor3TR_yEIAY0apG*$3VkOi#${J&x zUBjrD8=8Fhu>f-Z03pnWll%B#l7O^kZBMzxFp}$%3}Y`vn5p?O^R<)%L_mc$0nF_- z4>h`$bckXIs-*6{=sXHm6Dd=xx_Il!1vGX2$zAY_yyw`}Zj<8tMEy3kVE=?0cfcVe z38BeAF1BC@3$ZT&tfIs6*oYs_3}0&P;!W95AW>9SFcFEz@Y_d8)SINXa>?hL{tsl& z=xP(wHcBUe2Oxu33~F8)o$6RA&ikiYS7J#=Pr9aY;GF=8aeFI3^JY+a-4Hr% z#!8nrTb|H!%4;irK2Tmlq9u*lNdJa@z_1WF`^x;BGf+vojoJ*8vaOFe(GaL=4wV5n11{AuB4LTRF zF6BEaTt2)j98{*PvIoap8^+j>Mtk1$xmcY~$^K#mU;j zu!?3}n}xXDl1A1K4n`9C z9|`FOg9@Yw24Ls!vv8sGKjIK< z&pRL~8w)o2SWz;)hEd{>{d$`!dY~;Nv9a!D#aZ1z+BYs-0X?Eg?m^Us-uQLE@@w7I zd(@XjEAHg%XCyb6>*oy*<3MaWOMglzhL$7--CFVukTMOEDr2258bP%>`hLewQ1IueUerN#*91|Mbsiil$aZ6b*g9u&EXpr~r((gZ$O9}+6E z)m2Lu7ROq*R3}ej!Ey}$$IrF;H=;<_9qBY+k_PG_KQxYUtaiM6c!wf%cHU{gL z(GTG`>CHL~&axH?Ay%Mdh5VWbr{k^OXz7)*4h}r@b%nAdm)U7?bq=2b1wZy$l)Jy~ zv|WU>j~Sq|4bAIh72V$o;~OiC-;b^cCT_v@XksQ-Om)@sUZya@4ui#vgmFb_3a>D* zUuais1z3TI))$_*=b7nB4W;cJnZ(|~d__XPDw06UE@L>5T z))nH{803Z$={7Q(F7Ro3MQ(%^q7V@BH4we-nDo;!y@|ND~e0M|HzV zOaFj7-`Tpyw@~(w(sY_d%+`{LhnAuBN}K=-3)8pOI0m`JVoQ%h9$V$rd^8AzDlc}-8ZHIT))yZRG=$-!Q+er~-t=-M{#=hLr z{Kt|-#GNku>j{~xO-JFYG@v}UK{~NTdwc9qPGYC%qiI~bgK}rLYf=L@F%0D=D>2^8 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

    qGyf;knrNotZ;TAB?--4=!94n_bt8xjtJqbQ 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

    (u7@M3CD~ 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

    MZ26TQTAHLgikrtPFBGW(~aC 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 z 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

    kc~(cJrv~ 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�Z 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 z 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
    `|y?7LA+4A2B@he_CZhC>20%r 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%0AeXA~^*l`Rjph zS#ZwZ=y4MiMmnc`r1N08>!c4rD(dc=QQ*rV0YA< zn!=!U{^QncDr%86HyygHE((LSJuT`U?3|Mt*Kcip!u9z^A7ecbwXp9FKVLuZ`PXYr z`NDBfOv8MNNm%2`6?=WgENoI#-&%#u%$p^jdU2MoOwKr9Z0QxHa*&`;;{buP8W zoPlDt%dKo5p#m{KC%$FL+8dsGGCm%Qnh-|K9!&%;Uc4vf@|%=zPM%*Nx}BWS0 zi|6_7#9l>RgSw_2zJ;Iyym@*cdqKzyu7QCw{v2=$h+r9fR@3%N)xex`dm8r8)ZMIc z*+Hk`C{J&oA$oYX(nRrgGB>4{_j7PPtlP8qun9`FK8xg+Y$ob&uN7G}2#VC(1PPh} zmg)DXFF!OEc)i2Mc}JyZLpx`$uW25hu#Q%W7}l;ApP66@I|%BCEDzm@%XSIUsiVT% z2Js2G6T`*6YIc5Omg9BP^ljJDUDrHM?y~{Dr}tG}wNJ4zI8@xVDN3cPN$*yrhvj7=MAUbrSs0XsY-N&@gva3NoOQj26gGdML(oyVSZ zpu>Z2!r*FvkD9Go1jx!(&`+xMx+XY%xnZ6!@{w{uCKy<-Zh3IVmdSKr7XZO4_)yXx zrsduDwD7w4dQed`f6u&bH~&*}lzT_pGw4V1L6NlZ>W^gar~A@#NS~u#&90}dvEGwA z%S+8JTi{NxSM;f{hXR1W*<6$Bseo7lvzM88wNV(icjI5?5hdm1 zWm4eV?8qvZ0K7!{-N|dg?;P_i%9ur?1EJ$oEIb}{%QUKhAJL|kEiHljHL|4CN1mPQ zhkJ>h_s0^$7z=WPI7>=Y--)#H0*q5>X65p`AI*v_-VBdvv|S@gza+v>%7~lpnUJ=1 z5GPJy-_{@^zlbV-Rq0QywZ?5bsHaM7%)wV?M%HTqv+(~^l0aS72<~cu${`g!y+O09 zzc-z`XF%Bi=XI6$g+WPG2LBkIqvy%M?~5jl5|s7swibGL`1tYZ*

    @?odDHlLONH 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 z z63knWVh3Zduy2%I)mk%TiR3Xe&$FQijwyNMYn^i>o~WYWJU8wzfxtj40l~Gx8#xya zsw4~Sx~T-&Dfk5M(!)4q6r+$`ZK^}J24;r?eIJpoAzCuA=H6#->bhl-rT2ZKqTuCyE7$5?-}y@7 z31EMU4IGUzr4k$8=T^(L;9CLXlOA774ZIbS9Aii)i_tpLh;YJTGVikm8RUm6elm{J z?~A-*{c1eL3rpA-e7$| zm{3zDSsyKek5esD<+zT(I13Mvb{hoRWVQ)8r$lF!wib=+>-p>ECnEd(V=?MzDI>zo z?KYr2LR0yO*rTx;RtsKoczSM%4$k7J938@gDNGwwc|<12*M3_#jYWw2*0SNMgi9jn zp%PJIY}OqoZ!_rdC9g25zGS`)yT7E3Y;2B|_U7;&PI`XSly=+n5TkTt*sS z#sMqZMeO;aV}=U@#w)BVkS2Og{Nuv#JDb^bS2{;4W-2W!DwTb_XqmeVAk~Bgh9>3V zV&q+1p20!WFm)W)OS-erzrsLz*xK0YYC8H;5zP7$Dbo+wP1ajexIqlP*M*APd<%*f zQYSPcxnoHUq_C5i#cS7(1cj8%5m(KJ1YS33crs9Ij58Xkx18Y{t}7&#q@#;kA>K`A z10euiK^F0Y63Gr>%x5_q7m*+DN%9I=S#%NN+HEq3^ah2k65+mmT#*P@2sCt($tPWb z_rI+B#B9h{J$N+Xcx&X>JL8kAI~^&`@Ik92PZ>YiU=f649#HVlsERSnFDeQu*a*43 zI|1Q44dL~fxZl)Wz_C+kYj3ZtIoX%j7QF+jn)H(n)5D~bh;z7QW*geGqiuHP#s$qg zUwy1CAgV^Xk8>o8N8-7(%yaOdg{aW6Nt*gypd=|3?`K<-nFFz#zOd+JlQ#FGhUh5r z19rjd>L5F0JREJzt6gL^vV*72_Y(P_ra7S%N$4*S(tF4-2_Wr*c&V1&NwNHH%X4ir zW%qM}tX2ZN3}gn(-5AKX?{?>yT;uVX9QX&gHaPmQrzRZ*?R;Fq1fHZ2UmJ~IIr@r9 z_8+g{5dnfJR1xZ0$+xh&ita_^NrHH4I6q!->bWR5aT+d!5Z7gt^2XHboug@H1sRu^ZH!2X>Dv%PTc4YPzg=!y_sXSIx6)MikJA|Se zRSL(vV|Jn5GlSv89`;NW5wW%#h!Lgr7I-Tx4Wre zsg5*(K?&C&y@7S=ojY>_>SZynbwqTgBac!lo#AHqbLFTtAyQ|kuI$zwPm5dJp zS*RdzKn_g+EJEUbjwTR~9~Bbb2k>xsSVn4iuOp9PZ7tGP9LMb_RbNPNez5MWh6-B3 z*kXFtGs;P(aY7mF7Z7b1QESvpOgj+S41UPPd9S6CEV^IXZbYFI~^9S`EAoFr&R5cr4B{RFQLd;!!wx&xobukh?WfiK5eMy&e_}M;`T(Y{3rMB__);LxJckR{ zTCKeAzRy1<u#0& zj;<;Ui#OkIFQ56p4_O{``gmMK+xy`1EBboucU|%5!YdVX|NKhu?g79=l&P)cV@kE`z{JUs)#N^Xq$}yByv{4sW{sGX><2d3;2x_r_T>&`D0l{T=`)3&O5pi{DvBBCe>JZ8X9gk@BP-iq2Kj%pu=-B}oBuohs{hGA>;L76&6)r3%(I2G|NpgT z9w!9E?!&(xgHJ+`c4Y-ZOF z0(qZc^cpQ`w>#nvyD8+#uZmMYh*cmdu#u3pI+7Z*`Z z`+W0IUKWe+;k!}A%}`4W2+WdE)*6{i9{8y~KdQh^mP7}RHDg7|1o`4LqsS`LbG-ax zK+4*R9O2xzL885+)Ij9MLO|tgD|}K=N0Lm2%?biTGcfcL%tN69&munbO~XY1zr=SKcT@mV*I1 z`wJU10w5P(*`*CsEox{wbXBmu>&s<*7r5zWuU=Y`4E=K9dhqNh7j! z6gYNB-}D;yYRgb&&<;TR5I$TP&}6NDzKv$g)c@?)`gY4bZR8{F9<`TlnQT*aw|$}M zxrxkCvG{8^`*qXL6Q^al9;$(qxwQ%4bmKCxJ%Ps}MPHDb?hGkFP{`UT=@Ug&x1%i` z^j)~H*YS2iAn`+Cn-9$k$Ok4%6KTz`A4p1|e-RGq&u}vJTvBOF9`V$mkkJX_!U8a1 zanfdJ#34Gk@?kba9y)Zy!6a&`gi<9+fW9JW6)xPckH2I&vgv;le8?nsr3h?Ku6 z0-%^~7>atq6gPOpu-1Xp1JHCKG9vXTU7>K7Hi6jLdARQ>)qCWC`%omxu4pZhZ3575 za8|k#x-~E&@;wEsO{$~L*j5CEet@u-F=j7dk`o)FzAf;xf@-J>8wvzPf221<(7G8e z*FuXPfn~fUWFMt{QC3n+OP7+VrvesbBin)cYEN!3h2s-*)eYoiV)F1cjP`m4PFBQE7dO{y4$0CKn~RxOIl}OFGfv4Q4V@ z1kyTw-JGpp_bz7GkinqQE^t-XchyF>d5$Yc^#!o0>#f#pDT2~h?F}Mbx4Or`xW0SC zqE)wjiK*bNX)Hc*fQwJbZO_FURv(q|?A;qatB7GtMgHsqzJ91Q0`tNmA6^XpHWZd4 z*BfssTQ0Wa^Ncx@i_7{i(Chay^&3nvF|qvq`9HP|ezO_>6TJShU7%oSZc50YVCZCO z=R)|e{M_08SVs7#pZo81@o(jr{C@V&=lxHlh5e8Dx&P;6li$4D|BF;ew!g;5{OQTg z_Jw4#x+^zUl=s1usFAUG?I3@&G=D> zuNRs`_I;@dK8iT3!1-us7u7eHqRnqvvYaR3sJViQj*KY5Pev^# zWG8P}kW)V+2D^$vFx~jW#C6q2Ok$rca34`H7CeXhx(_UBt~Z~9EZD$PcmWHZ)D)jW zHDHG-p@sIw^TMw^(2hpIl7Wnwj=4=~ht$xqF0eq21{)Nl>f1e}Xftf!ITd%?ae+5~ zyScob!!rHJSa|jXAlxe3!ed4jLM?^3JAKjDSWyeAz_l_bpMkdC8HvA@qMPNYdy}`~ zWdsCrsmJC~&Z!@kFN#@VX|&C56CwMGPgCCVyh)bM=rr<#qU1>Zo$>sEJm?^&@g>Ah zCmrtAjy|pvDw%ewGRTk)4YZ{Ozl9r`pZwVP>Y&u#{o%M}9dGI3bfvlE?ZwgA=JCAx zba~S8Zn^7+3&H5?pm61TUCvXJC6b*nZcvRmb3{XaDG1cZpmt_-<4HSs-D9f(`&tog z8d>069U4)te(!DVs(ntZYc~&GdlOODd%bnnl=EU4W0Zr8w%Q`vN)HgIK|t#`lleQS z%y#9C|8mY66|QY26Yfz~yF4`?mV_GZdZCGuuj_D&=mY%)9 zzPyt?go5E0!}-U$n6b^9n^t{$_tztSFJ=3f;d!RZGYj)^+T%f=t;@wvdH2Og=PSHD} zx7{U=UELnqkjl(P&p+iewqA-p;1niA zrRIrldD~?J&AWa6%*vEZvFR0~2M;?<`8agU@GMJr)n-EM43ojK{uS!DhDk9!VS#SR zS|+Jn0cjdMT96w~_C9|18|PZ(t7GxH&|6P|0V+nf>9Zi;aW3X-3E4!ZA6& z-Zz?|<5Om|Ip<&(JhVG?qO0>8$y<6^ zP|hjbuEbps2yg(HTQ9(9APn(>=%dhB^=TME^?u)51G>ZL~r#{7#pDJm}cEx-)uSdQjo;*MJF zq=xmv6lSHL#2ZYzST*ywJaZ7fWa?BsdFs=K*a|J`1h!rAs#65HqZRyy2)#*b_?Fj` z3;&Dtj^Nq;8Ok>=CWb@h{z)j`*}C))?f%Rl3Ylj;^h*7t7pby{mTyEYt_GQizd(+s z?NaU|2?4l(`)&+HNO8J1Kpo()L*w5 z+5X5j`FB8-Et-fIgLmf^vP0YDAVwtK+b83%b1BvLnDaF<6f^C^0 ze(w1*;Z<{zQHwP?uyt=Ulr1f9*5H=6DYRsnS<|frh*=h?Bc)R{!nw9yy1j$cmGD}X z(vDzf8Y#&A1eU5N;bw(uE}wdA#GK86$F*o*@VI>dL+4E&M%13st_XOZMz$iG8i=Ij zZGM>ouWI}<+rs|+E4E2HJiMfby2M3`;A!MNi&Vmv{leIvDGkWqK72gpAQ+` zUC-wMKPO8zgY7Pss&tVxF)=W9&HUZ=AC)i=Asv5(R*CNrvDiwU^eBqhopOa_lEyCTe!Wobpr(Wit1Mf$1ypT|% zKk{jfx81V1jYr7CST$_E=sJ2GG<1R*$p9{O7m#dwxfH%w3bPw|oFGlc5;N;6FM18AZ@wRXJoIaVviliZ+Z&{#E;~OD zJlKa}^=+diu5(YUM{pv{4mn3G^cf6@bl;vr(xmX9uChcYBY!kQ47?!GCI!^Rben7z z6KI3FnnJ;_v?N$ZMG>){niMVW4F&esPCQaMAFn_taV*a!LOd`J^1vm;gFj6ArmhC` zUVf6hV$L;^&}e8VhOSFY8O}WzLOC*=3z`eH4K67QEIl~F5=k;A82#;z*3Zt9BS7t& z6W{ih09{+ZPx~rAFKKQB5t_y(Ne{hsGz{IEN?u?(EAZsG54a8HVz`QOo8?`(-Ehyh z4MvLC7bX-DAnY#|rnmiW!3V=`EaC(CAgp=HV%(2}tGaoh>~tPi%x{VinS(2cdp3gK z7FxMbY57=mfSDHw-2-rpym28{ZG=s;Qj_wKxqU8Xh~?u^0#L4-^+Vqq5Tq?w_&!!D z#57!iEjmR4+v|Dw9!8?};)rCBEjC)}-cZfMn5byUTQwQUGiaD1q=c-c>zp@t8-Y6` zM=u@6@$3;vx17)&4w;=80a@mZ=-M=SI_QHQdp;T9JlvWF!`3LN#02Tg5bP5qOtLq! zCS$$~@@`&jX%xMuT$9RvvRxx>4A%HJ5=&%~*<-_8je9Pq>_z8B0zw06En@|Kx6YKz z9#+z)H75DK{K1&LSMFUapY6@cTD!`nluVsg8*M#hO2_1+)?}ryhQ~YT87;OY@KaWb zSN7}8sHK03qHyE%hpGrhW<{|{(&GfjkiBMSlJ;LaAF)D6BoMNsZKmv-jib!F4T?N~ zpDOq&23R54XD@m?N{U(gG#jezYVJ*(?B{P8O1UL3`NFSy5O_lUMBUmWTh5a3knrWZ zjJ$X1x;=;yPN$bl}_4`HNvkSK8yb%L&N#aWXXb92U0Nb2ID4t?`Li zX3xqVOP@Zu(7VB~0LZ#4!cGIOftgK|wTFS+-C3`7=Z3^LFWMc?tbF1;y^(ss?hw;npxSMGQQBLh(((!HK#05m z07Kzk*y&Te-fk}2Z3jFIu4%d!mLECxJOU?f22>d62c@!n$p)jms}I^p&GOzkqoT1^ zmDJDkC0I3fxKAPuQ9%ZB@W@gZeMHaDr99dejoH>3F202GQ1DvCY!0`#s!Tbl45+Hv z;1g#vy>DArCO^Z$wO4P~Z}FISPQ$3983G)?==*0KDT7dEJWG8 z0i;rR>-Kv67@_Ku!kIH(Q$;QFI~JdKiSmuydZoWBgY{bw?D1&p%Bb{=fOO0tHlXj@ z2yeJ;eMA0A+q;&-`kLjJ@q;?GN>Cmr>aC#^^wSfOvuqSCgJc-qO>9~9T*ra0pmA8V zL^k{PGsCVeJN={e?yjno@4;r<)i*&0@NX8@b882ofjp7x^sm{4h!u}hts8V}bbWVS zN#`3J!zN?2O&Evl*F`?jWcsL9?(*YTr^o$AhHSqaEY=4%Hsap6Z(?+X@>z_D{cvDA ztQ7Jwej2M%Iw6Ukknk2m;8oz+hcd!bpf7HsCttWXcRIS8hFFV|dhD?*6MPjOqk&W4 zv&%)PV>VAmB#xfEC!3OYB&-ijwj-u=^CeK774OZ%+N=xr&})#%R2*%n%p(ZoH#Ydr zCl5uLjih_2z^Y%%#7Lgcgm>~3(25lx1@CvGDEBl53*2gkRMU^ZNqD>jc-^R3$l2MRJ^P zyuU=nJ{<~pD+j%!c|2*ojKj|8|NI7+(+Avoy}%Z-Qqukib*lTB_I?8L=1MkEL<>)I zZ{F%;-zIzqpxQBNs`&gOB@r~qtTT&@6PIqx5Aa=E?utYdIVuF@@HsOu-cy)y5=mrj zyw}Y^R3*-fkXf$5En+Qu-jfe0eCnwsMFt>>P2C#C!1ijN1BCEQ3!hq%lZLTRZ38T% zSIj-@q>WiO6f-oCA5n04hof93qL3GU9Sou(^gaz{&9LnTSDzP;?w<}4tWKQH){e|m z_jejc8XH~VCN4B{5C2L}oGp#IoG4?thNuQENU3w|H#SpTD4T6_sm=JwY?Ebfsk(>3 z9ICzlljo>s!Lz09{&p_l+oj+p>qD9*?ztK2m}ATklZc!54?eU!sVzy+i*{Aoy}1x? zxe{t4VzNUF^Q3n45E8^Ow@PD(ct)Y|c>UDmcK?1-`dQBmWCX`n|yY z-rF&8{nIjq{m+ZJ-wNs9ge3Mq#I}Dz((e`ZZ}oP+pZz~Z#ANz^07Ab3&z~Ul-^iHk zf8_%I0YZO3`@aLBB8}DGy1Neue0(ePLB--YTh$K6&_2 z%3Vnr6OdJ%Z4aGmz$wF&@<$7(Ni`0(X0i4nObSadOIl5S)a(hQ&?K~5ALefQNQI4)X@H;9?lOWt4U z#1)k{uZj6Gk^Mp3gYlQ20|l`OGZ<8ojx-&Bq9`4;U-F8lg+ z&S`|~9g?-Jts;CRjU|Q3FPH`G>JF{QW$UaI&y!jurkwh@w1%#O1t*S{S@P73KUY}= zwrIYa2*zFV#beKM{TYJ+*}O7JyT88H>X3syi4;BwF${F3p)kU`G59z{($iQ1_2}d= zXlfS6%PBh}O$~+Vdy!I9tBGbj$#(?DV~LIvUwW9K6Ab7_+z$)#A5&Ai%#$9;4RgiE zKd=+l$mwXtgqf=8u<6-lrxSI;SXzq<721TQ#&uvrkCak$ny8`#{qf zquLI0H6|3b0u(qcBN&eM=f0Ll&dI#Z$p>RBVI&6c!HXS^tn++AAN+#)RkUq=qQu{P zt3GNW+}Fd&$*D8F#?6Jf0yFACWNp%FZ7Q`fgTeZ%J;5w=fJO6C&iU!HNav^hx0Q}= z2?huQ2c}%1xtgsLe6lW)EAm(G%lLGwcF1@qI<`pUHU@GojJuO;@}q61>6gdb@n7z- zv#l(sGntcUCYtnQN1?JB6DrnOt(h<;5FAMTO~&`1F%?-`C~|yh%HJjzwl`Mz!&(ZY zSC_)bO>0gRA7R}0z82PWJ=3*o-dSzxykRt>ZO+%+!!ml%)`t3-y8zn4Myl-uTf%7IBY|c5uW?xHZk|eN>+)Z@2(uLusXL|#mEqFjB8-bf~3ol1w zL3WPTYxrS;&buVO7j7k*_6W&9z(4nB7I~ov%N52NJOpUbvQ%jTy96NUs^PnRo_e)R z0W$qkG>>ihSbV%bA5HOt^=|53&)$hj();FQkSLhm8U>ga0bH1}QFsr_rySlurvlz^ zXn=?3D|v+YvUkYm71XC30PN`uZu{Fh=+(qhPot9-%3@@3@nDM55W+p z_6=U0lDs4>n95$qqE$2~guM&!);Js>Odb|ZXaPdn8K;Pxc11(_5*?G) zuEZwo+qpHeJHxse&7{Azrn;v{cFi1%7Xw zfd0aXs+1>mo5Gw{)%A<`sE+5dK(&95^NZ@qSCktR-0<1Y%`@c|ib$KG`Hl%J)=0X| zR45={LP~wdXXZ={5qv9yONwfaYeHHflkgSTc?lRO?iQcl1qwK(r~L2)d_DPbayq?U z?IEt0VgsMVZgD)@V_&&mvq2aG6nZFmwelHpFXobglML5wHuK{wqusDDPNxPS23kXjH)z}pDA zLsxcr+!TJozV_Y4S98AItF9|L*|3=4iqt|qq8R;izbz+PAkJqFkB1$uZ@TB(^#apq za%m$ZKffrz{A6E*^{DM;dwmVf;cAdy=9s!4^jS=kOI#$grO09Y+6t&BXD0r~GH=?r*W%j2{uDe^8149K-#WPMSeQh3(_;f4FI? zuzbAxGlu-*B;&_7F|q#R!T)8~{a3>C-*nv^e`T6~5+05}di8%xcs}lJ*TsInx7`FQ zhOr*hy}VUw^b9xtaMrCrM-#<`q8?n4A{~pj;1QbjzmWb_Vs1}b74^MX3NE34b(JMG zi|eOM%_$2!f_i2oy5pU_szPR*6zW&ya5C1d-z2x!yj#7qU7A?7ejkC{a@pE2T zi-VaE!_IQ@7+(sqWJv6EpjD^==6&AeK%|3S=akd;1YAVkp5O zm`U$uO^(K{R5lpi&i>x2XW&C;v&pHfN4&*tby15~md}8gP)Zj1Im&$NmRmS~g2_=B z1o@rVNRRB#>CgkCM1i4#JE>-6p9KL})h?o!U_`+vWUvjwCeUaKwCRyWHe{u64Drku zOk25X7x`)qaukB$GEEwRpH8KnKl4q2C(_$PAl57OFa*u$yy)cnxGL9{iIhh`O6WfG zJ-qsIw^3Jojp+g$V>Zl5c(MMp*q>jD+@wv;$N+b@D?TTs9Xqwr%9@=fWewc)E)5>- z!PxV67`afiQWwMZUKqE$iBLU!7#Wf4=Xu;}m8SrGn+AP~a?;ZKyrt}e=c(aL%a(uxHg$K>;0YX&w(N0%7q|F= zoHt}iNxL&C^TQpZgv0rpv z#UlP})v{nbyX$jLlOOI*-YHD1lb>f&yL#^TY}>;%O`HL8zxtlkw-al;(Mo8GuX~z2 zwlmBxTP+731k~7|+Ot*~zt=T$J4XFn{A7*h!_mwTSX<{Oz5gWUHz2$Iyo{3pbb2Fu z9Am(0d=(wGnR~)PayBPhnDK?Ga(a1xZ+`6?^(2x5u#;ft@YdCqWra4 za9GB1A}1DH>%7rRYW5F8fu+}Lp5=Lv$pzjlM$<)br)`P%El_tOVklot&!bvoT!JoF zQGGkxLk+Q+&rPF>&d$<&7IFj7nc?Q1`0nQMjCiwiBnbRi4XhyZ{o$_tsvdf1W}x`{ zzhaKMU12qthLJjGBGV3dXi2Cu?xf2A&{L@JJhAp+ll$RC&>q|D8@!Rtc7)6>AhHX7656MRnC;?i|T_5J-Fu zJ+w~9=oHa-V|vN8^H*S|KxNVFGexxZPzWTMM$RD8rEIcJrE_3Yp3er6obP@Tp`&_T z-yhx;1f-jL@z+353{Q)vXaoF`vjlC{wWq zdqkq_`ClOU@0I^|If9jgUoy8i>Y3I7Fh|L%1ZW22iZ1=fu)61J0N4rv6GfzUf7@iuHIDUs@U(8t(WT z?n3I9u;0IP&#|o*7kgV(R%!hVIkeI_YeRWvX}oRepjLAcC+J3GWr3zT zlUn`!1yjmfgVW~6Ys|a!xr1vkD{-c>s&SMp0sHoQ`?lL#|Mj|&=sFo^EN38?W^A*2 zTYE{fz?SsOI>dzs(I=uH$`D(XIGH*V7yv6L0eJEh11j@sEufN3IHW1r1m5k2K3rNB-2O+*55O=(1RvJTK1LYO%dmJI>IHreeuAtJIR140O@_xbK1Ls?RW)k#A zM8Y+NuC%OrIk@qR2UA$yk+Wt1_*ehJoU)(OfNBG8YVY?Jt!wpRf_^74;L~`bC{5(p z!zx$dA4z^xZ)R42o=;aSb=eV2V~iw=tjPr^Bi%DU3GV&ye@2GbuMxJBj?n9_pOJQ4 z$LB|SiZho33#h3_e-W*@#yeD}^*`N`ivGp&_1DVRW zw^$3Dff`F~jzPLgww!o7YS}{!j0lJme(?~DLqyHRc1O&NYxWg)-mkOF829)QWD<&I zP!n9HUq~bqfFB!``@bl1jeZwvlBXWlx~4MyZo76Sk}-#xAw^eS9D3JZD!xD#=qvT= zfFn9oHpbXMKa}vRRVmz?YX}N1+4vx5G&wH|2|Pzrm&+_4x^$vE`b&O?`GPF>tM<$0 zjaV_04R%r)FX_R!CNlkzbsE;NG{S-mfQf}ltmref@ujGt6NngI8q|1}=Mj8u<{VIg z!~LCo7ddPyQL|=Csp=6xlFy%yW$eu0o0_CpD9e^*@w17V`V!@>_QG3Tb~z~!fmkpb z#FXl7=So^+)=8MeRA|5d7@~6Z+Ef3&P8MB)vc(dPGus9kd&8b51t@|j>@ESWT?=pA zP2=nPY0+FLZuD&sZq{K6U2cB|xYaED`0(J2e(G|=JhsVIu_B0W#aPpbUb^3y^ecqPWJ6Sg zF|*H{+Ez&9{>xLxh!}J&>7z#ANJ!1Ec`3fiT80+j_n0&5nBWuzE14X{vQH9TItasp zoKho8kz-P;xQf|I<}raxA^28lBHP|nyzSS~gNaFz4<9CtqC5}DxNkJy&ae1^R$*3` zh}$m0+^@TLM)Dn_k>^6C0*TLfTpi}{KFVvDsEz*&eFE*wd-C?|;v#zIQ-J7|zy5|mrPqrb z_>QFasT*xBQ<6yg!-j9yCV%;o3qwTFJ$C-G+CxS-(swn48>O?AYK&FNdr7aG?$rzRbL5P_(N?+*{yWG9bbDpF|-&(40$4lkN9@veGZ zsApGPb;gQ_8k|jg!`Xc^|IuG?wuq1pV6Do0Yfp5N`zmvyqo#jBM5W9(D_B21p44E@ zXTQsWU%6qD?v)JrO3n5%-|rT2;(PaWDA=z%t(HG{eZ(xP`OABI(iz|CT?g zdEA*?VfN;a|mRp~YCDn+>@ z+Yr?J9oOMFKmc(3LbM2*Ij(Ki{b8i#E%%M0fmn|Z6u8Z^0Q78a_q6FBURhrw7(B!-I3WEZ zSymaIwW_TFU_|YU^0m#T-+c4Dn?x*MR!y+vC3*perezGbW<`#h$3&7k_ z!%pTGaDqE)v4#wb1Ux{lNm(_Hjpddkr^&uJ+Xk)kedY>FUjU<>8wLi|LP4c~Z0?t= z-P!?FJSqtoV^sx}hmF(vNT7N2bun1wn|Xzn(wGWOY+dej*BshG2?;wBK*mjmaX)5&YX+p&W3 z4g((^8FJJ6=T0?W&M0LE3%}J}BIo|~ro7i%&O72TC&b0SVqL$X_V28Vi|LJuTkC#;6(_g38Sdrc)8BK^1`JpV^aK{U59U<17T)NPu>Vy|p<)O5Yx(AFQ z!sm^B1h1T@_zk>=&jkiX7N-%i24L#jn%My%JD$`{=7NaKEY@xf#jnUe;aO+2Zgw^+y9G#fekp=pQ1H)b7na^ZCw+q3&dS5vyP9lWX#UZP9=J>6FwR-CfA+9h;eXMUNP4-Uk&{l;MHMKBss!EC^LR8R2 zq$^PDXXX4xzvPn9&%-5W2sSg(a#?(0PzmWvX3C*_%9uvM?nrS^2D)|JVL{B+G>;$B zoFGRyp z&ukCk78umnVQ0cH&1;!?{E75sG`aBr)tJwec^cLyU^g%RYepey1GQc+?v8qr8YOlA zN9=uDGBS_2xUhP}OyywFLYkdW#8eY4DWDlA*h$Weei+1;xFj5oDBS=Tfcaq2Vw3Zj z`)hQFhMXR=c9g@-wm&^uaArsD{EW@)y^Y5 z1)X|?-a76FM2_!O6ke*}79m_ImM@518V<*heIWBYlI15!({J1t&g`0J!`4wsRo~7G zOiiotYcAe)+*)uE1vJFFebS1W9v)nn^gH*j5P57PWP6sMSElB-;^?-n1RT|8)Ljow zL`|LGF#P%mol-R?4zUPy0K*~Yn3ckwT0(m$?kdr3aPMh-(hocb9#S_S)(qh^$tG5G z!thX{&=oD#5bT}`b8=tHfpKFH!(J8|!!E6BvdL1ZRSZ78}kDL`|MjY5!tyIYL=SnXP5$JX)PzjA8o4u~5KNju@$ z-wg}&iAlgT;ajJ4p1#G+!0ustwDya)KgnR4t}Ar-{a|$Gpz!84m}P_Q&hGT7 z6VP{kSZR|}Yf~9@;EWi%p|@N|UoEk?sMX;x;UNfkkgSv!u}+x4T6nkvDXCIY(Oh2g zW}0h!fEy;<|FN?FTs>w4hgT@srEf(owCfSoS*T_j!$*dYQk1lk7m9vCXi0|28FN@% za-Y!_f^5^2WK&i2e=+x#VNrek-{=g314@I^C5ni2H;f_zf|!)FlyrB@&?v1^lF|~Q zbTf2!cPib@0CV=B{_guZ|NDBL`^7ouI=;aR_Uu`E?eF^3cg>!n_N%#3pEhpsSvq{u z7NI4y=x8NfXIbmW{Nt6U)*z5*teI@Rh*-q$FYrwnVHw(g+k7LJgYe# zw-a2je32N4kDeb0-Jf7hF&p!XC2yh--YSY6W>)$Y!%5;8xe>s@n@BDax>sq9_s!{A zIOXd@8l=CLXz#UJoUiTfkWoP#CA5do=Xv)~mkt7}1LNz4FIx-4byTJ_+~4ioRxc6= zzj9CUS?Ji|wO>tIE+z_OQmyu%1FN_hY=fC>&c^LRf_*|*NvAx{t>0pwgun88Wht1J zl^)3%>JWAF>ehUjhIQ)P>q9$EKM|~2mR_9Ccb!K*3&#FRqk@K7)g{3^uFhN>w&YN- zaE7WbtgJ4ctq&n()@Re-f10_ep_>|7P`XqvFn03UT*^$+Yl7$OWMr+b<>&TcV@8nu z4zaB1z4w|oXw_w${06h@^KIf-JICr5Y{0=?^yB>@&ET+4;v9ThbMms^zZ;x{skDU& z6}n0$2o{o$KZhKg6?hSK8F=C}j4|i>mv;4#w3ed50yXbV|AQL2WVcH-BE-$}uMFtl zcP;*>3`qFTrob15c2*9y`i6FlBEtV81G=Qs|0)BzeC_|2YUKZ&&(-~pUJj;v^Z!@| zB>bN;AmRTq1Bz6cu)HNh?6H-fg%jS4TZ$5;pdWe2#295R&gM&8z_g%+vu^%Itb?ft zU6$0iqHy4B!GguouQ>8bHA&PXyMkf)hD5JH#X!+$L@2!S%GhW3mjnLPTZRETwBG{0 zJF<1>3RbSa%OqGiu^28~mp!uw6$?t(8w0`g*q@U-;91R&CUwkY$9J=>1rGlVg zT~U&dtmsj!@ZsmG)QuO|RV?A#0`oSwAI`|G^TBLXN|6z!zr8K!L-CybP9U@53+x}_FaaJc zlZ|v!v%pNjeqVELl+4pRC-YxIKD?$;&|feh!=;cA%-$+)lwFPZCISiLML*bW<9@Cuo7Oo7H=PWKa2YXExkTOWZ6s94K^jfrKLg{ z%^xeNI88ZWxnUa(rX$Mt#9UgM#;`ANn}AFS(YbmuO3 zA9O)~7Bt4}l08t3t<`UFn0`NlK1BobGJ#l8a zSkm_#a<6FR?HSwc(UDo2b1C;$xRaUK1+CNLvF7&=HTRm3^47rx?IW`0wx`VUgiS?z zH8(u3O{~`i?Zy}{hNrwC*0iv~!C$)PnM{^&j#iPlC+yIP^>OaTHAc zh8DKa8OCLi<+mzdR?M=Wi&>1QM^w~YQ^l4(_byVH!ox|740-T8Oz-i5ewmx{#zT#> zuq^a~qLg@LBe5DAbAl%mFCwXVzov;QeGODu*wZkq(w5O&=SV2D$!|=-&EYC7Oc3Tw z1rwVL)*LBbs-LG_mo=aIK-i_^? z#O?oLB*nwWdH<*|AZ0CWd7IMgmRS@ZCu~JHtLC;yY?qKwsnZ_U#Y#R`rc`Gw%4E1F zQ#D_z{bvBPR;{N9yt3Lws=T@qKG}h)B?@#s;9^iRdhnl^;UAyM{cn#85&l2<)c?c` z|HG$VLfL=E41aeU{QsiQ|G)F8|K>~ogAe870T}YneusZ;PW<;?J;tN{*+kC>oIq0Y zA2z;x-CuV68~zLb-E81u4Se4H?_PYamkw|2FMlI%arr@bRTBgIw~T_oZR3(NG%4?O1^O(&kO-L~@2OI0k24_2RU`-(SagaW;dnVbanKkJw7}8vH9N zDg?}iUqwazn*J=fQXnN|KP_`CwDLh}fz+!Ecm|nz)AZfc+T*jmAgj}fdOJ=|RD=34 z4iP8GTRvBlroB=rPqR{+Xl>qK@j-mu6}FR2D+87?y4%Z9;lknn8q947F)06vb$-pM zse{A8dO*RZ)ZG5M9j9}N)BIk875rj&B57mDs(p-N5?;?>jR)l}RD?auZ*|XF_g#q6 za(0|L@Q8afH70)gts>2{gG-XatLz4^>o8wz=9J6X30e1g!hnRsbZ;#=^U-ljR-=P*=%J$mwz+*goaeXvuM`Q}`r z`cQ^$jR7>qtIR;x0;F1Ftv4(WkB2XQoglk7?rVczm>$dNU+gtcUeTF$ACYa*`5`ff zKj{tbWG7QAu)aT}E^E1dQ0TNJa`tf@Pg28rgrX~`=B?*k;gan6T13!v_0rwTqf@yw zHEor~w|Y)c@>9Q(T%-+q)*bYtYl^?;rdzvjSopN(AMc&E~t)D4h$$0n3uiRZ(#Zh`9?67|Za)RKDkRK_^mDQGsewX8GoUc#xzp#HD&?{Nsb>$pZ)h{`bt9E9xApkVeRPkpCgS&@sWW^6=T((Y zS1OO6%Cm7*eknl(9{3b$*Dig@5VOj!v|LtDC3x*ZWmyL@is};yrwU|&s$5s{#f~Yq zG~#wPk5neI7P7YPstO__ZRT>mO0MQWHrjpK zU4`P5lPl95zPDCM+YYR0ZT;DFkmbdV>fww1VDz1MBlq*Iut)WN0T*?4q8H~vbM};- zC_AeTY;AhiaSf-7!@|s-(}Lv}`p=2<)ur@@boGZ0BzscmaT_@(tK1tH*i(t(2P>^E z(i>L4)#QDd(aJw!D0V@X<*`y};Dk-`&vyT6EIO_EYL;Jf2mK;O{m~N4h%u2;?KwYT z^|{2;>rUj^uT~dH|=A0<+<0+yBZ{kG8YFLRlKB)LbB^z zw^`dFx_x5Fd^d)yc?shSR$TW#)NenzXa( zck7$vmRUy!`g85_Ge%o^Q7#_+_T$^h!YeDr%}#eBt^0=-qTvZR=oVmhrVW$tAaX=^ zo>qFgmqb|CHh+}}8ORq@It#Mdk8JMYOW_-D z)De#<4)xm0;1KDM(=U=e9gvWp=f7)n+H5tl;a)yfHLJ;4=qH?+GQHh6A*CsS^@vi- z&-=eZh}Nt0CPP0(#C@y%vHN*COw)ua0TS!w{3f}iMEu~{lI!L{D&AwA>oOYE=9ab( z>P@}^<<04?*R=XM(r<*mpqxVteo?=xEWo8y#y$7R4bP)Fq14}4s`9%vb;Yr-uf}5% zZ7o}$9{8%SF~!IrJDati%pU z7m7BU{YI##aA+Wwf|eBnl#bC6_BnlKfi@=ag-&hM(+cyZF;%rkR!UMQ=T!1lnulwt#H^0aCk};DU1GSln;udkJ9%CErCev8OK|Un46bVlp;H}>`B0m8$Kg(W z7bJX#=~C08?(N^=_-4vjJ$@#yC9NA?PF&d=-GiLCl0l_PR4<$7gZgk(;{6pI(kJ+bYWv{GohS zMQN!733OBYnH$j6J50|Q;Vzv;Au}C^Mw;7R-Yem^&@A=jC=gb@{i3ksYx$SWbY-q@ z+3mstb4(vA&UwWFVkiok**zRrl zK+8&J*FJD2IOsj7FPoet> zFPbTVl;lo<@Tb-ks!~U(zUU))%EPD2o?Bm#H{?uRh~DS7ESsX_nQnD&bau_)aZ7wIJk#pY-0Ip%DbXiaZFl~&dRWo3 zk=JWHb8G6**-2kN`v>3D$X2N_~R)2b@9nQ;mp zeT;IMyUP{Vlb2hZ#}#SHS9(GEi5ipY+t+ftD|I{VFtf3lRQPbx^+G-v5-*yXT`^yd ze>?Kxm5K2uX*8UTPKTT#bjL7ajHpCNMZkQlz-2F$f?3lU9WOmxKl_X`;9C;S!T{)s zjJ;RUkjJG)HFrms}eQo2soE|je)#ORKAXqtEuP8{Cj4F_9QQ8tFzH_<2s740N{Va zPU;uYm@} z1yS`dhJ39_hxlal#7XJDx4L&z57~I7CasodTkEFdG+o&Va-j9=E8lG$KwNF}LT-RH zm6esJ;$04$LQc1LGTrmh%jeN~{86ejHxzr>Zo7tvt>n^u3GpTrgxWLvE))_Qx z^Hl6nbU*UH!Lg`#Nh9Y&_6OwhP|l2OY%P4k@GSl8kH@um&RvphO0D`y-gWv~ z3{A?9inT5&QS)vpB^?X%9K3t~-U{EHO8FH#{KxTd{zm_=AjXRh0E_93lEo1kRn9xv z$~nVbT$WW^brL;Y7f)B_A<7+uuQYZwNj)6T4IxR|A*1q9rGeJ7*JJj;#`e1US-Ux#fK+*AsXHXG^dm zRWEV182GZ>rN(yr*=oY;z%1fe2&$7=W-#QR0iDcq+fa^`H#Rzx0<4L1DA;~D%Chff zz)ZZq>d5fVMFAxbciGKgx&dQB$-~Bq$rV7s=#h!LdQ7ni6td*8l{vVXtRD8qjr3IH z899<;Sv<<0P&-=h&&*H>i7z=jYyqCnUi@aTGyUmJZs$L@+bB83w(Uc@btIR2CGm|& zW#wPrtu)xRs~Cy$e>sUOR~=t5)Av&BEEsL-GI3_5Cq_|J9FUo@Z)m$DMpV$5+J2zZ>@?mXwtE;1G#M zF|jlP1^LHHexY2RnQ?->vzIz)d-^c=rnLWTRISu2*SV<{rH8=vUxaz?r#29Z;j0S? z2?bD~Cx-9+vYMG=yL6D3eM(uGb9cN*{nm?_)0NDmi{0qj zvo#&`=?<{DOy||BBC`=rz8Wi?1@nx|B+u9Wv7E}C{r(bvMuVA=HV{ATXmg6gstp#+ z57XDb)yyDhKFY{LLDK9UVaNUm)FpDai7#|lk zAN_tSR2VBgjz`}=xSsy+v@l*!;--NIJ#`MGwvmv`1jpCF+?bfG^mrcfDK5)4v~iS9 zdVfL8H3YzS+gMCRqsrH(tHpSDb|&q5n#$8PN-YJnm@3|rUA%lMaRA)I&W;YBP8g?E z?RiP-o3rDc+T$iJ#+xNpGlU6y30v+I zOUI8a#D_t2C8p6170Nj(SFax0NM90`|UjD zL`^c5$3W3fqVIGDFnBsEDB#U{>@-o#pf8S++%`py(Wn{po1MAVh+E9-Gv}L5wx2*g zP@zd{$fKK!TK~E~JMAFRqadyt%KV}FbKoW9%mN3Q4_u%gdiQ)LZ>ELJX>{$)-XCFS0D&{U!UYwqu28z^aW8;yt!@|O@hZ7E7 ziNbn6i1pL^%9+%~PMDaesBi2_e+CpbuSRb@VNt553?c{Vp3S{uNesU_KLD~nPkj_p zG5?S*?hd_r< zTn~m+Z*fw~0=dKQTxmYii>vmGG--U!YX3^39+*bRve6ZUPQ&`yKRq4#9M{CE;?ta? zIIxr(b`e0dB&VNt)-ATxs_?Ix>4Z&kBN7OqTRj$Vo<#<6xne_@9+C~ zb0a)LzF!5o!r8eRtE5WU@ZWTn{tHU~)ct?@vBihzavlR<{!g3+qc8x)t^D}+2&@&! z*CW1gUU%(L>)!(4hII3Sz>NH$8W&@Xz54TNEnjf!)nSlU+PCtUzb8brgUmpY1c!Y8 z925Ws4$1shp7!4yf|$Sua7AzErs~U=3y#|Hk^pf&>;ah}mPHn?2lDogj>aS;cnmxd z(z5T9fu9Z}o$jyLq0f&-hK5Kul!!;2#;uoYeA0CHRDk5rruEJw`g{gG7W}3Kf61xV zv(;j{YAjS@0;6G{K-D0lx8HZo2Yaz3I%A!GTK=vG-zr-O6=uu*iinC9W??&hQJDsA z4rAcrM%SW`&?z`=te96CAOsL;-V#~?UK3WeQ-eg=uF1fivU%k9^?Ouw=v#!hxA(gM zT1O3saOq(X;fFSP9>_gNF8Gz;=*$gDr2Bzh0NtI_I);nw0CjbBtLg*tYtw^+{BIfq zx8P{h3rJCEseX;_&-O^Js_lBV{Hg-GrS9;v!I2SFRn^jx5@;!~L(=WY^0v2PsreYG zINc;c;-^6E^fElIs%M|hTcj?2kZK+POC8$7h9x+NeY7!wL#Uvjz_Wr#8`S8Z>Fe`) zot2yGo8GP`M?g%j&ntFWd}bg^h*pS~0$25`8r-GD#hCYD-4v zHUF~P3@VX*kPCjIK(^PbO00WtPHw4U?OVe=Q10-vg?7y-E}c;J`ZtOkgH*=xH$PzA zBsGXDRgE9H$N(WwmQa-6z_CjJHyWvp~IA^@9yx5a;T*B7S`M7jh}d6<%> z0f8Pu?dDhvzsZO9n%D60(^}J#EpDH1CyF{`Bg^$$LQ}&eUx#p>Q<4cU#oH~Wud0`r ztE&aaUh_LhViLf`2NBENd78+M^_)a4@GjN~7bepF4h>vr|Cw^ahcHAJFx0tytM$S! zUrKcQ@bM#0T}bG!lcgjE0n<;xF^P$sod%ijGyn}DN_uv_1qZ%^)?@!U%IMiG3LW^4p*Dwz0+}p zyQ`}ULwz#10ysl;0>y4Wa{fOnK4}RPG`l;3Ha2V?r8*Mj_Zy(a|hSZ$h;R!%`_8C3n%v*mu+x zNJUN+@qc_L?F&Qd&SBps%lMVdTQ$jGZjXVFxFR+t)bI=5X>#MiwMzizYL zZc<@Z;j1erFTcZ((fl4uk5%l+*K5R{gU@B(v0K)h7@>@MBvHB8{^}<09&*mDjpQ?6 zS^T=2igH_j3n~`o^$Ryg_NRf3dJ;LVUD4X7X_Alq6c-mnLZrT}UTD;|{wgdT8tBgx zaU4v=_i#9d5Sem?{W)=T3$2}EvU1S9djM$KAOWls&U(n{?E&3>$>m17@9)JlpDxM4 z@#J;A4~2$^I)f%8-n#xO(;I67U0%24F98OQ7;S`or?yNAwO&Z__A6LXzO5`O5tkqF zL@+!-9%5i*)c!!-_4@~69g=p97}oEN=3l`ndWwtQPl-G)_L71o8Q^C&ZF!WoKOWWt zk##%|lA5vm-lrh44_-QF^Az*O3?3Dfrh+mqfCl;jg*ht5oVPd&n13(R!iJ83SQ6|% za993}(sqGiQ|j2t~G#q&$mp zY1xG;vc=GfdQ_o0yn_UYE?PMRVEn;t?B5mATIm)z)S6k(Y|2&B*m>Pzz>xrl+@o3F zx`v;XgX)dz5SY6w_UP(1D{WMk#BS@Yg1rw6*_GMg?-@#teri`(?qMZWFRY1^gg#v& zrX(ZK{YZf1GXd=%7d*=d1M3BcP;CF0K0R1VCpdL|ZoT8Q(w{!c343ygBXta}StoW% z)l>ZC&2F$+Z+CIB)KR&v2c1s@24JJpqzNN~EDwZ99IBmkz>ntwh-d`yt9uScbhsX& zzJR%T*$H~{=gzNNCCJjdq~Y4@(}ET@C^W6Tqf>#e-5~hWP5e`} zORnm?1?_X$9_mbg5F0A{0!G*!tPU;THFV52?u_9{VdUup366mt00YAPC9rq_GJWUE zKn)w66}ykF#3i8yy*pOL`2=eWzRKIA^Nwolz618_kI9epr1*%1Fz6MRz3A=R1o9vI zvAQ)@oFiYz7Muoa^uPqXC%zh3?&`7JFoF<@Iol?swK=!6Q5SalTFL2AU_sf5{T6pjfHP3A=7FQDRX#?aJnVYB;vD0je3MumgXO6?6I~ z>grP&^BCrA5d2QDNypvqCf^MPoh+xZ9{ffjfN$q3Jit5*u~ zL(|&caYKA5bqQcu1(f&rX4Rq7u4^2*(=9qZOhwrKH*hJ@6y5y@0HBYJ0DyKM;fnsJ zC5qb!zz(d_TKI1Zm3RhoPq$8g_Wz?5y(q08LUfh7(E8c}E#c5?9u(mC|7c7Y1Olw@ z^}QRa?26?6VH*1=zU zL8Ey&s`=WZ=48T!1qB6#g-;OD)G_NPAO6)S-RCBbf+7)8*r1YEP0cIw*ZJ15z4=D4 z2Uk~3H3idJ<)$vCWtRN0F0v61$5x3tb#e3SpcS|cT-89;+ahur68Vwg%y22 z>?w~3#lObH&7-RWQA`x4VlmSvA}+f)M=j(rWO^?C{24+grjqtfOX!FEaiWCVAo~OA zv+991HDO710Re}_)(9erec}t!U5JQCr?>Gh@jDwFfH=By@(8U67S!BdS%zyb+Y){| z7Lmyrm^8xt*LwWxx*Eh~-3%13E15i?_hhzsL>tx4mfso6CmRaURR$4i3mIPThmA_( zwg#$c;J&&(1!%K}B!b+0yD_h52figaR>bewW!Dym|Dv5u7y=c9`O9`+nGNijT?0R$ zJ~jgdzKBsAoA_Mf~kV)P8lnz$?j49ST8=2D4cAuX6K#>vi$DGME zHS}5{(?5Zrlj+o+_V#NP6)2n$qIUuuv>r&MP3p$%SyN&DCIKtEL02s? zCBjwF`rOREj&FCFp#t}X?)WW6j`q920P5ah-Z`+K?-6l=&KeUV$LU=~w|!dwI4rI1 z=PxQ|sa(nkhDh8}FxMjd0u_(@ds)F$jSyMTSsT!KNR)DgXLrP{-?!1ur*G!9oE_oz zLjh1ePVda%O1Dd&Oz7(jyu^q#xLkQ1_tG5itUnZxXk!%)IV*_S)D8$x0v}u4CuQ?&)`h{R7>LnChGTiL7M$?xA*m!LtMEa z-fO^=T4Sd4(}rNdvgKPuB%5kVJ_DaoCyiCr7sq)ZT@se)y?z%z8O+Pe3jhZj8{5#` zY@H#HI3cmRgDhE)&RU8d*L<0xTjQV%Z3O4iU0$v2VDWi!nkNs1_+j$$SFvHQUsH>E z6q5yT#|T<{re-=nIXRJ$kpTj)^V0*iyLZFq>V2klgsBJ#Kz(<|@h=K=#8I7)J){L< z0#pjNgd9#FXsBWPg9DjQ86;eb){ALqXn<%X%ZOjtl*XqVgofxlz};eccFS@n$tkp1ZjJ1Y$2$9k`&BqX#r(Q({*Si`8VbfRaY@{BAj zIEe>qBMqLjNUwMA-USxhEh&9W$JE4`5)X3aU#Y=IFi@7FW>pc3j9U?-M=XrkoOQ5YX==Ro3!nNlum}0%iP;%-H z;7qP zyy*WeD7cg;NiDTTn2bCX)9Nm-Tejjz6Txv7;s+7pG-kl*=;-t|2z?2lK1uhoHc1*6 zKtM@NMc?{Q>o88ps+ko8f#R2KR;&RA(}prU94vf4StC=rtXA+YD{I|-h`hYKa~)BU z{`Wt4*md}qSP}0q_fHAh*ypu8&x6ZtIawzE@s2zJ!n$gup}4p>mLK^|tI|4KS6UiU z4{-U}Qwq|hQCE@O(8XGWAY1lcX#(8 zF7V~{E68lGebra5@PP%PsiLZ?fBXLQ3kl#v2cW3p6;sA3`4_;&eZhc?YEldA9p8pm zj15;j=hAE=0l|0MpY89+SVF1z9wpM_5`;%Ycu}0Sw?8h{ptz{7e^51o2iMov52Kf0 zA0Y)Orv*G|*5mcUD3U&qO0^-@QFWzQ5jfLbLd@U_1S;s3{h`Q3NeocDe);m_^4Q+q zUeNpZwsv-?gEiG>&vZY4DLE;{9CL9S-(#`Ujusk+nO-6WE&*tT`M*I7zdtZ>UD&vr zR)i3t43=;^acxiO{YfT9DN@HqO zx+!Ry;Wx=_##3l5W(i>6ZJ$UBo0WTmB%IvvIsl@x01byh9*(`e71*8c0Q}bDdWM86 zVZ#$Ipdwf?%YD*+HBjO?0dfsY`_)6q_xC`P+4x|<;uc0+JnFco^&gh%r5sqcTD4!Q z0{HrW9pI%T`7^K%lK;)X@-ec**8U&S`dd#tiT*a69zsuO(oKsnOV_+C)|RTHFVqi7xMH#Boa zMf~wB%QH>V5F`|8ZDC^NMbaMw55| z9SL8aZY0eoZQUOVprscG`5g|R!uXe-coDKp2oTa{d(|f;B@tPK1M$yGf4png6rs!K zejkCR7m=(FNd*b~>WR$<-fSOoqdLBDvUzn~a&cg?jypO!h6;#xA@^vT1OaV+R$B2q*@jJM>VFcKuWMm{}OWg^kBV6YgIzcQ?Sd_8;R{o((Q1~n? zkebkhn8`D1g5(xa(3JX%=I2`TL64Ha#dlfykH zGU9%8{ozCV+umv6j2~p?b=>=uTNiD4AzD%376DkYw&ba`@+BIO|3-u7{Xm%1>`(B> zv&LpEuep5b^z=vvJuZw|&v)B)+Y-olf~vroDQa_GqFczxe=zF@?$l*}g`IMXk;q9005YGNF6m?ge4a>$_ekvEr`wRu!c`+rWOxj;XfaLPFm3_?~|z@rnUH%`x5=s z&VE(UHr|^u^bR?6Txg;Qk!29DEUOdVQ`8}H>lS(RxV`paW|$2qzx=5r4>^~hWzCq- zTZD+;RkC1*wO~lX8gW@&V_MB$vLeBVdw?#MXcG))br8j zO%-NFMCe_=abl@Qi+C?x8&;j43~qdZorU$*he$FRE6E0!*+1fLUr4>;^@vz25j{UO zb@00RLUxXO{)zJ#dQHcJ>w- z=*g{3@Pdz{{W&q{!4)s!UMyS5Gj8@r2UNhSr@dry0UKtP%R713p;eoR2T{Bq8QGkC zzuBpFjbP()ak zk(KqTN9j+0|Ca^|YoDjfP03@{lQZ)Y`DOy(x^aB9DBf!s(Oajn6A%P%l z^#L`mKCm8LK|(ZFGU6TgTOH&!+Y?nLTSaiIh`n-y+pL;{F;9+mC0z9PF@|SLgizu zvlMbh2>&3EJ>0*J0olP{2bvW?8eL8V4v&f&9vt-Dq)7z>ZK)gQ!sPh&Yr_^ji4yZK z&In8pB%nEiT!58Q>u{$6Ykkkweq^rR%u~WGoTX}Q(<8UI^`=`j*I9&Z&BI=FDGBYO zGCZtRIX$f7^z-M>>k}f}cuUT4tZZhr^Y4#54|4M9U2$8;*6qYSkQp5!gtk zdg=1fc14at{D|eRnNO1>UH9J}FLlP=Y5{-0hiRM^uu&w2L+kN*VUK(n@)GFyW=SD# zN7T!28Wrue5)@*s3nKWon`vtJJ`ss^mI_LvQ|el6>=ccV`uJs;;KvFIO}vQq_V&NA z7se&i-RHS<$qf%eub|bIxI`)J`FWi5yuw6Y-#|bYk5hU>WPGT@a~_JUUFwqwQuB;o zxlp7mrepswy4q@{CgPT?5|9L5{7d@oTu2(WU+>E_HZqEejJ(1_Y_yv%N(kH@^Wl6S zBT8C3Zh-{(v4^443}Pn?o@HB%Qnc<1B*tV_vc1{dMK_(?`;rA0?`bKWV0^n$vDf#0 z8x;tgG`Xn$*_R;Si;Wo6~f6GqXU`T6;O7sbR=qLRd|ZEYl;3Xm}rUfAWD$$jnE zC=3J%dt}c2vWON8Q@8Cmwax`99`?}obQRQoX)pOfEMr{g7w0Ko604}x|Y;7>hAXF#AfIjle zDbcOive-P-vA+Jg+DvwB<(6R8Br2%l9nE;dThs2?`Hx;+kdT*3JlgI&!4Fq#Lmyn8 z;caSnEGY)qW;Mya$GxD<+DD)FIIprUjMNHV911Pum9CSEmpIzM+{~{&+$08tgNY%6 z(XN2m_Djd;mqq!T7;uLvzQ&tU1gL_Xom)w?ZF!_;v?9_{gwn+qUsrT?E+FJq==M2* zlPP08y9hNO%O@mK(tBEQB<_W1(hKJzZw;og92E_g9|)LN5LaLf@y?M!#hi zFb=eIxNuon98SN6cMpW0B^MVfZ%obwKw%H{28M@?D%d!cF&KK5g(9L8Ey~K0+h~mY{Mp(y8Ey06JFp)a_}AV2EjRa7YL+KPFOs@ zCGl;=>=`%_8uLZ?X?Tg8yUYrQN$?u0a>k~OwB`QpRt`9LlF(ir(g|1(mMd}1X8;Xa zjPn<3L|>epx#RjzPHNJMYCe0$*x-j#U2Dzj-Wq;0#+$?f3Rn=pZamK{;>Jt#niLaX zXgPV$CMovw6MSw-^mY>93HSW`{Ji032ZZRGBGGS6^vHi=EdkqA1SM%2N0?I|Ro@SS zKb6RI9Di5z1r-mhJBtYd0z@V~@SL23HN$9vr$E30G+%bw5Y)?CT%4RrPo5kQ$>RP_ zLB)kXCmb^m#(y<*ba4UKu9p-Y5!xy^*Fjdi!yt=YUCkm(lx=O$?%0(1d4%J=R|@d} z?UT@sfM^8GDYRDE^kY7EG{l0ebgbHbh@fujg5`_ z`}+xEPM_JE(gECpgU&bTUW%Xc-4K}%ppdFPCTV_ZgU#vRdJAUu{sD!1{LPu#nd1%} zcl7K|K@i_~wPJB2MuOF;6X=dPO%oXaV%~`3R0)F!eM=ZX9!n$yy0R=;K-Z_GYMKfGg>KJ><)Oc$ zr93@>iPY8w;X#<UHzV<5em7H)ufnJ~1k5w|EbgS+b?1C-6GoZ0)U@@#o4gZy*tP5(=C(Lb zqm15TU03}^6J_(Xk|s?i_70{Ma0!+v=0zkAM=~6iy7oLSl9Cv}kJj#vhie!!Xx-J? z)&ifH<)8RxZ`RI8+bL^#9WK+eF6m=3Ge9T9#;q6G%+huov3kxoN52Jmh{doP5Nd8o1h}1=&oC06XalOf; zJ8jio@c84tA*epy{j^6BH?Qvzo0D73C$q(ZmEA}3hoV>(_99+OV(^zqb|ds0DjufzRu{nnD!&zwuhr7geq`MO0rkPi_#-8PHgQUsWR+K-kA&Ev2vZz^>|PFTg= zd)Z2!{`3j6 z0~as_WanOv_$rsFPcNkwzN2HwW)gaz1Kq#`W4~fQArdrcQIxU2;=MKBYG>;X(TrK@ zU#}3}_&i2F)(3^kJD`)ASB%8hX7lC(m)x|dWr4vf%G@lHjM}c>g3c^{pH>-K)Wf04ERh+Ybz4Z z)6g(|JP!{J^sA@W{Az#v_#qocAGm3i@w-I*Q- z#OP=t$8|N5GM7E0+<(iig$-JX73*++?L>#yR#nj!4b-zcLwE1G(2E^Po99*-J<<5I zf-8O~lGY*8j_XHj=_2ul%T(P?OYDWCkT8R!`-qk29PIw=q5OX^EQh}Iqj7s9h;p(y7RHYl(yjLCd4wF3EXhJYs zNs$P!fPg?jt%?NjAskj#R#V)w7)DGF;R%~077y9`p7bA?rz}a0vR-A^J7It-6QnG%CrnRcDEkYB#3t+_Cw$@>?8HWq_}X z>EeE%3?L|x9{A^$jt2ML4P3!zVGEB z#qZ!;_bM2Qz3ug7{YV*O3*d-Zi~f+xnE9(h>cMCFXAD*nF?fMrfU1_BwWh480@N@=-EyY8)#HyQNdf4-!R>gv<1tonjBS zk8SG#5V~7U515EAvY4FsI3Y_^seuE^ZG^A_Ep^(kc_;xp@gPuBGmo&gDi@n)*EzA2 zp?`XDv+HJBKk&jAxP(b4#w2$G3$3}BFa}pCXY@xysqrter=vfL4I7FkQre#10!Za| z6ec|GYr$+}*Nt~8-nqCAFVrdi$>KCPmkE>F<{VHq)>D44$-N$LAUq-Qh`7W$PaL%!9X=xL3fDg9Xk<%f39r!|6=bg z!=hZfHsE_0U_iRN6--J}i9uQrL?x6E2?+ry=@&uYP_1zP<4{_8yr#uKT*zI@h_*wbmUYIjKT!A+efkgnC9Bx2C0NuuBnL?^!Xg z@jZ3Atp^hFEN-OTLMgBw<}mtxtIk=*sPmH)%`x&$BJK31j%SBn08)>DR`|Ox7F+0z ztMR26A%mqxfw{v*rxSfNLPjj9q42ZY(k6Htj?OuvEX&WOTIRYH`8qBiZMNHpTMa)s zi!K+-tXWX6WypbeCbUF-;-;5he;-JP^f24VfOJR`pedrGsjUr$U}*kMBZ{MlU4&nW ze;K7(jtR4Hd&Z3DM{HS~I4flI{u67Q(4J9+-7^)uq95n!=9me{{^wW%%8K-?h>=%Br(4j`Z#VP{FxxWcuaRbtP6MxyT%Husvm8C+MnG0B#e?-zFlwF=lP zjAH-YQ6Q|<2DM?oQhzpVBF)UqGBPqYv~l0NIGaK;GS@{I`Skw*{t2d~lNle{opT>c zn|a=(a&|J_K?!1xdoTxwSS7Z;Eea3KeqO&!)&a3~p%Qe!{JNs-u(e z{{0e52q`8nxeR01a3_=Zf$&}^^G^jahWdSGjv3@(brScYUPv;p#!gnV=*kH%<|T)LicVtIjF^9flhNE=s8op$L*Rm!m)q zd#8WWWeDUa-`!6cdzub>HjoaaOWkr(x&Wmso+%bGM{61^B(JOs$FlOH4=3R2*c>Ev zL7yj?yC4SvZw$SI?$cl+*TjMDEMSy0aSlYQBa#H2gX`a0zYIi;%zU&egJr>X* z0h-ofm=_-^{xOM3|xeE-}??+7&x7MZL&NvEvC?->`H2@Qzjc|*E0k? zndqZ8nz_m_boAF?-l?NRRYORJoNnDIF{iJ}uGStSB}yT7>bPNWo)=-^N>}Y&&UlFl zIgUv|$SS|Zj2}c}_l;3+S409!o}G&y8nyKmVCbu(Htnkyn+k`YH9uxZO(38{-NZ>S zmew|xF+)h&hr`9ra;^#PywVpSqsDKq+HI|F3TBRSsu8~j2#|k*rg{&{^UAHV!XDWW z2aNJd1m)dP!URLD{9Q-HaOrWnf-tR3EvqaYGRC2-Y4bji!h)i4^v#| zx{;$Ce*N%)Qz-%~vxgA2s?R!5YoHuyNh7f+jZuywE4LH?^E|LllLhI|pGtY-vdvby z?gr>prKhI@@(_q8Xnz!skcyZt5)D^eWEPgCP#cKWwYhTgR)F;RCtTFit&SvXIxv04 z%(Kh-p}s3{hO9M6**BZZPZ@^4heJPE4bcGpVzkbnHWOGj+1L ztdPY_y;Okz-m7ia0=d)1jlla)_mrA2!10kCA>aI*kjJ_!f(>3<56$>E$t_;&;F}kt zA8Yw1kE$bJ9ICDZtWVpaWEQ9=Tq|g#fA#9npgyb3ZBZiYBq43~=QvB~;beK-0@d|i3BXUv8GiIGFA$=$*+PLBD#*%-}Q{qF+uGCxzrm zzN1x86?XZ}d$L>o<3UZ&P&z zpwgrSJMv*(uHG6*+yHoK?$^xHjl=}zNJ}ra<3Q^DXqY}9Qs8`JXY+u!#aSR!yUxbD zCqxP&#L-8hy}3nfNwA{BfQo_)NI@TlveaNW6Go&^by!j+=XeZik0B%NOx*bn^K8=G zrq~0SBOI>dqidn-BpdGu{6}7(E-{1GS!K-R^;h{8y+p(k{JJ66`)y;LQ4+v`+3dv&~MpD|Wt*6pd)WxqQUJ!%M8o6Hotc z+}V1nBf)wKi%Yq1|43yz^q53?9k_^h-kBk%-Xb+yth`4f>ckFiUL3h06v9@uAc>8a zgmZQeBKrC}7SmA=gH$E_y;H5p*w0NZiuIkY=6ui2@-G}d{~79YX|6vebJuK0{VD;^ zl!dRBmX~!YC{2YGYesE;Q5g$7G>o+eYK&fo;h~`M<94kQ-p=EuALlyNp;X}R`_iA}$}1i*uu)a`~2ch^Jp5vU0@5U7L&|B*c9Yroy$ zv{DfEHk|f6kDr9WQQ>0G)f)YS94c-zx)&Bazt=k`AC5F?N^9yY$Oa3G1w@;GS_FmC z1?$NRJwOrgd5xK{8mL(@yn+zOHAWkp?I(2gKC{RKL+9b}_|dxcxdxYwHv8jdGvo(z z&%w*7Gc^w#4y^Z%y#dfB;8$6n* zxz4f9of@od7<3x(wbIq9fzYRn?nRV zWCIBCJQDcdR*!sPob37NVsnMbk{%+!0qWS%?r!!&n}4GJ*&Ba_ZVA@3N4}=Xf=W82 zhnj^*$8Bq_S7l8#2u$FYILFAYE^i7F*(br?j8e?6nH;TpWQiq!5g^1;PQ0b=Fy$q7 z9_B|op3(mI9kt55Wl_@&r9C;v59*b?p3(+G;BY*c2!J!x_hI4kxJc8L8K5%_WYk&g zf@rZ9`abuAz_+hm{5-;E1C?$d>aQYzn2Yi>SNi}ZfgByR4SWgfsPTUPUhHf^KSg6A z#Kq<#2O*WN5KY21288IFqhYs&lGH%P6_GD6Q1B;aJ%Mzi;Wh0{Nl0Mq@>h-Jg)JZV z5;L8E_H=r*IY1!y6C%CF$Hylw&Xi0QdqxCL^s5yyw@-J;2XA)>OC0z9Af=-RV)FZd znP5Pu&4uDRGzy}OcbWL}D=XbWUGW*?+gaZTqrSe8cwFgO{Yyyh46a_lME@_`C2rre zi*`r^R~J|jNy2mrR?k5!6?P{8n-&nhy3XS0hTtj=FKgbg=kjMp>k%JVDV=SKt6%LB z94x{2LUb5T!CT0lN}uvG1n%}b+-9p;?%9X$zmD(8oxKwJ$zUl?+J2;U&5NueURg5E zh}c@@fD;AynWMgxGD9TOMg8;~^5!pw63EVk@p6R1#0EQ~7;*f<`)MeWlTK65%xyno zIJowfd)bp1pz#GvYtYDnl&xs*rJ-UAzI+?fld^f8J8R7Par|JfVyO{z;`GC>Keakq zbCi?!wQwvGKbP4tVS?gUlBvF1cA*Z%!o;>DrNdOf*v5kFVA+rekg8Tuz<%e!A0;!L zooPcAm|IO27E2FJGsjocteWBFEt0x3DR02FJy?cG9JY$gGa4S)YijeIR}>)eaDTsK zq{Jc}4|xxghbc)UqL1GysRHB*K8=is*m%ui+NiG%w}0~o+QWueuqNyv zO!Nf$m;`uvmkAMXJ^DCJ9yCp_4+Nn=sw(67vKs>GU#A}57cX8!0%CV%sE8ozf{=i~ z1pl>bKTqx1o@JV&N>~tRPH5l)>$RWK!RLUX53}N-%{`xk9SUqZR|Z4gJz%hHBz5GJ zp%J}1QG$!~45k5LeNi5G?M0Zhe$QoAQ&CZ2G;LmeeSIRTokpy{I+N}$!}94^zhjGK zFY8RSe`j3rEVI)Co=XC=_BG60{cDTql~rSo4)`j(Hg$_KYk2x`cwjkR3;nAOK0T?- z&nI2~!_K&k2jDF52^+!>L8(+Id_n|bys)v^_|@OJR{Cs(12D>g#+lMS7zP+{85W;i~3zXCb@%exy%ND|D0=+t+Fum8#N5NdD z-#UJ=I1ETBEQ?&z6ze04!I5Mdk*I;TQ6`ho+7dM>vumR-x9y|~#231tuj|}rDYbVo zwKxA!3~Quh;L^E(2~6ssc7e^N%uFAJK+#9QqJEsFjse3dK@9S)vO0rk zhhhNmptCo~vdvK<3<$K(kZ}xMs3i0D94R4mj-b3T2x`T~c2&>9tg)GsjKzvvd#39V zW``9q6OpEy6niT5K{nqd(LVTc$r58jMCeohl-u*NG@|BS7-xJ+YKG^3W3`LXmLBs( zBJf2)H6l{gY3Q>iL-ld)=304Ip%jzNd3{12<^eE;W;|u)%VJW(%IAfC!fRjg$uo27 zo2i~d$+|Wdl;=qg7i4a3^umDT%+eOpp|5a>EMv0}evPI*`)5q z`;)Mp-Axa3q=`3!^6x^!awx&+^*favCfy-`H&y|QxLLrgKO``{_49|T@`~jB5bf^7 zZQ$eHDS&D1{sh2Jh-urBs`L_*(8@$VJYh(HeThDMa@PLspTE0VKw z4Pi_>aK(j=rj2Y^BD>g#3j_9JQdSiC0%_oZ17UP_9s(_gy^hdL;ZP!hVT{Q`|gQdW(mu~?b^`BRIJAXQ%DGMpO zsdY6DawY`23w?Ze%60H0Q1QY!)HMZAS5z|VDyR){ntcRs^|0c7E?20t-1{#fu(dw^ z;omZ>sw*=hCH#d@O;*)*!q6hk`u$Hu1ymDq~iz;yFSbt2)U&$6Bmxn)O ziv*HXOn2J1B*Gh^iH@|u=!0%ey!vR=`}g#N{)nwdXPN}9F?B&G_Ybtxg}&qMoCO<@ zuWeejn@zdYv&I@H6qyPVbPF~crzgcWQ~nLz8Pw{NHZ##-OFE zYq>Od^Niml#e<*KXF#Dt{h!r(t?w+ul;z=uV(H%|Ne`2OZoBp$(XBI!STwf&GbkDn zo3I-m5B*fa1iX!cXiyVYKm}D1psgTLQPG9EuC73m)7hsWF7ol>MPtJ<@&ARP*}B!g zKhvXHL{O()XnQISj+oF26_TDWk(S{!y6s-c*iLS&s19u95NunD=QiL)-?;q+W)#B| zodps}+W0t2$FdIq8#MlvTa3ynthWoDlp0b4YQd0u7=7#)10(RtJ&F5U>!Jn=t$a}6tgk&R+^2-IFYI^Q9XK0o89~%;KOFlOee7B* z8OOTYRMAOC;fsvJ`uLyeozRxh||V0Jtt5Qae~)K3NVqOp>S-`^HXFZo_1X7 z`QmFLNCP+`N+0wzuN31IKX05j96mahHws0B*%~jY5lw9Vfha?9cV03u)?$iCQJ)Dd zhKwc%1&@qru3=I-Jm8R$^sz->KuubVoi&C5=^yXCB19Vm*B5{cu}1U_y7j^Db$me# zd~f4=;mt^->^SEK{2adV(4U^O?+_n>08bsJ#egI(wTJ_^hX-!Yq!IR|w4p!NTjW=n zRFlmjVCAInFi<#Shf(ZtK;ioE{Gpuw;Me1tz`4P4O3@f2phX+gA<4J?V6!ubtAfz~ z+pb4H8MZ=&VuI(tgl@NCIALZ+#NM9aIBu-33J#%$FXqXTXyknvH5}4S6Vk6e7ul}& z%u5bPhNY(c6diC-gzL|H_I#Jb1L+n%oKG=qM7`p##Y&i2#YaKcoX*u4%tIj2E$7za zUF8m=XIBJEs&8MTsqv-$1*HlF>pZA?{sf3NKotVEYP|Sm^2(Ib-Ma@ntMO4$K2^iE z(i3603U~V;JqCnUal0@c>H{h)1hW&^uJseaGe?Ouyt9CmG%AqWiM7%BHE;+M7E(__ zKyAdJ4H2(#OB5*0o^oRS2m`5pz?$a0eT(~h`kXg?z<>t?j{tx|s<{X>77FP2lRT3& zz8M#uL)s9p$sa^VhFQTFPT=50#iBIa?+480v6>nmc%{2Sr?Hu{Mh9NtNT&J;|k90pPzY_`P<8~W)3!txU?-oL6|Z-)<6 z8^Ui-K7Tn_>5~5dTQSh`T=)q)+{u?obg5x(GHkLF5Cd7S3~nBt(99LSpun8T%irnB z5~hpUC6aoEtqw)5G^ccXfCu+h5UBhAX6Mo7u)%i(nDxY^W96u2`7&hlBS{$B+FM;E z5|rwciNFUgL&G@wJ&=Rd%@is4BTz#2l!UY!{S@x>OdQol1XC8o8#TW0!M3@{@WI1> z%V5FV7P34bmY;ji^Vl~r4c~cS(~usJ>;FNI@|q#Lj&35X2ftfeTfctg--FZP-Q3q? zLTuE!K=BM%v7cz9(=th~#sEMeSbtuWHW9$>R{rM|b0-$tIRHgtD&YHM8SMlQ^-~oB0x4-d7`AXksk2XiI}MGNGlYtfJBxRz2L*|3 zJqcy!>|w@nCX)kVjSI>&Zlp5<>h*J8*U2=T?YmyHhH^h+D)2W)Y2_lE)QnFd}Z2bl?r zvI%MS#;P2V4^%(l6?1pkcj@)1NYsc@JQ-68dqt)Rr#(*}HV4+Jf`!{sSh~F=qU_pB z`8E*(-+fdzvC7(rpDU7F|Dv7PHt$)q6EMwfAhzE_iyW9THn5o)o}=YflohT6%dIRb z&q2|82prv+kyWsdRonkm1`M!L0Q-ZRho)>GY_-ms>B1~!9T9z z$2aAsHb^LY8TR&oXF5_KN2+p1*;T|s)KCfR0zlCmHdTJtMY+$k3*47~ z*p&k7C3Xj8ajFvg>GbSJ|AU(>%te&UGf&UOGZ`mP{OuFx7XlmOX1#S%<)8ZyE+8m4 z`5P@f<|Ms3nDMWi^>_8PJCBG`Oc;@j#Gq5ocqdh5DCWKC>i77sVoUoP-!~%|coPcf>Zvw>gve+>Qx zYSwzYCEVwlJ=nIIJ&w^P>733$etB0-ODjA2P1w^y>Hy2PAgR5rJ1^SS=1wz=Q}IXR zMe8uFZu_Qd>OHuCkPxVBEYHZ01&R73puz9$ee_csMAJGyM9?4w14m4S+Yb1TTl-S< zMKE&o-}xp=kvZDxci0cmhOm8&Jc@A`N9-v7kcj;eF&Qh#yY#BVApr;%mI*p(-rhte zfyg>4it=YU1`er*2)z^nrDW(i^glgNE1J>YE!7gImfG%^$z{mH^+{7eLllrC(Y(ET zZti@5ST*o}3Q~0eOb`K%4iqKB5B{#gXO%A=4LMw(CR=7m)Cj%{lB!RI-@L*JbZUy zl6p3_%=VgDOpoylH-$x_SdUd(VEhMg^Vh)5zhyiuKAj|yGtP(y_dgWQM)K}c=AnxK z$~gH8?)T#2m!oBZ_t)3+U?U8OfvQpA5+63s7)IUtrY2o;@|sBFA@A+!23_DQiOME8 zdBX|iPF|S7j5UqP)i!vcG_Bw0$b?)z22WiCl8zBdc%=+&lNfLW6QdfpJ$>S^NX_S?EI*)j%&E&5DZA`?-V=wrayEnYIEC%dtM)io8-d`Ng-(%EotW>qtq9Q{P#5A zdlMq4IU#Axt^BF!nll+HQoC^zgew6^nu>=_n<~CGk`+=!&T4fA|2K1d#D0ivZtM9WKI8Od2VE3A5VV$@GcLnYvuV>^x-&a7o>b zc6J)qs>#bRqV~r#^w8(WrajPbia1>DyX&PJUVA5yOn_={d0yNnq|215(m_( z_P0;x%1zV{Y@76y&#u+Oi0Q{lmKb3WoM#VHethhDCjFFkI`2^cBt%DTkBCT*MUXk| zu_+igs+?r-PZ_^`O}Up&2c5MQYyYp6Kc=XoqodT+)RB=9kk6)~q>KgQ%PT5CkKh0_ z1|?3S0ZM+v@cX2;84X$<>tB%L4XvI$NOt?W?^u0E?k!7JM>F(@Y>ZEdSk}O76 z`xf%c4IYza0COf_7X}Y4e|)WydGTQY^f3wX(JB$R+t?eZ%A^D2<$Oxz8{ z4Rd$=e^7O9m^Q#pb|uFlvbX*QQ!}pgYOA!b#6;Nq$vo${6 zpe3^IEA<&sZ{@dXqfhzt>FT9RvJSJDCI^YjFaZI4MIO*04j?IgT!SX0#nS@=E$jHl zFFK*~yv={9HTm^H-f8cw*OA9aBENCKUnY_aFudhzghWM!1L=*+j#xuU_GYr z8YIi3i)HkGPeW8x4U1Wgdk@Jl7g~PI`y{iYP`i7|oE6vs0^N--?2dm7t-;ZTdc#Zp zB_B6@e+CWkzh2RHDycWd=rKTdWUrUBe$AQI<3{W1EC6=ZxS%$tgBe~1xeIn;pde?i z?|HwG8Yb>W3?{zS{O?7zk0Wksv- zg6#PK3u5C*Fb435aZ1wv8(8$eWqkQYL~yL8_>N`Ms1r3XRfo&45!!wKO!kF#M!qf6 zCGr2&Am~=Op#yC)zR0XSyW@p#%D&mS`GBpqNxOCpdC`^331bqNrC!OiyfF(+`T;~k z0BGE$sZg02;N1Zp#e#mqug8Cc3~kO1%naxs?f12s0aa~WatLP>`F*LW!r9yg^r`#X z6Nh$p)I@(9=|C?4IpEcOM-NSWFYze5DGwT3lsVKTnK}A26g*ZgN zyz1xTKbc6OV!fHJAjtDiPhnDHC=d>6K|w-0b%O~7ASkBz>8$U9Rg0RM%$M^asmx<^QL6or2_l^npSlmthX;J47pmg#*{zuIKoC50Y)~nrm)KGv-a* zQ+Aapl%?_q*CnL8!6#D%h@dg&@O4I7=@~V_-_qeAj{kq96!&iYlrWF7*&U5`{C7}U z{_}~JYr*qL->Rs_KY*Qj>!4lrwEEhg{(mD@TlBl zQBx2#D}t2wwb`4*J#iU4i!V7>1O7EC1+rtkMn`kPpv+#rd&D46jJ)nHBN08)VMY`@d=IN7ZK?(TmFvKtdzt@?KH zyJwC@P;0^g=6@PSeJ$4EPp1hlvOO7$? zZ+vB<0<0uH_zIpa9@K=&Cnnp#+iKro7&`^@-z{RKDJk>{gTb~om~Z&z#5wr-5pn>A zCN0dq#uWhyLV2&~k2@nu-CMgOvT^VCV@?oO2s$92cfOA&)Q=IpPFzP`^JM}UJyBxh z3sUGt00s~9?MvyObB`x)Y(5oDa7ejbHSGzv0{tIQIwVLdQWVCT7w>ydMIiZ7Cjym9LA;oF`~Qp<`@;;E^(|N}8l8zs znOeK$;&IWBp&K`D*#2O_)FFdj0|m^e5mr=s;y>N&^`1|lVdGMFL{u(UB{CD;fAFBY z_~m%|>G+s4Qb{e{({+0=!A^vsea>2FeRn(um5TDebeHr|gaL#@MHO}NGAR60F&WMJrv)#Yia4&F;WUjQ-8M}y?1>JhAb_OAKJg_*Zxqx+?Pfo zx%CD;%ZWDGaEA_HTLl!TuTj;^X;Jet8mudWjY-w5uY8*=%pMmm%$U5{FR|Xblt-XU z?S=xSdr9s)gMfC-WCnKI75srGLbIItzpF@4JmFc1(Ee@Pi?hw^aP>m(n& z8o77ybq^|C{_rb;=Hv08WB;TK{?$AkQ9l&k`Ol-b$V=`JvADy^02p^s46w01p2cWc zU)=@@4aQ@Kop_<-9phe$ChI6&>*+^ zz5KH)9Vg8#Pv`Pmo^C!!I!^t9#W6>9DXitydoq@k)Y^zFRau8EM%yCwmT#&Oo^d~} zde$pB?*x`z2#VE=LSF4RBXmavy#M$cv({%nW~5;xVYmYSxkDTzQUVD}kcs>E7yRN$ z?yqUS?a41#a+nNkuDDmWwAJC!zF#kS=+-U4t`9$yOAQGkT#23S%inUlvh!>}2x}vwktq51k<#J*#EE6?yr7dY^wG^&gv{r9Baq$3&9m^7Eu@yc zTHcaq0FvhSsO=8PWE#%l?i4BS>!0r)TZiA8?(po*R?AwfI;|EDBR5l768LoMQgU~; zMlQW-V+mXqT!MZ1%tg}sN%Hj)DU2@RZ!W%V4W}nfrm2@u8}z%#NEa7L-Y&)QPF{}l zs%+_lBn3D2#PEUXX?XhHyGh3G9g?P2M+*mm zB4J$G&Fd080q#cUm+&K%`J)(U7)d#MU({Dc*Mxm#a})O9sKwgKOP(3r`Pv#8;nlPZ zr5HKRKy@Q6ld;WeFkNK5be=hlUWiMhu-J0=Ey;vitwL{jxM(qZ%1A%OwgHObYW@W6rpdJFRAH+T zC(u{vyFYn1W|~W->-Gm9>#4mupI37iG!>?r8N&s2DoxMFMR(k#J-p#twO9=}L6kIBVV%hCEFL7~b=_fK^^NEgnzyOzqQLH8n@5$WS ze(f2_P@rCkT|3*pjIV^#1}jgDpXKVh z5m$Fy))7VA^h)qER?KY?)*~*?;+)E`Z%2t{v4+cfeT&@g!z`j`%#$xDw`WNTCbX_2 zz@)2sk^jd+8~LEzP(k{SIR9G2Fh}ee_{`{)NPRL=80M!554I1{)nqIG<0IDbnh;Ip z4>@c8`34!*7L5P3THN1bBFD&pNp;Lpe*M>`vvPn#8eymLlbs!q)T@Gnm4$U(B@TQ3 z3QUjJV>!2&^PpQQiT<77pc^N-%l8sT`)%8HlO*T2BxyWPs}l14CpnU`D3XpaJ=LCt zSF|05++Nea#`0it_GPpOnAtHI6+q@y%gM@;lHZY+6G-9(gX3;A=#MclvM4&Ir-Nix z=V!GvIpBLiNpG<2SkzdFjp1&Kl|+x(({Rv38DXYn(Gzh=srET$q?5($XFX8aW&!LQ z*XNn;er6SbdOl4vj;r%5w|*=2#PN66#IN#nNtLO$s2igo?>%k5k(@`p8> zZ6*2mg<1#_W@YgvlTX4)y7j$R1`|ITLKL@@zcxEu)aK6t!w`Ti zXbfgB;g49KO)oP7Wc0#F>GuA7@_6Pw1``5pj+-XCI0V!>c5Q+K#KI}}lEmVgP$cO2 zVN~Z)~MpGyW+bkMb(mFK=9) z8*8@X^Del7;RO%B<=;G>m93Mc$xA7bg_r@2Q_pvJ{DqIs$Oi~nLt8(6+GkP6rGiV$WPW7yU zIO^iy&;G@Tg6YR5iS;}LRoG?`Mk-3<^ndQf3sr8lT(gnfcr$Qm0T`ifQ)F=GrpCLaojy?U1 z7sfaFt@^l&93sRbExx{tU~k=;`P|4D65@Ek60tHHXx~g*C4X^rWd`~7H*~RiBw`Y` z^UWPAx8H7{JO>*~0erZeRE5@mxu-aI1z!OBCx0e9xIvR3}fbQUtp%dsdaE^2#%2U2uJ|`8U46 z+Gl((#%U+Nef4vg?Bo098x!!7BvKb>U`Y(&MuoX5-j`lqsA5`ia{Avqqo+wj;Zcf# z&5Gk0V66WIuOy&(=+m!6t8G}A%sum)*f~>kio$_~0Ubjt9`5(-Vimowe|z3WfAe|J zB|CLyZvu@srB8;<(S`2NvV{rKYs|?<91L)CkV&dgnu71K!<%Ctn2Lhg5h99nA`Go9 zhAXI+#C>R`HU}TvIbh<2>4n|6MsU9+l40Z0D_AI{lb{E@nl~Okaj|P)_Sl>3pxEOspS6r+6UKrJ5r^S{W$l{i%#& z^zPRCD|Xkhaf#?<2n7uRh<08KRu4BjgdT;r8eWusPTT$A8Ic|H1Efg+yDq*xnsp#CtwT4X}t@sl?$fd{AsWibg>%j!Lc`k{6PB}69H`| z(DT>WZBJ8C|7(1I-hj=mJRX&&dM;SC4&Q(#K9(&90oxm=qWSXeAT4*1;=`Nj*@1~*kIwD%R`}QD<$t%sTpM!;ueu0)ZLm@%?q+8P+{Ho0 z!>b`dvChXGsuOW_9!qY#VN*t!b}V-QSuAyD5QrieahD4V6hl2YF9af=VJ!B*yymaj z1T@GoYUVzXy?HaoXBUtNU6M$ItJ90Ce8$GcV&n>qB}%RNLbzmXXw3E27d zc3+G?{{3JNIO#nBO6tEpdWsErQ>XT#>s03-z>-mJQ1aW_zfS+Y82EL{j?(CizaLD1 zwVvn!e(fA41o(oho)Yc6J$9F?2>5(<93~E}j z-*>_sZA|o?thzkvLYR`Ak{;=Vk-Dzp{dV^IwAdxl`_}jbUbXoO8h*$=47#8xs`if} zx&MmhwJkR-<_(#9)Dm_bgmM5_5Y#LCl6vJ}eoe6V)_vI7rzucCfifvf9w~v6{(!=Z zQUd=0kPv}CxgU}l^Q-b)N)PN*Siec2!N7+)-xu528f{U%yI_9Gcot19_psxbbK@J3 z#(1G9^m1&4{TK}ffANCXz~RcZYubgT;nmHx2{{QgwD_c6u@n;qT?y#eWR7M4MOqJ_ z7r$~Qzx|nP`8;8mUD6>k9fY3+Vx<+(ZUaP7ptnwt$Xl1= zgc~#r4$!N>f?`I6Fx@U=++d*>wsJe#v!Rg&Zf%5{WznAv_JwjE;uGVEpj5@8+k{1P z>kbu~^?=I(VNd%3%&L4mq)Uy+pne^YgcQ{&bJmhU(!iX$*AP*HNbot%(W+iPB4;^;Gz?FE|~@5 z!?@|d0}-W(AoIkkBAL(>{^VYVU4i!5ELC?~n?r>?6-O*x>Y zuzVImoa(zPpk^{JgvICi@P=c?%&}ZyVLhRVqMS>BVuIXI3CTG4O*B}5h%x2Sz80_4 zu@Cv=mCn&WSu3mqn^r^Pc&YEnFPQ^^eb8M19qJ4k?SdBfDzgelVCq-B8v9NEpo_w5 z@Ms1q0bSA=>bP#n)MS*?+Z!7!?B7z8lhxn}*e-B@cGVSGP;11uuDM&=ZrN5!1+;bz;rmnMQ^THRUyi!ZF#vpfrD&{Iw3p8F5K)8-vt1MVM|8O1Z) zO}g;v^{T_{Mmpk@1L9qHi88w#NRw>f(CDB!_A^`L=-3|~&?}(z@~Tg6Mec7Rb1a$T z`nG0&s?}F1=Q|Ga0|7aCkB{H>pEW(|q{JD;3_o02)4~ove@T{9bA(HJ8CZa~A=qCnk5*&?SdS(+|#N4}5P8<%NI=KINekeRBeoCkx#33DJ0n!v^x z>Yp^?Zb-ns#XVvqS$rjd>QhsK8q^JNK(QffSQA2jj3ZRJtj_ue)ib%&K;XMr$9aSo zJFw2|+~bKHX-Zr#<$cIQ-T2vac-cHot@bqCv?Jvsg%A4>;hX%6wxUk5yxJcZ;NnMX z$bLQ7RbUOZ>bIY{pevlWM>q)pcnu0v(Rg$P#!bBsso&L#qapYDv<-{Bak}!Y1J}GD zHn00AS=8=1J^RPqxC2uqb{14IqZSrJEFQ}n>^-Q2q7^qNij5^Dj9Yy0fh=~(*BSUD zGHqjRC+tt{2)urqfR7h3uF(%RT(Ez<_5e zTunA$MHZ!A3dN(8j*ALrzfT8T;8khW!+>+%6?sAqcyzt-53>IdyD17FXuljmapUGc zF*%0jg#0xA{_p?)_y3=-&!Yx}i2Yu@F5;=yx8;q9?)mw5i~&Db?sj@#Eu?Cui;DY) zPGR=??FM~5j#+o|7;2E_h-RV9cRCd(Fx>Pd|DAHdatpir8u^gY*^>p2EqxL`0a=W? z#%i4A&mvsf$6WtJiRUH_j2akRKe_*!`OycWHw%w^k>OEBapx(9`)XKJe_*Y!*wTH` zCnLh`13l&|4Vm85y_M6O+g1#^S;N^wy7F@~q0;@Omc9GMp&$Dl$zATh5u!}J>1~Au z%(Nt+tPg=3`}FyXIbb$G&*}Iiz4r-ERPqFi)OX`I_nx=C7kt@u^z|qAa_0wW5ZbA| z`5usTVB6E!s3+fzMK`}_a_#$D%~mF_pqS#7r~+Fa>r13Cyhlw4Yhv_7#^LRdr>A)m zssiP9N28I+&MrMQ8MmM6sX1IP_Uu@>^*Z7(^GiwkxJ=;((nLBNxE>%GFti2mZo=bk z+W=QRb((yGfhsazVt_&terbEYWBpg|uwcKAG?YkprEjxPIKHA@D86u2tG=OPX{D{{ z9x{#+->cUhnuiFVe9c?Um;K`!!c=K5-#jTCQeiWdOR*lV$`~y??z}tOKR$RgVpDkh z`Owrp^?QUB8nkj|ah@R?IsxfdxAn>rE%U;zAGJ5^fw&3y)p|e%+}CbSWiWC5_PC)A zoHg*9n5Hb<=b72O(ZFCRW=uMZ8cWe)mkH(YgGPAqrq$9=r7=&H!%K$wIe6V9>u1Ek^H7%pzC0|~$fu)2SFxU9T{(bS3z8phjlctUUO8Flrrl;{ z5PETM(JMyJdG(L*&B}_Mp%;%#qCc~!*fOqlpJ=!YG)*=Y^xthEmgF}%u6O53p_^T3 z4B+*;$Y<~0k$5{M;ML$)U#Vo_!WY10G zB_`^tI-YD(y~&o!J4(BMP%yY@<$?bRXr%$BN!A-2tcR|-smsfo8hkpsY+sbUr?rF>=sw>^&b0Mr^PUIs(3wW>WTSt7-hiCc>l zk}?Cn1K_u_oqSpW<_KDpBAMMbYUEkm?E&wmVzL8I=mCihje48uhLJ&q0_-YnjU25> zp*Qf4+aDje{;Wj5Lt@urKiGtsN^IA;hkC~7N<5cdKFk6X;}@f02hL!Y+YUjWqJO!# zD1kBY5*uD5_nQyOwJTrpc?_sViUp+`<}s(S1A=%WGs1+6M{j(sChLBPM~*_}HPqF2 z^haOH*Pei6-Oegi{%(R@`~Eb`=>P!kU{v~EEdh@}5#X?|UAdz8MXWNnsuGM`U3o9~ z!s&rN0Pj>xWC|T)l1Gyy$$NENLY6}_b*Es+@O1m4#!sR!I0gOBdm2>utq6q(yY|78 zt(fW@?cy~s_Wqc}eL))JEtS{>Z69Xd)dgn=<7QOIDQ?HEJ2#sMO_S54+&?$PF5+kmo2np3!Z?ZCjUkzVr1}d~u9bR+|$b5s5cj zy3!t%jM+xL(fFo)Vlr!gU9i2sdZ!38yf{cke!Fou^UH5&Lm-&TcW=j^uh zU1{@bi@&DNqt09WV#$DO z7)u0KQ_tC$wOfN@)!?Dg(G|PM!N4cCxU=7MC8uUYUl(@;>XvaZAf9DTx$Mh*Ukx@{!#;*W><9<9E(h4`fsxT_U_Ao(Z8F*i7i{y9xYMHr zN77O8o+GgwV*=#{i>+7ssg)K*WHQ0)am~KqS^=I2*2g`l0u^JjsvR;uR(KlZo5_=9 zb5HmLs0*#(pnZb;sLjNL7l^I?5BAblCB1$g>??T4>MB8m=Dsc=Jrnd#e=c6s zR{JdCoa;I;O`9gjg#N4%KtFc74f-nt_^~NDx!}x}c4s{A^B|(Or_5HLSk7hl9!g+w z=W(A?C&Byg$nS6;VA4437G#$;X!Re4)H@$%9}y3etm(g9i@Ban0*_FrSwF7cb#Qw3 z+6!jIZ(JUWpKSh!u&mD!Yz_#hI9PZ}Tl-Zgx5Pp8Fd)H|E472LI(t^B%#t@^5~Pj* z^SayEX}MHcQQ(%wVY{eNrbZvSK@LpnKe;&vv>pQ;?H_Hl`hh%vKcwM)pf~1tvKBg? z+kwS$S}sdq1g9!NSAFpq!{GO+?Uf2v2-ko-V?ysyq-5e#2)Kj6RcejR_hC}N31cB)0SIm4EreCYx$etDeh>;UTQau55=d9M%S ze!%SZ-yQ|BsCLiN4tA8qP3i2pfyP}WvY2q>F8DilO#65V8Ag1rqi>M-#dO7bYgNw* z*cPX0m|7MyZ{}d#rg$K`Svq+F)&dRYc5gTg(G3(@Z&r?o;M?&_zXX@}0NY;%dO7cd z@wE{%qkPM|5-|oRvUgpCfL4dH;&yd?A9h$YMA--7_{eXOHlBiHmKA;9>72j)*DWA36dzzDf40UzJn+N=e&^@+jr z5!P|0Yay$M!@*5-@|VTAjy|h|^G$ooF`&LCb) zB~3=q^9Qh?Dt*psaXXWLFxM--nGBZExV$Ei`1z z7-2gv87-1aGaGs%!@w$?TFG#stI?Br5=%5;n!&JT$^ z*@8Dk;8P7r+B?9Y0V-s{my75UrO{7br_CWkXskZk0|5{5z6kX=pN+eLt}b^{bn#&6 ztSJ#P)vpElL}5sv-LYX|A=~2Ex+YLc7t-6G~SKLMMN`D3^f6sH!!K7667xt_akSRwf>e#arCXy;%XG=l1 znD7}{$VZs)yPfCl6iK#x{%qH2=w6|)oVgm`!*+bKtej1mihcPeef445I86^ZFyNrU zBw&r~)^@%cv=eOSIL^oeVCs4M0-WjA4chS-ofw4(uuNL=6R`^ev($)58E_Tf*)>Xc zx#mwkzREKyWN3L?v?0P00X`UQ`oy_Y--Cz&*M^-1o#R2qdp^_ez{{&tqQkh%Hxi(F~qEf%ic_2 zSPlNqT430s8+)IZfv!DIkbO3@9Ln^*FXYu8{u@lp0p4^`qdnjBBQ~&AEkucJyDDpZ zNX@F+ohJycjm5*SK<9mc$US3v9jrC}5$`q*oE@oWL9!-Aq%dYLGSs~ATZO>O{Z=_k ztiS4-cN@%R$tZowbD|YvBSq@S$k5ilYhX7eKS6v$`!dY|fZc|R+ZphBT_m`(->ZSo zYHha87YEM2n(ubOX2zWUMa`TAbeWrgrjS>QEEt-|-yXosoEWWuHvWl3f=`#WuEar| z4t+i@jF$nlQ3K5PxhBDMbSDoDHT#-b+HaQVCMW!JOZEkO?akDJUeScIWWq`I$AOVY8s_r-E(g~?1)8WLr z>y%2-+8-RKXRHncbnQzkpPv=ml=jhx)GbT8w2lJ`~a1;ebc zIWsdl>+lumP0cRsLbvCgK-iG)4s!3cXJ2vOifR}{Ztax<<14e!{s2^=91|*9?*y5A z*oP+dbN0ZB8F3=b*iv}?4sVq%9Eb{~#bLpB>V_@8q8FA7Lx9AGaF_|RSxorf;vqrl z{#>??B%_#4C5_|lvuRwp{lVxP%hsTN&pD+xH68rL@w!L@icZt>mc_>tnA*A!F*-sj zI(_KrtTQW_%-m40C@CRu=XK%=hCM2DheC7!4JtoJb=X$pc2*A7`j`fwI7^5 z&v)!ilAP4bB;Q5_Db!%i$!KNP{YmjPR>!F0D&uToPXXZzC}+wzkPGGi0JP?v%cS7g)ZDdPnl=ri#+I>MspHL(U%xg@&1`& za1rL~G~56z6a;D*7NgX1ZeE;oo?tI*QzcXqAuAdXfLY`ZTfFvi+vp&$Fjs`FA*Uh+ z-k<9fec>D*OJ%Ly)5&de+6xg*PQgUdLq5o+C)1PGl%W(YIO3=_LueAs%rPX7)GKle=N3fgT#j1?Dhxe!e)A}RWGqIpYj zC$*H3Ag#)l`(z+mtNe2QB2=@eL*VFCO=&Hj*jCj&*)?;sYhBu?X!quC(VjHCqQq_CJ zV$Vt9p?cEvPC=A)i1x7^>kBl+#@#}xpg8nJ1NfB zfGv;Uc~HT}z)JqOBBr1%(ElNKZ9QD(xix^5sl}GZ_XBL5 za=4=%vnB!6JJZNm3F|D$j72;6wnBE($RLd;t1iOgFa%)wjd?t@{iVLV8YW-Tf0!PV z$bY$5sN{W7#nRl?po>cRjb|h-o7HonD3AyII^kRkld%Jlo~V6j-a;N-)#%*QaL&Cg zxp|tl2SEU2R7S!m-Y~gkJoq+&>Qs2&w2E-nmC8h-T?0#M1@gqExa^D3Kete4KHJwM zFKN4w^>9bnBulCGV*poW3BMy3lN4+a*8W4$K6nhWt&r5hRTHQiUwz4sY!B>fg0<}a zV(rfgSxx2FDY_DBXM&kaf^2*p-n@TVpwR0rc|nq8k-29{kWVjm`7_P)Gj~?ly|F$K zx0QAfC8i1DxpPH8FaI`Iq1O+NyI)o~G&Je}aAg4vxSvvt)PM#bnqxU%7ppRuPq6kL zg{R=vtv66iDE52hQ?6SaY4`DD}*#LIRe2Ym(M9syunFPJ0@5lqM~3jgSrmG-wwIOYt3W($0~ z^<;|iPi*ZES)h@bIm>5(;dg`L$eWkvwdk8s>v+yExP+Z`JdCnw8)G;=fmY3Abt zFv^qxI}0a(QPj@b&QaOk(AX4?QOwlU(%4kO(a;0HC}rzx>S%9gZRl(YaCUS7 zzCgs%*-6pVQPj@H-p?B4eSQIzV#C`HMTP`1qcYh{h5tB=*bi)Viy1f zLYVAE4y>|EJR&tNdsAu`!qCZ3;wK@A$KhJq;$2`MZqhC;oeiop!i4DJ2AdiK-rE~|BqbC2)pxPISIU zNOeVAcXuF49SB5-nD{)-0a`}7Zs`0R2$=hQ55l(O_5c&1m6g+ZXQAD=fhCumI z@7b!)+TWlwm5kZRv`OALQwl9A!2Gqk<>wK5J-W_G$(LETN_^YU=^;r%XR(%8jgWtU zZfF61Wv@BFLnrNq++z&&@JU>A>3Ouj|M5VxI~i>kzKs;|WxoUlkaD^ZiMP8%l52Bp zNC&bNFo2^Cj?=>m=Sg&AzIWd^qRwdd-01<)EjVPNAV_L$?n&e)8ozc4lhdVG+s@JD zLYx4sz5})jz!U2lM*+Z&1iYJo{_GFI+QD=e@-Qj`mi3&D!$pY(5eTV4gTsIdX9XL~ zd~tSZ_8Rq|n+Y>uFMr*6_^an7?>mwEcQikDv~mYVyDFF1(-*1NnR5vvg*D$5mME5C zmL)$ee>9Q79E=YwREP-_(wHb8MyOl?VM;-0KrZG7o6)DL2Ug*g8zeP$dp|UJ?NQN-k*y7Vs;l-ZqCL1T04%zMKoRUv2p1-uvPLMSkXiwwF%C^ZJu1ZhENECzZTK3HgS!hs5R=+k8mS}|H_NTmq>1pPkf zHH0VZsL1dHwgq~Cm?8-dstyeCCpHntoFFFAd14*Zj!=6sIugj(C@K*Z;#8E3Q0-8| zUNR%7Z-MhdU}T_!k=x?ZB&so3@kN8kQhJ7%`3Cw*s=CU9ZNKQ~rpwof4U3}k13^}Sb=Y&K{jUYY##Y!-*n>C?Sw$lO15!!d_iq4d?Bys zoY0-WZP+^*Mlm~~Gx01DeL24n-!GtpUE|sPLS~X?#fDA8Oyi-37-npS2nHi2ZQb|D z4pCv5QUQYj2UN<`%0$x$tZ|y53!k_{xkH+x9&oQH;ISi+A~F z4c8V|8Mg!%XH!#iWK(xjc=M@!g(Itzl@qi*w*8$G;}z4n#pV4K#`*I0gOCZyAxcoF zc(3p#9wTKHvmKiq`I+%5y?~*BR|i=KRtM)VcVA3jq8G52rC(NHd|+5${g8N&daz0` zr7(}Mnb-tqzZl5qwy6>*X2|QvMrf=_2xyn7_{c@bbIH*dl*lhtFi1;D@Tfe6on;Y- z3#oP~)o3_qzM!b1-C=hEUc|uYb7)XWK9FDN#3?CBu)MGN;HVa^Iiy1)RVs6sSLa_B z;hcFLbIph=o&re0OPQ;=t|_dMs%fv$-|pQWa4c|C*eTgY+(F-N-4Ub>rFEy(QE|^1 z$hOEyE_By+kdV@(7AeuR)YKGO5N(!yXokxRuOGtw`c!J6syhoYi(e`@n=q3*vp6GA zB2x-o%2~`vh$67=lfB!O4wVHZm8WFB^z??;*VROysw(P-64fo@rQF=;7! z_H_Q$2le-yB8{SVt(mE-u;->l*4k zET6@Qnb@1C1BbgLH$m zMtDPbMQEO$pCQkM$Xm<%#Ou~-pi7|hQI`V=mw?C3;-z|XW2R?ZCs;SSMZn(J4c_s{ zsmOt{S^rANi_4SE-8#NpQZ*k@0ezfhoW17V1E0qanWeHWs|D>I-ZigDi5|)|^Fj5V zyYjP|tVI1BVBzXazp&RmkS+g9|FZzKfFy9YAc7#RK!@+|zVj1b69*6nK8ZzN)sqyGh|&bzer{TugMI_#tsimUIU&Pg!VQma zjZ0)@QL``}GGI}S(XTRG(5BGM(%VpP(aA7A`F=m@z861<7~Rp?N!dxme8FU-iK5{x z`&0^7#yrbB3(tXZG_{2dSA)*<6`Zqe@4At!p7>I@BW4R>ziSnax%F zRoboA#K{!iNyd!UBFgsJes=4ymZP>|X-=h*y%D}4$%V<;#91VxpJ%S+SBqIoMr+n} z^6m1e>e)#XgUj(^ZiT0%SzfePEM$9C^fr>)zsD#-=`bGB3=b(WF&zO zE7!Xh{vI#4&(5E1SLd4iwgMJ|GDB#PTR(sO%qxK*!Sjw<;LyGNy2(k!qs~j#rTlI% zfbw}uYpapsn(~yN-GhhElKWvh<+&Dn99b~SW8=o?z;t4Gyvj(=rd@zLICIEd^r_H3 z)v4vMVt*+Sw;-iM^LZiGt>H{>Ja$iQRia}pQ$aIZi%Mr(vs^z;yXBj86W{H|M99O} z>aP{EGoAY{G*48Q-=5=di(=V}>L12Yv)nq^JlEhvFqfQefcxST7Bi#@2#zd`7l!*jQ*dpV2Fr7I&?l8!q7YzWVTED)kTHi-r}a=hPGzmgspJXvdec7x(0) zl{8vpn`_wAnHgDX86#=VYyQ+EMQ)kb`LBGawyh14k2s9h21klXu1)~BBIUZ$(tgV7a z)=+|(BM)&qsqrp?fDHMPU=fuY!0wq&Jz$r6t-JinN4zRRKPmDnQj%`xgv+<~w)Ra& zQ}Nj!hnuMpNpM#1jOH^1vst#1R0qh67o zHHz=FL(*PHyX46$eWSr_1IrzM-aYmv+~9X`t`$PBWu_62OOKzndGVt(x8SAEfTwQH1qZ7caJ z(u>Vat*v%`a9t3e43Q_nZy}bxLxgsq(-ry_g97)I`Ih;H>8=K$8mYG3On)zbH*Qm4 z09|@ygK+(cri1Dz8=RVN03UkQbv)Rg*(WRqku|C_MPr#v!|;WokUSW^IqNDaG06QXv1+{+#xH z@tq6*>AQA*j&l&@ZetSZ+cCOeBl%~i+I^U?6O_$+0gDt5aT zgZBLzF}>SYlnylbGpc4H8G+eycHh%`NAu^&xjFoZwV!_eSxs_@^s6=pgi-o^ty)jF zA?wKja9;|71Ms+DBp@}b?*t(~bm_J8CO{(+13qDqz+Rx-w)n)%eUL52nZeK^S_$9i zN$BpdL;ZrTE|VkaKy>zHjY7wte+skIY3B1xE89sOsdlia0#gwv9V=~DBI0GrXU<+In=RC>a{ADySfwbq1{gh0_)z0e zBUNbGqS@k6Dc)epz^5IKoVdic$gxzvv}TXvm~QX6!*_OhFyW@2kDtNY8NwnpHyw9; zhGbn1TtDm8zH7LvGmx3sIw##QeS;5mIhOB3_aquKi$rg9_&fB7uVL}r3~nOC zdIG|``4+hraqczlaBI}3Dn@vFmVM5T2#2yGxVtr; z+;KXZnU%01JeSg#a%f@wc4XnEq2O+JeUrzj^i=a`WxGm{+*I!&VL!2ByU>n(_drA@ zpo7DGZ()+a*1)Ux%66FY0AHc5r~Gw#&FpFwnjury@R98DtJT$1=Cj`#{YeHa4mrqJ z8OS;sj6eUcv2_2cuL+f#u>~;8K6S7D*(@%BA|?2~;=U&8XLrEkf%CXZG0}5HRmC#cS}CvvXkcem3sn z-W=P~`(UpeLybq(v8j4NdC>zw5y+bZ`o&q6T4r6d0JNXYu4Jc}wPbDDqAPY7uL9PF zoiO~1?3}{5XqIf}fWeS`RBRG+ltac~&;juk=&l)-ZK94Eh85irk2cH_SS#-nT?l?Z z#vbvQxz3o5UDHbQ-unJJ`~?JKKx2YJWL3mk%xjcTBtW=YOHz41#Xc0KVu1Yv{v_fz zM+epm_AvN3H6@`^sZ_ciVpi%jN^@d`7{6kB`AMlT^@DiFPU*zbvef*=FOL!68F=RG zJ@s_;1upZ>9S38Fh(~Me7VK>%33lF#`BToz$05OOX+qP6=Hh%qvQMA#J!b#u%GF{@d9yzltmJ|`MUKbQpH!InE6;7NBD17E=VsT zVJpIRrQoR{OIR$=rmk2|Y7`fGnin2^LU!-H@Vr(xHP#(<3q1r4eLt+18Fm>#WRc?- z9ju75xgspr)#G=W^SdF!qiXN*oHMsL%$XjTFa92XP~k$ZKF(MkLr$jwPUO?3^ycBQDR|-KqH*-FUWoRl#1vB zpWaDpN$U@#sg$d1sF2Qd&kWA6vMsVDSxnZw)EPTpI-6bt^DuM4)tff;6c1?hiX7Hsg$wXJ!#H2>f2(hr-#WUup!^obJs3$HToPyLHg&?fJ4R-5wYNOxG^)=y zz&OLxsY0MmqsrlTAsg(uYSF7_)<1FSI#@nyVttpg>I{H1HZi7 z&hE2!xN@A6hdlCGmB>M0mGFt}<@R8|wgda7sZSL(-hD1ePvEQnmD-(P)TtEj_-%-K*1o>yun)S9J%OFP z{=QDrMZ@L7)7>W!w2U|cbuzg}Y& z>N>0RC1YfYxR5<|Mzu4LEKotv*K+?Kfd2K?93{hg)a%%T$^GPf(#|hGe&l>9>YXN6 zAq%H;$uG|GjKfMsGEL_vO}Sy)lYFP_>lAR%JbHEWL!e;O^axvm_OKN0WA{g!BWHY! z)Z{cv?Zm1vJ+H~hRn^IOhn04P9g3~4nUmG;`(BrK--F6}Y@@5AY5VdsBW0WTeJ(~e zA4Zens=|SX@+MOSo^L1VZg{7gL+^sG_~FN~lM*}V82ysNki_EUp+lln>{_1XD6`kdJRB;cz)?L zQosRUYfkbw%>kX`r@R&{dIiBa51RYWEckC``8NwbJ2(43Eci@+TD5^bX;D!TLnl)c zpwIiwuCD~p{g-FwXy5YOL1B>y>T=Sm5wz5RxcLpF#w;ACPZKnfTeMvOoHQ4L=jbSg5VW15@d^Sg}W)7LvlDHiF6NLeVCjLDKAENxPORsixC$Du zt{pgK9;NAivv)^rElFD-PW7JpUvP%P!nDg#+h%N}8*Vjro-8JACJL6WFV)_QD{D+Q zvn@%AOU@h@u2{&tVzvlgeR*d50a1<_^#OaE=e-Dnv32M@+VqneUWI63#&LgLy(-IR z6qYl{7PSi#uxTyZkv2wjOFY4qx|z&C`d0J2x;pPVXVa(05W_L^EtTl_uaVA{kpouR zq7sdhM-Cv`AAPg*=Ecc#mvc+d2#sER+p>;oo|0Zcj;VP3{xgVvgTLPp&BgjJNM-*A zr2ZANq4+yML($OjEvkZ>>kZ<8@f=E~PIfMi#->g{aOe7~Nz@J)m0|1r*764Lz)o_e zCYFXGcJ6T6Z%=UoyaZx8`z;B#_1KzR#nE!I52?zikX26mC?xLc?!oUPz z{xiI{U(5hz*0;Eow-6N-=C?oJRzL|j#{Y;``8_r%8)jfg$?twrHmm^VKVdCWHoy=4 zwIskN{xvaXCZ@kh!#{8y*!t&N|5a$piu$1Aj3i3?oI07461t&F1Lt3N!22&z*u zu+BUb{vwncC#!z%>$#MPnayFM33G3HpR3r*YO1S%tjD$Oq8v#L6s!%@wR?2)K_gNG;Jw_ zpfY-7RJNl((JNFkHa?Bs9$hTWBHeNh@ZC$stPj{#dpf}%B{jlj`U&&YNikyDiE~wX znDd;-lA=Z*^}JV=S=mSU(i)JOl=>teP+PqQx5=CPsdl8FMDiS2#W}}FZpAa?kh|hz zfeodi<&qJ)OSq^Q38IuP{_--?P&Xe&afaMHlAx`Wz^nir5ihE~E8i=~Cd4I09CkWg zYFsduRF_F}f4L#Vxi0-u;fIN)#neitx<^aoxHxgqPEgYzTHBQwz0E>~1Wf+E(leJR zy6jgF)mAmASG5VhKx}>qy90Dc4Jl1+_8Ys>?iw> z!3qv6tumlv!5VkkKO=zs4THS&+7+Z3utJib=z?A#Ll-i|FSAtSEQq;H zQ{qPOu~#6uy{O~07Zf9wl1X7fsl{n)OFF$WJ8~!XW+6`Z*m&sb7qeF)3~URu5;-** zjyP&~$csAZ^;tC*30YsTZS1P^Cx|R;Ix*z;R3Ev%C}O=Zz(ofK@5rJKm70wYl76=; z?seEgi@;yCRoMYsB;pGK$7R@)em5B9d@Eui{&m~FS`-VEhnnq~KW<3x|C zHIkKLAKG@e=EzqEB*(Ygb2_~*-(Cc19h@}a zp)EEGswM3nL4x6-krl^Q(+~RR(YT}gdG=^YXLF9@ha-#O$FZiUz6)sWFh?XfiN%6$tECL*myIlJm|vsZ8hb3J6muQ)n8n|Q;8yW9 zAwRkv;rNt}I~|x9fou8hI&gLRVXGo{CsF0aCdq`adEHX(dvj&KzON2qbe|iVU!s~N zonRQ|%0wDb%~+v`)S9I_=6Mi@R3asBM`zC3J_DmJneeVh3%tB_<<;<&eii5Nky|Tr zm3m!s@Q!IDnG{15{-|E%!LJ3a$#}2i_;ds%Q}s{qJYIzhtcapuyVw${ve7O~&A&8c z;g$Bxiv~0obs|j8ddb>GZ#Af>w<4%LnSP`)KtW%pt7S|zU<)n2Uj{3pk$zt-c{tY9 zjERVzR-D{$*L|z8OmVNmhp7K9;dm7M4%46j1FN7BXC;%b zRTi$_yhi=m&RzXU^6pIC!@(Y?`HD<=J|%4ayv>lolK8Bx z#j}j~YWnvjG0B1Cw23ileeTqT`Wb96w)x-yO5dPH6}=9HasNQmH`lj{_X|aFE9!d4z$!uj0+B}r zR%8@y?>k5Qz+f%ZAlc*kM$k%MuhxO{wMT17s31a16{VrY?fdqzZhnw9(#{hIwx z$CK7F&5?254olq5(iSzB?X{=UMM;J@@AlnTn_e@$BapO<92!&B#RLVuq_6CReAlIm zvxW9H2c`1mlOJ!WN}x0*ee-n*s^P3RvqElQmz?$04US%m$013Wtth^w*@PIP;O^Y! z+VKA>Y@#;vLt5RAX^_0^+F~|iwHn1@Ev9E%4|ZUS z#!}TcbF<13y0*1*LseSvAHRHzw9z&Vl@R&tH6JvPZyZ?B-p4k0i+dhdwh3zz-rpay zQ98Z9gu}96)wItFh{R|ezkDB~jPkR6KUq^BF2{9D=HgqXVn;)UqJ{00iEtGjaeCb{x8K){3-R+w;gH)+H7Op;6&SNoV98JZKMx z-Oe}9TS9)`-wBi;jt)kG|tM z8$2pxCKpwEWU|Kfvl)I&dAfh1T}o}VmaT0_qk9-5rdDKOgP{$^{HlEQPN7tcj5wHh z2+gzKk8;-(uGU25jpNtgg`7aHFoC4r+bD^Rp!d1VTRrl!3nfF z{U^sB{&hg&Z+(|hSTR@df+0|#`@f%zfcw9mj5yYXcE?bidoTO}^`ZKl*y!Ox zR7EVmSkewF|MNr|49sVwSQ`4739mC<&$IR<5aRZ`_W(jkf0WD4w1|EOGgntvsYE$P z;CXYW-DRio_PdOQR=Y8JV`0eBZC*KY{Wn zkW2Hhb^}XB|0HOO#mUHaqQ~~Q__vN7;vix&uOMYi6y=#Rdbv)4!|YjS!h6Kg_d%x@ zoAD4jc+<-7vHmq+f7F2j82@M&P4xU%F;>W6^uU+M>XFK}bJDlh%k8#IrdV#fUv5j8 znB=#%dO14Q%zR?0`RBBR7{rApn!nJ3J7-!@)I`p^X~O_4{~Bd?bix>W>W*|#Lg}Ch zG&J-`Q<+wMX;Bd+`G@~w3@|)%zRg)<=%ZqZIbKG=AUs8^q$4%7jK3rgmZMoKr=|Gh zsM7`gIxHr01z&$%g=5lEef?`754fO*=m~)|blui{If}C?IWxwj^`D-%A}QUb-$Ad) zuk1ROJsY_>GE`t%=f=OYZgwm?AW&y92mo%`B{x{$SiR<9-W7z-z-ANedzfsegb#}w zlBO(7DM@t1Fv$6_yTNn?PJ*(X?{ty`8Dt-Kx z1hgU&4|fqxihyL~MdnH<`Njogwsj|`7w-a7_hmf!rov}r+h8;5bA@PQ(a3)NJyiBnVS5WyQ&sq((>dy!K7x0hyc4vSr$G|9Ofb<3N3CP{261I}i_tnxEFeizchiJFJ*gcihRa2s z=I`*nCZvPybdVMuMe$I%kbh*i8%4?woKgLD^!hwQD;)x~b>Ia2`s|RA0I*ApB>qQnIUw^{<)5riw%|m4qe7=z;2n{ zxsTPfb-p0b(>J%@o;*_OlEG$kHa!V}?bg}pO4zn>%06Ien}OOoXf~QT9b@-{lGAdn z*65kTMdCD8SS~SlA{BhDlG`3~i1z|kHT8MbV2Zm$cq=w-+~d6vx)*Py$Vp*+h;^*T zmdt-_ns-Oq+os86(WCy}w0%8E3gOb30or5nByxelAe4L$VylT}U}-&I1ruQEAT?|D zHtz?=PshNr1BX8=cr7NffmypT=`>KJfax~Hh3$X*MO!}k@B2Yyl<_{IT#Go}_i9GA zsC`^+m%dtEb9IPI74KW?-&yUUG&sjJ@*I6qd1yXr?36{}5YGAhN+6nR%USnSVD$WR z%_U2(_UsZ0U0yj%dihe#ZA?Y?*K5|T!FXonU2o0tj`vvwO6qj1 zV39&EVnDnvbh10-3qY&+)xj)Ms^A{EKFb*}ibZCDm6Owb2*aLj^w4 zAg#lSQw!0YGzM|uuzj6iExC`^UM-$7Bm3I59($3Hv|7%N#foJYb0_bA9yf~YMls@o zz6TJI0QQ&1Yi;-WKv8RcH4v-(o>m6(U(+&Vz=Z0FOf>W4AxX3AHxlX{MUR4!muRY}IopnZ z-&(69{BRUa&(!73G1PQ75eAKnNQ-S&wV+%3dgzHh4vRdcP{N7vc;wiaz}E9I)JH;| zghxH^4vhuHX|Htgrfktuvi@}XsKvr!3c;@b@T-e#b{S{bJ7j5nmf0wO&yWuse- zBD6;Z+x#2s#%SR%aZA9qB~r0#62@lJyu;*&sL)YLXg}magc4B9NX1i;!vAJlAfS_i zzvT9i2H5H)PO+(^Mhnkev6IwoACKDzJXz^HW;oV7;~8S)1dARH4x$~ny|z$QV}i*8 z?X;tHTDI}iUgl9wWn`rvnr)(ojwP(}p~!0udcMqz!yn%k;uzbDuxEQrgCq ztHBU7TP^3if*MJb#CtYb_~tAu9ISTR;mpTTUO&zL)7DegkIxrLGnlghHMPI_9gtWd zrZXP#1>n>;>tO;QCb%XmwX06q=u3G=Wr*bY+*Pp;I2nk34 z@v$YI@sOV~Q#28Y_E*5t)lft(ka~{YPdhhcIt`Y`|6$$!LLe*fYHaJ}>_*Ydh}SH& zi+RXK2pGrk$}0%)B##xv{Esm+g+KRu*r6&t4n6MWaTiUf5k6k)!6AnZ&*FON!q6W|a@cWCVXx9|I-R+~bEHhZjb^*fIxo?*;I{ZrUeg^-0OH&q@$cplsqoKM98m4|T^Jeg?dU!Kwh)p2CnN@eW8xvJ8~>Xm`5ASh(5W#`^xg!* znjioS5^mldvDvd364W=*aX4eslLai&9|08InSo~e_KFu#_vngNSFKJ?^}Sl7w{J?n zt=u~c`BNK_(+UrPGl-@K;F@L2?HT0-){hJ6-|2O_c%8K?F=EnOKOTvvvb|WYo!TsF zT653BjW)ZVilw|h!2s4nL>qesl@4kV zCrRO_e4kFlrt%NeVzWCu@s%?(_*npn>F+n}NKI?@ot2bU%e91V)59{o?>P5H7QkUn+z%N66WFG+c}Q}MzODBVqdaIt_?i0PNTi6K5F9@EEd#fhT5F9@pC6ny8)gQP)F*FH}tjljwP6O}kS zQylSyN{K>5cSt8%oDUC_mZi-s9;~!^rp*cB8s{Se;fcC55$<}auRc0Z(PbN*$fNQg zB^>h*vos|%1r@B80CuyK-+R6!{I+}HQ8PTK2@$Z!OlGXv`e&~gw6~YTjE&Zlbo1k) z$u_IikF^TJ!VfP`1$!gur8y&qT8IT9&>lfx?TIczT?GS>K?~DGq4Ng8i~@o#$Nm%A zze*+vN)aITq~voa9J3Nu8m(xxE;gXgNEr`7u*jsfCUi1d6{4b$|@wG zsNh?b12#s>6=)(H1I!z&j2Rj1^jbrQNOgirIf~W$mqsByO>#tgA_?F?H6_vU*26*q zuHz{q=`Y53Ls3MGk2@qj-{-0gKsIo@&e&hR2lL2Ndb~Nkc|Vy81LzSRnf92zLTj$tq2>- z4fjzf66Uif(R^)$N;CoaZaE^!XW%|^Ui~49^rnyHw_ZsoO7pfobRV({ufto z8CFNrYz+s8K#<_>?jAP5CBfZ-yA#}<;1UQf8+UhicMa|&uyG0Q-{iiZ^M21c{DW(l z?&+!Ns;;WF))REZtXg_F(^kG=z(zHBXt(*@bWe651?7Qh@^l%GdIMS9;+lfi%rI)V zNWeEzdku#?rR~lRuLfIN)~i~b!SVdWI5VUR-f2F^`NBlq*s9QGF4s*Z5DAPY$uJ?( zZ#l#mn8*1l4TLEv@oLsTqsjvX16c%9Q8iWmHJ+mk@SOAfENN&7{%;U@JjMoTp}6n2 zAK@<{aa^0mQ>c@l`Oak=z0x5~n8ibPbg>>Di5DgnT2~ISW_{i^W(J{nkIf8~C%X zl%wp7J0Zq?qCv*|n*b~u9eE!a)3nU+jNwaIJmT_>LiC=ZDH-g2t4dC-Olgo+yBNrR_eBdkxS=-ZtHuqTX@aLop3H( z`Hf7l4lyK0-6Y$JX2K|-+$P3~e(*4RWn2jU){SUMV{fSMTDb$%uu%DhVs4COg5mRT z?pqag*xJYDHj@i`m=(ZG;c(%;hT@~P=EN4j;d92XnDDWAld*&@6)sLNQmE}oyITI~ z96LVv0jouvpS(=Ln1zoe7s}pmK*kJakwPzVmI{=udKi`xI7&viK8se)AM*D_t=-Ar zFeve)pG$8KT3&+HnyDR?Nr%_+ur^sP*_$=19sipL@IN5~c5gP;$u-R9%;CUSKLOn; z3zN+bpUc&+9n_q$48Vt>`eg0>{6~wtO$Q{`GAv9r!eW}q+?Kx=>-1g~IkBKua)n}= zT!(?v=nFw0Ns2@W)l;o_@B>o1Fe$I&=Rl6O>CedT37mvXCCDDb3}bAyo3MQC#TF~{ zLN26rcH*O?rg<<+c2tsrf0%e0-x6y|Wg(23qJWlu)#NDGACYm^ZT-l^H`a$Lt+tY* zON33uH*o0i)T0Xs8b^6B_kM5hR508}F5QzX|1s&WrAs}hTu=B6(qvDnB0weFQ5B46 z!^j+PhJ<{6uKxFtE65EZChv#7S%bODG_*Usl`Q-b#@p8`Z(ceO@FIu*K*EH4Ei^Z; z5BYTTK6)`lV&mzE*ta;p?L9q72hsyHQEG`=K2_v0`k?^J;lsw}qh$7!oNTTbJq0d) zvEJJPtt^6xoZ8Qd%n8bg%x`a;0M=lQJW-KQlxPYW2g}XcduIqzY*+dD0Bn&G+of~I zTCIc%2c<}ou2w8t^;Ud@@Bu`gm}IHTZDHyHfBP-3^;jWytP=arq^KFXTSDBD55{ID zZvy^ECrWqJJhEK5Y>Vg(Grmn!(^kiPPX2eND7RRq<_?8b z!fzGFBzS$wv+$i8jQ*UZtI*rq!nvg%^5#tjzcoX`e|8EJGV3p{+)#F=62osfT&?MF zVXye0O%Sh^5QU!pNecM`OBgsAd_QE7>E-qmOp1llP0kjW^`Z}QJ8ySLt$pHq`hF|Z z6`KDi%cs?5Mkgm!@y3soGVo%#D9h$co2Z!O{+BvwwCmgbjRsEmJ^QDK#EJktQ3d$Y zWKqk7B1xxWCcv}`R82WGShasP&wN)Ut;I?^@vA6PK42WCMLm1WeS*9>=};~xly{`y zd~dSLfSgM)j;;9ZgFok?e-_)pdjCZ4U32kL0+O*I{nK|+&i6OYmgBNt@Hvtg$j7b* zPx%4qijyzDFrZzCE+K4x4bJ^^y$nHf?noj+mOw}ni=nKsoaTX*I}`td((^ywO4;c% zdSZ@D_iU#eqg5w4UdlE1NG0v|5ksPz-7=Y&!Pp@8&i%Iys+8H%wCjn9N}B8+stA^1 z`O@>+V({qa7TZvLbLYlQ4{3fjUGT&i&H~N_kT6k-= z<=5T!@SI^+SYb%*IxYV{!7CXAolOKH`kZ?|P6JyVG_;Hvil-pCwTvO`&D1?MKQysB zbVexb>l%7265<~)X*!3S1>6h>f(+nbWoP&{_Z9y}l--T!DIX0{7HAB9h^?x-lKa{{ zQBSzSvJIx42riTV<45^I0YBQ8;2w?n+D*XE<>>Gpy;@`~N=<72zH*lomMiny8g!r} zW^97?m!9i?rY0=(H^>T8!1_N?Fi#Y4r%05G{~LoQVE|7O*g^S!qhdo~LDuFuAA#8P zzf*}ov#$I6|r;Hjm{d|l#_uy z1thB9p?_w6)|0I>+sj1S^mX#vlRe<2lXj30t{t zzg%tkytlsUdb|=dH}R_w4iz$+y=x zjoR8+fFSphD8Cy)H>oXEFqV#6-%&8OOZ0qJI9RIj8v4E|WI5YYqJlP+;^2I9{Ob~u zrBlCuHCte=QTegUY+~U0i1q7+x69FjHNWfHQXORP<@q!e&5MM8FIt^$jJt3~i*%FO z4~|uzg+B-osr=H&Wq&a1Pc0KT7!%E`^PyRlehTXO8Hf3gZu7J~i{@6HLFcV^-$8>x zKn-a43PUUuej+93BaHcYY{ndnxe0i#2tj(%|6neNMjl185e2Pryy9@TVsAn|-LIMT zi^-U?JVXF4uCAH(BOs5{cGg+;mY(sF4SJ?2*Yo9NmH*WPhU%@!@kCSPR2t`8;LXk9 z3*)e604{RalpWaRnL<$nA%=uiZHM?bvyJ`vPCB*p1Hyw+DL35M{@VJ_PqS4Ud7n~8 zMpD_?Q$>1GNir2C^)FyI>&zH!s+qvxl)IVaz!H6)qtN&0TIx8CfJ{u4`BbJ^Ksl9} zC=A8zyoP=c?cL%?JS~vov>I35zs70>v}LZYhAb`7RFsu5F;(m~MNW?}D z2hu`8`$)rie*PA~g+%bjSb6$2!OE$HT&(f+*{ID#`sPeE`iEKvjoL3!i6L z2JsF)l&4%9VWwI`pUz()gEj_Sn;kIUS;F$MUHu&HL+VE#;A7aENI?}uVlmHlV#RuC zoz*Zi(3IEPqfgbUC{il$HFZvEG+xQ z+gANy80&3rXh=v(+&Iz#1Aqk5(M;ae&z}e*Be%bP#eZFw4vT8XeE%L39sOVzd!^R2 z%yMpTqaFYEHpb2g@!k<3lmMQtMRC9kHSOlnT+#PTWkn|kN=N;4?cQ@JCIA(6qvDHhi=%{P`js{sgQ|8I5%0o3Z}$>1DX|ZvB2K>Ow7bs?c}PnS zL^Kg{bKJ^4Zv|25>w7!YYf~w6cRGKT=5swZEKxoHwzl5~CAOBeOyFD9=@#ikhJaxx zSS$uR9V@FtfU6(ijpwr8628Ktr>6&K^#cd{`hEeF#^?qpAdMW+U_e(2_(?BEBmC_O zYZn}P-@Jb1*iqv<5%OK=>5US1EIV7xj)a~-wRKTwIv_A5u`bC;PPF0&>%6}o;By!C zJv`>^J9t37{Im%E+V7=gq_jXL8-M2m3Py{oEl7Ct>{f3P=pPEprL^02T;9Q+=Dj}{ zg1;tcY_x{*SnjAMx9$;$Y}A_FH{09 zA#D$j)S=(>z}fM*HniLSAUDeH}oOqhKRy1e)uhNEnSk zc@(xJfW4{ofhpOs>73?DG*)kvt5i@e@gYmu*tmQw32ZxWCDq}{X-GzFjIDFp8!Y@& ztHDC80I;Se>!VVSI|VSodUn86vC_8C^Ea~UpEy5H0nwsxX6;gS;gTpK-qT)ABHXF0 z?}#ISQ@&|-lMZlTj?D8rfM%SvmDRl{MH_X}Ke2I6Rdcz8EK0%DAhRtp2o&zx-^ z1dtI6k*GPfOgr*!JJX5v^ug2nb@5n}w+jRmuieIY)x9x5F9BV2^6Vz<_oh{_RG^bR<#ff!) zQmo6zVZK^(UJ~cy3oz1h)e&$x936<v^Whz{|k?&&j}qBQHPaJ7hR66cc1{BNPN zCtQ^S*sZdKa`E?{vp)xZblpkt*RCOGf|13(h7Eu%la=#>rl6f%`j&5Pm$~Ax&Es{T zBPnSn9T6}orBH{byR7f?P$jqD2C6(7{iY{#TCb0OtHkK`)9JOwAhu~b1*Q5!2B30n zoHuI^ifPS@a_NqHv&iStvOZt!~&&pP~!Tm@Z#)v|CD1ODuaTJ&9L#aW&eH z8Q)P=HvawmSKA8E7Y?>U1`I~|D~;)Ipq>gf$0Ct0{pd&j%g2mS2M83fU~N;FVrY z_wfzOV&TLr{5!LXFD{u2f{Hq*I;SfQ(;3BR@Y>wV8RRonUpMou=H;(WBBwLLhPO%I zf_@xd&9+$37L_HDAaPsMXjBkzJ5rID2`D&vk0ljbO^>I(aGDvQD7`uu&lN@`>q}nU zDD{O%iHLZPa@<7AL`6vZoe5N3ABiwI+)brk7K;Y=-`y46TwEN?m*$W;2$t$^nrMNt z*x8pND&JtDbUxo`J0qjFx*UZ#ULfYQb!%j6))-|w0iVS4l-~;sq4;B5zw_j8=3!%a zybEvXELbpRmRA0laE2a}KV0b&11v_xs2U?ix~R!`ciYP(v`2!!OUn&v)cJiI@do@R98WTiGGkstqvlU~Eh;53t} zDjVN+?07WtYkcT?CLXlElBIz&20J{+ZSN0QNu{#wq2H2Mh5Nc{9hb!`q|H;@f3jlT z_hQ(?O{a9WQ^o{>r!1BN zr;A5aYBYOUJdT}(D?ZQtHB!H)oU4+bh|_EfOsFVG&&&ibx!AKZB~dpNRiVt&*UX~ET3SOO;yyoC8n3xr?udjk?{<^T)3{Z3jYeEuN43jK z!%5DZ*K;Xt`Vo6PNN`!azix}FK{!kUeZ~OAL-?soY&NGtt&8s85&G{3q+f5eQ?=)1 z=Bo%3ZbMO{tv8<1et)i1`US{N_X@H&+K$!_;!8w??XVq|9_p0-ypKWxg?@Sfq8~t; ze83xpmzVe3#oXN7Oqax`Pn1Xwqgz`Bh+$*fSsjk(@1Gx)yX zQ&{#-phO+bCkxl3uZX^<8OXW+^qrJ_y!??rjP^5bu5DQ9^<9C??PjZ?D%Zz7*I#?C zuXi5T)UeY}-q78nVfp0P;*$=-Lb9!Gr#lhN_(m3pSHwadC}x9VQUm7O$G;!4xeJ*b|U#hv<8UJS!-6xG-uMNRr}MlbPH? z_Ty%Cr1@44h&rv^&dfYLOg(KM$81kT7t>Rn)YCpe>^A%YFZ)kuw;Yk(2Ff>ZemL^N z=%AWgm6CIXVv4hHP!RWk5Puc68H$2yEor!q7DxoWD9;~UvYLN;x&1f|gc;hD>Nl75 zHgeX1E>xBr9F!QM`Xo-(>;?M{T;HjS265cIV#%Cc4oCX&W}4|kEUt=lH_>!@stpqg zkir^gz-sB1A|fWfPN06Q=_WFJGG~so$l3cVUp1)G9Smq9(v4BDTqgu;afw6TLyIa8 z%Aw1UQ@pHTvwOvjv^d@Q=_}AfbN$r9t}jt3Dm@Gq`18fJNY%$kBD_?OZh`@Dj-_ky zCL=#MQBetx7PCrvcGuP^opJ@GY**baNx~*Qf<&>mekzq4pjY||(V{7&*b&>459 zJ^0BF{xd;1q-^CUf^}rL+US{CBktujevSs_r?ps+#UPryJop9LUC4|nG2Q&+prGeY zzS|9@Yg*#72{gMsS2V4CCy|JaMXdt!&&edoq98}Mow%@iJC|x~@(=m?-JO`Dot$j< z{jbGhs0AwKEDAKE4QLPQM@nCaoO$GDdcpZXIefK6F%l(c5C;t5?Rynqv4`yh+@* zucy<<{nuU8G6tC>5yJ0Y&-yqxNa)Jc8s}R2h5fREK6yWLsK~p>cC1XSQyQN*=P3>| z1j&d)(9^{H?b=oa%ALbdyUfWPjnsNKXZWUD`tv_+yjZRmg>D^l(C2%GB8!>bzp&3C z6wMZ~PefpQVZ`;dKypEQt0w4IapU-@9I?>RFV2rQCxDLa zefrltfQx%us%Ym+P0*IqBg3MEhK<#%8~tE%iNUMsKB z8#~(#M&Z{kgv;bQC9TsJDA@Bk(8YfnEH4uMYhC)Nkz@qiX&N05KO?Y*fV|5^DCr)T zB}bRnZG%x1wgaC%-`BJKjA8}HRh|^#f{$!cB+j4ND!24Hyf=LokAl#=H~d~l?=LwB zl5)N1`I#i8q0};TN}0)VsWiW^?amIN=G>&WX5Y@crgdFwee`5 z4m^=E}rx05dNPA3O#F3Z2pF_a>$t$vE6 zUF~)&e%oWAGO-bIIt%gI5z;}8I;}A*2@actgDt|fJqu2CiFXxBspg!weC$vnJOfpH zXFQ+KD&e*DIEd&Yb8JIx-CA?s;-FiL=$d3%x3_vJ?VF55Gh!gtT8ROQXoI;R zLS_}J^q#F15ZjS#s(7i@~zr0Y&U?=|@wVh%|g*)lCRURxkNKB;7 z2_JSoPPUki4Iu6qb`m-833X}nDP{fUsW8=%N9RMCn!&hPcPlDW(by1nuquOg(o>ggvN^lB$m`e>IL+sz zXh&`ZzJ3ZS)f)Q}HxtVn zNg9}F=#CX9d<-@+@bQb6+%Z$!dB#|ZhAksu>x~4*N+?HvnXf^I8U3=UhS`$&!1P2> zyTxrXcxa3dj%;~GY#XPhHl-=T3sGlh{J3jpCK_nC*|NpRtD@^S@|h&dwPH?eN)Mks zkEHqKWpOJjT1~i+7Sz!+2E1x>fWm3^1huP1c2`*uk) zbYb1SZ{K(bx(MCtvyGlKL_`zswF;^To7579j3%>gcKUd!od%GyKCJ;d6}Zl*@o#GK z5{@+_f88j}Ui=zT0E2w)&XuzCeF4G6?n>Rq#;==orel+G>5Wy|P1lMitz}6S`VCf> zY24cOErxwO`%N}$tu{};Nd!C}?(Txn;u+sTU5jIi*UK&Apz{^{IF1934b<24pNT9@ zlJj}Xn7~2}=Ox}}Fg)+{I-d?0$@eDsXUdmF+xbKXccEdv{tf6>>n|Q3-&FNAmt`n< zcy4(9iauf17Ci%f-2mh2eORn3+8m4~hd~J8vcj4!kg1K~d)hG!BR-?bi&;tb-3W~j z3fUA~J$(4mrXuqg?D-wd#dSfdMmdcO6%lCetEclm)%k`mMOJ*loWurOL-|rX9bxbXD2>#Ie zz_8CoTo&;;Y<+EG-4r?m#{?|8B+rtu@}+$|8}IDx-@{`?8mGc!y;-z1!?)ynccl042 zX}TRZZ{+m7&5&lnB_K$~yq2r4$R1WH>YP5t!!q=D5<3zJ8UqFU)C+>&1qdpN;&gaB`2YAj!kQ+IpcJ z+x+Xo59+u}NJ*ni>D47D7V87W?icGSTV_^UJfcGZ@*G?3$b+>G)3H;Hic)#9^{S6Lv&lXXIs-4t@jE z2U_S_6!Fj5HrKU!gMT^A#`D&fIv3D?MBf~oAViM~lBBCa6#XTKx#XwWKM{+Yj|?T& zP7aNEj^a@lF=#fRdFNlFS{{#`#3uIMr2Pj9oFN0T^1E*=oW$CNPwYQ29?S3=>7@ML z1crhl$*7_*`1&byZ1kfrd1@QOWB`wBG@6HihVlq+Yzys94DF0Khwr|gIjBGa67tx3 zqO!Hxi>LmOwU&NEHF7VN>olq_1f(7dv7AwVRlps0u!&4^auMg1ZKvX=C^iX!oJJbP zM`$_VZ8^XF68_zZm-(f}>lj#N)~n#L$A*u>khS()6I5=Ni%JCX-@=g7O}V~sHMAvV zJpLIZmQd>V9~3fO`t16E^4(GX*Td%*_3%Oh)B>r0JoCQBDif3kbL73II-MgqXi<6d zJ6TOFsqY=sng6uKVk)Qk);%Q44<3B9+Qdq;qNInY{5g7Lw#BKoNi;06LJ1Y-Yb*TA zr8;8Q`L~y#g9>!YPidMgRHNA0TCxzPHWg@IBfCLZ`u5_Ym)a|#g3>c%Y_A`(S-!BV ziA=hllAyr|AmdMzgs}^3fN4DQh3bZVA?rYP%wItWE*RPO@uW_zY=cRgr`%!&%&2Zq z_5R5TDyb#gNWxelLDkReCtdm2f`|B>yf@y555KdYQ-hi9h=@pj`%$rxk%_xGpX$vO z=H%qmj3r4% z?+>}}4Yy*oi?mzHZT33Kopkz@>N<0PBuk;wY*CDgnOtha2L77D48z#HM%6=OxYgD~bQxsE2Bu4w{Y%abDN7bLsG?W_Oq$qU z*DKiN6~YxLi}@YDEyQQ}@2ftJF+Fem-f| zoaXCK?%pRO<5%}E&_dwB;hAoyP1Wpo*d3HJb;_=Znq2RArGp{N%{Sk%tw19c+;vG= za;0SgT^(;%4|EB3UP9tkA+)y{oI6AM1bW7+Z*+A~uRV^M-q^Qbc*PS&MTWU&AmQf# z(fHrf#G<9k;1p-(Pdvvi(WZVhZOJZmAw2QZ-B%~5yvN*DnO#YU>Z*k-P*owYL2Wmk z8tBeWxr9L5lL#D!xcQ!J_*jnJj1ewoerfwdH<>7d#-i_o6;z==e|LRiEUCLBS7X7&j86deJj)f>pdW)VvE0^n&$nGujYLsH!6f6zFTtQwJ;ekQP(b(sW$&mny05^Wi*AtLr}U=%_?EybTeIxsV@x#S zAAS@c<;R<(nU#XH6yggT%=w|g46q5NKS z#8wup<+lyZ$WG?)-YfJ6d6!L7X+}5bvR`(EdeYbjU5CVnC zM9)H1*UJ}(SEWSgcU|EEZG<^aO3assqbgiIcc`|WpvmnC!6o+yUsf(VQflIl?&om; zNAGN>6Gq=4ybZtq*j7-H(U3x1XC1bT-AH1{n=gS@3K<`i)IA)+-Ox%7X=PL1{F7x7 z{}A)hdYVs~<3DjAV1D*|OY4=8`~vKT1V%6Lsx+zdfnkepsAnV5dYGIDXb zN9ci)S919l+=i;Y;PX4tsAWxN0`Y2t2nTG8gA34UW!^o_i(9YRqm9*={O@DoYSgMG_Drl;|)CSVQIgbfX z^;?B8L18YPOIKB{`}Ty3D4@(36=C(yg(>&qaTJq%G^k-nA?MopM)Dg|)}|--e#=Jl z7uiOC#EhC4;;9tPpm)s;RC)%PYpCPJsD}7<_pUI(yD~mKx+vFe?D}lKz)5oC8?`~RwH7s7gT#%}k zRs78=pBsOAlg3EK8ZyuJ9qj zWZd1)6Gq%K|E7p6nZMwv!&K<`nBOp&?n+_evYp0hlx@LOOjhl`KRiY3rTd}GwXrV|J6Ztf7dhucscRPWnFYDb{>SR#1yH<80^WSaXhg&@ zP7e97v>7SM4jpN`$#(u=SK_DlCZJ+f71CvBf@v}mD{uts_MSR0k^ETFxZyLk9Sy9F z3JPkY#VOHFe07Q91#)S%v%-6-fC}=-kQwD_MMVxV9hN>I*~cM24u%Q9Lbll^Re7n@ zZwTvq7?Vs#zn18*f6~5t?rK8~P_>tk#-*1p0c^ocu4npMaKVSaY3Pg^LY*2O^ z{#02eG^voTTYNQ_xHGR1j|mo?+HlH%e9ijk#<(|Z7zjj18#`}Vnp}M>uwF+F)fIApKF!zMsQ6Z=m0fSQhqgp>`&qCN$<9`fM_mN0&>0q+itAX=u%zd zO5PeQuwVTKCkpjq@B@?5Fz70~;?Iw&Vg3jGKin46WC8_<0I|nkSIGgN9J2ARpKR4Q zZ*@top2>humXYUar_%LX1?sWR@*`EbR*R@~YF1-EsA~oyh%GjVg1$==&gM7T=0OSx zZ3bf``p17_Boa80AIct$F{bHnfH*)V^FlXqaXs-s)fB=w<);7UrV>RPvuNly``iot`JXHJo09ArF%n z@Byc%?#P;>2XmmV9MBp49A5`oe#|?R%XUVaJDQE52Q<<#Bj+U_)JVOWk@PKH_)PU; zHh6`B!CnqctHlcH@$>LSuV@znF?hUC3GeS_ZTNV)3)#$qIsI?w@F?NcO0W=9K7Cr& zV1DLzPq{v1|AtWWiln@a6Tn?FE+P)G56{sY5AN&d6SJ**EBXe#?RSp!Z_=;d;YP%N zp8md=vk!F8`-aeiRw7Pr!Vk_PP4kNDbm-LRIU3J(I&=BcC*P~tZ?)tge?b#=9!r(M zt808dSru;{G?j%a=uKy^xY4a2(!7{@;!{W-rpCSn}0|mbDHq zG{;=QY$v4%%64lF8+P26U*9!hYm7(UOFVR8JsjxtHalo$=J~9JN6UxbAm6mRdrX~M zbZx(K#DpWIaUr4AWttxwjwK->A-OG9DWve8k&51ZrRSmH=sjyaDu^#a`-+05!zkCj zSWwsEd}^4;z02T&!yQY-=}>`Fx)K)!A3fMbKCla`lniMhtO_ zSQGC-To&c)b?*myXrnNnfg$m}H|a1z7~z=ZirF$auu#Y_Sm+Ds0px zPbP+9}HorHwGn^G1|oTs|?pcz1iv~X*&bx zc$@+rd$2TJ0b>CJh8=?%iHw1bJ{NN_Sxw)F5A4446f@KHfP%MQO##%l9An~m+l za{lgJ4&~w%ap%tO8tbJ9lf@g%o&Hq{^~$v__X||}7E8|8wEcDxTAIlYty+<|PO2K6&2YBxCTXi&6z^YOlqOxwY zGs)Ra?_C}jQu2qIJ1oi{wNxB1+@kL@5RGSL;QITkAxL-RbVN&7AtE)^S0y5{^~0!@ zh_tghu^640nI%|;_Sa8*zeNq+d81LiQ`zfY?p~`#g|4FN`|(bEiHb^If9mHP$ImV0B%wSuG?OceU=;<#&1Vm91N=-9qeH2UX(e zZ;Wxv6uPAWeCZ4eU4DKE#aX6t)PG-SHIq`Vc$Hp<=go1rh7j4er4BE*@~G}n#p(v2 z>;v~T@C`sHUV^z#m!x5k(jXE9PY2zW7WQU69Fz9yNi$o5-|f^Jc;^K@o+OFpEpo8n zNq*CYTALI4c`eduzHfeNXzg)tkI+=(^QE7iSsdCiDa=-emS!lYNQAJw7$paoSXkJs z>5DVXneu+N9mu79to*`l+7syKAUZP8e<42Z%2&EfQS64@pu^fWou7~J99Dq+ivuIk8 zhc2uyJ&FD+I4p&*ptB~$oceF<;LdCb>-pKs~T$- ztC#1mr}j|u5&2VhOxVJa?WcVR=Lh6@A+_=c!wiWokY-inGG&Elw+9X(kiv_2bBTfA zncpQ*(Pa`sFXg@sjq~l03h5_NLq@J-TvV`HFmNUFDzW;n1zd^oXD*e%!&%2E}Mqi#z+PRvo1KrLW=oMCJsQyF{> z1r|HM(TYJhc}d;R^_dfa{E#Jvf_jmZd;k7wj*s2j<7;0?n+#4Fo0v)|Lf1=a)?`5p zoJj%}^A)IV%Ok`x^o3E8%U54EK!a;H84V9-`jZ)PT1)=9F zr^pxpH_r~{^k7};#zF5^chr2a(zJ@>-b52e?JG&q58WqH?+TnWq{DGKB;aiddQXT! z30+dRk~G5?m6hglST3u_F}EC^Gm;YVedKjVI6n+lyq@hHasZPz#W?j9djA@ej%YXS z_|56MHI8$(Npx*YmhVFeKsiwHr9m`13Ke$Lz+Zt#5op}RVzskaZ{<$NeoLpSptTc9 zPeTK5A~ns4ELhW5omopnL{yCpNW{lZtGu--_b4h?NvaSi03A6sX{lWJYdzgp`*?wQ z1-z%b`}v&SL&jeq83O$5N3tmb+K!XbDbKfj*6N}Q_}{1K<8{p^#RaahXwzVT!sy8R zsMa*EkH-sgLf|p?>-i|rU=BUs<$kSZd-zEWJ@%zv-X{%F6cQ+qqbhSO=7&45+ux33 z0c>CN;!pjV4-|E<&Wc393i2;)wNU!I5T(q}!fW>IcOS7Otz_$oF%=E`d3!7#dMn~T zLoU4de7j*JBmj14^q)Mq8aI2u5OzPoM|(C!lDYEQ5(>nZPvwBqJ{UzEHwl8ziiwHQ zWMX4Edb8SJkXhT0HrHso+PyP9vD5vT5f!Cnr~8}{HL7ptjmQAhLMTi>ip13jh^^pV zo8LbDSQ^iidwQ&{pKXO!Qs$Rsd7s`k=a$uWkA>x9yUQYT=}WWMjES@Yyvf2@&K9k? zBJ;Vz@CK_x%i2WSut|ZJQVL1k2?0*QCt)FQo#WgUZfNC!7V0xx4K?L?J9-MIEkhWQ z*-*gGfL=pWM%UD~y}fV|wRUXipbB?eMm?pRwFvRHURg-}#kT5yV<&1cpvuh#_7Cgv zU*BpOh+((?n(rGUKH_Jh1M=K(*$z1WeKC{Ro7GZ-+xN%Gf2xkzXBO?64IGZT5(*28 zez4E+1qS}5M)`jnIpzNT?zh%FIQ`Bnggqu2{{zhUi_g#`1@ImVLm4vv4Jsic#4rFQ zM;p{K{;#`y_h$gNd76>_UmQ!M|KogoKcU(IQNjNrsR6(>zW|I#-34L)yzzfwR)h(G zF<0*F8U7o2!V@EWGt1Y$x<0r%_P?$s`%VrV?2+GHIqY9+AKY$u9TbQHSq{%R8X?lP zCQdKI7S9XWRE}4KtgX-;_uWJdtNC(=i#4ITm)e^CF68^gO`EH!%D>P>S9J8v%Ro5f zT#b7GBK7?6bb53kJ)fudri59W>+-TwN=lRrri83+`!9uv0c?4cKb&)=VUVW}k*8;y z{wFnKilD{HFY0*@Zp+#yTAUeeE+;5i`)t9GrQ%rjJjv{{iH$&$jp7ffng4KFOpyue zU-GjX-l5GnD84pr`mU~DM_7;*?7S|-5U=cPsu{ndl`)1d{})$jg{UbEK~E6lE&d{Q zxJf4Klu1S5o|W_nyWMv0WafLdjWGOZ8q7*J+~{)oFeUU@e?G?QckXM67pvf$bF^6A zP0fcTHOvB=n#n>w4i?Z&hzy*}1Th>(V^b*~#6Kz0tI#UYDeVwHQL=IYaP7w_zlfaP ziZ6|bXg38>gI6Zq(7@YRLWHiZ;|jWf-M;<=Nx(1+m4C`Ekz6`f5!fE;B>Hg*4-pKn3(rnjzI{ZR$)=30v_rb(2= z)50%}9Py+@Juha^NA%?1=rb)spHSe$FnRKmbw$x~vA2#;X)!YfRV%L&*%X;SQ%MOW z+O0NPO4Qpf#r6P5La0fl)Jfu1mEh=uf=n$lz?uj}gm1V%RiKCUwPPp=02p)Um^Ng> zmI0l2f9XWBMIbzt`qcbzf+D_|c$vbg@0?_$6FqTZs;0xJ4w1;wk)i8;=qks)Gvs;_ zI`Wv4h>3Nhs5e9j15|7pawr<( zR)K`|y@{jbR<}pE3y_wOly0spYg@m8#if~CcO)BXEPymMv?8D(=S)Ic= zL#m#uWx39Lpt#;aQO&XHTa^8549!`@fGg#FO<*Ykjz!=2Q0ho^wUpMf#p6ipo1_X@ z;61xZ>YJm~8Oe&YU@{lz%a zPTH#62T4Z!HyasaEg4s+47m)a(S^jwk5}v--m7TDP9(x_fDk3DscTLg4i(p|!pU)1 zZ^_Nc;Fa>!Km0VV5U^k72Hc%O+lhpS=3QYT1)U;#lY>2g7hT~CVMVe0=s@)}dN zQ`mqZI51o7t_o-DslYfd7rHicVu`v{vHvy}jtN-?h0FjQ6B80vI>OOtIsZOV&rrR_ z2u^k+2>%Y7W-JaLsn&`P`8|BCg7I=N{+`V1Ro|_V#ofxT)6ZAJxv`8(YQS7gkfBR; zQ)lbgIUmyUU|PIiunJ=gS}-T_vQ-PjQYFpk+qf2(@&4y(Ht0cMQT|R%voHcfSvEr~ z3}v0n6)PtN+r@$^Y!t6er@{Mz*7P-Wi^Oavyhj~f;$ZSkZIqX*UCEaM4sWA#tT75j zDB0q4c3Y0rI5I{Jtyl)>!P`TI59mxscWspf7NUKrSCFoKhyWy5L*Zcr%C=&x}esTgDbQ?84JsFego^8IulQ9b5 z^Z;Iu`AS)&FnLZ>$-kr|z`i?%SnO)oC<&>SA`TI9|6P?rOIcxt~ zmQ6E zK+u-Gg1`Z;+tnU)`RgU9|GumNv(c!(bXCBNl7R7GQYV-HF#l?02SC~HfrlM8`d^QF z6Cew*xleNV`vk(_{#F`hHK`nw*1&K7kcp^13Ku#xdXF{R0ZWrDF5JLa2W(Vv-2eE& zB@XCPpKN(hlj$zXzoa7Worqzm>J5x4Hyz4#5N%r)@ZY5hun`f?L;I-!;kf_DuWsD~ z2r9)qMouY6rv5;S$v-Zm77CC;i#^cc5gum&Mkj+{OrMUXOzu7rZ@mY8-}0cyUPstN z0BK|kLp}3$GZ{bIF*nvX3*wm9H;o+OU3ZV>AXOpZM2_{asjk*!oA|XXn$agSoqzpMnN? zD>nr)$)FD(ifMK;e!P_cUnd(S)ii34F_2waI`}Y6rZCSZH9#j19>y~d;5$`z5lG9F zSpr^mekJh)&eF|P7E()W?>Y?3lqcBVm9#i(GDpe4`fJy7o0~S*liq@3 z^JEq@Vvs6;TIvl(_Pd(-RHj~$8%6mkhDope!xaE&YxcUWoTglSy1$f3V$uTWQ!Ju( z6LDGr)DD{9-Bv-e9uVXINKYrcC*`pLTFD0@aG2kQ{$5L|sTswq!^IZ1J;LXrSR%TtITyQ?8FvzhDaG~k8xx%SaODCiV`n3M6DBlx)f6LCtm- z0fXx`G|(2ohqrL^h43so&5GVyK%0->%aeyU=~x0iWhcL$o?fr)eE8?l7KM|_r~{oz z@~Ooh)L0w9s?cs+*gbV9_g6F*CpOe3(b)aYk}=I9_6>yMS4#(ie&Y z*{wD2O{5PE3=|X<-R{o>T@B9zARQyOQV-MMz<0f937qDWPkZTKzrC^>4{p&CdOrOO zBv(vSjpk;^vtljtx0jdre562zSBBJL)`}zuvWU@-R%#R z?fo07HZPBog}J!#|0D0M!>Vex_EAKTE|C@lkxoHGP`W#$OS(m+R1g#-1r+J-E@@dH z1}GxkC7>b_3k(!cvCf!l;=A9yU-$2P-#OQH{yG2YwH9m6r|xl&d&F~I@ri;yp)wJQy}^oAUu#J|w5_UOcw3l~2OExfz-z(Atv)-~+saO~cE zm~p6AQ+xs`abyW1?Nv7Itq&Fc>qHd$xZX~BpyA{Y2h~`fP!6HO|HHjon1(_=o}iAV zJaMF0D>5>YtpCTi&oruqRxfQG%QH+(%GeXTLl5yiW>U7HE*cur|Hw%&rax|0C|0pu zPpYn^Kr^yK%iV>&?n;$VW8KE>SCC|EEUj!1!y zdL@~nF0aK!IU1`mo-$8{Pk_%x7j_mF+o5{&xV&gO+c{z*iZ#x>ouK?3`Mj%1*RHK6 z+&@{NOMox+xqL49Xm+pE;l8lzOi&)7FJ;_*!GUMbNPZP5O?Yt^C`FYKv+Rt= zTifF`LWM88=S#W+*F)iLv zk?B&ww)Oq_Qs37?9+|9Mpf-swXD?SO&N(I)=n#O81ACjj^1-^{c=UnvtoWuju@WDt z5UFp7SMgi{psO){;V)0675koeZ&y0k;14wNs8w9ALsvxFQtx_j*i5%Jb8ls!a;);e&dR3DKGaw zSWmmI{D3vB=t!5$2JQ7Gs*dW02A|OqohQ_E`-qZh)5Frm?o{dXt4xg+r-g@SbT18P zu&8uN3vjMG(c$5z#VUI}EB(2XmykBWmHk$AUOjKx{N=MWAN69!N+~guDl?kBd2&C$ z6rQ&?X^NZEBFG=TZ}W5#7^e>%Gt+YlYp=p@a2f0hJ?*U$S}(=Cwa0W1F)fd7l8GMw^(6a8 z#G(W|do~hN3M_mU2~(Ax$mfS2YN&t()a(tnY&{af41-K!mCYsOdK(zxLe=?W;p=03 zJ$@rT;>Sq=Bi-bpuPHfad@nve(zqOY?c=wCfK11&RO<@qKd+#z?kGk!Xy;n9IaB1a zVOe9`U_1Uu&q`{w)mZ_C(nFD1&E%w{9ddlUTrUpWGIh*YGmT31>c6o9h7fOw;Hyu@ zfL+wk)2B~+%w$p(i_czpM;C9R`oQyzyCvqtj}wdWT%k7@-E`E|AL^fQOiFk`eM!|8 zH_d~@A})x7$D#()+~+3k^7`ds7uN2Q(dEUih(*`zWNL-PLaq$oo5PlZpB~klYo98d z)74(8pL)2DrnW`sa3NyA-!Z*@-<6_RIT4M#6(0K4g9Sd)OxE7sAM+Hh*LI2?H-9p5f9mQNu+R(i)TN=<=6sz# z6I#+Hh6qO2cgi0$vv75B;jvN7ch@#|3>{;vDN5CxF52UC)S1uSLogX>4!B55(1^gy z*TthRoyG9K(j(-C)R(e*&Cxdw3etRiV{hJ6rN8&u_UTPl07*K@n`RVYkg^>uc{KXS z`XUtt6LInS>5Lna0`PUsXC!e>x0kqBjJb*xMcw4PW>RL#7sCiu*#|jslid4>3Qsbg zrh6G#f{A>e7Qz5V)==+Ff75AePLsWRL^OCZh{W$H1P|uOII{Qh3MZF0k}=Jb#E7yh z`t!10*?%W5!O37LJfy68P@k2PwDR{>Y1y@2bdUVIKg;o8c#nXA%l$pI}zC!%ZKp1*g4||k$q9Ey1c2p z{NX1jbu}p+Kf8%ZtFIgRJw;BhLv_p?FJ)>WiCxtYaLu&Zf-r>K=$xcsG11b;%avyJr~U zeLG=kAcWdpj7`-7%DU=}NRt@wi{bTQmoa%*x|b%<(ldsfx`jI+!h>>nv+}C!xv&+8 zEJ6lWXNw8$lGL@pB1GR!1TICvBo=1x3Xh4OGjRy8+8pt(QQldoh~8Qd>nj{j6paoeMo@NO@P<9 zBB_U)qMI?LUg=0VKOY0Ee6SL_@-K3TyhJ$TU+fIJ zu(tb^H_|OF9mv7YL|@hOQ_Y2H#KCDpzVL}LyHmd6W4G{;+~HgG_Cu!%^#%rr7Z2^8 z&t;95DR4e%;e3kT8peFT9D^B$mw|nNY{Nr2d%QR~<8zU1m_G1k+2#6k_}jzi-(prw zyp56f!UtdDVOELHy#pPgmR;ru_C=%E70rnFdF&z_h-Y;yyVHxM`QeH_MZ-J3=|o!- z|Ko^0;<>x!|IKp|7?S$&oOt=5*HXP$JrBn+whN)t@>D2%$uQOp3uuX%!Cn|pq|nZLob^shvGx@dt{qVJ9V`j3EZD_+)$j%(72%%kp^O6^k4|YBUsj84D9E? zE)ZEn4(!p8iKSG)#Kw{vPeq$3OhMb$;Zuy0RpvejNZAU0>q{5cO5zQvo`;SF{5E7{ zz1`jFkMTAvjvk;8EB}>kUvMBXyuu_Rc^C5$vq;ANMiAK=G04gTZd^-COr-rX2y{9w z-xL}l0E@J~cga8l8+C#t-wNYBSz~?u5TjCr{Jx5T+wLwdk&mnnQb$m*aQA_KBXUDa zPcL%6w%*D!7Lu;n3apdvF;AS`@C8p9Ml?#onF*kQv^&S4;wWvlmbyBlgu78VDIK-2 zfOYG!eKz?twY1gyI~JbASl;!DD=N{+tg&b!1!SD(E{ceZi~&MF1SQh^{SP^g+Tk9h z8R(kBWjxLyfb1T(c+1@By`d%3e`0xCyr84lP*=;%WKg6j*l({tdQKZ`aLU7}AJQA*R0 zh&TR(o0L9~GT<35^l6?*&p8Yw0t}_AS;4}oYuDb8A{;^j)lJMl*_<~=_FmBL@t-&+ zl8Wd9m-p}5%zLY|yf7>5$mge2mqk-5P7#yF5EkpX3T}5X?IH)l66oc75Y%92z~RJE z>C~8aWTwfm-hX-%0DlUv=qn6-`xFz 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

    W9%D*D97R*par{G+E!WL7N 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 ca4gAF+KK#GW(L*Wa{Pk^!uNBj;qrwqbv3bb%N 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

    Px1>mp?uuXz3#@+PstQvOwRkpISd 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 z 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%0DS?#3 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

    >6y}&^?~=P2Nfr_^JsHEolM=x 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

    d(FB82d}@oJ)m$M zdlCXwbJbdLx_$#*rebXpurh1seHuMaciX~$|l#g)?(~OJ|%N9}o8+`^8 ziI0 zNv}rb_cGN0XsX;veSJl>x9gP~SMLi{2C7Xhp0F}f zo!`5<8C&^7_tGKg=1mpqX{cUoP^Q!E{^ap?VW8gnA)^4ia_@@y z6-UB*Y`+T&iy1>Ljnrk$8gKLUo8v0_#rTIJrI z*VUh|4nTeZ@IU4PK(6}5Y8ouO9H-c>~hW3 zwdgn4xyLZRCI;sC1SMDkp^yGwN(d4(EfHbM!{3<-AUkv!Wq1=K#)Tr*i*Kve@_OUSZcbFZUZ$+nm8LVS!gw-KhYgX0d}VpqS~+T%+S{qdxSOhJnH`V`bynm z)aDbV8`G2i)8=TWL@6MqaN02eY!uO7Pylx!)N^SDJWD+kH;PrRaMfPA)&AZvh*-pb zprqafDfmoMNo$D#N(`0qZuBn(o`NsSwh02t${sC94}mSb7y-32{6DZ^cn${*2wX35 zWZ~|hq3O%qX9!?xo`YGm)EJ;Rb~>i`vXlmYsY^xxTn7g#%pH~i37^1+0GTbq-Js}4 zxG-RtZC_FBwMw!$Rf69Db&(jt!5_*JK++MX77Sa@;D}KYH*=0x1E#GSERTP`0^yeY zbAt9|W~DXZ^ADu0!tr?_QVa9sK5*X?ex8oM{`uT3>`wIqD4c)LZ0t{5UU}^wNhk^Z zUIwu`CWVbie=8Bro45P`552yiS#G+GRe$ASJIX{|#ee`PqksHpbx}asfsmm2)bEnC zg%Hh$yu92L0==xch-g~g?{klA+NLU=gNpSthVV05IrHe{mzc z(l>M%xk&O~e!@L*csaJuo@!#I&X>Jb8#f=OV?p;G>VpwzWdjs|hBUpSA=!=xoR;n7MlXK~hS+$U~qBHLnAgcqM;VH_=|mb7Ld;wylF)8PV>%ckCfxIdt* z@pqh>;@go`beQ>J2|au!&($!%o?QSe?9Q&r{UIAwL%gPP;53H1XJy` z9@PkVyjXja>i%V-Oy98svZW+EZee|)KXV$NVCeKis7E$AY=Beu^pm&nOSR`zwNH-W z>8cp07fZ&7^lxCd5&&+cg22I2>o#YL*!-LCYefwUxo&oR^&S>STUEAC{C?xv?G3$pRDY4^elvAV51444j{ z-Awgmi>bp)kgwT=zx4jnP?^l^uuCKCm&FyH$%0mIsz=B-6&L8BVWBwJP(zQXBP;wiNDrv)Tn66c4rwvs6pN zJ3fe}{45wrP!c+j6z(vcth-n)@&oCE4;YrOFixr~i%5)4X5P75RP27W{r&PJ;o;a% z{W1Kk-OH9&==U0B_kJ!HR~Kn9h7c0msuIhdck?zd>l*Bl+V_lzddj&tckr0=QR1wu zF6~$4z4l#UP8qWB2rkzT8_0jx+h1_Z3mgGgz*2S&{m|gNRkL4jPUlCV1Pm4%c{JBG z#u7!${ptc}&S)BnFDxkmmLCeq{+9VZ5YYAsqF|5e1ACM*ULdK{BcG=hS{i==KMSAK zrw5DACJZ8vKZhypwHyIuulKxwZJNu=%i$f};tg41!Bu2FGMS3SIcAr561J>-lCluYMPXaS8L9HR2_xAjKr9ZQPzk-=3}R8HRL3?MSK4%RIhi zX7D%g);~Gjt=An^$yduCUr13^2H0r`Ce??{2eFnkaAMrOA|U6a!xr$dqapco8W0R@ z!e~90LMM`^NzQWw=37)O1tq|Nk<+n0S&>y~PplCfes463yTdfw>oN5A_SEUQ=FQuK z)|<1%qaRzSC(hCdY$mrWRN47iMjE;)s=w!ExwRYBerpLhPkmXWG3z)xOc4BPaF~=3 zGAn@By`44)@~&mKSMzB>-XJ=l(Rc4Jg3>U)np};@dM|li#~1ez@3~0BqN<)WzGSLm zj_c0UiMf(+h4azbWy)tB(Mv;fW{y-d3T-O`WppjWzts zknHe`D~+EG0dfVPw^WnuKW+;IEyl40wOsey5Yn4wfT zvT_8{D~f3RJ{HdOx%M{Th%QO=8>R&#{5O2usRP) z5p4=p;>{<@Rr1CovmNL@nbg-h(>lv{VwBo>RCb|4Pm<>+1jurV=sGXi2gW76&*5P3 z<|PSOPw%iD>S#B7(RC&oG1gw~J{0CUemBB{ynXi)6fFUi0z!*=YQl?!;WaVYx{nWMDsRLmmD>}uhWdrq{(E|WZUGvvKnqs@(y0gs3cmw_7*Q{DqwtQo;p#T zLQR&#YOUJ1jHVP&`L7Dmd2xE#;hjnVV`n!&15c?Sn7Qaz5lsvjUbKmKekOhpO97C! zZ%EcHMvaTNS`5=`GwFG$2Rt?hzSr{>g?h8AaNU1S#LWfWLC87i2 zWprNa$gg2&?9paDKepS^if@mMyxph;U&>b}z;X>_1*+-j^l(c*?XGq%?@&{S$8)Ht zGlequnypVLuYHE*lno-6^Wurqv@^lK`!^qD_JA%&krNt=SIAxfAL}x&_tpyyk^ra zrFs`VGc1|qy>T2a2<7%bvSz8pTfN>xz={qUA-TJW80RAqHa0Z-h6Gsb4jC5JHN`B% zGy@)Gk(lU-A}VpGz+#=sr3z{waTnd|OIzqBC9hl}5JY&x_mtw%PZP(H@1h9c*IdOc znEEe%*Q1QE8&n`f5qW{%t6hg#NF{|gH_GE7PjKpsaFs7G7&Rqav#h~f9!c~PL(KF{ zBDO*ppjSzAG^tNo?m=`BP$Zj@s)P6S0!erM;_$4yi*=h$aBsmzF;eFRA@2U28R;!* z7&9_r%uJ=#TJ$an7d~hHUrz{j)nzSI{s@~0`)jNqJ?b;=)Y=;+qh!1eEyUq46fDIV}bP<9VQD2Oy>0A%;YTPY>0FM zc7R-080$Oq2<3``iud4|mppyT45}ge!r=g>Sr>&;+NWAW7sy+^yyl|KNhPW+MsU;9 z8XEoILqYPD&w@Ky(O3X*zvooYh=XwONUdoL?MraZBa-nk)nL&fB`dss?;@e2T#dCH zGjzPz3pw@tB9zT5Tzzctm5_IWi<)?8VbdoPR48z2CR2#B?Ys}Z*Dca2!?wesfc!t$ zd+VsEy8nNa5~Mo>NeK}cO6ihDNFf?Yw~k%f$m)Fy16e@n8qXcYIWHSMlyy||6^N% zUTX~21wINEKTvC>d5NuoHaTzO4YL<+LT29xvJ+@uwMCAS&$KX4rgJfwiqZDwsjLHN zIvCik2Zjgk5FxV!%)nRQ$lvKtd@2o|ez_$??|yNP2~}5EQ+#)35cW?#!TJzZ8ljOh zF=*NRE*fT0$}(ikOMXJ_fe*puTO?U~V+bPrJ#r$3f0?8@m&Bg1&+P@n|$slDw8W~Ul> zTP20Z>$2*Lf*hTu6NV`7j#j5uU=IqzgKfNg(c+$G*VB&GFtFPI$6)D6wvnzS(dDDf zt}^Tu0FRcb2A0Es9gWKm1usyBo8m}@uk_ay3}6RJTkTXXwoNYbN~mHmHLL1(2*QE< zjLR#SWRshVb)_FK@>wur!y;6E2GE-QHoW=rE9Nh-&jB1NWBlU+>R%3!Lj|ypdVS3n zmtQe|fyD(P$?bg1HpgFtrEmc7@AI;S(BD^p#27$!d=2)29n(KFgsM{lxc{N25W`&|^q1i0 z7;;+rXiaii7Q8p)@e%k)kSQeX<2=XW_A}!8M}dp;cJ|lKPuKv{PaF!YMJXmJHhQoU z$IAR3w!cTEmr1ddv;O3*hR8&u09AT*j5B3=gj za-3Do)d#DFtEM1pcK>J;lXmRg->e@Y`&03I>I${RDj!8DO9Va+(`}_FYj?@YyLL?6 z`HJqBr|J?99b%pwteuKhYDqkieM=Sc(^dI+t36{k&ikSn@juPxMzCfc2D~j;RmOQk zA>omIrM@Rff^*{&Jc}1w{Y>?R26^8**ZfHgvBsCgCIQ5f4MfcPD9${&{X`ju5qlqW zG?!eQg&m(;b%PWuWdu81bYT+Yl(O2Z=oGhF78wYH<;{Hs{Jc&$i29o9B&)nE?A}&) zHAbwD_XC0;KSUs;Faje+j@I zEZqKv!=U{@^>>7dE;&|8VCMdsJ?5bwj|SYFD^#jb^{_3#lTcZo4aYS-fSI1%e>}M= zskcSnh-?QAKpq_#Ik~+pJUODkcJ$R`rQiJXXXMY-4&;~KLc6pFdSyS<$%952wC$~~ z-3RrZt!5=<1fX1jL#IJ5zwd9U-~D`95{2L!ot^jO*xWF6EfcKsrNDAE8RZZ(~xjosgxo2$BhGqZr;pW80 z=hW@@`PQBn~pV3(DPsjR`7>C-e>#1Y$G383`QyD614R%4mX zR9j<*8Cci7JMKU&5O@6trD*)Ad47-vo(F3q5ViLJD*)G~{Z6ct66=m!ZU__AcG#!p zzOdxtwc>wVW)Ga6;@x@PaJK1cZAdoGSbgKlr~jx-@%blv=vK(MHuubchoa3xF=8v7 zJQ5ZeB(M|?6pP#I>kk7j31R>J(D+TNILB?DtZ|STex!b!1VXtzeNZx;N{br#gX2>Q zebn);@I*^&shPf@Tn+T5kD01k1KSE$CO9JP_d~yz^0ZVwTos6gj*Q@d=;yjpYa=Eu zx8Nm@hP+udA}sf>S7|7Ti;2xU=TB(o=uvnZA43GLtLqoF4YHA zT+1`}5SyP2!QAYD-5TKCoiHbdG8UZbBzPEYPruYUQ$W)6qeml~PfdZGn7Dgon>(w~ zx@a%eJRNg6L>u*7#o|l)fpvcn{uLdtkZYmT165_)W1p@T{lxR;ra}o|;V1EN#mSQ* z;#cPbwYQjyJPNaKwlZiB4W3jbE88lx2kkTye2)?aPBm$59_wS~Rcu$hF2vYuP4E6a zQ>q3?>&?G_6L|_~AaA;8XpTE#iH0FH&qb4ighyHRj(bfCN3Bj9SSQ7keMKnzvuPfr zP4dQ#Ss(YcGSOV!&9Raj0jEIOiiREjv6e|&WFEB?Odl^7s?DZy^M;^+6)|b-(D5U9 zMSA289ietel!E7MeO|^(m)dwTp8f#sdgLnl!}BzGMS?%DnxTu@hg{DWRt7MKS~!k=Zp~ty z37#z2Rb6I1pJSatZWg%{dBu&eVIx~8@3*AeCeGF@l|5b9+at)F#CC$ z$%!v%sQ1D$p4-758RyL4=NVy{LuF|(>L%o~7q-8P4V#vnKa@X192rR3J=_G!e+*n+ z>vbdqU8Uy^&7v0T4@R6-A1L zny?}lqa*Q0YBFkGz|P+A$mpu%s>PQNrY;5Z9^rY~F94I1USgEz#NZJyT4>tS)AL9Q z&l12zFZxCeRM-R;=oLT0+ky=59m z+xp4Q;CGtuB+(Uyk4OG0dw99FGF+r z(&};nAA!tqj0}1ZD%eH6YlhdX|Kz}DWsY=LAH0Sl6}nES%YNH>8R4 z^E3Bc9tDo(_$tLIXZ6X8(n+3-TtA(0@Zbir&YQP9y*0*Ym1_2IJz z+7{c;HLk%x_0CLc%j>Bm)1=yceljE;{F znY{Aym!!1!V~x>t(n)*D&*j7e_F|#Rh4FP|G0nywM5#)?o-c{0##gw_=a2r3OWI<6 zmJX{BI&rS5Z6K1YyOSJkBx5iPNJMf4X##CUjwWngjyG}s(bPV0?0K_>6lzIQYLev5 z7~|E&r>KU*-#t~$&p-*I;&8u5Cl&h9YVtI!(;;L(>8F0O=RaO`O)DV#-p8ve3kCR2 zeaUw)HDDrqnvhDUFkD4Rvn=yr_2<>`^2_#d2ObAlBj zoGL-9B&|f`FYpgPKgw^!&aH8em(Knq@@o2_N__Q|szrn%B+Td*C~DK#n9XDU#+pNH zYXWMjLStQvlFKIzV zmy!6+9b<+y607$bkJq# zP3^=6Lo^Aurj^#_^uL~HL+qt@)Pf+AGi$dHTbx)iVmo!Vuw1+$ljUH~)Dr)LDh| z`il<>L%eGh0>TT*2;X~Z?iI%j2*0Vnr;RoFp*c8YpjN}K|C0)dm7+qj)CW-=8fczZ z9wfUB3~0?&4soes0gXxHt2;mNUi%DQ9}jZ;6`54*jp&Xv3myRC9wR1>wiodcU@Z6C zbi;aad*FQ*FW&h=1GqC3b~}nrlY1BJJ$^G`qE8MUuZCQ;Y*VL5wbk?y!(E*>YS}7y z4Y1s~RSGbrcq-2#w@zBj=@;NEHe>_km`>}nwSr`YpUZlUJkeOobC_WF!A)ENj?H-$ z0fwv)0V^zo!>HzPu>d42^T_Er&!Sr%Es!Wb&_8=uV#5UCHhf+ zhrk_*$`eaO# z#RRcd@$(eE<8lJ!TBcmct5{;GEQtx+xDg> z8?iPE_CDACr{mJ|znVj{c!kx^lxV(7+`B|8{{cJLC;seJe+0PQ2StB zofN6ea^P^Ai}15|8_dpc_Qmx6BpL07I%5aco-KSlo z-m>w!LbK)Z-6EZh$I9e#mOdL3EwZzp2qll~{a;)F;0xFf6iD3fA|$$~r1*ny1px?( za1>Pi57?_1qNsC!@Gm5bDPq9@Ny9+l$NvCH3Lxop>(}{_C}x5D@6Qj;WP`5s9{GRn zV+&oS45`RYjx#G2;`ryXx-I~7Wp4!hgM}410bH%}&6t7a9~_#^1LWalP|E&;h1pU8 zT+K1gPx9=aK@9=f51IopEPqqMNuhy(?M`&~KnmMm)U5&C=h!Ke|3gCzCkD2Q5r=d9 z1DW@M?uSG_68uAhaw-7ZIp0Oz#VjlQfy@Cw_iNXFT$Hl>f$bW=cvAaX-v0-wvOxFy z@v9fR{Fh{;a00Ns`-$cKzp3I(&H%a(P~HEJ*;c0lX4|Gz=;lA9{{PeUXU6_NHC=$a zm;1Bc_D4$8EqwcQ%ANm|iya;{o|{rR{G$WFB2gwF4*Qcal$a{2%MWn0E|H`OKjsYH zzZP~@sRtvkJN*~U6XtlIkph&B{?i#yt%8E`&|BRnvURcX^zyK^bjJM8)yk1bSXfAy zO^6NiUvUXZQKA31F7oHPj0~HgmaU7OmpvPBw^VIej_bz28JdoMO|5lJFJ4Hqw44>wmQOD|hCFAs0vMkQA# zR}XzROKV#;;oFy8>uXzjKE*sr?DD&!gO}%hTMs2yXE#?DTNf`j2{u7h2PdE>B0*J5 zSIV~5t~R!8a&km}#^#5;QBN=x^vGM_9%LD@zdZA9>NFL$I1PUOv{!rADk+_t(VFHt z1K%MPFhE%%l?Zve zbi`Tzw)JN9%7k@-@Cq7#z3g0U5;ZZ9;IezZ#(pI`geDnB&%&7&c}G85afC1`Y;1|Jl3nA4){(*t~34vYRGuQA|-(*sEUS-wk#}y<*W*xcudb z-fYFuG5yL7^AJytq1?B%)B12{)obA0Of%@0zwcVUkA+@>5{Yw8id1|Ddv;r-obS9X zTK}6GvMUyzJ-UeU@#AZty{OLSVIDz;E7Qoq)cP4dZC5O@U}do%zV5+a z6}uJMT2T~Qr}%+7N;GFSZOxyt60kycB<(VTfWv_^$dl@3TjD@9tErk6DKPXbfqWGS z-EkJHY4Guq{Mni=>wd(_lx-vRLM)?Zs4?wTfwOTz$dc*y+3bVP;Q8--(8R71p7el9 zSQ_4xn@+NHami8n6gGpb=$%pc|^RurF9_<4~gl~YgIKgeiSpCyC{YZ7y zXy`G=)$(=g43TIy9in^BaqhEKEe65ezU)!vZn%#fA5XdIFE(y|&!}b}2kE87t+#=W z#R(w7!Pg;!&Bf|YoPt%eVR03}zh`Lj;Np@L)Q_ZK$nnycx|w@BEqU;KhIAt`!tY~; zo`u1c-a9VGzDZRF@^WiUmCR9B>vl(uX3kvAPW+_Twacid8+1rKwZ?=uQueXD?Q~3%TmSM2-jkige z0c&UGz9Kr2ya?BxB!VJ|lfbTH#FD(^dfJ|l-?Yh0`Scb+bc9gl)tbpkolUdf#O8++ ztf*C1t8gT_lkV%ch}M-_ z&9>613Jbnq2*`hXG-&#`$x6uf=qQ~De@t^i*{eLknSwxinL~bx2H{$J6(0ePw}#cN zYc^8I7sI9?g$Jk|@cOdq?x{R-Zdui1uiC(g6M9&h+03=0IUqY3fh++n z;{A6QKgJ2xuaO;1%w5}#9gthtG?!Tlgs}wo5}pUQ{osLGFZjRAG(FyHgfSyZ(KX6<5FUIW?Bks7jV+&HnUYugO!{P0(pjF4O+__Lw)9daMb&IJ}ZnKWcZPo8I@X_&hCit6-0gx3x%Zduej<8EYR zG@gHT@mV>YT8nihYM%WdExWxsZSK3VKI4v*mftBkf-LIK{bU)K-tG?!l87fi-4Pa_ zMrTONu6~}|d2@Qb_-uG42u&`YzxX`!7*$Iq{X0kvDwP({D|$HT-#8E<3}UG$8S9=| zBXo_aKHoE`K)L?5KJ?oP$|%XHGzYP>D>-%<@b5X zWq0tv*K?t#wbMrx}hJlAlwag)fB zVxV2Zr@OXpaSyQ|;ObAD@wEO>TiUPCd+*|}=MDdMS|+CM%yZNVx&OSUZ@`bd`9CHn zfmzJUReFC1)_6Dzg><=11R@#&8PeV#ExTOj10`s-J|4iJ9ju_v4gLeRqA9x ze0pws8;Km^h2rd{Z{K{p`JdSC1yJ?xZniAZFIde5d!qSj|FP zWzF}AWIiymKm*}wR&JA~nM@nhrv_k1XT4nNAZik~VP~O_)U@jDS;NWiuiLw`c^hR% zC8Hl~-WTR<)vRn0IB(d^dF5q#%i$+MhDvw5)_rs#!~KG2{z2EHF4z_X-YK_KEl8#? z0O@|Wh59HEI5(T>JH7JSs=xmf3Yz<<#4A*d5iazuAOP)$P?cO3*spg#`9j2j+43PO zb#e-q7?TwbiHfbjs@0L9Ul;?d7kp*D(}djrDGIz!E;#8o+`sHuz~nknO*L?ULakJt zvF>KCZ0&^UwqbmH=`D&HDbzT8YOwxkZ611(Y(Nf@*C!W0ka2pJV7S#UcZ51(^=x@V zk7ARfP4b0or6A_k6Vcpch{n*)G{0Q}9f^adcHj^@ukD?IqPACiAA5qM^zG984+9gA zH%{eF>m!yMSY>3vE5n&*^9UXYNT#s*N$Y2G#7U*q=Q$@Mf1KZ@zs=OrgST?#q*l^= z=lUw(OFraq-_yKvX@lM2Omoj6Uy$TR#IO!(!dIy!D+9GLDGO<2*v~UGGwrS3Ysl27 zTD?!CRjAjArHXA-bp7R8BvQ-sQp}+0;UM%e zc2XcW3poT;x-;foX}4W7>A6##w9`aKMQ+52HuUMFhfu+Wl!)ADt_sw*KRuMXg`F@U zhfc^mKD=hvoCm5}Ohm1tOxni0WN>u5?9o)%qY_@bMz5bzs$zJ z;6pwsu6q1a9CUMe16h}4&GDC>!C+~N5DU`RyMszPH<(==6MH?Tpu{sY}CNkn8DS{enJ% zfj*YpcWnJe<@kZWcxM~)mUk&L8che?d*6u8ldTABVM_6-RcqW>_VsVluAJmrbUlwh z>L9LKs%MEt3ZM@^jQP1#o|;rlo>9o`KvS<;jQ|43p{k*fu310ICr7Z*8tAtbupJFw zZqS|H>UJGpQ!&|^GMRo_`EC;ef9C=flyM0jC1`<_#4~3?wMZWK#2VZ4Us=Y4Q97qV zBd23Wcv}90&G2TciV?6vCny$1e~^sB_W|pK4tkClLrb#u(qGSeFE#K1&^H<C1+8SV?{eJx#g)H;Irz~Lv(~hvtCjUw(S`Fsk{P-PB3~k7| zbLC1(e`l0R!`kh44du%npz5=|q+giUT!vV>nKMqOfz!JzNi_@B<_XhVsYM1o&v8m{ zkew-(KK%r#FiV$>)X7cnvVRbZKGw_%Wbvt+j`G9{&n!Fe-0Of#D1^aJB{+T$JWi!& zwnl1Y?vY~v(gmtwdw@k3OE5#ba~9W6nB;s@9zQSiFOahIaQ2wlH!PN48LI~HLVH}ioy)NI5{%{V4WC7ltoFWLq^!%`2Nq(oHHPKI=B@c48h`nKU{KXJ83O^QX+=D|; z<0Y>a>MU*^`vw3g^N~ZRFVi zIrO!smAdrrv81!P?K2SAW72tNJ)rTd_I$t>y)ao{C}g?oQDY<232Q**MAxkkF32I) ziZXT&iqcSzNZev9BqrIzz~7Xvr>A1@-A@{c&04z|?>uHpXK|E#Fm59PiFD8W#O2#| zesbtLB~iV&bH4kSuZrXzpdZL zux;=|Q>0zyL4m%G+`(6K|CPxZ?**na-3{!yR6h%S|DTl6t@qsyTlPR5v_cXmT}dsr ziL$?2k!NQ>#_D$Oc8f0y;!`yI3?vO-*s8t0n=8(-8=ogjeA-DcbAC5Q{uq&Ty1OFx zbaf@ulbsBXiVCNMFKs~sVbbt};3KqJJRDUsYJqK+=?@YSrVs2YhDAK+F!>QTAbnJS zjz*6*o;)g&-8rbb8f-0V`ReW>Zk7B73+Om5)71UoWg~Jt2{dVhDmSMblx0{>MG}QA z67)MzvPB7p5uPZ*NDhx0$XO0TR-m&P15($M#Di9!Hgh4QmEC>^v7*$YAAIMc9{0Y9 zQIggBvv7FeO&=)q5C**xM`F@7o62w_reLbiF}d!O{w+M&4w0*`ayyXB2)%NOEEZG|z~jFOc-^eXu|+lHPy(V#1IWpcyG zeFu1RM!<+?2BB}1JQ@XK+KPY|2d`)rhMRi4a}JJFLpIM!!AO4e!CS$*1>3>okexbB z5P6ctiz2CwMbiv#JkOSL6==(=*k8Ys4;~r+^_5fk>=rqmMGtI4OL(GLbnmS z&->-@uDZ=lS6px#LXN}9!hMM}upV78b~x|JaYr=D)f6y)+~nhn+x z=LlLBkHzjCHJKToUh!5eRsZH3`DWhiUlq?ix|MyHFPJMuQ*{)CMl3^*>Bo*t?fl>M z;}Ey1lH~1#-N_@z{=~{~*+4Ib- zw3GQN!LppXqr9SvQ!~hwbiQvl8$Tw$wYzbn0=ZCBohk1BKJCEs7 zYV3y83ycxmHe)e z(Bwt|udycRh)Cc}v$t-nKHf60u{t_(b%job76p}?(lx_R&)~ANOM(RjcB2IHLJCe* zzbnMsh*SJ($@r-Z6|Uc{JE`7|GpEV5macB~k#5;7X09MFnB7$JqyCXOg-jB@64&-3 zq0`kV4yKGa#~rJjzjGf%P?FCc3oRLR#2$?Y6D2 z#WL@<*P5`Ny;kEIZQc?Tliq0GDaY05kCt;=WJM>*htyutZzUsRQe_yAYHkig_@pzT zmR)oq5Ro1-%ktv7WD@#T(K6r0PB^+d;oNV*cDRpkR?@8MI7hx}anD?aa8k=e2$XoI zaaQFNg689~#*JL@I|^>zs|;!3bKQ9db$>43e$q;yML|y9+d`uxNETJi2^M0=8DGlP z#P_^iH1#Azvjw?@h;L;%eU{XUhe%}hTauPPOjnY3m*S^FBTvYo){RPy-#XWIQPC^R zv3^z5C`|REgM~uNVzqTfA8$wPQYK zVB)lTGPzZ@m*{s)Zqje@7MW0RUCuRCmn4N+9)VcTFrJ2l^W{4APD3imd&ve;tl-al zKe@dATz|!W_#ioIRxL>ypY^DT$$RIvU;{0C{-Vw#oN}94(d|@vN)GJSbEmSNrJ@%} zRzDFy!Mc$;>cUYpDaK8Coy@IUHw`&HZ5G^Xn(5QF$#U*`G_n5av~FkYbo;1;pnjiv zu4Em}+BwIZ;dT@3k%Wub*jOopZQLx>(ZE>YG@{w`9KSV+Ljsd#R~g>78`Ox0w}6*d zT4ueQ!DEVKU83()Q<=4GemAR39*9(eqegt4HbAY1nT*Wmx-dKsk zB;9XgzuYLbnyFjb+aqSbRWDAG2W^|k?fV-ouC18ii%0OtAwzWKP_&r=i;Wo}1o)G( zYqD_3qiBgp!E1gifir^tIT{PE7T|+{# z>Zl3fW8q2=2$f*e{IA|LofxF4N3xQORtx_0U@fo(HpXNX9V18@qB-y0aYa5#bn7r` zKz^;yylpm+-jpm(`8wftFx;{|ffMxcsOs%3;{|Y#A)1x;EIhqEe^AkU>fB<84V3ec zTZ+c;S-|KwT&=f#>dj9_Bx>d4Zc%~0S(d*uzZw!Zn^4re9QI&dydt!lemTvvqhpk8 zmg)Db`P>OILCtT(H)%SPv5u*cvaS;ZC6I4_=PI6xP+U1j;%*ortd=^c3k=aXt{crf zppwUs_$wVm;ppBKod|g|@4f-cbom;TNL|{qfd?*50#J8av*syeYUtOZHX7>`l9L)v zGslh7;Zd$5=vo7-)Ux%?-Hn@-fkTZ8u?AI(jn`4OG8QlVx_7Yyp*vkk!6bCNFs(12 zl`znyN$AQ>0IQFG^9Ku6KLRo^{y=lfK?b@vZw?;Uc4|gJJ^-07uLCTxx8$HE*_ix> zxYBZgi_dT}F8!oieP4nj!)*Iq2rIK#fZyyJT^ZfDq>r{D_4`5Qvhzs&9p$HEDjb`^!6#Ie z&{^)v+CE&2tm1$W2r9csmLG?9&OePSuCs__r+!64Vd*n=G)`S1@$?lvK5_)7E;n{t zNc^2@zqTvduwoXe#3~Valy7Ailc#05>Dsx?PeKDfBD=C{__!nl8#La-kuo*PRq}Z=R{mmaC^ttV9lktFUo(3UV$`Yf~1M**jwRkAU<(XGSi$ zJF%6G^X<(Rc1(x9XU+%`M`T9m;&8VE ze4jmy$NVIjTWzTuCrDLeKk>uY#erZv-9sx;6I7+jt6{EikwDpV$!1XN7S(c0tDVfc z!`wzV%We}ixHpS+r|Gnr&+-K~H@-)=5oyAOhhw?Yu>Vr9g}NlXwUY^9!&~7x_IVE8 z(E^4TV#VX@Cd^}(P9m);`}`orbp|oK?4$#^^BO;G8e@-g=hxkfN!tiei0y#cvrotb z;hC3=X3#eAhWR&oU~EaO7Q^oGgSii5pE#)P5M#m7n=PZ;v$4Yq@&||=jvI6#l?>DK z2IA37^KXobLsYEd+na2#3F1h$5AR-=?pxWcr#DO7@bi7DVEzPlJIFEobmlzMB7Nt3 z+s&oaJMA>E%it>nT2E;N;=jTJ?rqO&M0;u)(JwmxjfwEx4?(KqLoJz3~RfB z*o7CfnrQ75xusCl?LNz#wIsyFAA0}<%A5X%)r(ly?x-_#z6eTD&fpdm0ZhNRX?*>B0P^R?R_Dr*AA@Y_X1nPt+Wtslo#Z`Oo z!}!ml4dIm?A7h#Jx2T?%eoRA^4QJY@udIHWLqc@KrXm|Xxo7E(Aj!>xa@h3|lDAwK zOl$z{6N7I%#I8DGu47^yZbJo-WOa7U`^%N5+gS=fxZYXvT%a?|?;SVU zVAr!UmM;)Yw!$QlSJk4H>z5z47n%a}!e4+ByVk=6tI&J=`m&E?+O9@n?+=>XgRgI-5eACXeM}s9Pj@%X{4z^5%ZFq}jY;?iekxXd=o}6uMif z6uwoZla>!;0GMD`FHRAypRDJHj4PwWS;IJ^xgW$t8?)P|aON#=yt-!I+=1_m+oQ|j zV~=YS<<3%~-~M%+|DAofjTOtl4g3$GG;9DpoH6_{<&W6V#H?}2ZSMB+>aAm`tz-RB zcO{tejDzK3hUZIcqn<{=>Dro77a}Oi^xIJs@t#so+7&G0ZB9!x*{M2C1g>-ub#Zlv z5xW%7d^&SZS~#wfw!-Ofpz9@Ye=I}x#+{R8A)k4o36!BWkD7QHSDG4Ip2jJluv+;a zB)mTqmrtBz2p1x247V@8+W+`1=`*QLy9Ia1nOpfHrn$miO!~LG8PsaYPm&}ulJ;V> ze<~1B0MkyTOxFfvl$=M3Q&Nz~Yv4u4Om4f0DJu%Sv29K^K6N&{dhGw!RLtga18Ix0 zCb8kwX!pdNYs#t5IY$eh_kQc4%VTjUHE+WlzU$N2h+;3 z6~_9?+tk6?O%}kd;W@*~m%?aohFxv5$3=Jd@+(7r2-u_8>+Qu7RWeQ=9~;c6p^f9u z*KpcoO|n-y)R+44w{%^8wJ65%=x!cz`1nWLiU1urri%Ncd?W@I<6sd;TJ@=>yo_Y{ zl^=hepNx~+L{*br(1))w%#ZK<4F50X1vVQ|pld#flKOwIs9^I772s%Yr8X1AMH!Lk z@Ff;W^J3fiPKoOmMzWGGR=5xfrZK6mMuD2P-STA|0n)K-c_2 zLZCW~IqI&kX!nl~m&B@v3KKc0z}mjedBu)%MTfqXmry0@dwF4DFiA1R-lih_++xjs zPMQY<|Ak1QOwE>w7F{FGj*1DP{u}Bs;TjG9v+v%O)Z;I+Pv<&yOqtY4Z|kaab6`_y z4*#)J*-h7pgiMD@(Np4k#u;glSAScmlUv13pmE=`Kb8cTfJ_|G>O~0g$jiTM)F2>4 zL)mo6mjlU91DNoV?+qRQ<;>g$n0@>670%0Ve0czOm+s|W(Zra)Y%Fc;YEErO>;_-#(!DU9R6{c9c?dG{UF^X`}5 zCN$FTxRyt#j*H{YNJpxkopuJ+v^Mxs5yc6DY2kfl7I~_M>EsvC$rqnSiG|zP4hp>n z^t^WO60}UHVP%5l#NpT)*VSt^euqTfBVUh4^8-Z0t}8 z(l~rhz5d|B9AUmkCQ4K=P42LtWN*r|fJW~fpBr&Jsx?n@e;aa}?a9};7o~lwx!qjp zIA7S)6@LwJT4-OhOXFrEz1rqrbek>3#xgfiQwE1wzY9q-Y*Hmc7P zXY&^i6gDxaqoUzD<|mSD8%$lgFoe)8Kc;HfEQt8xA__Gf6Y$Q=7V_=w>^tQ2{`@Rh%h50u}2lH>SPeI9W0$rJ3QK0qUiht5=**^WnXqB?*0?NKq_bsLym zh5z>_w_aGU@#L47pOA)Rt(P`fFB8Uph+E2z;eeI-aX3bBW-+ter+o`~BY1#xal2Q- zQyVOjn?IoWma%Wjw&Ny=eVx6+tO|w|4~Hs)$R|HNELLCW=d^u4jazL~Dd+RbSQ?Py zt0H2tTzWp?Bus;V90{8Q{nBVRQD0}}=EdD)!9+MErM(kBitQDWOEA;UWHS~5ND9C> zKJ8oMijU8QG_KhnSsa^+KsAJu@Dls;^wJ$-T`rqYlmboexjb)(zSITt2YPp)Bz>)% zOHQLN-MS+*e=I8&`+XOc?d~T3BdT_QsJ?{r)^q%6A*t7%XY@SEGWFj3r_s(;Hcp9% zs;&S_MR&SOCURn!_)I)bUj2fJ2fsLe)kl_PSf+{$ZZ&_Y;>_=x5+D)7W!k>p(W=9> zz;Pr|{rW!1A5|T~sH$Hn@?t)F4a{lvG6b>@NS?n4^&vNC;p!W0!D?*9`q|P%CP0PH zl)n0!8csLPCQqnwa`o>HSD6NFp0X zb6&m$_?B{}dr2Y}&#$M%4he1lx14yRA!#1jI~k>MOHEMq6`X6Kz?@-)@_vsl?eXI$ zn@$4#|EiZkk{YCwijQ0WVhq)KG;S2@f`{|$Xhw+2Ae9t;f7v3@|H2?ez3|H95lJmQ z{0UhjLfA&`;88w!h{jsX2H=Zr{cR@&U<`Q77)2)kj6gFyj?wr&UWT!emmOx*_8MQ+ zWlW$ajp2Q-?jMkUBN~tvd&^U8+Z5tZDVxmgpKq(OWtEulareO)QP+!+6ECe-I68}VQDbUrvb+`;DA@5D02{UQ)gVNMN;fB93iFc<$q{(0APEO9Y*Y*hgeZCZ^h z(6(*MoT5If)Gr0>u{~VWcO9cIX}MnxNZ*%f!F~yh`7Hfa$?>@x7@W|>;F2|c)~)R> zg^tY{GdS_COFIkPNcZ`eKlO7)qxDj%PCmQb+A2W9rqO9f@bC}{s=-YeBhJ4N={BIP=N zZa{fP@4}_sGz;)h8rl-!7EHNy`0_#%e(Ie9T8x<{D69~0C}FF6ssA#8Z)tBp`Zc5(oCy3z`(^zH~t=_FV;uzc_h6-CMx;xrx4cfXBpnuosi)e|I$b!V3KY*)P3GUYWLuzQ^{bqxKkS(-is`brL6E~ex6Q-FsTa9ZBNy9_scpJSLk z&E=M{+2LW<_FNTrm!EqvKUVYiUTXU*iwo28XoC-$jEO*|9E_M1^qtuYUN9TI673Gb zUo_u*TV=x^^RKQypK)-Ju9_q}>dqKv>0+wRwWp+OX)}BY0KqtCz)XBGv|j1H^dtis zeRD}493>6R`ZPFhvz0$KgT6tvn zBX

    ch&Dmn?S&c5(Eed;MFUV?U#mM7$f_OVrzdy!#jE2i1W=uIOwf3lnXorDOiqu zg;nhoe|M8$I)@b#0yq7>MS*hn9+mI>ZuhNc$+!Ep1X%F!E>pB$S9~V|%p|B)-0K(e zwj;VU5fcb@{Q?-7P)CVTM2P|yI!Qg~xfh0~^1gt%;Jb|HVldp6bj^Is2w2&{sR9;Y z*em$=?qQ783yKX1a4;;sGFXfZR~oNbM$ejg;LFmY`(@MBaiHmv@4cd{n5Ov!Ec`<> zF5xeJ5aM!w#;ftELV;pmwvM*w_Tr=@$L53^4_R23VTbf<$=MNLj;=8!wzAfJUw=t9z%vh!j;|Szm zOorn3SH;|*Yi1*5a8GwE&h))sV(e2z{XJ`gxGeW)k6U+F3pitB?;LZ*H4f5CveQuzWWat`q z)xeDJzGCsheb6|&4&>QozxOcxB4kA@v@reV{~|D26nc++he#hIKq%lGr++tpClx0` zP?7+Uz~{%+vhLix0|Ci5fLQ*Ikf#7b&bzXyubBnt)@aTLU3GVu>yTD3=m*c;U@Jsng8Jb~#>UXxIEi<)Usz;$dfUy2d zFo*bmL;??;4kY=%U41z054o6&qFC_IXWD;>L2kMpyx|ui_!29ladD$y-2Zl?%fT^9 zc(wYG`mcMEkJ2>0S1;dj*9bEEHb&kXg>ggAf|kfJVjCLR^mdYiw5#awHO7UrH8KKD zvxM!WF8gz{Qy0bq1vp&5gsW0maTY1q_OCZ^pZowC9;+m4N|pbydtDe!*gO23gZTv$ z#xX7tF5K2L5(SLuqF}^7MDBsCt?mHfq~tmGqC+zWM&BRT=j{^F-MEnI`=oE44)Jkd z2X?>Yxxm6VNaL_<2EI`hD+UgRFn)a)?CGtxm^ytjW_%}GL)eK8J9_O&DMlt05~A*i zCmY*nX6GM0=AxzEVCdnJZj06J3xYY*=5uS@)nF84Ojd6f?+QUcUOqb$=690IkB}g} zT7?0f98WsufM8aRP;UeKQdip>b^#;akN3iavuYsX<=1<-jxQgA9E86CR={(V=dM-) z_qIrJ76OBg?`#$~Uw?V)arUh{`3hoB6Yq_;N0S0BZ2I*DW@qyN%-d33kfXzG?7S-& z2dZK=Y(>ki2!!7f7~xbJTYT}qpz}0}PZg23zf)U{--*Lzq!dZs0?s#S^-`eT!#{_%Mdw1bLqHWeoivt=G()(&LymHMC6*ysrPWp-lAN**8l zPn-tWBqPq!Up(wf`ScjpaVD1i<+S3TT#xO1ML|x--PSGkPbGNia%qw4-T6IjoLhDKg1PZeZ@6G7C zoeqSvQFn;m0L(}>52f|i@T?IkR-&jB#xMU1sf9)o;l+Vp=SJAxZ*qmyivUi4&MP#9 z)GCafA@f^0^Lb)SQ^_Lpz1&WBg&6 z@p04h=L3JVAp^sM;Jp23gLoTPZg+6JDVT|SSX8svjS;o}5;|iQ7#_WZDKgfdor-m& zqrc2X>QdL+E&{~K>}_^!1^GdBfO$2U58*Y7$A2|shvh$5WrAtGwYt>ed{`8zJx)Lf zkVAGP1QP2Bx9zsZzs<&<3Per2e1d-)rav&CDkHnYm3>o?5M%Pc9=&*(AIJvV80qZ) z!mjayOZ*+ixZ*k9&UblFDB$6*ZoHx;vP$Ph72`(9m<;U$jKiFY*6HSGr^x>R zTuo%}9RyOxe=}!Cz09(v1LWuDT`|dWKw(Np*8dx1x%0kTfJ*9T@&Co#TL(nBc73C? zgoKpRHG{;^ptPWZ14B8~(A}T{Du}cQlETnPDj_K$Qi>qmh=dq`q>=&#D6+rnp24j? zd%w?lzjOXMe~L4AT(Q>r#kwY3V^jisPNMNV$9hxkt|VRQ7i1kCFCRS?$)65bqTc)eWQpJ^+a~iyfS1U(afu9W6P-;5V*#qv zf6rN+DmA8H#oM7}ZWcvB6-1x|*tzBZ+_}`w7ohn_DCtqK$%KYC8f3PAiTmW-p{K|) zw9qm($8Vq1=q<)VaI##Zk`wIoTN+W3!04-uy=#*Hik33wn)vIXhCvXRzvtT@lkJFn zfxm4ogwUC$`G`B&3Dd#exDw}=R|f5jrxp|c0#a04tP@DM^@E{GSq9vtd%5-!cdEI- zdE{>~0T-PIgseZF+cWw;_UUVvQ@O$8!>oX9R!aFd{M_nK#6MI$cqoYh;@#4|iX|FY zHrWEa_%G>MtM1|@Ufu11mB-=aF?)pL{nCJ8=RIKMoo znqT=6Dlr#-DgCf<`}Tt*1`s~YX-EETG4YXJHqC$apz!G_22j3uO)1wtv?2Od7ay*0xV!Kx>o9neTwU<;yKX{% zFU_Aje?FfKM0R)@24yLTl$dFSEtpS1!zpI6dg#|^ey5b}=dH?aRtcoM#t$}dJ7c_t z&;yHutoLW7^@N1oJpp4TmTP0~4sCYmv%Q+*O8-j7gjlsmfU#jS%JNNliry?Ev;)z^ z<6quL`gSni4+)j)!LHG(Y|zrnC4dr<*a|pleM`&5i@f(*{{0(LBI$kq0i5dfS~L*o zwTU{=^!H42K|fs0S!I8r{631TDEf!!?a{NhoW{JiWbuLa6BKB-6bg*<&030~ZKq`N)Ddlg*ateH++IjV%IP+?=6TdwDr{+j}@%dIUeI z)2DC5gIynL1QO0@cN6!KOIsrOB4UKqJM6?D5ReN&7=C{Q=LNbul?S^a+@@B2t3!I*X8_<=jBj1)g#(BnRYmsGV z+EX4V5iski^8tJhZJ!6vR-}#b+T}J^({@9WiY;X~Yyq(z)d+jJ;Fx+YidXgpw&7si z{!JpQwls*~Cri0}%tb}6%hdj+d9`}pMRQS?s9z{AIG7~5{gpwn4QaIrgq+kp-T_5g z?{0hxe)g$f~aJu0tegi4Mg4kmXMRDl>?*guig|&HZCy^ zgRrBn)qh;1XYEBF?ndzBWgMk44;&SL-e+@-I68(_$?jkPl8U-Imq3ZY`iG7-Ly+5S zhPL!XKFa5>LOL3kc@$&@O#?y?U^9_?cM30! z#JkrIHju}ic2ixnz6n?`<2C5FK`;EW3LsGXBK40|RnAjP0ZKb2H;mwt)d?qvGKf!< z{g33fqE5;D;jvXFZqfawmO=v+FfwmZcuK#+^!tsDinOa#F42OvlamyOq`Aw|K?HM6 zPO52z2v`}2fW6n#R5qrNVN}NM%pYw~u&Tp;qFY#IRX*DUDuVv8fu5o8@$XFAEVTn}hOKNvkWSOi8=Vm{_j-NW9R6)rvqZMTh7OrzWdY7wI z4kvmACL49b2j03{OV1${ABFi=iu33^lE9}RdvF&+G&`6>wbJD3Q+nRCIBF%TJPOr0 z&fK}fLB{QN!`^(9M@N*O@qo67f2aYV>~rX4wT(3Mqk>A0(^iC`F1&oVsGFM;bL4D$ zQk5rCcwgP;!#UtEG7qs%xMqGtuyT(wjY>-ah(OZ4i@_SOxGp;Nq=n{Ci_t9yrDf9R zm{L4PVw7YMp?3GAQBu;CE1ukFHIqG6Xu_CKh$zNp@H+mW@d-;8GS>5N2p=9l=l>CBDs=vZSnhy(uTP?{a3`}2%f85oO zve%cBcj3H?e;mkrd8{LX1|r%-<4K;K=P2JlL?Rqv@rgP}hyh3=iZXcM$d-vny{uXE z3ps5{5Iy6~54kzv+{E5lp2MqLR`*;<>grL=Hnmw(HZIY8yJ%MkUwb zSFZxDZ^t$l61Z`5m#*>o?deBvnflBH^_w?T^1lh4KtM5F`!_oRzTVUl<6fF|b2)g( zlFwrgJpqBO`&(lEPReeVfQjMiZrF;GhCmmfo31<@4=Vx@L1OIJ%d9hA%2%_M(BWRH zZh8U9GljvtV{a|=vyxHr$p&ZSZ+3_aa=XL~<{xY)Te#;P4o@=&K857TP$eu#|^E^&6*VOLG)_H!@ht z1g64}YtQn66PjS?_W%CLs^D$#NxNKo>O`)epWF&ZSmMRPl3!86p5c;FG)V>Ff?Jy6 z>4Tx}VXO89mJy8r`h3g}{*CHKe`yVPBxrpGy5^%sB-3AI+MMQq2)^>-cT$cNO%iQi z($&suOgTzUo4|YPFgaKzPQNXaHr}jsz840?hDY?0SwR}U4F3N&D^8^M)dU-ONm3Cn zha5Dv+z|0|#XwxHc2Csgx`ss1tn_V|eOuliNMtsivI$9(B9#1QhnU8&nDFi-V}@UN z{Uyi{rZ0Yjidf;S4rk=?&N*Kr_6^R19S_)L^8D3Ea6EiHsk2Id1zqv_(~DF?5IGBF zYvFn9;)N3g(Qnx2YSg7T5n8trJ^Jz0FUy_wj5|ptF#VPWjY%aqx{8swvt*RuIhmFT zQ)*1P2-i{qjo|Ej+{1aW7LMd^o9R>tX&P zdnA;{*is=o7`cAb)AQs%kRb(z+?e?hQC+G;qQ2tb-DeMPBwy0FXTIHj7xk*lp6>YZ zB6*tUOdL){N{~NAHHW`ykvn;V_l(a#h~cUk5bK4{LM9+wv>&qgqX?6cE6z}pB+bk; z=n{c8Rxz4m;Y+5iQEv_BJmM*;)9e&mLu(4`ZueA;HwPp}Wd2sld#3XRemyd>*MN*Pe(nK?m7prOJ~t;rc0X0Ef>O{;WXU=v zSm#!}`rly1i3$kQr;87)U}aiX(e36?DoThlvu(j7vvR)*76hQ%`9KnK?mb+I?1u_I zdO^2H8)8G(vd-XQ!cHksjX*PztUk zVr|4#q-Ev_p3e%dAZC1{!?3s^W}4>ydznLilINhfJ|N?_2()bz`qX<(o#$KlW{|hU zvkn+`P_mC>QSvv@xUgPc6bvd}1KfKbxEOTues|H0>$On)%Ts|kPKb}=EBrGLnJEnM zGkUc~cCI8z|9*lC7}{Xm&_1lC2LU&%1ivPlOfo$Udj&^-bELicMlKtncG?g(Ill(( z)qx0+2*d^Pg3aC#$Lj8KRLM)lL=tbp;|=bCM_B1{A!K2su@Hcc0m6Ido6j0_P{j;o z1p3@vgqJY3`a-&0Jh|+lv-SMc`n$>a} zLW=+T`bMPlnEy7w8I19c33|!6h3wb5wF!Aoh?}dh_b91ufP5Y4x})S2_gwm8=;OuAcPX}bv>-e zCEO+b9aei-cQ8*LE}mz0zK7;b77*Wx$1`%kMDV4=cE%yX#@aqhw?O{IYPHQzW`eCn z6H!f#*2sxA5JgUtLo7#sg*Dd8=qfPSov0O$<5RDhOIiq1_4LCga{V;S71F zfp48pv{W@MeSxb`7Z7f2qAYAyilR}K;(4;sIO^uswbX$y($s#odm4mlLSmQk+Pl_Q zgY$-Xx)iF&7p*USdA&DChK&2$6>#u`aO0z;_0fl)R5j+$PU&?1U6YejLh*FJx*{Hx z(PTq+TXmdfZqw0d_b6o^m*9*6f#`>R12BI?X6Ff?Zhr1H2dO4Nod4MD=A&@$8!#dW+h`9w>-59 z-r~nq+ugl}LPhcC&I(QBAFu?#Ni5F3f|JLa<8d-_ypw88hlDoD-Gg7uEbXZ?E=$G z4akn%%rENlz%E>sH+1Ph@uw6!Wn>j?PJzyz((wXZYEP(A1StOTV#)m*?q04ST{xEG zT?e9a;{?%RF({p0%C~OZ=qK~NiBQaHNdOPsOJyA04R`B>9auPSHS}ZJ5MDhRaO%}l z=8KxUCb0Cs7ezNP#s89|EltZ>nH&1^Gc7E%%wB0S8Lu3U0s#=`8_|n(;Y>v>W-#*M z$2R`5TvaEiAh1FwDo@pCCT~4>nkM-7nEZi}9*1H0M7-oQM>8WJ>V^|qHN>7(dMVo9ph_k=8rT#TLej1{k^;b*C99pLsr4ls2dD0 zi5M8nLI~YKPfH#J3Zz*_1aO$dxw-F&1NKi=bNvXeH0^^`Aza=r}ub z!0i6TZV*%hg=59TTFw z=sz6WnPX=`*#6t}g}p7aA}Zrv6IDw`$>! zT+k{BUi;ejaqmB=WOz@}1~N0aL&Z8?ez~R9$%}#IB-I$7D@+iU@v0sCz`FoE>=1DV z@staox3hyBU;M!wY&{WJttc=_5Gn-N0q?&KT>o`zI>1Ny%8mGit4D#4m;^)sffbk( zJWe?U{MzB{gg4Z@DqE7s+5xF=N~?ft5Ga3?Qlp7&JuJ06KV_E^7Nq` z5neqsp0oP+ZK>zQU-pJ~sV(X|PmB|9GI6BAd4?dpD++dR=Sp@+201ZE^7XA~<4S%u-3a8(~Z__4lFY>pCTd2N0nZgVnI zj2CiWACRLT9%49{<>ZX2xK3X(MRTa|j)@FDt0@^h9ofhL%~9iSCuHBA8yi=YIMM9O zK2*E;jHEB-(9ah>U3MWllUaB@#9xu8cyCrC3)mBZ-W~^Ns|!G& zcZ{MQ}2yor`Q_5OAxcCaV(fbGQFU%?0_Uv-&3=WO+-gjRcorju9 z$mz9jk^=R0#{knuES(q3TdNn6K;imSf@oxPTg(e?F1cB|BMuCJ5k#I|=S;m0Xf9iw z(1oh*;z}%;0H@CB65jG(|8X9se+loLm5vP7 ziOwVuz8Gw4UrT~Oci-Sm1~wXqizoSp+ggR7Qu!$JUBdO&OWDI)NbIoiF9GeG?afra z#Ji(3=WNGB?{vAS1Q$ZkP-x@67^>^sy2sRop2i)A=ztIz+;C(&u6NrQ zmDsUt7DKHh)!CjhGHKLu1a4_+p>GKgFY+gX!Js`^#vU(4H}K>84+6jaw#6I7#;v2- zgBMmq6wAem_bB&qrq6X~sF1s6jcGk)2A+i1^!^Y{EHS{YCT3LiX3$y;J?J)$bM%TA zKtokB-ZCg#gC2xK;OoE@Y=3GT8NGUQp)62jK)2*7X%OTYAo9VjwmlJxetV;m`d~$Y z)P5O3^@H_Y%;5G|?ORpU&2^^B*ySq&rjp=oNeXdKHOBgq#mT6*0rp$qTW!r~=gqN0mUjz9caO9Syq?i(K zf4Fp6g9x^#56QHUbpi?i#b`c-v&pQ2x!&JE7A*^htkWMiBtz9gIdFXzWiAoaKpt(J zL_kRL-lP98eh^Xt$DzL#)Wp$E!p;}%UGaA@5h4g)*Ff0n&ti=clNoE@BE;;u#ck5k zGhy`@WJw3Sof)@lw~iY8M&Z0bR6{xq*fv57dvp3I{Q}osEnrWQ{|upfp+X4}da7I| zD1t$DIzz#yM*q?$FiSuhJ#T#z2jmWVoc4VRjn5`8!zX6!!Frd6SUcFj)dYI+^M#N# zij|HL3L|GrF4`U6?bn14*R~yGR08jl`6jU8rOqgd1D+9=D50v_==G4v8xSrq)B%BnjMFjBp#0Wr6Z= z%V6sK&xlewi`^uv{PM{q^F>~;lt=>+s4~iSgJ-bdL9OTC`FDWdbtWbf#lU1xr3LOYa{D*q2;-n>xcU227;rs&ZkX1aP*R1Yf^yh&QuciYS@!nh8 z9dD=<3K}%l%xAbc(6Pp+eiZ28d$^#FVP;vMwook+&Z3W3H-LN;VIGbeR zUHDKH2dUG!G}S%DhL?MMrJU#d_0z>`&)l&+G87CD@Hk9`Gdk>9qV+YQ4qz;HQp3yL zu1`(N@jKBpFg2{W<5Wnhnr#MoXGCokAZsC@=%yI|f|qB}w=AERBLaFXNbYbJ84^5L zC;HkD{U{%~^I{%bIJVPtSk%RMg)^pWxjE1u7h|DjJ7oTBA&0n80okn+)=_}(%3zf| z+Iuk}O_iYf4#PdNYC9b5|SbzFKEMs4m{MQ2V4xA7&=|Rg7*Dn=0TKVOXNxvr4vj-p_ zvns?8wy}Bzs}Xq~OA)D^fMh*e04#q#gKO=NtyfGxjkYY(ERN9AZWk`&8*Z-NM1FRC zq?ithV}T{iZ_qFxgv<=qz8anUetHG6oBYq$la=bfCVJG&M12LkI)BI&+F7?4VI4@Z%c? zfCwQk@--5K&?%gXS&Sxr#hrauv%|Ijq$S`LNr7yw9edMf(tw$w{U+v7$tJW#AlMMQ zs&cSUOq@Y@x-aA24a9LMmW)>lXM!eFs9OxVwuA`yN9%1Vv9l?l1vxM>1Bbex%?30l znflFVXaBfht!sDB!39f%GeJ`YLQ&>Lozi@a2XWrna1`cq2$NRa>6s)czL$Ik-uNP-;5XNfzZ(WBV``adf_Ar zGz(ac*>;@CX+Z_(I!XQD__?CL6(IYQ5Jd~-X7Dty)j=v%AacE0&N5E=4N2du_hDQ+ z@L4Dij&?5^7pPOd&ji#3OKBb?@oie1C{-hp=&UB~mxcm2G~L~gAeaH>CG%zqNSLlo zJWG#|ix!>ju1&(3b)9MWSDsD_v@Th)DgxYtVVe(2D{s$$t}uQUfP)<0ZfEN8)RZ(4 z-`@Q4(wS#)x3c3gClNDYLRZY8U;-IPK~!6QZ!;w5SfIF~3RF^jgCBt>f}ZyUQsTGX zz0ts0Q-wLOu2Nw?ixn=2o?yrB(C6a z@ad`y5t7lWYp#K84JMy7=eAMAJ`c zFGn(}bsq>H+cq7{6rtOM@a5Vl;6LR}_PK~73+cA^9k5<0S0G+21!E=~bK_cmp^9Q@ zN@7=f?HyVwpjzFb6;P*`1APEL2}Zj2Pz*1}dVK-jF#8KZRRdRYM55?)#XwS_mbSM| z$eko8E;j=nPR3$eeLTMIe+qQ-!3^M;CgZKD1+ZyE^_0#!5~U;IcJh$Xmbsht$wPW~ z?{Gj?G^6R?VqC2zXi24Rg1xEya%0`JG{-u@P0hp}oFITXNt#(PakAVdwM>I>r7Uat z*1c)@L7nTare(9Dk_cbZ+zUsb9z$k23x=4>H)c!o5YA)9Jb^ zOxUC$=bRTF{Nozsp~o!%E)ntCoi1M<=Q;6iK8@249@?)9ov^P{3!M?dYA&M{^Fh;q zL^K@TQHVD!J(xK*I-bPJopN+sc1F?>p+s| zFkCrkaVR%BbM+~^%i~4vv9%jy7Hlz@oT3Vc9?XWi-~l<%oD2>$r$VrirYL3dU+}8> z)1w<6Fu^%)FOXzJ87HXGv+D{qSab7OK1nwzn`>Tnlq}R6DiDw(DPJ0EKoW-vA(hwVUeN#HRIq!?SRx#HDDWWYIAi>cK z>Pq>{ivt2OW(PE87~Qk$FMCT+);v^8R;ZSHw*j_4#$&K%aHKTFebc6%!YCm@HHHP~ z+oH9XpkfcV*5Z*OtMlt5js=azwoVIJezmW`CQZ$NV5RqG$bF-2o47pg^lp;G%_cB= z#!Bl*-%Fc#D}PKrx%4WU$_Ywexe$FGIr>az{lGI}Bz z#FAz+K%4ki%iNSz!s_`1Ts;^H!5iLMp@4O(B>+DXb5en|qUv1QbH=X@`Y;CHMB1!iZ zLZI*YL%QEOZ>JLg->-LI-2~AwZdtd}A$q%2*jv>#VJ3NZvVb>P>>}oDe)zApC^h10 zKM{6FDwHpKe_U0O`NNyjknP6&blIk5Ls))U{f$Ha!_)OuDTo61XHtas)SY4)~#y0(2hxW6&H$W}mQ2CLAK;t1p*x;i>~vE9v2G)GL4W zcZa1Eh$J4@*qG%mQ@Kn?b4T}|#PA@VR&q1#TRAAdUG0UUe=f9ZB9pGHRuTe2hp87g zxkoGIPhdg8cxzijZj3YiM0TpTK1=W;_vNDRU0Knex)OyfPtcA86KF%<#o-sEqavSTwsK|}DjayAN7EU#3$71Kp@f9OFS$;dKV2nmI-CFxQqEzA; zH(`{nwzB1wvf09Fbyu1PWj4iVPEzM(8wq^MRLr`O3Gmme=otKgAi-`r&8yz4LGV6-w2lF*>Av$%4KMUi9EM z0#w-Wd@<-2??0k^OuJ7EeYTxd~vhkeoXFN_N^{{A{IQZ5TMnD1c)O z%$qZac$8lXP?vuHHa9d9Txo#AxawEA!9FOcxQhy9%@o~hmp&3n>t^Rz+9Qb^~PV~Sg6efe=w+*D9kCIM<5ma#c=)y%$>S}re`3Z>rG z8?q?X%kGv((?$iuZjZQw*zj^ zS7ds5jRFTY!O8-TBv*Sooc2a)!jO7c%=XpAr^+dEhHLJ8lbdyyg%D=`9xBAoh%(ws z5|#xnpsAjoAFsqx#hn7K*rwC@>L4Ww-nR|I4d62KCDVJW zokHV2n0T^>ipi|}1|H0i7*v{EVkmxa9tt1Z$i)N$>MV~VD}xz?LJ|^0~J6KEcS8V43=Pd{|*b=J#WKJ#+a-cga=HpDb8samJ(s$ z^PJ&>e74_bYq&AnRV4AVEnH4y9lvrS+T_>CL3XYa9tl-1NM)@j*ywD2S(SFsmX`&)fmUvuWIau+tF;dfxmP*3sZb;XJg(v zZGV29ysfWcFJ3$^pAC+?*vsD{drwzhfA5ps74u2&D6+5)Tm^#Tf*cFvQ;y^Sdh9S&A#+pqHQUEA z!45_4bhJmWx2gYtxRTlOX_^W#5ro?TM+)!&2z3>jfU_;R zxMmyukUDFUJ>~&%-7N>p$PkO;4Y#_4=LFSqWo@2$CSuxhB?n;S=Gum0TT!YWk zbS|4Iv(ho+u3|79h}ud|hK^~%aaM1vnljY*kFLsovX*;NeT)7veUYL{hwx!?V2}$p zu)4>7W31E?@Rf&vyO^^Z=P>Y!s|CxvP>bGYd=McybvhjNqc^5pQvB?3=B+i&jsS<3 z2Cp3ER596H0@(`gZ(!p{bU>_E+E##5ENqMlI;Dgt00bbY*TNEr0yn)**aJ}(K`+XD z$L^3(=3;wwDd~fDn~$2&5v`{mXl*&kucBQ0C7m&IAt}QGU5Q&0xNAUq3v>;23vg&# z>aslIo|%O18GdG$&WV79z185zo3*qX zqund~Jjqs%jzQo+B@sLqXalc0z71Lt?X}obj&R9$QL#xrLcTsNFP5E83QE4n(uF&{ zch8e?$DJ2t6hC6q&qM7d#C`ib86xz&j#{riBsh{oQ5|@=u9-5*K``YlHA}WJ^;L#9 z1J@>PO=HHsx^fIPFRHt!kld3l<6UsMAzelh!pvG=GvJX#Chc)P${4C|etVo;bIFPP zV;`K6HOSQ&YuAnsPeLh-rnMa+&fBt78F#99vpK|!p<)Spq|01FhLt$%?GVQt&MkK9 zOAL3TL^7e{$3h^r30S#r{$QbpR1$es$(=p}W)rt=!aJJgLP5(+s#3jSqfoS#bKpt= z+%EI|>k8@C15Qa4!1IMDJ71w*e@8{V!?zeptIW!aTz)bZ*K+^>Sp>seuSn}B!j zZj5Bt7Q=@-8f_Wu_uB**%67ATw1dAzO$+DzWAcSg?oM93^af zv!*ROU`omQtUixbGug79 zinlo$`6FZ3PMIoUy{1D@&ImicGC6Tmp?7{(HnUCOD7H6MLiTi92E~2nB(*ZRm}+wA zdgiwbP$vEe34W&VvA3C!hh6e9z0=d!=Ad}#e5L1<44=&NQ;qpC9V@!FNd(ms0t`t# zu_I@MOxkA7u#WqyG=MC^f3lZ#c*g6p7DQs=umo67=bSo=AeN~2jf!F%zsLYOuCc8>_67Qslgbsin7OdoDvO zlLWsq;cqbtNvQE8joI;dJA|aUciwqcqw4Tko|x)mLpR=$YPJsu*yT3FN_O^6obU(( zXD{eI&RXrvxTG*iov$fk039qxo&;U%=9PzGDdyE*e5Sg?LjVEK4^DGDlhlt@9=lbHqnt^)z z9V)Bu3K#t)KF+uA+Qfus_VTuoD#UoHY}20TO%qHij+B}bI20c>G47_-2IQrCpRBcQ zlQ?rN7v3WwZTt6ee|4#6=i+t6xby?(n)JMH(JirCo&y4hq=Tl93T&(!DkTBNGBu1O!a6 z)dC&Jd+h2Z_1K%ZD3D~6L=_o9a;!kACan{OvrnV(bJ(#zbc4Fd{v|V0(7mQleE35! zMFiv7-oO&VEvgH3H(5GNt2>^fPGnz)&Q4RU0t}t&{1Zq(_`f>taw;4ZYVeZB?@MHM z=2|L1Q-N~l+ZQt|bPy7B0+4$ry!E+D(BQ+f(g*Gv=zJY`oyIh- zMG9&poDO75nFbmtIB_*Y4{un87!|iyczf}QXs|N6?~AZ^!;fk*(&MG?T$^7fWZ(|k zEH<^$W&@|iweL&pv*hLhQNwwYk>c1NI1s>^*PD!v1-5VEHX&`4U{zB2a@;|`~ATZWd}BI6g_x? zEggVNmLLo|homYSbd9{o5iH%PR80iJQ(HzW?wA(n+$pF|J=E~e16`on3J|#`*8Cdn zt7}IOj+8BHB+{8!x$`JnbkZ0;e=kV32I8xaCh;p!BR_MPSQ++`n0pC^iwwQ|If>y+ zwk_Z{MJu1db86@N>?mL6Gx9nFsi&An!L6n$6+Dj#3Qr!KgJ*-`A?s%qClxl|GC?&f z76xl;@}R#s+4mG+wic+H7$Op?vHyR#Y%6Qy{Aukd3h$%OQ~-^N6RGm?C+S_Cpv9lB zxgq#;5u`bzhst?`P|Gr!e)!tP=tu@Y+$G7cS)3@}n?r{`B#q!t^R=c1TcX0|xta<7 zknc=zd~?=mL2dlM#`Opr@{8U}DH-nnRk!USR}Dj5cyc`8uz1U=HWv|z^Pw6x3ZhRu zhd&jsWxf;4wyha>qll2=tJ$&%xp7QBR^8jlAk}ADp{~Xw;)A=avvptBHSuPWK`pw~ z)F4Oyzqlf6JRD)oj3lL%VP=jM#|RmeTo3VS#iw)2nlB1E_dH6MyG%nw&8sJ);G{mw zKa7}gdfi{&9LXgvys<4`=zVu3(|h7w*>EVF>mtb$yl9UrErNvC+^V=*YwaQkFX@snng0WKxlUac33-PO7g z6#Pd;7Q}+D&i0$nv$tPL%xn2j^Cq3`Qn;*?O=(uaoi|tFFRGs*)q@YloIK%q;)A&M zHus9GleYLIV$w{`U`+EVOV~)kh2+3f4pO&blh;flM!wh!T&h3$d5W!Hq(N6UsQStN zT~`O4<`PS3-dn;;3{HkdWA7{5_9c%kHl%;J(}ccZFF=r9;<{PVP17Aam?_(R^4<}m z``NOkc6VgJPb3a1a};jqI()gTY%KL6=lv7qf@c*z{<2l{iC{u-SF#@ ze0(y^%qyodh_UN?h2t2t)S%XjN7x=c0?pZe1ODrr%KiexDcQ18^yZYI;5QNb3;6Cw z+%6-37?x{Wkwz-4#45s-BrR$TZz3O-YRXbrNr)IJTPC01PWawnNb@!Aea%+(6I1Pr z*?r}syl8>~wnIIwMJ_#m6h$X-g)`&r93WCvz4)ErUBCad&tTbi$u*aHa2slf+Q(iQ7|4R)+89hU{nx z1do-+9&u6+Rqo~ogT|F~Ar31RDaF7p-{(GJBR_au`%0K%z(!(ea+?zWH^h2-dW=-! z*QfT6kAx0j;YVdHGY(ac7!OwXu)A;6Wtwe?zusG;G0O=3*s-14FP&w=^mQWc3@|-Gk}H{wMr7J&R0e+1lH_$vR~ozv{>^T0Q^d+2jc+RGpGwPwxm;p4sH$Q2W5aQWo|zx=-P9ELwya^a>VZppH{9Y;wFV814(oL zqx52TF;C;H~LsC)T;Zwic*StIULj?4Vw!7J?i7mLVh^4l?!HRwDacn#I11cp zCO@ANf$77`?3yFw_7dqWT;IAcwZJ~=Q1pxJ>R5RXZbeb-I3ztNifYw(B7rzr!2TSa zxfFh6(kV@2MuY(jmB^_T_T`)OA5lWn+9gEf+n4Vw6ecB_L}`ekCT+lnVxbSko?2&L zgVTS!BQULP+2QH`q28)D9T9;1m(R3l=SQ%0q7{x09wyQ8v+L-SBEHD;rS8tslnsB# zR~_)~U-z568<%ujE()wM!*Z1Fl@K(Bk*4IA5Qx6F-r!KAc0rHPzYhj}@BWZdL>8ENFnRR?V7SDh+}aPO zmMa;|9M|WDrOJap9EBExnrEypZmnp{+=EunJ>{?LR}cPh7hLhNK*bSVu-3qG@izd^ z7C5@p+-0NiSM=k!@awPt8shyjwtV@=hvc@oUE?>~bNYTYky*E=o{KXJoZMY4HM9%z zTlna^|3zs?H(A%BN}G%+xe3BxCXK(5_;ga} z){hh}-!BUZ-}C=EjA$|^c=LSKY$i8C6ESu=lZE0-Fo+sYmtVj4IWJc?Ul6(Wxz0cO z$@UAQ?SxXUjk3cL@{B6e&sRO(hWPf}VkCcLEOx^N)3{bRUtQM@F6(bEp5DG>iQTum zB=A11p2xHDGkg({Oj`r0gsvD@;sGhMIT0*YP>Gm8h0>pW*SQ11PtMoem9uN2Yy`*CaPoE^UCEV5w zu~E=)m2C5jV2zEZHFG|O1V6BDNczTJ*T|6Ow2Ya9IzNi;Q!}h0&HPG`!DkXn6giO* zN+2OMtwkp9a=rftvk`qi@h{d&L9=i^bc=RymX8(-%VUasD@m_HSvMG6e7Qn|>o^ht z4-qyr#Tq8t1{rH^GLd^%jkYl(#!#8l^yKrR$prJGrjy=m2kuNfcpA8Tn@dwJ z7-lKSOZw*Q6If07;VF_4F%~)fOc{Fe?(wWMGH$RGY)i6`NKc7o)l=bu9m=o<%(4wt z$})WLA_a+;@dC5&#j`!Bac3g=e|$wvV}IC98GgvQQQtN%axJxl`*SeKmyxj;EfV=b z_NCs+kb>9QWhI%j8=8X6M19l>=~c%F-pveQr^;M=M4P?uNmY0r*2efvnAx5Z^Ni>@ z@B6>K#KxZ5%Z`tq3g+}EU(lv{qd3(s3w#_>MUVxjT{M-uy4|mE#-Dl4d%L29Mbsh~iB;gSA;wYc&L!itORu$5QQs_m$$CFP9D6-&_mf%E25akeH5n zRuz$W&FR*Vt^b87Lm8CCH8vrKlgW=!`6~Cnai+j!I73S;9ut(^>L4JGP#v@ivnY#{ zo=$r9scqp67KCKVJ#TViy6<<4?By|<1h&mjzRGuUgar-l__fo`P@8V(IcW6iT?s5M zBT;_N#&LavEP~mJ-Y0GK>4(#ihRtUlbeElv6tQ9PpSt*AiHVH+i_c)hSd=jnc)JO! zuKF7vH(0E0A0v9Ky24R{&|oPU6iZHSIqrAQZsYCD@GNSUCh^Dfg052TTE;@`<3#I+ zhh@bkr~HRRCczn>a}nD^$CXaK+1f7d>u5cTlK-e3(2?6K8cB*lD>#_a?jf)vI5)Vty3X4#DOvxs)(&VF)c0c}s)#fM(3#y_YbBAI!Y6x8RwXoB= zk!DD)Pte3IT4nd5k>Y{zmM;$hL7bxqV*o)W9*ubWZk@S4yyFWyx5gM z(*R}3G%ee|P$NTE{xi1jC-?8pu%uKdw%2{)%=jyJ#$u>8QksiJi~n6E?Cq}Ju!QHC zS?d)P6mYl|eA3unx7})f{RYd^$d>wJ{v!J)#kF_c=499=3#@#1vk;4lRYT^=T02TT zKX~Jvxqsg+Gru9Fj)n`+6Kmo=xrRayelM{n2w3o{sACXgNg!&DP;RbLI=tL8Ai{FD z=|W`7=N3YYa=YJk4OT*fU4z3V0uB69^p))e$lwJozs4HVd3}k=VKV~@tf8Sok41Vy z4?W2fu}EQlERRh>O?8^j1-l7XLNmxqWy*V+5DnQP}L=_#~XyDBuzqdzrsB`=3PHV1mE7d zIJ>ct%yN|YOv}kuEQN^ag%%L%p6-8JDcbkV|HjMxIUPpFmmVxlGN|xH$Tyk1`PS2* zclvq}Ro&p=ds$ScxZ&qI&q zOUfSSTW*A^uo52aUY7r8_gBTX)l>hrK( z>!}y~>*CiErwW9SO57n&F3a#Sgv3d8HAuQ!e|U7fRH$gD2_5yI#j8!n5yZxw;pyb| z^t{Mz>n-}2Y{bVbmBqf)&Ol}mTyC#gl!T5F)4xO+OGzGiFYBEt+(wpi;d*t6R}?O3 zAWp8@ciIw!)dW>wJ(VAR$G&6%zgsC$Vv}A6bG)FT<|*^>VPppZ-S)tdxB%zHEFR_P z&4z2nV~8sY9`}>p8f=Ls5algj$E1wDx! zxQivJFQVO+;MVS9B>Q(3sg1*%CNV<;O(l-S!WYjJtQKN@A{ogIr`xLYJJ0CVMjs7k zf)bExJPFa3XUmr|&%%-Tp$oH8X=aj6UV?Ku>c@g#PG9DK(TXOb+g^JzA+gTAcfE6h zFPz}wuwR4_3LRdujdFm0jGTJ^^7={HhdbE%w#$19#41`XbqbY2>L?-+p6-}Na&vY~ zvARz+PzF%Q$@;$x+$SvridlojB0HSJq~dtUQMLBsb@qevlw=_*6l*iB9|y3PE)*Y= zyYJIhdA3yiyv23urs_i5e4mhu!9>%K>&TmOZ;aI+xtm=cp6r`C9z%Kr2S zYPoGbJ@MlFghEw!S9MEST;SGCI<9*6(PCUkxlIWxa+G#R6(v zo_PI~eK~fg?EsmTAqW4)x#+^&grUL}v#qaIV#&vPOGpB(%2~g^5Iz)_LR*(NKtBIP zTQFM8!Fq6Mr1R*=T=1)My96Q-Iedte-)^eS4R<@e_$;!kkfM3m!I0?b1EW|df}iVK zYV>gLSAc78+{#Ngt7aK3s79S?FW4_y37YTv{7GN&WxUljsmtiMVJ{E^R+Q{@P zf?B`QP5}qsU?0gKq(a8E>2!N|*X&1Jc+tzh+9p6C9|nQ^&7GiqjwywZ&2vOqTsPvv zZB936T){tggwu?eQpX$YQef>$;FrO-Z8zSgoLf(9e(jJ-6|9gEK*jz^FS5Y&mK0y> zk6_v-(@Dmj`z_MYNA?|3abWC=$fe;k@Dx{`!5ETLRQ`6~vj8zNv^3&+Y8RE2W0Z6I zFn{99zp$UYIVk1%FCf|712i7npQW^4@=lMSmiKw>R`3o0fv&n&0ca7uOm}qkc881 zN*~+E-r8*!T@SQo#RY9SF^z!G|NNBhyM0H%S1qvdTv8GzNfG&fQ8gQWJtsqj#71C< zBw&KxCnJe>T~Pe@{7+xd)Cd*g+C|bGlW)>>lwH@mcZ6j0y78CdG;1}J#H5%*oAC4& z<3-ngZrL5l+m|{wr^b_8%&TvrBuHTJ_=Z07L{eL!k0W*SLqGZkm#m)eeVwLwU-Uev z^ILx7X{yxyilkZL_^j5CHdK{?jY?f#U zE4{9QXhpXzUrgQD(D|sgx2r+N=Pf~kT5@eP9ZhCQcD`FD{MFvD;0C@l9XAWjzX)WB-@MvF_9~-JVg0d5`qS|;O>40N%r3B?6=RWb8pqF zx>axe8k3>jzSi5qYqFzlj>b;>d5PP*G=;5*1O#F zc_m8pkACOvRQ&|sXGbEzkm2`P&}Ox(>agISbLamf)Hd^Tg#;k}1#26QWa#?0b81@W zg3sMT<`J7IdS9Jr`{Uj#t?l38K1c=^O=IfgbR{gFS(;jDMri0@E;9_j?(+@%x60w>msUYC z&@x(}lY9ff^AQ{Q%=1IFak%scXF0B*Mm4wXu=*tS={bDxQQ2=M#V;Zpz<6HtqO~#fIvJ zI8|@@*4peTl@pVWF12npP>+sKK!s7TEpOY< z-OI}PlK$U9tEEx4kGH1uS=r_fn1rXZ9JCS+eEy9_9}ds6dD-(5aTax zf?ZDKcK+YA2?6vsC;R#&6HVE#uw;1H-UXQ5CM2EyJ9B2eO8Evr^-0VT;#oUL>&yQM z8D1cpWB|*Onjm(+{TOYRSF<-jc=4iiqXZfN*prTa8Re{Zfnx{y4EqFMy+0v(=Pou? zDfPh652OPx(Por~XA7|GPY&bxjjxW`3BL8*0E_`6OtBENrzXE$ZWXc2qwS3Gdb*tK z_A<+R;z2U}Y4+fTbX#OKH#>Uv_Dz3Z+G=UMh{%@%;$m&e$|RUFHEUT7^~igD+8#~t zP|rV^FZeB|99ewXWdo*vlGMjkmO7otHiWy|QNdQFEJ8C^ha(2rHMDL_2F}t4x9f)k z7{hMiH_&q6oYHN1!<$bp)ghBPrqd#mo?SU?|I!p@2~fzsK$QGK;7^V7ScLt6dS7ai zLMg%30Z{f~_C?*PYc1_W_YFdI(H%&{z5Eh_Gz6DS-jQTuXh4V7R_E=fKO(Ak) zGi8P7?8x!)cm&{g44SDa(*?DXU5#(egST_o5c&37IKRBm2lpZ*6?7S+{|O2|ru={w z)YzdIK`|c*!)0U!vPJ{!X_Y-PY9Ap6XlQu0S-R5^HKA$ii|-|XOd+mL;Slfw$VhHT z#Z0vZ@}NY^&EXut+te$|hc9}W23x#;j=@9Oa8NV!v{4*Y|Az8H=e^BgK*O+P72-ZD zPR}oEMoq5Dc(F*W0#@@yA50)b7oB7>fY1O~a_}iQ1yGL0)4)@u`Kcf4nI7Mq1Vfz<-?cH?SxBO)=bydmsE@d0shi zdE#QAV`n4|xKoIQhBx=|tvO?`geXf4h<@$>bjpHhu^4B2>Tbt{G? z2BOb?V==3agj+?o_p*lajS9X$`e*-*ZLM`2p`Cm7?Ho#;o~3bk&;?eC=$(@sv9!{R zfCr0DHC3iAofO*60t>@8I(fBegRZjDBK&RrWun}6?nA~-KpW;f2+$SXmIKIg4OB`Y zKu_~tV8ug?A*&`5AksM>lK>Q*CSQ*8A%@s8=YK$ZM_uP;Qpr+$-d9{W&pb3jk>E-@ zWGdDCPw-fY7SJs0{)1*g^X$k;_@!mm{RWzlA8pq8c24(`ZgCB&j``z0(8vR-3eDZ~ z^4k1guq<%?aM*P@NmutIPVip43r;&12sYi!04!PH^1I>XtGoXlU=(Et=qJ?l` zI}sJ2WH*or=MUU{{y<%8MqT?y2aiLiBG`w*$y4Y$MJu5;&kfofP4# zy>wErpfZY(i-#B#K6A0G?JG2?%B%a-NL5nome9mTnMjS`Wr(RMU)I=GoJS(Z+U-;A z-rtuJp`Ru1D-Eym~rvc{SND$zQEzduVSZ<}p>vFbU&#Bh*^G&v=%u)4E z=6JjF?=Is@`wG@Q8_Fy_Lq77v2Em`a^8y6TRuKM-Yz{}ls^Uvx4pSX%6~jwdYq$y zVYAHqZ5O4&B#G1`ao3qCk2wAIe~d7%YJiH})i4Wf{_&KyfVeReE_tc=#}U$ba)f^1 z<(&T6aR$_*DrYk6`MII-5`qv_8ShV^FaKd`wXC{u8^qf7J_eoPd?+;k^%Tn|!_o4V zLb#R8z`4#AT5}!fb{L)~CU+!&C~yT>T7Hx@WM4W*PZM*2EVbzQui;E}L|#Y5L@N|` zx0?FN5hrC?ae1`zHBDF$&=JvAFi%(WBD&bgKKz((zID7d|F-vI==Fopw1VhZrX0az zSJ$xj+Rw1hM+GGLM570r=cq2BaKnCrUV6fh5haDJPnH;9H_qAjM?DaIdN{PnZ)~GQ zD?BYguumfk9KH|7yhtJGEWKx|<9A-0T|k;U+JJMm0xc(Ww{=x`DZ2`aJ6rrVWtr1O z9#iy4kH(k6?w2MB>+bT0Z8&}XSVM~87$K$amL5;rPI897T5SM@ar)FZ9KN%+gR|^e z3v)Egqtr~yS7(N1lM3MHRWQurNy-^|FF!@Iens!0qudPv25gx?bCyeU8};MOF5bgc z(8gW$M|hs6!Y|SWz%M0eN&wGO$oVO(r0*+fGC(w+kj+~zqi5q$9OXp7b5>8_Dh%ge ztYrNL&z?ZwmnPx-%%M=1O;28r0`kFPWKw}=(D28^r619&Rg1AImmbCJlJD%K9)hS+Oq5*{AKZ`2I(`jA0b?llM(UEplhsefa&NBXG6vx9 zxLQ|JCTQ=T6<2i2ISkHgfFPZ$TPj&a~ zWy#1HAmDo^dwtJ!6Q(H^efXp=+8;MVls22xUZM;CsxH>Eu{LT?Lx!b$=asq|;Vh|# zaf1=+2G$M+wd)jH*uoOeHk5I+fk7-q{!n|N8jm}#^X;r_ z(KVcp#8&~r>jr9Pp{^&8mZlzSpjJYGX)8H(e(zV&$-v^{P0MZ|hm|Ure|}Q)sJUl}QyDY&z&DRJ$r8%58`{ zh}K<9m>k|}h8t#_?f2w(iVsZ0yFSJUvm+w)HZ?Nbi8UIbJu4ctblsC~mR_5u@h|u^ zgvv>$Y4(KY6AbSZdAGf1x>ZXX0}a%IF;5+TH2x%N zjprPaX5{FekQT*mJ|Tb=02HlTVNFY4JmpSu;O#w^?8DZ654k^!7TN~DK;-Mi?)WC3 zjtKqg{F$d|{aGgMAK>%xctV>i^mbyuU(g|Iln4|d!=ZrVkDRvh^yC#`2t0T2ThYme+}V@u$GrnMPxIuAQ1m|4c$+S1Ae%+1M(#4K)aYwx7$U~CGU zB4O@kZE7y3i3{}-K+mGw6}`45^O_^+DZhK9bq9w*56vK;@oCJMWE&0csMo9gXb zoeki1qZQCDa2TU}J{rJ?RnyKVHvT|^&;sfJ=jor;U0tt3oM_~LGOqw8RvuA1Vi z6Mj@^p6Hlq#O&H0B>wde{zaII4cdTYP(2@PQG_%e^@w>l`b+2VXJw#@xJ1#d8N@(7 z=m1^>By6#74JyR}Mnpy)4*iWRm`&}uliAZhN^-27Yx9w7NMFa^n=cvK-3)fkF)D|Q z-kx92-ADxVys1`al;LjPlQVqXPd!|-&A#+m&a1DBkF;rA<6dkKJqAg?BwA7N%?xwl zp1!&NNRI;~WJ#ztF8(@s~jS2JD&Er`oep= zZNhs8xJOTPzA*%xPw$Cq#dT19@jpuMu0aKDDCTYG+4Hu)5p2IN5kE%=h)nx1%%5mXwiM_ty@KB+?d3IZ<6eC!%Z5E8Wh3P**wJH~2Y$aLB zk_v%O&%#C37e#(_IGC~(^QrNMFhef@&gXp0zb3-_Ypj{!@bUn zJnJ7{4qLn%Q4thxlbg8WTAn%h5$8)JKrylF2l+XGckw@A$S+uU!Vq4bza}_5e}RzS z&V=$W8$#LG>B&0)YzyAsaH3-FZ13u1YVHi|V`cljPuw1GAM9Ly?Rvr@z}-+VH?uYt zv-d#KecHjz%Le9RWz&BGo`2dVzpj2N$rEfTJK3A6n!A8?fu9mmfIDLD0hl7cyb!TJ zTk$_zS+G9%uRh4r<>Jn);9uDokXJdgfmxrN7Zu=XfYkw%4g7S9ni?Au3z+pOlY4Ss zfWKJ5tn7b4QcaB=ILP+Y3cn7rGO-}B{x)i!Zt@S8=IK7Nui3%>sJQHFRt~PGhIn#- zfD2_`1JC}`0>ClAa`|11CzIu0_5O!l^mMm>+CqPd{C{8z@vTJ!%n27$p9($OIC zyr>qnO^~ALuNMaT+f#@HqYlM15LedUV0D_~!N5R@ihw{*8!!)sN4}kOSQ7zR7_9Nn z&sF(CS^avk;d)t)##PAwcs5W3P%whO2``xpwW-v0N|HH+G(*``>V0$hd``28AsdOd z$hhJttmLnI{<(GgAqWEN6&L6Dbu1RuiB#ZeV8xk+_7ypkw8X*i%e>}Cx91EGb^!J67gkniU|-Dn-$=pW_8>* zY80C0GfazVd1)cT8Qhx#$t7OrJBc((KlPZN2Lde!!w5A`o(d}`-)B2BU^S?x!dJPn zY9F`AzgvgJTF7ju&=Nq>xwoV^K~Vh;bs|*1&5?a&KACq8^VOS{FjNVkEdp{SfhzE0 zb&(uEAW8Bu^NB)*6XU5h5vp52*O|{^LU|g+=-^hpSYO0%Oms)dD^?E+4i>oGtKJ;V z347R^t$sCC`qG))Srp@`tE@1z>UYE)u^H3r0jILlgnPj2<@pg zcGcOG(Iu9=WtOtB?Q4DD_FhY1?t0j}j*^?Q)oC_am~}2A09Qs>?!?SXaoKdGl+QYB z45(X8-Qiw*U0#}aA&CnV8Z6--uGeyGjOH#9Op(JN1BR4{MOM)?6{-qItTG!?WEkv> zd$CT3KHI^MFqgupTYnWzz|NA%XEm1lS+{QL)5{OenO)| zSIv9$nk3@1J)3~-gU#};bPF3We9eA~9rM(y=)j1uiCZ{yfMaiSv zO2p-J)B)e%ycru46T8at5>%K7mHHG)CB73C@6G z%Whz3b6}eO`rD`JIYqh!>zkwvCc4yA7bLaM8^4`Ju-R{>ReAjRFY0ztM%Hne+WHpiaVmtem^Ysso30TeF5Fvt~{3z~Iq*tD- zoM188Xvq3ir}-;9^OVi0P4$~%ZJ!fKs&{2N@Ijjxy(NidTE0g)M z)ru~>d*~+o_Ji{BfB5P;woBnS40#4Api@h6LZz&RH zBEA@2ugj=m(rNrUi0YjJb*XwI5)TVR{|pFBq3PRg7sh`i8jo%%kqAN23;S)dVkoe9 zA}K`hTx};lOGJ54Od~=sgxPN`E9&q^?e2cv(pM;WE0$Mf1}$D-`=pZAH^In}zh)H( zR}6{ufzVP2aH(g5=;e6My$q-lld_`sJB5>+#@*eEAkuu{3}|S1owYzY&9Ww^Nlqs| zr=3+5l2&G62P{wJxRML%j^(R}ZlqyhW}+%$ZCB|-KG#Kcn{OwzJp+@TE&DKK@jv@o z)SB+)&YP01jAV+q)>xmHdSPh;C?ALlN#Ud(w*N7!5&1M8)gS1t)Hl&Uca4bArf4fC z-&Cp5;;h3}kkvAnCHEzh)g-$!S%E-VgYTHho)bSCDbm(chWRy%eR95v>SKfl7Z=En z<{(h0^ST@hy|9}jYCWpkYGI`%KSfJ^T=ld4-nx`JF|jKXo7wOKa|Lc`Pf=)>keMgh z=b~`GS0nUUR#Vc8{sGrTZ^(ewHVUT+7Eq^3&dBrg?NYV{yp-L#j`70hPyOKW)DND0 zZa<1nS;=N0`f_DXi{h#L`y5jmu&rm>Uu%B}&ZR{bMvEYB{mEiGQ^DMJcT!ZCZ8P!d zTYqBNr11{izoKT-NO~Q_RLybgv)4HWy`m+K)QRhQr}lj$$ncOy-F4FU3~K1W-(r1; zGevoNr^#xnbK_g(v1VCgsCH!tNo=WB6G5kAxi3$Z{JVyaYD5;>(n-IkYEXO$&lPtV zKUgfjK$SuUBHmdGWU)wxEKCJPVV_xl@H7rhvrONQ%}zUet%-LfSw@fZvA_ZWZX zN4*A7-OK}M?mU^berf-i&va46>J*w^9;Fs{{aPkJWc_2jf<%@AIgw}NF15t`Q#mcF z*;+J=>QB$z5)JIxJ8IYS?$?1m#jtXhI_Ebus*h*$zIm_{_fyFSt+{Hwv|1rIJ?r^+ z%=$uJ34`R~2Ra6*}1cISCR^%RWW!V(X9lr#%Ufmq1Kb=|r ze<67Q8F@O+F7d>GGR%duu4fV@E5b^7P*rIDjqZ_=L*QyQu9q;k&WgGHgXsOHRF7g1 z3~2lYR0%$8u@~PXD*p?`10!5LgBqGeJ6JT6UH@5jQ!6%CK3GSlS=QCPo+kGqyqK^GAqQP45xeI8;1$J=kW&|9H3F@~DqAe-6 zWv??%gpb;fQxU}N&c0QIk-gbE>JWtU#icrCm!8viUr^sU2i`@gl?9u;Q*u=zS(hhk zKV9tUu%uWOw)k4KMfAq0L9jU2(R^BwzvZiXV|6U)kIUmQMh8{%w$l;sgX_%<&SEBA z0j0y?F#&NEL#|g&jKFvB)aKTvL^yGu;P;77MqxOJudl|bU;BsxY|oAVQ@TFx*^ORP zpt=aKdv^bPr&;hS>LGMqh+Ht8+j}~9DE;HECDZ5H-Vc;wUT%yh@++l9nySd$+g4Yt zUr~44v|H#1su#;jb)lOA(azEC=h9}kNv00swR=uBbo}O>mJXJb>4bKUlI(lm`Fsvu z49fEi{n%N2m-XT5oS&tMc%wY@v>mYwBlrfgY=0z%T z=;uWZTK8U;Lm8J#R-Rq%J1VE2LexOLvHNrL@A$b}D!XoF4<%6?NgNFwUEw

    *!y3766ev*#87Njl5sx?qA(Dky^v*Gxo{ZwG3Z-W0Wp*#kh6(wcHJW)TF!V zwv(YOP7{!VrriI|0^H%N9;vQtC}V?o}*hjSrP7yAp9;bsCVD%o<^@#$@7>yKxIGbTIT#l|dlF4@e3(F5+ZWA7 z)}H!m_7s1zR5MnngYfy6poY4(S^K)6;v%9nQB#njVf~cT4!H_fD#-14$CW>9O!EMi z!dx_D-Ng7)%GG~rxvl>u5SwhPk)d>McE1oS(sej2c$oT#&T|aUHC@~Q@=oem+CL&%tGdc2Z zW=uyM(;|f%LNU=^24QbFiUu|(C8O(9OgmJ+g-J~>_D^zK2LtIY!Sr4w?z&d$uzIdz zc1XKa4Ysd&q2BYmUL9$*oIG!#CT7JIYKEw^(tnhOVs-_7ZE>+k1%#H&?1&m(GO|^fv_!`ruBUEdC z&c21?2692rDI|wOP9O#(EzJ^>x$u_ z?DorCy&JTbo2=3~FrvjLefSvK{kcy)$)gyy`=%w;BcHfCP_wr^2wM@v1&Hc9LWiGU z=DG3Lr}0K5Gk__kT~tzM$5m8m%`kQ*534PG;vh9Rr_z6~C4Qh2X} z;!1v1y<2A}+hDpYCDlHUU)ArCh=Q8?@ux}Au=p#~o|i}M*{?s=2zZrr6gwZ`zW6a| zCo;-pUFa^k{>8q4&fx}*eT)5#ibamY;ETFVSh>MnvDYade&bj>qi8!xJikiiZF9Qe zVeOpgB+yZ2#ydZQU&qr9(}Z=-@47qj;x^u?!6YCWh|y}(UAVre%~3H7m4ZX7qv#i5XrvIDqd2~9B5iNi zzJ-k?@YzqBvEzQ?Q?xKhylSp5bNeh@tWkRsAJh~Vde~!D&GlI)VR*rPbH2_SdCt31 zHZ(CGsBxaB6_Fc))#tpcO+g{=4=N#obKIhB8`HH`Gz1=%9r-U(+81z0D#^0ZL+#)t z!p~F~-D-)(*r^D7aQld89Md_AHS?;=v_BB;ws@%QB^GmWv>!CrW5W#YzW>ep|2grP z#Hwv^)qU*~e42Qkdb$1QtwJxBYMF`hxz>0-vtK0JI}-&-P(v!E-DTy6P-9zc=}D)l zntpsnNshghFwz?*5wdA}<#c-7=e*YQpJ*OWVN4i8avqo?KamO~qh@c8W0szVI7sriC-8Y>87Zk?!g%@H@;Nt4PDkFyqmF zVZ)?xINB8OGmrIx1!3=x?OpzLGAo7O6rHwu;F$GUh-{He&pts_R$ZoZ z302&37x$C_BR!OgI~(@otE^s<)Zs*zU<6k0b`zApbzK>rQsnL`@Q-A4j4#ch5mKfl z&!7Ek#sgRbB5RoFdU4!LRlBrB-0z{~Peg&| zTkkW?I~jU7Ft8xG{vLgh2?2%(>a~y^0mc^^0T=1y0UYw%AKOjgnF6VQfI}$MpP#}V zL85G@B1^mB-65+m`ORD4DHY@_RwDKc0v#T9L0+{V(86whY@2?Zn@*?N2e|DM^&P|F z9hzjGHdjo}<7af24`8=XNg<^bT~{t&h^_Enu+XGBJ!}1rDJ1P@jmfPQTq@dr@D=Pk zRU>Ni=LSc7P|PW&rTHp~aWTJ7O`%y=VhW|58qYn&(Q3D6M~atg@YK zj<15pgsLz23+)s!0s}3tH3)&`e0~Bu3k?mar*L|M{q3L9YoNa{#apla;_NMDV>NO&g6H6m3Ds3BUIcJ-ek=#eN)a33tDaWy|4xs%YZd9CLff>l=;Yq+ zH%jNt2JX?e!@=ZRQUvpXWDVzq0dFyP;YYE`xq~4`%UJ%Z$J0fA`_W39;TLuJY+dcT z5@^EofaJysLVS*zen!2`O|SdK_Da3dNuwr zB2j0|Hn)%zQC_`^4JK&sBhr_=)or0FvbxS2PI?v9$2SD=S%S~?_zsBas*Jlr;mLf) zMyj`dWr0W70m0pCWVJU(54Q)fzEG&Qnu`LIt)vG8<=18Q}y&mrJt1U-qsI%l`WMX3kJ@>Ra<0+3-3x<9) zx-JDke_L6plpz&Nhwzn`H__8m5$oJO-DLh^x9~%j(TY8hAc0ewD^w&Sk!~h5GM5j* zM-5h7Zh`^ZSlA9WE}Zy%(f(Xr?}qnYW$%k*x?0CIDZ5Z9hCA8!@b(;=*$P4tbSOR4 z)?lZ0c3<7uD)X#)wTjA*mdLmaA}#!Gdl0DpC8UC0Pa5ybmoHPkjzrAAmy9aYmuqp^ ze(_?UXMH`XyPN&^xbXdZMG1-Sun@`VB31jow=cafr4E+JT#t-~^28m-f(9j}o9gvm z3>?0m`{L@PV#WI{x#_Sq!)zEsJ5#RePs>h(eCS9P6_=e1y|2d+pm6Gm!h;W)t1?Gs z8vgQn&h2o~cY8cPmV|#KopU!)NvLB|!0*Aw#Ds$5_VTdJZJ!VZKd29fQK!cGdqEI9 zy4xHn>#sbo9W9`HCiQ5n#n{{Jk;U~ZR-9m@451Z1k5;zdPrX*Fm4`8w^=G6?VvY#( zembZWH5S)w#ED8&#BoA!Ho+jh$w-`HO<(7MZp1N{?RnIf^`VCxp{>3paqh1dI@M{q zsVR7^@65KAN_Fy0u3wzLYD4uLpJBBUv2_t(csYeLAQ#maFjxfH@^S6h*>aSOduP{P zDlQ0%_!}u*k9umzR-YD&3aEkT9do`xgCp-oX2~(l+WY|!9LsWTwtAN*a?EUwopH$h zEn;3%rP`D$9z#9Imb%T41{qwRbM2?ghCfEEk#|c-8mXO$yi+6N4~1r9>JEM5sXsGubYSW1IMM zd@IFflWu~lzw{|8HYJ#tn9$TO4;F}OQOJadsrG>kznwGiB>$bk&BN{CVf|VxFh)rQ zJV5Dy;vBdpD$<=Cu2*d_9NgE?Li{UW2w^Nn?~n5_sUL5Ls*N16!=ZiO8xbZUgbQAF z%BAwaqwfoCNAubvyxSPP1Sdtk(P6dewn7PdKk=IPKngci-E7`*O!$cYt)N8vl>H5v zW{c}w%G7J!4$Iig*^cilwvmxmFt|d7-Ywl1!x=^>qhn1~?Hf)O(l~p0a-#-u0%zc2 z=t&9O;_QnqwUJuvFSZY#b>qsw-nkB%_79HtacaaE@y=}bqfHWM>no?(3!-x<*t;uX zWIyAT9X`)D9ENnfhdl*l1+my}E%%Z!%X~yjoX;&>^?^}jsD3Nx?Uul+8LB}*9JDM+ zaS2?evltAQpO*1@p%F(D=^HysKnAxxE}hy|1Wh(Xd{EcSj8=6E&>=3{e0cYL`352 z;VeXnjdTm-3sf?A(SnF1ecR8z=@v>l_AW%X9E(@pR9yMMFM~T!E|3V!xt`&}eaH|NL?B!c?Owc?fS2$Hu4|)uP8w-S_EHfsrGV}04pSFcb zXevtITnrKS(TBL#oxzCVE6t}P{0=;TpYyAQZD-ji=c&_RG$;w*CuMxbaL9N$ zxP5hd*j6Ij5?vL7jOV6>@x$no+~NG&-IqYK6Wer{cPby2l($C8!R1Lt;YzGK(8gx~ zJ`$(_8INh+eaW{%^bCg)gQBqE1C<;gKM9CItY!FN(og`OkNKd>G~m+vTFWOA&mSCl z-YM6UCQVNG(?rh?C!p0NABkmm;yO_{+5IPkaQ99`(sxb*sM{P?RcKES2Pj_)uTe+ zg(;JwGC+*IeQdAs&Fejj z8BXWKCqPFBLlHxvboh{zboDoaT^0G zHyzCNWYb1(5md9`O%J4zU?ZHiCMV4QC*1m#UFbv>-uNz)Lo-lRNVnOCJ17(_9 zNt0kRQG8#QlR1mQ!B0#IDfIOWr6JcLi~mdSdZRx71z01ro*>X$xZE&GXE`{Pluis| zD7Q;TM?TE^E+TLb*SOLC*&8{_U_BPWF|KnMR@#F^v>c~1^s;QvFD#2Tfj<=Dzz^wBAjo@9fHvh`e}Rk6WX z9yO+x={FI+*-cDHcv4)OPX_40PM>vZ#f+pGH!}M^8?>ZH%=eTnV10-^EuQRV%26Wb zRcxDqr22k>jq+k%*h(0Ky(cemq-*drYppjRAcYy+p z>_Z$tn&a;7SXh&%QmQE#JUnL9J*FlU8jib&Z(Gr^6B>pju!U5RuMpt<#R{X;>$z?j z%6#L1iL3a?9!Idva~av80%&?lQxIcxq{e3hSOzpG+6b6zA!nPp*dH8C>;0=H8!aU~O4T(_&ZJBGR@ZE@*I8zO1u~bD!Z|tohQ9ZGD~4{i zRul3{>tbSJ^|OQl;d<|w^eZf|j=8%+ukAlb#jrg$MhtwhUMvxTNkHS|7tcfTPMkk$ znp#59xrh1*Y<)nGM-)gO0v7#`KE0CsrqiqjGl;8~_nFwezMyfV9=f^D2NxlV+~k5r zwUJ%A0m+;d2Q`5Iib^MB+rgthq5*8pWv_L~gPvEws4Xd~Im=;zAQal6Eb(|Gg^jm# z8^y#%AB4H&-_9>pQ3koz;8DnG-eS;5m7*h}eN&66wxg88dmw`0BQaDa2&BNFpRER!Qxa=hshn!hw_b!^zv4KYJKRp0o zry!zC=0gS~xk;r}X+;L-O7r}LrGg@-pzE z?*fCn!`!v~`;4J^W#Qv>o80yf+YANV5AKRSvePJLM#d-zxb0oVQ?kONlOm(Wr2crd z{Oyh5{*0s593%w)`_Xj;^#%e7Ua%8ruM65KqcIq}p>&(W z@%e30HpOJiLA*8k)vzceCrenz6!9ghg|QnkX3A`2-fJ=3M7;1{AyPf^m=vz)H_LQyu)Gedy2+RXiSRcA)&jnbs4d7*SU&T^idtza6(9+ExqX+97rA1UaW!Jh{T~klR%3iS#3OzNUbA= zY&50k%G`U*zxk}rP{_$sBd;Q1x7;2O`c)Ovu&`_D)3iHABfoUZ5)3m*Xy*_zI?w-*CwEUfa9MBK)u z*Aj5(*9q_4%&t3~CHvtd1|^5AT7WOoMc7<{HBWI5je9{faAwC3Slwf(@}2l>GGGBC zaylMzjv8_FABbod!}Y92ue5qZ43&Gdis|>@#zg=#B$dXDzF`W1mrUfF@zh84%=ZPXgVs-5r17D?MHT}A^ zKyi6}o2CwEJ)M|cVXDekGM#TiX+ho<15~cK$1HPqCh5&c8Y2dSl$ijUi1(()kQ-s>%J_e_>@LYqH|7m*%@rc z3x=-zR%;mTW$WihpkWfFh{lwOT`?T3W)#IuZVfJLpw;7@DATkyb;4m1QRnek!Mb|+M zd@+&;)Spf}M=XjjUM2{)d%@PeId7M5FbyK}S&zh|ZgKTr>dpS3e z(F6{wVD{wCRVQol8XmET6-5V0lsqR!5Q|}Klv3K2W;@G%moWn3>gQ*DA-XW%t;nGz z*WY%x)BkKX4$Lg6wZF zX#rVYC<>z0C?r6!yW>cKDLRq@A=E?jBm#y5zx)~&?>&jn(7AaDM~fHJl^SlO|6m77 zR{=gFth5U1k*8|2Ia&utbH-(S7-=_>DlvIi_Rr3hlG5j~BwWg?x;lEq$9%!JbjkE` zaQTBt@8kH5f?e*JcUk&T8PM)f>DjXV^6(Le=2tgdjU3;8!#@&HgU6Mox6JFEVO_+J zE^>6+RWGt3cj^#dcj&3)!6tIVq$w4t6{Q7|0Yf=pWd%Q@Ayny&n)#4A^t)F-YG~_; z7n?FNGf|j&(Zi+MO(Fqpf+2a5XS4JyK#C^33jd(Hw+~oR$qUS*#D<1Xi+I}&K{9-# zaqSb2U+liVYhd~DiHk^fPfIKESXvx6BLJHmS+Otmyx5-yf6)xe0^tOXG(=R1f$;wO zvIGVoY9?czcDz&_ge5Mjh;T-bc$F7HX1|PkxLD3m5_kUU4g3;@ua* zKoh&N2#2~&5i1O2YL+*V5zZdG{W*snz+9M8#bj7BhR7qf9vIWNQYOPK+YWp-oR#Ks za@U$ji$G}CKLjQ8bNk~G>B}#h+1|0?#I5FjKZgitT!(XnA8*cyG|LT|T($>7kl&4D z-3szv`>2f1V$mcVf1AXifAiI+VQVX~vQk!tR5%;uzCY1YDT^=6JvkR)5w!Xdcg8>Z z8=S?-yHB@+7O6FG#1#zF4byAnPs#NhSo9qc$2?JPNcIARIRxSC^y(W*9TttE|1%6$xn7Jz zBsUe!-Ko#VDoZZ*BAv2~6&+Ow4Bfe?jsmzKdl&`;_SJAO)iyae0#%l;(-zQ-h1B1P zQ%L_W>fSq^>i2&b4+qC~$lk}^vyjaxDv}$~=Uy+rOUq{wX5B{0bb-HgP!lT;m}Ef| z0ImaTHX)Kd@Kj*1qt2k_tzsCp>^HF%EAPFtzHLAns0dqE^_)&x%-*0Sjy}9-diIfjmRNj_9PH`D%7dcPa z>^$HodOqWsGto*PNp~_;9;NwXgAY={R6lkDO)M?mb5|Dhjo{?=2pTu<5vqXy4!I^POwC*S}FJdgN7=6(o(Zutk0E?N*^t-tJA< zagnrFNRONv+&Nf^KJ6pAS2SF#K8^joo-Q1I$#4_5RK%uR?W89&b<0Le}ik6itYKW2ocP;J~C-y)$si-;F3SN z_Q&FhM{EtNPdD?dLjz_nG@1DLnhczn2TjdIDoqdU65J7F7zmEs>zL|5|7hEjCFPK<^3YXo%N_5EpP?@~69V}9KgG_*nfE0-IJAP7Jx21*$VImEf3PtGv98|4Nz?ENS%SV*O6t zSfY;1Mb<4sl(e&W1Cmlo*27GQuF3L!OPP=P8!5hl?eL4}Wn1=ME&k6eGC@pl_qVS_ zx;Au*Yhik8&E5=Ly2H-qV<7{MLNGp>zir+Omnls@(pC&KPGAOp{u87k$&Y&kK0`#W zX!bPVheW;2ixlxU7e|rqB-O<==$I=?sn{JVNvPQbmrDleTY#k4-^(1_p^@xKGLJxd z!ag#aU14fjl62~enV5HbPVU%cGQ01OhB;r9i!2h$`+T}CI}#U*6Rtv<9Sh;b0 zICfQpGOpN7kS*;n+$6=0Tcs5(@lXCg?hG#oxmP(Ui8xFZ>RJf!aHFyULLt?JqyAWR zP4yHzfgr&$v?xj0eYDgTS&PlV2N^Aa7)lD-v1QhF|-($u!^B#pq_$87R-^LT0cAcQx%cImT4Uyp`Rz{w3)v zkWV*OdD|V)@|mmpW|iTf@7&|=YgN=B3A6CjgH2db{>byNGm{O}sy$oiXnt@v7N3BH z)4`r=u0`ZL)462^<;Y)t-1<}HCE(bl6(;9xRc6!pX-J#vC5SN1-o<#6vGMh=%5gh% z|3Q4MK;FIZq~}NX{I+q^#D_=2)Q`B7RM`Hh`iut1FyvQ`6`{cVYO0cnvGw70R4|1t zeec-dyx?|j#uPcTd^ha!?6ctCk8P&qk<{OmZYtMqc4n&j{#O0{^bM)hGTIy9nRXiv z3@fvr4@;R+=Et}mVkO|A#Ib6B4+s2)JsVTfs?9R*y1t64;+c7K&%B-3&n1~gWtW>~ zCXRM7JV0Wk<;@*iQC1w6^~t+8Wn)MvJ>q32KMK@G~||TyU-#>uShE; zV1s=?rFFj`oumCi;UmhvlH)g5-g9vVnCItMH$5?R#jnLkFv@9_VppCkzxUkL)BNN$ zlOiwNDumZPImEr(h~%TaN~iS%Mz)Y8mqaaz4;k=@p=sN(N?zeM)IS0z>`skwn-Te6 z2pZR(;<9y{%Pce+oXB8dvS|4G7||(MI!sj+21>{fT!oyP;+4(wLyL2g%SyHWH&U(IemCeZRMpEG=V= zV&_QowdgMP&T&Roo*^;XdGbtnDa%7JBDrmBxm${K1n9r3AScU&>uiEV2nS)o)w-Ef z_MlSW*vkIie7D!Ce6WyAYX=hId}VqGrOr35SFVBYCaG-q5?MK4dN6je+~JAqO6x1e z*s@{H@asUCxsnOe4`oNLVYH1u{(6!2ZN58y7j1_4ZwJ1B(LyykEG;gZq4>fQck8WN zFZJ&*fBq*^tJ8F8id+8XQ|Tb(wf77!L3Lh}9r$3;PSBNFu5GQuo(O3-tYy4?)aJ#X zlG+Re{{^!kxRKVpl5%JTN+b|uVg_!%eSf|LSx5e^SZr*n^iH!V;ZyiLND{c~!?$mt z_s@FuuD{hO_hwvc`7gL*N@d49XfMPSZ5f~yG1JMS7y+03?g zhAEs2^H11DYIQMW|Lv@}Oj2QW3UI4(2;JaKPJC}KSIeO$8sSQPN}s>?oJQ%@MwLtR zb?D?!{1*xYiICo6R(Wp)P%}c?9M^U!(_4-+Y+K#4_2Cb?DifC5B0g#5zJn`L%pgFx zmoP^oS1T$gqeynhn=)VWBk83C+!aRf#R^c|wX%w0w@MRXQM}?g1Cvt;6hL&Gt1I}J z--F8OU2mQ^8($kL__Ds}jjq>li`+%yePH+Yiz(D!4VHQAZJAh06H2Zv2uB_y`^Kr0 z&`#dq^-r}U@h-TJ<20BO;SuMoElNU%8B;#dNd13_~WjKWj}&$6F6k*)iRujK~cH?@v<~eWZNgaxaKN zgkO&yh?*?d;AB92>{VA^$^;@eqfX3&2QR9+N%zSy1JT0;cgm(pdwrf1VXtgq_*0+sRiaor%jGti149-h%^U7A&djeQ{w;&L1ZU*1A>8dc0Qdl!t!2v2n1b|5MYd{jPEN19RMa6zLs0N9emAMq z!GI3fkHd||_cV1FCGC~P#4^O`>FJ$@bP;hdf=Kz*1T2A&tcR=*W#}`0^wnqAYs~8y zSA%E0XBsp4ZW>c)5>a=Ae6xWwm-sDpcim&uB?q#IdwCT8Ioy#4O)xYkW;A?xt#|V6 z9mbxpl-AhFh4vtqx7Ak);Z*{l@}h?Ini7q(f>aO^> zSS>oL^a~lmQ;Ck%xV*t=E>NSEnw|Z$PG=WKMj(K61Qc5d|1UDB2lU7rEB(aJlKa-T zd8-Ae>WxxLUa4*s%}46tG>DW?Du4PxOv@vKV~>gBNG$?YH$0q)rz%Z~fGC>ga{jDVrvU4HK|8iCu&620uSugnWPdGJ*Qr z2bG^#Ugqc6{I8|&17_YgM>X)*(7L_j1;J~vAB0%*BdkbSE) zyZP}}7KihFWUq-tCEu$emDbBeQ`WDnDlh2+)A8o|6>@h$oLrJxVncri6qPdvku6Z( zuvJiw_sA7-1(S>@ACPZyBI*V;hxrjA(m#4mGr2iGXk7y#@>>u8alr&caenpW02BheIFGDk z1Nw)+=&{Tn*d8Q&4hGf`sx3-uQqCl>h_zf@S;(YVA_`B(@|UK3eckmHXnKvcZ=mFc zL^OWrvaW;KycBO13^vCoUYLB( zgf9rirGFHx))dvX=93dN-x*HI=0eBu61~d^ig0EA+On*1;w1IKLVI7)vpYq1VrPQB zUFT3d@cuGBju7U$tkNI$!`}00gxC9mTb@K&EHyKJ;+xkd%2Odj_$ed)?vfAL2z`V- zjAFwblRi}4y?`XwR)&c(Sx7jLvrsk!RU}TR?3MUK7 zo~eWjBjyzEUv6o`7zhN=YW_y=>25Ao*mLZ+KH05P$6oCSJIp9JT*t(7}+eq_Y^qy6`Snb%U}P z8ioM8G@xogGCtJDZs9_kbW~d3B&ds62IUlJN58q;#B4Qt+OW%MY6 zP2}sD+n}aX+li(a@-Zh&z*&98;?h8W^`%?XcY7kb#>Xl+_r82{=TNz^d0`~XOfQ3o z@}DEK{!086IoHo+V%ij2QYil!;}eodt#R(WU2!&<)C&11U#bwi!n!+bc=fOEqV#@i;KAlnlU;J10YccIM~SlQJ>PlL#BO~T zYJU5;Pdcj){*F2;QV@&#ynamXM#J8t;B26*^xHFRuxQEjb*^N=@DQJa#z5|b1KU%c zSW0GsQM(qW|BXz&;<4RO+qm>sda1O*ljqk6dORy;IBxh$7Q`k4YXp#@KnCmb>u%S- z*JW?VlZ5H3xqo_?E3}3dekOO>CFe08`jJOtM7PipXceRq|ve$&|K(4 zxGp7}P02cVd2F|#5n+4$=aLxW`rCP_Q9E@1e^8(pYGOvm(*1FA3cJ;O^K|s-zywFP zEy3xhs%(O1dtxMi<(Qt%OBN98k!)hE{^&b2UDO|6x6C)_PyP>upF1! zb0T|zN@W#Ysdf_XUB?nV^sJ9k(*ESb;&-|M&Iijd5{1&P!jac#xmPWW(?AvEC1Mw` zZH=cLv^v_eIfR?E-5*L)JWFj#5Y1!!`v1Y4K>HVIlthdRA{2LLnf+EK*j0Y78KfGo z4#Q73lf|-zn)RJW%3Lnp{dBD2{uXTm8v_G8G*a*zO={W@!+^Mob zi~HN2+pd~Dlx^G$f%C*Y$Ixe-IzJR`=P&iAtYobPCuaN46N3!u_-TLlC9k+v71WwS zSg(p=RKNPvcGF4Tcq(MDczvO^Ud7%@vEtP<<^eiup04AyR``Pe2dO_wlg#XUFUH3V z)^)J!tJkLsSy?2IUlF2g&t<4TR!a3^_QaTvdrLQ7*QiqMmk^i1`+{g`!myzv!s;GE zFLVVP`p3FJ|DMwY_KsCn9>*;P^PHr}me^u_z5jW_j%8QvsO#@SP+1RME8bix%g(xL zz-m=StN6Ez!cb!=vz;GZk(5vw&ZTs}>_dxxDtmbOsK-NT5|sk+?dL5H*_F*I6eNFG zdib6C*{B?zoJ!|zyuGU16?>XLc0eicV#maK;zey*z|_OBx#`tP^Fr0w)wN{h3TZh{ zidqtyqypPdxm582kTElFgEt4%R$VszMG%U|xBQuH)*Wc!Aw3*eO<@)r^GD>G*0>Y# zk{*n`T@c57e82gg<$FkXdHpag9|=c|1`FAU%Czl;$#S*1x8f-q9SpO%Ic+i{f z+EHdXDeRXFe;-`@<)RU(a2mp$y7@*(KTMHCknqTVP#nXiS{?rIJ3!D3=k{%y*zVm1 zFB#r}|KPHEL9~AKob{uH>Yv|+^S??x3M+fj@&`e9F8tMtwgCp%3Lo-d@73^Ajz53= zdPU5&xEggwzG{#41ob_9jnn;;u~%h-NilB%?7|%#6pmj#=#J%!7aaYcTbQf8`x;2*seLB@108=n1yIWFM}&Gxs?4)s4@p%qDq&A z9ETdrgwGN0x6R*iFLdL?2WIfcGLFhtWn`sA*UD1!_;`t zjq)3#r5ca{!G%!FQP@x; z?O>Fc^vq0g%f|UQVv6eQV8gZMxBV6V))}~VjKD1L_B;9x5gv-2TC2GerdaRDM69mD z1O>1OF)=*ofUZ3YPfyQ8a)#=7DrMyD`~+Fiujs$=LST0_$O&Db>o}sPzA$&kKyla9 zQ|8^}m9|@ly>j+eh!*DbD)xMXvbo3NsfTpPtW8l)z6Z7Y)|v>#=;y%?#=GNztRkaC z-p6#56He*@n;G0T^P27az>CmN2vVIs9~e)yIB-EDo%{*JoM zeOgN5IymN5RxcX_o~`EEdH?z9To!$n^GU7p*JRHZ%D9byCV(6};F^MV7w*E$qN&Qt z%Ez9s@B1%2Gb`EK5|59wP4=gfnLX1MYVq#DJ5i`ni5BvrjMf$pBQ)*?k(O-12d6m# z{N~W_R~j(FmZkx{?v`VTpO(11kH7Whjm|9HjmQBXbNX%~;`Ql=-m}2<3yZ0{UoqDv zTQfy=?dgI)4_@@77PSA;DVNqta(tE}@u}P`O;5 zEWbEA#@(wv&8_G@R(SmT7t{qFW+2<1*I_^M>&HNzI|xbnR+c*SEm(E9Uc&8bpfDUambHS(AL?%0;H$MU}uXjJ7rufmWo}WIqKx-(;ZYr>`A#syc|g`10{|m zF0REqFKR71_l1}c(;0OV2K7^g+H^pD(qvBgY1-}mB(u7y&IJdbXbND zq^-ssGfTkw82hYPQBg7dVW5GXg{4T+K{YSfN0@{F+#6d*B8s}O4ul-UB}thlc0LY+ z@mtw;QaPYm2Ls%d(IiS1XQBH%=w&JYWQ)Ez+8HFk4|_)(XOQ9)laTQleK%baS(H!) zgcTVB=Wuet;%`*r+(eyWTw$Mit}!`PQv|6!iH-T&*Ft4C(kL+~h}hNIo}72bwHT)1 zDMwG`(+q3Zt2bTi2P>mmM#)20%j2$YaH`OrD#1D1z6_1usa!$?M@<^N&Iv+oXXbg2 z@&LDKDrjQ=7D?+(B|{U7VQcO4+9gCM`pP%jmU4yK%mPP1ANbDXm)*@b(kdU$+`Yw@ zlm>`?WzfVIuCY;!#oqnuc`-4ut&iDi59evrj-{06_uMW7n`Y|L zpf%Y@VB$(hf{F>j=8)J6E<1QvJ-Pd>5TQ+sP+@D9tKBb* z1a-wvFx`KiS2ztvCug{P;G%8~dZX*aXUn;=GWOyvqbW67!gZ{v?%dI78~wyR*E{75 zBEl%@9;M?ru|4V_(N}ksom%VZoHz&ds1S zrR7r`i3@W%d23Ov_AXhUO2#eCRNfD*>Ms<@!b`QQ!rY0>Yeq&B8rew)Y&X@ z=XFhNzYf+wfOD2MiiFA~88|qsUFSnAcW=JCyin3CF7x2`nv|z%G3(!JRx%zKsR;A2 zQ{)6oo>Ij`wjGGlZK)l8=T7+k3u!EQrzRixV(dDa4_+~$QPe~%WMpI!F6A3sN+Dw7 z-9t3*K8@dzUSd9FedFp26P=ZjmPWXjoaKQ-lD1oYE%1uO)n{w_Q_Srwn&Y{&hO{ncG8=hYv^SPd5hWu%}n$$-^9BPC^7G1y8sW+Ut54)MNY zppNd-@#ebQpt8!g_Sza{X5YNx<;;O)83ieU(VA;(Z$r=&-@f#}oT3#^VP~x`V1UMs znBnabbA0Ew;l9MREZ+-g#*bCZlq$dew5{K(Vl|pIA`X{KQx5trva7q%lx546{N&NV z6(8qE{g1!S^VY|1pFI3nC`0!P^79in7#&cvq!mFJ%s8v-wH|-e$&%EVs^)9`I+uhOsxitv6U-qq@kJ`02zYA*F8wAINx)|3(SEG9jLa|tZw_X7- z3cy4loOG_c;9CV9<~QdrMPxF@l(W6BtJdUPBowY}neCG=`!41K!Zx6o@CL94<4P6h z9ZTHc9vT;|K*j6opjfp|Efn+m0U29+s7AZnisnh*cWbT^Wf`@-(Ppin>#%NhcS@5X z`dos2`Bj_waXACdQtT-2ibJmg8*#bkAA@v$J$Xbc1p9p$e*JeWFFKTk&_d2JG|}HZ z8D(e>-|BhQ&14HqWWro5@wKgq^cz|2bhv(L+{WKC_gzFNkK3j!Ke+ubLwm)(|Gl&k zsjidS_0N+TOUbK!O%SUP=&nf}e>u**>AE%FV1)~4pTU!__(FTD=AA3~ofASI{7Sd} zCZ1_zZRBVy*IQdl1^pdR(11)6ncUX6K9c`Y-j@QSzZA*;07@f};ccv50#}+dFpF`v z%{2?qMBPgbgfU$L>U+b}#eSxTB4*XQlizn+-QVE>ewX_IOnaECtz8eE0h@6dT`4!1^uxtlRpVa>mq{2R%{7^yo3rS~im;OVtyzQ`1_|8h5s1@3d-6x?y!IM;W1>MuT7o*Z2$UX>-2)^!IDR2ytGbaf8CZoLvj^WkFfG-PW)6Nx z=;hfNH=S<90@9?-fk;yjmGwIY9tC`(HNu~-Cq{08&7(Bd&fFfEH=Co=4Q%~5oc*dy zjjQ7@>ln22Vu1p3(@LV0J}XVHI53lD9`5d6xyA=0-__tkAnrvmHGy2r&d$yxWMELZ z*DQl>U=1c++*}cu6vUK2QrM3!%tesLo{0)sd&>-k-Xu}fRa(al4n0u?ybTfEv}XQ{ zjEws`!(67{K?f=`CugG#Ylg6BBtmi8FO&70XCy2O^b41Z4YX!!Shc168<=Q5boB8f zjSw!4Giss)zu#hYSs+g_3N-fFFQeN7g5*jncxvbrUCo>9IpRy1eZ_5`)c4Wp#!Jf; z@+Ol7xa)iNc7sWZ8rIt{X%G~7dtaM+3PjAwWwIP|D^VzFANPMC!7)TiNwySH%`a)C zN>Hb?hFjSHfZ~9nzWrnBfxf@w{n$I>h0-olmAcGc9I6rR9rZvKKL+JDHN&pw`3`<8 zEmi8$iyW?|OJ=d2Be$c@qoiOwK_B$Tc@;7YG?k}=C?*hW zFv#o#+)ySX#O3wmca@-VSp~P6B-r@|YU1UzTwtrHWh1vt(l>DNpH@j+WO~Ebn!C?= zOq9U;VxRAXuWbvg04GE%)jAMd>_&15@jeY>@^lS+{1FLZyB%;1uCU7m0B6Fx;NNHk zQyltJjvuppDl3hNNLj1gUC@!DRh%cXa%&F$YB74JFBfZVlLoaIzzB?>psnWGah}F+ zoz_I`%_HTbnl2z%=s*)?h~}EyvJNDlU1b>NVA^TO0gs1GKv<)i@ya>#R&%H z$}|5NeUKLd$*(04t-|G7<9}k@L5)i%HBTfJ$Xo$QH$|G42jnCWQC}fqjuu1<3y&%V z*Pec^_}${sBMSyVetjq2dQ-OGH~?FDvc1CPJtJ}QDta;Ti(X!+`)g!`yL9UpnQ%iF zgLl(B6kue-jkU3&3adwg&#rqF7N%sApLkvFP(VI)8X(uzJq&%?R<<(mp_fEki71{^ z^)yEu4$&8=_grSoF$Ec;SX+u})eO z3`8zG5X(WsDLyBSlbLHF1l?gB$I4QSgSQ=tx|5~eCQ^w0{Pcp9 z_I4|k9Jg}i=G?CZ<(p_wvd6JY8TQ2K-pyaNF2hm%y5>@k({9lYWo+iCo%Ya*#&_|M zWx73(BDz{B<+8JCl#~>u?RKxqprP3HGu236yqaeGcn6bYW4|I`;*O}3lwAIF^-Ik` z-`+dJ%W+DPPFQnj4be zPw7gR*{AE2_bcDB^x?Bv(Cl}Wu{iCK`?ba->~y^~`e>I^NXBJoP##p zTaKI#KRD5*e z`pGfpo(7!}JIC+WE^JQ;)1>-h0zZwJQ1T+}6R@_iga`5Y8WpTLl$TKT0!U{PdAQcJWpziGA&sx(ZtYsG47V(77g6J^bXI?<~*)D>wa6Z=^+@|Ff-~u$3szI{Ry;u zg#aKUA15D5Wu+i5X}=OURi_NPNSNls$J1cn6CqLgniC2PCt$sLum8ztKR2mBlO!gq z%EQA0vh`v6TVCqDzP?g9mE6nOfZLWY^P_J|KFkv~4eNWZSnl!b(_gD+Z@&({*{)}S zJw48(nks!mMRGwymp1!}-_oUwtXz;y6aEGInbRCA`V3ro-l5XZ2EyuiTv}Fm*-Rxk z-Y{WIReF1PUY^rj)*E*>8!4A>H@TIg!CjPv7H8&cv)wwQI_A#jID0$7+4pJG33{7k zG2O|c?fzqd-ydCg{Pv+d4iZJ}SzJauRk%m;d4ZLAD_-2Im(-zC2#gKcd<^ngXr0;^ z=8S1EFr4=EB9vjoU{}aYU<}*^IzZZ`*>|aJB^=cBOP#H^XkhLBsu!k|9CCz@4HY9DX>;EGxo7vJ zugWW^7!2=|x!v{)G&7EXK_UIjOWb!rC5F2xE&;t0a{%SKc^a(QJ4$J<}|)<^Qo%zqs5-#G9ylQQUiVs z@vs(M2N*AK>39>EiQE^Pp8q8O&^+0BBf$9FYz(qradSuHBd`|A&A=?@yyYvEPp^4a zL5dy-hW0j{FDHR@+`Uy{59iM-l>y7_YA53l*dfv5*2q8mc9<{pON}pdF(ib!-V)ws zw*U@fV*w5)e34IY9As&8-gN!l@m?Fhjq$E&%9j1crh z!Cni`7)jqr!Bg(3f0lkhQD-n6=NQE73KMryqgAhK7NOrSzjF~z_b)sWgpb5zrSB~eso4snHiK_4mXr%7E0y|U?80GBe^8GvM&ayK}C|BQutnn zv73ynr$Psqk`L_n0g~6UoILAxqb;ob{Xxu$s9ti;W)PnppJKM=+$>TE(imMW(Ccie zAMOo0IogxHWLHi5*Tc?h6NN;>(%Iw5A;;k&a^s6w9#usBi$6aMe*4qWw@O#^B$4P^ zVbHUaeTCG0x=-H1rMk^4FMc`4n-iiK_vI$})U9dAQuzGDn2WT)df9eZ0!d0V7WZ|j zN6kHD=kvXL?L4}w;=E`utKI5}FUyd*Q#>z|YwQR*mpGpDwd}dthnLo{Q;q?~wQkcX zCAA)9c8o;h^>T7!QrgtI62yIu_3mJn_@N|T;TvjoJ-?H`U*az%Oa6ME4p#YLcd4|m zqTnl3Y;xw!u~^PfeU&2G3L8W9=9O7ID81rV4E|!)eZjl&9^=G)MRcL%!wJmjEkT-B z@?h!|8C$Emc_27RsSOBVzqJX@Vwaz4blOf;M0*K_5fHw@wEjvp=A-%;hrM@_RA8KI z(Xi?&Eof}fPz%}{&p@#z3QQ;ev7n>Kx$A!kj@gNS*K9&ZDgH2UoDt&>;#zbcQ?y=P%`wnFC*A`Rl&0>9804bdzn`rSW>CKBE!+ zka~RAkk68K+u$DyfD(Ovbk$2`fJEPfXQW=cSCpeIKviK%1PXJ~t)UEwMHXa2;X~>- zzRwr=)2LcaivRi9cU~V1RO14kD$yTajOpn#!|wv#<@kf=axZ}q3?bE?)Q%nJ`1e9a zaSt!L!0E!3F9@r10enj|zyaRG*B$DUR+^x2Mtd^!91l8-{48^a<{G=In6o<+4L~40 zlJDRv*Rcwa-=Vd({Z%r&mpf;NO;;Hv3v!Ws*wm5_n^Z?iq%ZbJa-p(J4JfPigctp} z$m6dR@#GaIDnSkEijr<_+A;j;io*xQjjs8W2XRtbkKNi6{5pC02MSFLdQEXu@@u?K zpn(nsrZYpz-0<3?`JZx6Nmw`fa@>Zr2j<3x`p#fVTzYwNJ^}GD6}O-eR9ueJ{O~)% zFt4$&f%QNi$7Y%*l^m)CVft>(JOUeRp?DBuZ@gH~0997tbztWpmPOJXi-^004ow(T zMbd86uXJu7r%FVeKg(6^d?z6x0rXA59fU6iMO;1GR5*}am&PQ?$;vu%zBZ=mHW++h zdxElzh*0jP$H;mZ;CRT*6(^SWo(@LZ+~ZjIG==q&>Bxw!-X-T1Ls?%hmqagF8; zldy^FXo0v;esM85f9Tn{4~mc9d=zbL^Pbi;t@)S!5;T-*sQ!An!!JY?1Q$S$zRg+K zw?R_-4&=1pXyAklMSN@EjNJ)oW8K3f^8H`$PsM5oz8df>aHU^LeU~yKDFWT-W>SGtXuMn` z!)%jC3I#A)q4O}4Z@m}(UJDjjIo6BU_(U=lHd57ZYJ>ZDfOBM5Vm;E%)G zx_~+Uh8jE=j{^gqag&Di3&9Z;pcdpWbV2BG-Vaogp87vdRyVtWO85=gLJ6`oL|!mJ<6#i?6>$Ri-s znwkDyez4sXyP}wDZ_=hmE%4MSa=-)~5hb&0_snjIyTvLF`(yg9@`?W`v8$(9yw}7Atefp&8oeNni1Xo( zR`os-$JXQRr#E)QvTbJ;yysf@hv@svL#IVFX$76D8CkZpvZ`&gc`?aH zA_Qt9QaxOTv)o)5tH}*p94B3pINxzN@(Z6A>nkq`Z+_Hj*$Rk$(CfaKVbSRO--FMt zmZ;|RJ);?)6q&DOJ2yM&YcAZvz5D}@i@#Bk4^9B;@s*Zd5(GlY0y8;@OiA2A9>zxj zQx(^qDj8&#gu41#RseD30EN{+oS^M1KNtcE#)#l#!?8xI;`4H=mfG&vK__8{^F#tH z0roaxlfjdnXwQc?kifePfWo|>u=|twEekS2)kG*DibihaixP9jNl$|Gc-V_O*$P3U z-4T^{rzkaghw*rdIR2^o3r668m#V)Kefa#K=$<;{UVvKGw_hbT_~D=j3_8X{x^cQF zh-%WpK*|%6xg_m;P;;?6&Tm(gb;fs7^xEQoUF^3$h7;nleLFxJ%eO5Wa`n#W8ybKG z2+43U6p5V1wvy4)M+fJPE!bx|s%K1mUk)+_8@6xB!`MhV&5m z&>*wRDlHxHFSu?ytmx1wp;;?V`qNItO@(f|h1o26XWb_lbzYd}fYdP+B{!8+21$}r z3_%it*DGOCYX8sV{(^+%jhWreo;MpMKk8e<%+0~~Iu0xsI=fBHBa7jc2{B3;IoJm< zrD-|>q&h4nMv3qib_dBrh$=UN%{%e&BRBpeb5fheyD!F#aMXsT!D$JQIb5)LL?KE- zP359~in>1{Fd37VQgR=Wn@XHYoL?6uka7mWO?dNCFGsBI8t58)oC#k8gQS^X7Gm4l z+E%FGKO#1ib|k8VO&>0ERK(H2KRgTmy4@0d9LciyKJ`G|tE0a?;y3!H%UjT0vO{ew zJp7@2+vs_9;?wDXxt5EGMcjm_82B0i!3~%IW>kyoH3>538gyD0>J0K!oE0`HPiXgrThL>k2R21Prd#2#`WvvNc)pi%M`sAu|%X_{;ao2ZK!De z0w=F#$3fSKZiI#D!H~Sm)VwV8if+>#5J$*xK?hOijsnPI8Oi9?ap7>nWIu{!AwNmVD~!Na56 zP;UGF(^!!UouY5%059d?;dhKJsQU#Gc~`Qwni^gC86JYw? z<*Z&lbbcV!q&AY49)F`wd-Oi#R?IIJpEQBNt^&}km}rK#wzVaYn`1<=FOVs3jn-SFoYkhn@VJuh$=s(1!#JlYWI6ZHycMs zE8tTNj&vQ{IwrYrGcm&NQkqE1M@%Fff`lk;B0PfQB^>Edk>8zor4CLbBw6QHH9BqOgxXrT&9Yz2N4@RHS&zlz_tU?^FOHvu$ zfPW5=0AGCQ?s7abbKr#E;g^xO;aD?G*a#c$MbRINRX4z+XPIyWDeC{DIT&e72X7yM zr`qXWM`rSY3q;{hL-)<1*Z>A?e`$&reJJVhdwIMTpdH=gD5|eM%LrXIw=5p2)+|RY zRQYv?Y|K(iV%|+pLyaY%3nWh>>2V2kwX{^Y9n+IUd=Rl|nqW~GZnS!5XXhUm^+CsGLJD(%LSa`x79sDfmSw#CS8aoZ%ZL1XG#cRIz^ z3pzG_etrP~0Y*kNwK0EmgRw3uPrJG}s?Ph)o;mO7KAg=Z=}bgQ4T9u?Q;sp9`y^MB zGZhjtx;!}2(OtQ$f-28|P(_)-URc=im^^Lz_3L{vF5Zm~9$akEi3!qWT`%;zB}XTK zk*%xaUpJUmWf)-7`sfZZJ<9JBg#$(C`-8yaTA)etP5^7@Mc`AVFaz!vi zk^Q6;w?7R~3rR~qZP9yFj~@5d%yYcp52}c)Y%VIQw%Dbc>L}T~ZUqM}Q@r*Gltndv zNprJkCIA0l^w$du-Mo?)W41m%b(Qh%Yux2+ay;gs7No`R!}jh9^Lg^~OEzJ~2QggRx=}8SB_+{|ITIM_Td2N^;0=m5mm;smC z(2+BvO^0H3?X)y?yw?$&x+R0eoGoQ%WwA5d`#>H;#n8a zYdS*15POTi7`=0zKDGqU-HJa{i?v}tfriPb)Lx_8?ds@YiKfXd*Q`ZCOy?SpQ$22P zD0~y)d2$fKJ&?(67WH)@AtA;3jrOq63{1Wg{@ zGB_1dASA5UgaOeZ#E8R@Wqp)WC#pOFk}Jye9dv|64{^FK0>_bx4wF_ou#}iooFXi; zk~V-|g+v0-EqIaOhW{ifUBGYold3CM!SyxaWV^-MTl zA`U|SMA&EKh?CE3U zz-<6o9oJhag#(`(4?ee)@MYYSKpx|t1mJ^pAd!n($9U==v3f%y69Rt&5B@}F_9p~% zGzbd((QpTc)C&IKd?|SF;pfZ|5cqhdI1!g_jmHI$)g^dbsKauBBn6gBZhui24vEmB zcqGz7D25irqxdJpcsbbh9#StJ0LFuKJox^vrqH-s1FGsa?$!YK;7%d%ad#T4iC0yc zJC({1_}t1k5Sci2_2^>LF5*;`$bNtMM~E@-HksQbv2PrXz99XFqpveK>Vr^&qdsmy zJZcP|rMlAswO@cojdjR{yGX*9_)C0w-vA<0S_1rK$Ubr|2LCt!+bIDx!6e6szkQ%9 z0r+$TMS3afH}NF3zVK%^3*7!H5(oZ^ZyZkyVS0pk{g-N3iGhe;2v7X?7xY?F)xq|V z{ws*=djb)^9R7l*8cC1zVMzQ%A-LTj%1BYy!Tl(~mvNStFh2u_Q}dr~8cRUL>i``K zaUxsv7ePWdNP6U8^EH^>5Q7)dczmxv`RK`vz|!E!t*rDuKXe!_{9&S046{?zSMi5g zjWLDp38ju_ed07Su*yHA$USdm2(f+&xKm&QztApZO;Ml2L+=(%fRmDGfQZ0v43B(f zyz@{j_Pm8l*(w;GY7DJ?fZzBLG zE^6hsf&I7%o$xxG4Mgi_R(2$?jQYvI}88{knl!KRuzDW7KhTT88WaPidzK_ zyvkZl5j+nsO)SrI7-&Pl^WcFWkf_i_aR=b{TRckNhk!T4@29wTE|P~(7%$p{`wZJ~ z`{Bjca~-hAXUK%*!F;7xCkL;oL$*EyASTxBBGOn9zvj9f*=`;n{4KowwiTWrP8XXC zln{VHuTjej5?}nlivnbkZ)`bbhBLPTH#OqSZ9w=iJmJ$d5*+EkobhZZz2X)O_DhK& z!eQ;2`miZD8!#=wRSbVkfK0m_PCS5|Ki^)4jga6O?M~K1Uhv==UY3kH-G0r7%#p|8 zOd{aqVmN?FND#kY$x(4PZEPO?2J;-NY@q$l;3!Seo)0Xti`Qy=jHKb%hKsPZ*DLUX?wvt9;* z3wToy#qht)m&=ErrNG~kMNjipu!jiVKdnpfiBYAC1x^Jd4ljpV--WJsSsf>1*(Z0- zg0lgO0zkNP0l3{U@Jhg0fSMj8E1#o}ZNd93BM&P!;ow0Tp11Qs6uLBby z#jROaA{tu?ST_e)zL0{6%x(rOfyTq|GFXU800=c;Q9+Iw-4{LJ9j4*U3x+y}SqZR5 zK3;2?_n%YeN>#s%Ka9ZhdYp(2#PcBaXIwY|4qFh9A0j@y?K2d z@I)*-UiT<&$rPhtKk-6zy`jgG2JE-~4-1+)ykSD-(BY|qZp%y`66t4fKn$lti$GpD zFg#QVDj}jram(O-V`8zg;3Le(Q=0iizPb@mJy=d0LPxu`XORdYMH~!`YZvlJfK6ts ziKiH{V15IB!WWS1rL&ecE$Mq3?4gIhT#*&l@@y2h0PZkM^!64&pvS-!@H|L*UHKvq z0C)(W8{$}S6HiT>JVxWFa$h{9wQPD`06d{ijb~5x5EcU@;Z3~!`T5S_aWdEsjc37; znx;((gbpABKo$CAA+>;dW8i0SKzzIiEmDTRz_K$YkPU#OWx@THPAMiz7dwK#2ayfE z@+$C}D_#w{E%Ewd;CbwLmOyjp#RJ3$@!(}l!n53mbg|BOdGO*3(-VO0|3i>~2a`@F zSqG4&4r9k*t%T@8DKPrgaS$rn3xe%vV|M{wmbX#VVTa(@<<1D&C;N8;{4|<>%E;FZ zo~^SQ{H%bxFku)wLV*v{dS9*;yk{mrD4=zXo7QCPUM!?Qz?JrD_R2p76;49Z;5b0S zE=jHC(+GcRz(R}<9)Ux@KTBn=-Nq4z6awDy*xSMhGK9bbbQ-;Eu^cFgF28UfcvIAM zd1-fju8iuxS7HT01)Ryn>czjpjV|DW_Q$=0+qXkA1|?y+py7f)1s=hi1R!u>btU)z z(dVjZVT=1up7O7HnS{|vC+R`(Lm+KQd!*wotrBi!5;hCzBw+j@QrK6MBES@*QX0d< zZ|}Q0_21qA!HyL5A^36A^3HiwcJ}G(VOAr~(Wx_!?TxSHoKAB6?KXd4#2-nX(x2mO z@paMHBtj11cstcu*_ zwJxq~NcKJZv#j{suQ~^7myv^-N+W{Tj3#5g@8$32aXPGvfdC9}lm>aws|z2N{$9&% zUQKn!%r-}T%Q@(x$vqvecBqT`&VpGwS_nA#f~A>1$+|&#@`8u0=ZVCr)oV?#sWYY}lj`0!kh z_4Ch*;iToq^jxPE?^>(O?WgaPoh)w!WS=&OpFYBBV&jU%<=2)KCDg5El2x#zG|#miMyyY?F+e+LYA;qTE#K!$;rkk_59`D z*P+gCSF$GGUq2db8{I&(M@5dE3KO1wh(0pPJ{|5sX0GR}m7P|ZV4?VdTSg2EzZml1 zrP|+wpVb#BPSGRDY6;d#5mixZ16Xo_>a6+#N&8(zVTUKX0X*5<@#VWkM$vj7$<_?o z+`k(AU6wx1F{?iHT`W^Rej({;aYt))v#Pu43Wc@#s?^lmkImyVx4GLi)}3D+{5?@} z3_1+dHP(8!TCI9rz&YnN`ecPtqDnTjI-P4&l2gg| zU5kw?&|R_5dA2`tozDJ$g(N z8v*HtNr!Z|ba$RHeV(=UT5IpM_TJ~5-}}C2pD%ox-18n|-f><3y6Q~af6m{WW{jz3 zc+(bqQ})9cWK;Iftu_=pl_Er!ZZ@^Ye9jOM7lloJjiG_%ah`m3tm>>-h(gDErQ30P z$d?=5MHSva#1)42Icm3Zx#!P@xI*<8#776p~I?( zYrl+MY`hO&FuWx8?a33z!ER&{UZ1sb;- z6HYZ3IABj)XG+Sn(Yi^RBbiR{h3KV=PSWp=72b*&VtxI#F7{drr??hVuX8s7B!D* zr4wZ?URMk(H$Rm=Gfit1R}5<9*46bHL5Xf9KgW7{hMiBrJ^c?Kpmjny^8vrpBiB`K#*GmD{s z!BJv`7?%IJu;3YV@!$g6a~=C#is-C&eIScZohV7y(js~RO34rFkp9xYvp;kqa8-z8p=~Oshpl{5T%%7MJ zMaH3DL&zSl8Zher?h^#L(ITMld^t3!z@00|i_816%vKMtPrH{W*xR@*F8L?kqX2t9(dmJ55EQuWbT-kx9I*1%3ou=jkRyW@ z*xT_Q_)HPy4+ik!1D!Vxc+w*^XEIXD#e=U`Hg5cB4nA|}1s9}6?&8gj;~gmqKAu?{ z-T^C!hQVi|?aqb(@PmpZzH&H-@!cD&v0DUu=Gj#ezeBj@rP z5q8WV5lZW}!gnpfr}kINT8z=#u0lU>8CbP0+C&PdA;EkhrLS;vKER&N1y~D?-*}AI zs*(Qq4>=ate~|p$e=yQhpH)`Xvs?#iL|8jjKOAT=W+?%#nyl;(W~Qo6+=EKxjufg9bz0!!^D%xPy&4R=|hA`N>@D7r{c~|9CeZL z(MBPHc^;XANid3@QAsr!Z1tH3y85gV7_iAXbtAJ!DX++k?o-ez6&9}s6S1O9Dq@PWs+S>6q8SI{Szw{-3W_w@&2>ltgR(cG||A=mZEdt(g?j5 zDnby#6~`1&lPb!>!jdP3_YmslPu6kXt%(v>n2P?>gY32McJqDgx1*z@@sf3>PzJ4i zsnJV~xseg1871^AEu`zeE?sWd{%@B40EgB(S1(VcofCH@NfQnq>f%h3W(*p#y_@t? z$}|Cpmsj+tYo}_^hLnj3eUR2tE2gNkmaz_~w{#@LBuX!wPSuX|jE z+C3hkMX-jCU&<&%9Y9Rgo4(FQkIodl3Px?3_~d!Zuh-$D;2zOnd5J5Lvc!EyBRL05e-qRFpEBmQcjmKe7!39Nq_Yv(zoFD zj;R#*Mf+pwh*5KzROc2tMfW_}daqnn78lkUj>TM6aD623EAUwDuxVgJC_=}7EQlRebM~ZeQb;=& zO>Hi1W=s5hP02z!N-6wZve8h_bfraW4P)8!yb>OLVSvmGv(98+BHXwwlb+EvI0X>Zigr1HJoKT(~9<$7k0L-R4hVE zgAFEU{JNt@YlUEA<5nR*hnA}0m|CkcKi)5+dLM<&h&{ZlN#5t7Y`;123TN3c;I!fJ zFiD1)$I@<$Y|ioGnwVh!F&_JLKDV%h^!&H>klJU7`BMlSujE{E&yMSy>u&d(Zw6BM zl6o=U$0w+BBRoFuQmnWMG7LCt7#p2*y>i&PC?8O|+5h(GMO7d2EUSUCf(VvW`UGY6 zipBOsDJ3n`K)O?hhK#F(SVD!D{l~%vN;M6b#>fH2#;HfND5N^JMg}^AyU&b?x>$YE z0$Hkn--g;4J%Cd*N)rVR{=*A}3Nx=!zgF^xK|7jjMckuV=(GOFpF-;Wrz9g*bDo2F zt;~+VVW=MUz{o*P)vPvMu{@HE>`4yqC_X-&qwd1g&-w)0wca7odUV}Axtz!tI2TmS zG&|k)B1&&AXlT5Q&rYeKDLJd&k)ijXPQ~QK`?wvTF=2bWa75Vw zY8irlH;}TfQ$OUbSYkV$oXxHnz>23+uHR@HXAEh&W;~~=F*X^+*2&3#Rpwb`l;XY? zu&$De%wGPocjeP0=`g!HPet>?8D@=09aUpn<$RjRKZ0WA&n3oz7f5JBbzt?X#)418*8s}5_PoqM(wH4Kk1hr;8Wp4c8HUHUC7s4Uvt(YFeVDDW2da<>Z(kEt zdsBi#N-C!?g2PnO2wZ**sj@ln+KH))2PqFvL>;zrmF2fAm_pdoXP)T+y|+`G()6fb z6?y=Fsvw*`2)NI3HhyIHAlwh`bqTKAt8xO}9(f{WtWVxAgOh!Fu{I^kwR1)b9*;nL z5`JzD5~Ke9&0Cimv{Ia$6iH4VBe7dm$EYDps0W;w?~qM?PByFCuwL1J6;CZV@lwU}yxZTnZJOe4T}*?A0hcN{pYc1gAJ-P!26SqD-)0#6WP-P4qcK^LxHGmr^AC-zNbBP zIh#>!x0`vt9If{1Tn@$xc{V|Aw8yd6yUHon!-O~Kx6o#(Ux{;dCnyh@jakg{9V?Ug zY_~!ap<_yWW)?5J86DfggtzavCFq*9MMg_3vlzOSgDb;6??55WOx4(0IkAX}jDi85 z;)4|&-PMpL4^emDG|PGduiVXj4~N+s|2@Aab&&m?G)xezYQzG#*o-BAcXG41klPwfI zrGH{OBoQP0^;BeEU*Ea2j|xDzi&@q2c#(?SM+d$>clfbZO;%;;kYZJH)H-(EV4eAB zxwhz7|JASUc>Ll9E&{kxO{=;&hf1N9KI_jEVrYd_)pFoYBQz@*i=_Nw*%0<-`EA^Y z(^6A^9z}!O4qo1S`(6s22J6!b)fWRvFNTkonzO4s?>bH#MmOHJmEN(CkR#%sw%=2! zs7mrxHsC&wgKaLM8DY>gKmWqSueTKKO83jEEE|f{t-TUwiyKCd&s_iyvz+1shP}{mnMW9MM=&N%rvNi`pqfO}>EBH}| zUsLCkwOnYYY^qVK6?`P{_-fOxwVhKV-lirqLhq%LA|1H$(X04vR0cwiX27JcsIE!_|0)ObRVRM%i6z4DeK|4nME z(FjwLsypIrvi9^et9DZ^zWwOH&deu?LX19E>fj;kvwjOJmclvpx+Y;pHTZ724?ZO4 zW=Djgfxq(F?hRRf(Rj4=jhb4(crIdWQ#@{dN7kV3$FfwM73ozP1&2)>?STc_z2bTgh0xnFwFpk*12<}ObwguYzSln6$)B>r+&CA6 zr?~J5@P%qO+Q`SM3wF8QS3$ESkF$5Av?{Lv2}h?3W|!El7H>r;#p84xXW0_7C68cS4yQJwe2nYrUO zJmWG=6ozo2aZuA##TLCc)%XD^0&=ye999!(j+g$emz+o*%PB8CO0Fu3C{9kPBj$o) z?#v5O>kXfLG+GY%s1oQ9=SR$2y4Y_UJe^WPEg)IqcELfU9Qa0G{$Z!b`=-hi+ddP! zKu&KT<*dnxS)+K&LuR@he_WZNLBIDH-6+wC+&_MT`z>0tBXc&|RChGXT)Y!i62y2u zNV*-n-b|X8)R}QBj^`U6?n{|LIGmQTRIoZ>Y>DFjKeMh6`leoGq6}r}E^Mi0e zho42DR(K9e=v2HK^n_;|%@M?~{vJ@XBK^4Y4gyyr7q&8LsyiMh9qqQ+B6wHIQ>?mm zb`7}Z{9vZUpk5JrfbfwLxLHOED@h;go0F;-H972yQ3RMdsB_q$p6$G})7y)$%363k zy4UKICUYDg2p&euxuYg2&Si^jN&K$oOF@WUPfWMX^Z1l#j14j7o81RAjQ8>`sl+K& z-W+72ClASSa#FeYlnJdWF!i!$?HS|8uoK(8%Tuk`cr<+AUA8ZOqvAZsWt)Ay-vE|e zi^xiVx{YQi6sp0U6UT=OkH5X)Ubz{Nt@ESYlOUF#e6(4Ywjzm-#dXEU67?n1aR-Uj zkI0TF>bT>E7o6v`yW9qOMEvMGl^Asx zsLZ8X^Aat>aIGV~SD{#`bIHfI4xh@!_ zJPTh7m8w-?Val(p#vfwiJ!)C>btHAZuY0}su1AXA)y1+)F<+>vHEl}!N046TG&wJm z3Iux78`pLpAh5`Q)PuZ6@(tZ(2%y(2_3+Mk;*h(_N$%A4nemn%aX>o{PbRKKXyg5X zR)x9+uk_}7tM<31%u@FDI->%e9Qm)|uvc2hUY-rjO=Zgbz-QkfT74K)vWgx&@}5kV zbp0pYMAN6vr+OT(#GU#&Y_s&nhmlo%Yn$xwSeu0upgA0^qVpwu;$9m_`87+Wa0bnnPDlpIohuAwEr#e+HQOJ44DcRdXKY_vis`dOK ztzuULs{WE@GHUAn0PTc^mtz_98NWyQc|wA^J~`XL3)nWjA#YTJ=@}^n0oYLVcVNRW z_#D2w^{Zp-ec2YL7lN@H7>CsAi!b$-PQ(iUieqvkmhT$DB0f>b2q}l`1ZlD3me)%v zz(5=wT^qH?*8ml(8{+y~#AWd-oc|5BlMV{g`2<3qC!b;j4f?%bNccT8rJqHfmN!rF zBh?PP2no>|O5^CyjXV93UpvsjuDN-d+bHY(-6GIbuy?az4gytA6MUp)w%T5%P>JGRhpAF zNmhE8(gsY^)+x~w%A*NXt>%8@5fu>W<5wS=KsR)sjjOGczKjO;g^Sj-khK;*5}n~K zVM#h-nutiEbQSmbXYV9Qsn7gbZ|6Nr*6(iGE~f@Qm?m7k=V+u0g?oXk9fUP|ux+{b zJT3rWOYP2r9cA8v>RyzIzrUEnxVMR~0(Y}eU#Z+l{US#`V_)~!33WAwMboZ8y}^xF z2R{4|gtsl9h$@6>knmWNa=ypWu?&k$tufAU;=2a(st&Ra!R)yOi@iKg;5b1?jfVQi4Qkz^LK00VH}8WciGb?01eH~{=^Fy0 z&B>-Rfa<6D*3Ss6kKe|iHDSzOAsgrWIwAVcFgtCj$jD&sb^=v+SN+eyK}v%LNoz?r zA%w$^fis=4w^i{ZSW%p=X$OP|>x1gL=X+cO9(Q+Fn?w}O>p~tJuNQiH1WmqO* zgp8p?->5crYo=!3^EZD3@W~vAckAK{va1`Ee~tGC81(4%FJLUrv zlAnJ}5A%&IDT{+|YC~Il-CGV4R!l7{q9b>AEv1u8SxQ)=j|sRQ$i3^SxcJVO2`#K{sSXu(Vk^56WvfNPBM9CC zY`ZyDI|6>{jg@c>-~Ztd(HBY^R>#I}t9Z)&!xJ#pIqoULVHrsUYB4L8Cp=pTp&Ew?mO#r*2>p=MLpCPN zGc!=QX}TEcQHWm7Qf71{aG7VxBtFJaP`h_*sfNdHrJXNt@n(gKskTrrs6y;*8}njB zN1#m)9Hp0xSe^=INrLqRB2B4#&&+7n6lYp(NmE2=l^md^NC|*7BXqUD>kEBwQ zLeB)fQxoPUY|{Zjs$n9>x>g(=#WnL7|X-6|5$Yvp>h0 zH7Rtex$6|I*3dRX6R^0}$79)WDoNk?&R6hPg+o~&=cnz67ZNMN2+HIJU3k3A)B4wu z@^E4W(1mJw={3FZKCl?O5is&-3ksnrMMNDa+8kzF5fa`fWm*y9r8EqE9C?&y;|eg9Hh_qjZl+oqK?5NvZ_5%k5=H!XKQ>V&F=;(Qz=fX|Ry5G}Dw$ z=w;pMN9t_75u=2scFb5F9lkd3*M7BE_bXYpH_l`CTL+#!tx!2%krwkTadmd3JL^^H z^GQM=m2T(wH6^|>Ori;-nt)&Y7&MdA2w~Evrti?LvEJpdeRb2+nH62cDxvOCSYMbK zM7lfkHGJ0cNPK1HJZe%MuezJqY~u;8IJWn>$Zm9Oar8RT&yQvo(Ncwu^EX&s$*-K3 zyu;le{IqkLTE)IwI2+(jim~Zc0U8kIz?!G?Adl!d*AYI))2fP` zsYod;i^d2~>VSBji(RL~()!vep5&b912X>~ilm0_x7pj>LD11{=bFlz?(Hyl*JRPO zn6EEXG%J=r_L(j9VxT5Z9^7=`UsYsk;nUh|U|IlC5F@HL;1@CLQuDV1XQ0?_3zH_5 z^FKVk9Zjt^UTifYIO9`5l23A7bvZ*pxiW*Uy!L*A!0fWT`re zt-JeUX4F}^R&PEzue>iikp#;W9WUUNzjp5;FPXbpm#f9iGJC&b&*V#|I@E5h%z4s1-A*riVo2rN5Z+xl?f2++}!GdRKmSy7QA>_qmNz z%G-MKd;zyr;iH{o9?xr)ar2X5$tViQ>xcIRTnK4Nbu5g!pr;~54=0rz+m&`Cl&hzU zzkcnb`hDBnAvP$a>)HhruR1l)G)2j67lXb;(sh>j;#9?8Wle&!*wEHCG=<%fDHsTwXm8pZ*kw(pIp$ zrHvr6dr83T6SYL-beRy^NeBcOo(oF0%U!a!2lPtY#YC)^6W_yi%=m-%DERl;Sv;NE ziL%_zUuWyQ{KR--kNWB+SG~bZD!t^!KuV$)s?X3#Wcv}8uBY`qM&;u@Tdo%uzW%&M z{%{LVp+|zc9wJzp%T0aB^V;@ZaSr7*dILo}JF!nw_eHc%Z27A6f9?3M5kZhUr|WH} zHKp>c?9VFqPEO}Uc`u1>oQjSe2fqoeJR%_pz^2$G+4;#dB8u@S^B$f92}K{Al!=im zwW@U6haLCzJ9%# z@8-7Ld_6Bs1m6^=8nD5vU@+7uZd<+<38p~zYYCy2Inlnz_b73XmL~8gAtJq%b=J=# z#cdapFj+V3slG*q;EH!)$mcfzpFZ7V*qPbrpHD!1^(=#Ox}zg|i27r|Y|XG) z;e9!e)XVsq*IZ6(r5kPDzZ?bZt>??1(FB-K%sDM%TD4zCf#+STAx15jQ3e+ByvAyN zP8$HKCvRNO%4L%T#{H`KuGv@HZ3UbMPd2j2ts319hA%`5()MQSUtg)>H{?m?uwhd3 z79d&- zy0o+ZIsmJEZ|1+z2fBQSYX+V?6$GX$r+08AEnA3VMcU?h70jrSKm^$KHONd5-AqCP zsXR?A@pTIk4gsvO`D#@h#2RB`FNaqmB%on%`bJZeWV^YC$U4{SGf1^oZs%M)#kzDy zCawQMhp^vr=HWfLNjWD-#e*?dqpYatd-ZXmMBiqQlan(rt{Cqto^FJf8-hsD@?q%b zi`&t=lj`7Kx@OKB$6{G-4>t~NuNBmBc;x~!0CxA%KU?KbFp8{9Y*%jQ=>s2>6^8;= zdg_425WW(}>}syveeYl4Wc=@MCIgR=lRxH69k};4>T4^z{yJa$l`>sHmK11OPlKAQ zc$Q9l6@UUYMklOSK>=T8pL zTQ`<~$ZFePjKxQwLApnd#?JuDkN@#;S>*0B0TY{A2B|Oe5AO%Ue{GfIi)7+XnH~$B zrm83_6R44j$|{COf5HGRQdHtrRCMJn^9vA=D0HfXI1EO7332;Ori&zEAjlyx0~VSH zpRPi&kNXN?`f&9;uq;g?Qn%>12I&OOCr=?;9t58Em3iljuYUs6u*v&u#&%#^)*WxUt9#%; zs<7`O1=5-m$~5D+J!bPV>vQhgg3d)>zsLad*ntd@cDLvUr6u4Esn^yz<>WBYcGQ0d zaBYK__cb>yQcf=j!~jF9(6hl~Rqsup{PN(l=aZqZpMFoYY&P10wCwFqK&B}?)~gpf zYU;gkdIm^GR0>Z!sa}8jURfzw^Y_|>&3qR2F})(eO`k^<-@oUOEAKLGvvsJ>J!|@a zO!>!V>U~1Z-rU@jrkmq5dhqo8o0&U{m6;iWWge2^Qv?sB@;5=hMJfzuFYwZ;;}~+2 z%qk~|?xErRP-0Wg2d1&Zeikouqxw3C97ma0)0v07Ys6rRxL{NFX8m%0+wr&Zat>}t zYldO$ISUCA+q@c{NYM&t0Z?LzAs8F>?Vsu1uCUSgsXriFqt$;`Is?42(sEpE_mUi2 zC=EP}s0aw;-!mQ*l4QwCg};l8=3)_g0ev`1+yQ5WpQY>K&=!cBuTprJTqgP5v@i$# zr&ER7=16YYTdJ%;m?ofL*Cz%qn0z& zs0uOT@71qr7<8dV16mzuE7nX~%I3Q-fqKN-4Nqiusb~D01s`c&tN_^kRtUf!B!R0e ze0rOQ#0QGnCuAC zA7ym6KGdtmH^LT#lWKkuYZ}M169+l+$F-J;V}p0G9;ugI>;v57o2EmoRUNSwo@_J2 z^h_7#Bidk{xk?L?F=a@*ynj77#fM zr1h&J7}kwgu+ZAHyU{-g(mMT+7s&EhYNdqsGp3E?9BdMwun%*G-8R>-JYpimC>q}v zBiS-S-Vg+r0xtFo@)Krc7ar!IH~{eER8k)%M9->}v`x{_8^lT^(99`BQV;tKbe|nIzgD`wypa$xMz#M|$@GGY3H>La zTow7*<$pI?v-!Lx{iGHniTfv5{*0#Rsg5OFSlYhWk5k?hFrYc@5&hhzykc>zlVsLi z+Jm^(Uq$!lTfkOEq|t8;bZsoY6E_mZ86*OH+a1Gp=Gl4QY#9N@R`(EU~HNsO53<2 zs|dqEbZ-HUd4*F1YIvK0Z~Se5gi9e284!?)oXbu!P(hfUI)m2u=`C^9Tk6=k2}xjZ zvB3$HSSh)0;?eVIK&b#E5=o!+-Tsylx8X)i@6^tFJXj8M-lB3pT%W@ZyTf#=&u%y> zWYGv@)8REFglSisgef0GT2qRaol%d>k*STPFyL7s9DK2+fa<~%S?FF3PW8v57GEhS z4T8CRg{gtUmMTjKu@R_V0Z%}Q=4RX4YOccUalS`>d{cB;+t{WK6`Z)96`>}w=}mtK z*b+hnw8w|8gI{wTrK#hGP#Wp{p}Z^3zf(};=Fr|h@K2=QG;27;?vYJ;e%KuvrfOxk z;K_YpIZ5I~by6X9o(+2XhC#dcR--keQg@vl%Ct6PPHoKK$hbIzI3m=lbB37pK*J0C zTAZJS@46dZOD?1l9lqK%y0peZwX2;@hc7x>xs)TA1^yry#2Nnu!N7?Gfqr|i0<(O1 zABqZQFwD3)ZTMQvxE0D$J2q@QrL&VO)1s!BryWoAOCo&$9UCi9bY{6uNuegE|Di`=%w;EaQ`0`rf**3 z1Zg>kbN%)%N8t=I+`A!!)Y=?edlFx5Jsh&Gb80|GFvYJ1p&AQGQ)nk+YF+zh$GJt6H(iUOcd3q<}?hRo{0YVF;HVT!E?)KjAIJh)Od*gOz&|#~2Ob&b!THo1yzPWq*DewSofv`-17NAuzy`_$QD=pm@HTG9TS zIQEzx52vKeWe+BZ-Pqn90neLQg^1r)U=Upsnr{7*)+VfxLc%nh)Yy+LIKA~N(7nd+ zf$(wkJQUHiqqh%5dc&DB)2Z*t&^6e%a++mZC6qs|Hb(wR&x9qGcjOfTYWJ6KgMVds! zX;LWZfA?rjhR=A#O&>`M|FN_eIjQ}gqEoqVjRI~--RtUc$bMh$6exVjdtP>>$5vTP zf3jCL`lzID)si=t?ZrzI5TqDAKn`C@Ds}{lUrv4A^~8#(xQ2zOKkg(q&I$__liwDG zA83Ac&Rm}ffiL5KF{n?__5T*AZyl}$71VxE3OK{WG5!#W^J|znm>40S;*xZiZ^nIb z@A50o|AD9x(6YJ@}cAKlZH87Rm2BXPZCp ze~D&NdW+)(riW2}cy`aofmt#m%kd3Q6X#>M7l!2=mQP<|nM!f<@GSpA|3h*09*r7; zLHxZOclx?QER1w6<@C+l8&Hj$QxDpl-rsGG;Hedrr?Oe3$Nu78j!1|E?xfYNw=Vvm z?6b@M`?BvpK>mlojY9P7y$Q{y6SCg>nRbxh#&=63%lX}A{)dOg;|z=qtINsYd;fFM?DySS1`IHME(*l7}NNY;_*hjk{uGP zzVN?4H5o_+HGJ}<9wR&fh-$29yj-GrUeyIN*mL&KTj-MbHh)6Ep_37Dad31zGzsm>uoY*53opj@0n4(i( z7!e>rT2^~IJXW)HlQ-Sw+DSkR4~a4Mi#)KTHzq5k_1*_ewk=`g|O3Bbbkg zP!<*z2FkW)G&bE0Y=P!e(rT+JV^IZu-(#U&$b+M!{*5n28gHb(;-2K<>=jRf&J+kS zmbD_lVZ?a1@VrHUYbzMeP^ij5s0BCV$#+Q@#>hO<5^F=P zaFCwRyu?(e``}sbGz0*|A6I01=WU&LXtk2x>q78_M6ih1bOzF}9TDlOGY>4uO89!C z7j+A=rQ;3WPA*ckAB^uZbk5f;Q?#5AssTB~Z49tKUy@(1Vs%$wC>7q5GC13v1!#xZ zC6DJ3&*~1N0+#c<3aLuk(%$Xv-X;Z+H=67_7^W(v?*|sCQ&D-+%6S8U){;dl-kG;Nv`Z;dxPXar(){4S0O-fF<^U~1t+_;zTWhtARr7_QM$o^ z>mW}_5#E)9qIlq9$*tS7r}lRuS#G@UX{5Z_vGQ~U00CoA|Di>@KEdXa1sCOqJfu4n zmOUQQ=hmqWz60iQd+N$9NVwwnyz%I4LPJB@>3eD5azY6?#R+J)D;X2uWBOs3eO%yV z3=tG%@{72wPIu`4cpiIHNCct* z1J-734?+|BM)s4p0RV*lqi&YVp*WcW;+t>4gc? z*>xzq?2!};-|?P)*29GtXi`R$l#`OAj>F{tEuP5nS_MFmo2!glX;i*%q!;Gp5MDX! z42hK-^62awGWv5DdMTs@pS>G|asr$>Z(;6N`X_l=Sty!8Y@1!Laz1?m<``uk#U%{9 zhyejeYlzlzm*J}9gwORM9`Awm_f8A~dhkc%xI>QUx zUVA)jI&m7(E~F%7sdD{-mi~I>d=-7ZuQ|`A+ozZkBJf6Y5!TdMjC?>wm*5jT-Wd@f zZ2uzRv=uW{u(yWPsS^wU({6GNxGl|bvk}MGb{J4<TS`)|ALPa|3zY>r;+s+g^h1geDuz`^-tj2>B*G%a`<{>?xe^u$)i*!2-7X<_%o~9 zZ7aoPD^WO^XytCxoNQl0?z4Aa8KR(zrO30Y+yMSLQh+3ihiNo`Ve=oHzO43ul6O`y zKpt*9TK&!N#Df677Dh26kK-XR`5d!1f?(%dwo5xHSzR(;gh1YC%5l9fvAawrASMqI z1i@I;kX9DocxQMatJh3hwY>0+)yF0Y72^ooQt~GNY2K`jMH~@#G|1srTmKUb6+EHw zek^@O@P*Qq4cSl8-rhb7&+5^$dqmd?6%8>oO$a>7K2M0y>;Ab0$15go+FR)rOoFpU zYG;ClXD0d=Ao&s>9ZgMr7IpPcFjPQfS1Q~Mci>wKQJP7DAfcA!IxAN5%x&@PUB2e6 zvm)^kkA0yWb-;XhAhs7;QrM(MYIbZ5ZJoL`Z?A7!_xe!A$;Qyh*0^E4V7|Hb^^1ve zlW=1?_{~5WOL0vgVKF3#@iwwoj&6MzweYMX1Lv|<&HgfZwC0Z|!<#=`UuXy}J!+Gw zg%}azzsq__>6h+XpG-%F4dad8joz0)`kS(TX)n4&aDo3_^!uM0^7vT?X1wH>Ux3r= z;7*>JwE2TYyQG@>!~)E=7Lz#jS+)9WS(u7F)AX+n5-FYXIlo87bOj%NZ-)DnRs0Uv z1?0m?eBME}2lfnSe5sFSk~1xQqv*@eE1=0x}=zQRTpkg|!ur-t-LJ#T+L_|`kq zQoBh>LCBS*7s&Kfm|#jBdBX@fplr!;dx)4xRfzYWL8|th{~l6xutL3;SG1Z?a-0an z>Ccr*w{dY=tvUCID#U;jtwCK1IMLohpu7`GxU$MS!xGsDn{R$G-%wHqdmaIA}KGnTLO!9AYFLeh8_$U&0-b^VU?n9LrUY zw$duTc1oItt`H`}IS_c8#|^a^X=y=?;iH#LW`1<<8D9=lh4xUcx0WFm9$5?Bqz>~C4&5O%)4`J@Aos$ph(W46tDzWL?K!L)?n3l!l4b{ga z!f1B46ocd^h*3wd|33E*CYDC+pYJErwisdUmdPY?Z{*;9=WTW@_8-IBueUE0WpU=H zwcAh#*&b8OH%>_a5*u6~STnZ`%*D5eSBLp*7PP^n6Yf5apQ#z=S27>&;9vq9;A{-5 z(fb(a6c>-nj~q`n5^Y>7m#;391CtSrrg30N?l!F3E{B?aDs~k5M}JK*4FhLSVS#GU zDh9dZYKYdWNo_hD-fAspT7(ObxfDoxt3cw%V#o$FhZz2&IpjP*;RCYRZ}gK0ui6c- zdKBBesBlMkiir0F7}FPmn|7x8f1tibK@ClhK)u=8slQn(OysH6buP?50#XwPU@pj5 zwgJ%jc=31b+8LYbiVb1g*6I!y@g;xX@R!G_-w$W41nx-{5XzFzUNs*ydKaIKI5yb- z+Oem`MvUnAEzpU89x6tO%Af{YdYMX}+jSV5%xF20Dnz!4P>(4eJf|mYfQbHaj+jEm zY9&5F@mv|0!h>7IH^;L$Sr31*<4*k95)8ljomBP%_dTyG%9$RtRxN{JB^U^0$PYds zA(cGbyb&2xoKvpDNz454bh(&hpA!3)ih`u~SU`H1BX=F`uRR8zyz0>?EB~>AA)+zL zaP4(YJU~4$ez!2(1sAR}zEoBYq3Iy?F%Fjc7ycNzt(uZV}l!*E+z7$87GlSQ5ew333Tqt#F^SVtWplxXl9 zwZ#Xx1w(=LA7JP)tiJhYYU}^-px4mE8?SZCA@{LG)s@dc`1Q8^d#CoSJ9pTmLY3@| z`@Kwy*V2dvDrYBeVbCEoRfZjQQeHt`qVf+2lb~GO+*lN^W_YHuRsT{Oa=-e|3#^UJ z%Z>Sq$iH1A;FP#QoG+Lupd^MP_NPbxwlmEB6K0g%*KC5lkGSzf>(y^KO2$`nv|h>309q`WJ;4GsQy7J+mlB5MYrFFdo0RE zVUSGr%t#z05l7iMIvQ?Dn|r(GX2O>4UP0IKsFy%oTP`CehHy0FuM3VV)GOfJ8E5B& zlK1W}C~0da<+de$3TZ)ZggO0XWMrCTqV>ApG==L`G7POn>?0!qhV$Qud0}`VgxGso zW+3N4Xs#NW&AT9$=iil4^^PzO-p;`x5=zik{0zSXqc)s$jy0Ak96S<0@NVP|2U5Muei>BExDA$aN0}Qn}Z(#w*A|W-UR<=L^F=w z_nkXKLoepTa&1z8YuOylmpSU?TxTFhhySEUlj>&7)DV;L zRE_jLqBG$?tE8GL0@~fHUmfgcac|0?8O+(Rlp>XsV{MI3@s&;f!JyAumTgy+>CnZn zI?X71O4*1$b*)@`4-t9$)EIP3r8o?{)K%7t!Z?*7i;Mua4F6ZKWyBxFFktN5eF1s~ z(q_Owa15X9w@Eg9(dU!EZR#TbpSw*ZRy1^8R4g%+qSor}4S-5}Fe%=l4F3 zzT`vT$ZAOyfjJ{ThY7}rVBvopf0}Yu_Gq8|2095k*ABN?{<9fh##GNx`fv%}w%dcA z@EOPX0mFby6`_{=@)0Qz`siUk=ygvFq#U)d!qvzkNg{hQ2hE_;U!P{1cpidOw7qY( zgv3`(fx5V*Ohf}LI>*(pURY%Ji|2I^NQC3k-1K9CdVskF)xPgds;LF3Rg3tg8UqF6 zsUqkg=9X?ByXLP)i^HzrvZhe5Z;_eH(=%lyQN{u=?HR}HF8v}Yf^SWoiD|`Gy0=9$ z_~-%v#@S_03=%q{K?t)*|B7m7*!Eqyv!@U5iznY1h_jYE?#8UV_R>fxm@_XwFGl5- ze;o!{N6rGnTi3w#7Ms$L3JXwvj>A9*!5{W#v2M7Jd1QZgxpU`jul%)L9zF4~o4JI( zGpWQ1DG`e-uJ`@lK;|=HyK@a>^Z->7^=D=L5GGOXQEhf*R|VzWQzm*7+d$a<9$C%1 z94E$V=pu}_+}lX^_Y5-SS=8Qh8LxfYs8&q64U+O+-csCsW+t~iUzT+v{n7PA=6q~; z^IZfbq^FBtii435ND9!jbq61+Mpz>m)+x^bl+mTaRAS|G9@V7CpHWAA!`Zj5kcTU& zvf$bCuUum3AgzrZ{QITh2F(wozBwJ*&6x;fglBkcKv?HM)L)a(qMl~sRpHs)uw3Ax z?5|tXzS!?t_|(RujEJ{cPa~igIz=EtFrEtFSATNe@oBV}rWweX3drcS{GW}zzHz{o z{Mev!6}e34ly+Dv;&9*C2`KBk9(pU?DCpMI)RfWMbSuPx$YH!{B`bJFdJw}3j%Nu5 zHv!0Q{b#Ka^7oD3(s;yt4nAc^dTD08`(dj&OD3GLzn%{qwx2e5*RtLxRt7X2RW@PRPg z2=i}gqI_VQ?NIs~8;5`AZmamu-EC%nh1>p6CZhfKl!-7A=)ZKgkn@E9%`umVq(?Z0saBe&eeW%qGDas zT8HXY8}pz3YoBaGPa@i+%*cWLQT})PPEq&|?YoJx5+;t@Zxy1%)<3Hhm0~mg!%{H< z?+DHR&pagc^~ABP)dFJ(n}FE`NMLwZPtpm7tw3E6!{>`up^w10O%+=aI7NvX2?@!S^+LK;W9@Qz0M-fF z@-us7MzL&?41VtnkM{$#V7VyF3qL9>v+rjKyEkmH)tk_b?p&t9u!-SuI9 zR&Pf;L?lks)+7k)>;5vSF_USeM9uX#XJ8@T#B;VgJ61HDIRzTg|c0JHzf zASUJHUu?#byX5{~#JzP?mR+|#3P>Y}ba#WGpiw9~&1+tBt_oO=2O}l-I1(1FX2ov7TI2Za z{~Aw9{vYvV@c-X03Q#i3hQ@sSwBR zb-%BIG`}U2z}nek!}pEJP;cpJm!x()?Do&H?)GepAi4%1(S((OMgA9C=Sl-l;Qzt* zD5>Q9o~(QNa8>idT@ckezb>fOW@2&AH zqh`TLu0oT>I6XTWfF#=w`v*xj5^rT=(=~+sCw=X&AhvP@RHA1<1%zjTVl)mKn6JQb zr_oxzZ^{ z@h7;>+W0vP8gEAy7W_j^r6wg_Q$F=xJcbs5HARlyBZosmxM1loxqIuxsS7FBR;4n# zFD6N4>JgW1p-|Y@*aXPyU}!B-@c~o|NxfmGw|Dcv*e0BV%JUS=@OIrxP3>q$(tEhN zZUjfDL@TIR@*TV`;d@^&9#E;j+lX*v%H`YJ+WTTZ5MSrDwXaNJO>9Vn`K7MRg~kEl zuxKFQux*bz`0UD=5Dm0clK5|{v;eFU8AouZ`HJUL*iX7yZ^=StBM3P_2=m+oJuA7hzfa-=QQ%!>H!nlA)l?=j zi+&SHnXkkJ^xQgkYDS3?P$vybgRCiZaR&QC28(5g{sH`sR-pDMs~kW@e^LU%-t%Iuai)!?g9D zP7{8Z3O%Lk3pm-lLz|J8hsWLB{nt=>*;@V!mpz>|rzQ|-XnpV*DG;2x3d%90Z0J`Q zA|P7E8bJ^^U&s7iNbwJwCWQRoV$-1M@*(#T-@nu4ee1?1Cfb;E99pnDG(d9A0S5cO zC4c-YxcR@SA3%duYZapTxdig>(DF~UNQMw7&GhVnZ|LKJ;KUY;KQVo1O2#v%+;1&S zDkD%SebY3S5&AFGY}R~58JX}c#eY>u7*K=pH*Yosfh<#3yTbol5ny=e$LRvoPhOvW zDg0y*l)o|MhEnX$!X*k$^b@1}3p1kJgu=rY7tixTaUu^duhc4Pj>c3^Oiyn~-{1K7 z9{&i*cBB2X9Av=vzl49+{}CaSlYwBci#r89YnchyOh_YrX4p}vTGWtNjAgCGY|-{y z?@2n3Q(>{o3YYEttH+TBRaJ(x#Vl3_AccgxU(UL-NJm~%qNpye^BsxzI|FmvwQ~kF zNlTGjVQ9&;B^I(7`QlrEdJ0)%esyG2Lwf^w>{Hs|dF3uz0-uTZ(Qt)(dQSWUe@3RWR^$oDM8 zGmt^B51l78&4eHZ_>MejFFtBMctl-LpOUC^;QYRg*J*1E6bUIHR;s~$>t!I7q}fmO zL7KTw&v|@Q?V!U|Tz+5Y+3$^rN=_0O*jMjp#-&r|Z~S6hJ!O0f=**Fz4v1=Is;)cvCUHpg*lSN!F`1c!ss-y8xF_1W?uxYNue9v5!nFtdJlwb`C$LOQ|`<${o#rDI$LN7D&S zUgCCa_-NUw-G!Iv`x&HKXrS^AVakK0b8r zFm>S;Obhsr3bvgSjCHL=B;R6Xbmj4rD z9Zho;f$n174Biz!(#jc1&h=E0AMsFV>7(#Nn)PvcnoOdwjn{41)qZ3BHX}XA;j1(1 zCSQKZ>>&Di^RiGRm^%K6W`+Z#1uG?S?a58TYP&33oQyeYZ3Yt8Ha)BhTm`m64P}k{ zsl{2$(al>mqVXZBZH$dUSB2mm=brCw>zEK)JS=;C+%m`IF3yp+vL$tD#d1z01 zzGw%}1-#&iGcWETtgoTBw4}Rm|6UuN3qgD9`$Y@uK$5~)cyPsScz_pn_Tjf%H#Toy z4XwwN^!4kJ9^YJ}k;*!jVL2`^VitA!c>JtTxM{0JLkauPWvnmzh}Bp9>)|vxP$0ff zV8J?J8K8m13L)})8b~s+py#uzdKx6$n*8e3#l&#~ne_0|x1bly@qLCwWZud{ZMe1? z?}OJO%vK?x=!l-;tQHB_HMmWc@i1hq(Ek7^CGC_Qg5*2CrbI)$|5h=Umkr?bRS^sJ^ zM~~UVolFH^Vb)78(MM9g@PZVwlnJ$cSUCx9s*lV3gd^Ky;45Xo|JPqn@qmw!fWvVZ zR(XfxK*nZ}94#ma&#(#y*KYytyr#uuqYUOP93Inc@(`n3-*+0EmZVSx*B4;D=d($6 zWsCb*ab_`EB|DS;6)ktS(4$rG2IZ^6*>PCUFfvw10_0eiO{_{7wKgO|v(CN+D+3~v zwXK}IqQoxWPH6e~3~w$<%Q7bAE1ER=EgkzwcVo@f@PGo1`Hd91|8GhWBz6`X4`s<*l-wuPg9&6gkbUE9{yM zyG*XED;!A80sjAfJc97qaBjOWEFl z2XHh30?oj2sw9>dCXzG%DBU}GBRb;PlFwo7Gs3zNKGUUX@Uxd(KiRQxww_q6|A&Jx z9p;8xZ>`nzS1Dl#86FU??QabuQog;KxEss(^emOqFCjg>#(3CYknMq*JRHrUXog+8 zR)kPgmPRJS&KK5IJ@1P(-u;Hr%?7x>1o6h9qXQaRBbTAkf4sED_cVulpMHC8#2poO zEkKqcmXIJ$DXN(GfY2tf3}vxyWl#4W3Z*Halhzh;m-S@73q-xxD|u< zA+GeAe3$$n*Az3-V#&1>cHJG<)?O4(-Mh_^NK#(IOdKQX;jyuR^oKCa*Pbn-3IZkS zmaZ5d&xJjTlO)l5gc##uf@bn1l119^LI?=xKZ-k6HRcX>=IhA6rd@o0EfqPBpOcew zfF#i5D}$hvU00_yK(plSoWC&9lH<}wdtsc<^Zq*eFAU2aSGUe78Eh9x{8y0ej|h;NxjSBM7&I*%H!T)4p-cKSCR3 zs@tuF&jZouJqb1$*s%G|2=In{H>;aacro!(#feeAlL6V)I1xUau#(8{%~iZ`B=s z{=Nga2h7aOOOq#?qm=unb7_1YOc+&h8|w~-o%k}ynUG_$YLW5|K1*nSOwlgdXUpJx zuY-KzFdG!Z*QGhmkS3_tfNg0*o)9_7N(G14v$CpjLn~8{B*pq)V#&-@if0{-#wS{q zt7Y^F6XD|FN%JYymQ;juRQ(Qm;Le=L>~v>>;dF$={EF+V>!D#ImL<_kf3$Vl@o9Ix z*RNr0lu+VzaIT-vs>Mk0KFHJyr%yk!-UUe2p2ISYh=#)ji9I%Tos&DL#v5sYga zqA@w!=nZ)FI>>2OncKRkON<;+`E-&3tgn)H>|MI(}FTA86J%u7plE%w{<$er} z$8AhuvW`q|c9xyj!HK*S;~5Obb0{$(w|O?%nH21&(pLTM=41KYcDj35Ax(ttxdC7F z^JETrWvvReQVha$aeE{De*1F;B%2Z{a-TL-b92eEAIWUoL5<4Z_hVB-kJ9dA^s@>e zwfiY5A2lEw19NYvvBch_>rw_MJ-$;_$A&c(zvk4>IVATnnh@k?vFDT^G+>k>Q&QsI z8r70s+cr5BNB5X=(weET?$6>-s>Mf&7zOhSGegNPUB+b~*;zCCODD1pzK$L2R%_m? ztJOK{yiy#vt|`g|cdGeMF%}%zG^Yf61-d6kNaUWrSA~{@2XR;Ipw>xLhV^S#pR>A?uS8;2%d`S4<<}TI0)rsceTX{ z=XUKf?TR2|w;V|0yNXqoZ^h+yR`}p8xmsO^7iOC1?99+voP({MP zlyhE7)l|(0fWoSWe}h6B$$L-;5&ZuQ6q2%4%^9ED?r1ST8$>9pmquO=(;FHFPdfmG%=tcwRxd5wgkv)Sk&4d0h-e21?d}FH3l~3=2F~u zpy6#)zK?_LgUNgPuj%XN(@&YV)f9DJS9-5?UFSe@JBcS2@rzWAfB1B18Fm)h{?eQL zg7k8L;$s2UrBCDIE^6M+AJ4ET{4!8p_Yf{UqpCk|-J=c1gP*%9PKTFli5FZ7`bO}c zEXz++aZ)6$7awkBLYC4jJTM6?5OdJ#?7O=`TF=cp>yA6x!v{P{?`0Utq~l=r_6#j^Pf>aAWToM}hyw+(BwFU~XfV_Ui zXxzoad>0)Z7^IPJhcg35WX>YV#!Kgxkg6@l@1`ve0+X1&WWH<9@OuE6YVx`Q2w8+N zjtynI)S9n6{dRUVHIl#1q<=qUe)lW)-L(pC$NGk%%QtHejZZJF7autf?YqqnsGIf- ztGdZV@@z>?q4Nk)u6xfNF`&RhJK=5H{ix!@0U*Vxv!D+@^WJE0dv5#4|Am{X32`t6 z;k%gw?O0>~zO9)&^`*M;NeJc*9f}EEz5Hnl%q8aOPZb=wl&7}?9NxvKk+pYeGHe$p zN1q9X@!0P!Z`14294dLjhJX_T56f6DM9;A5S=*qA@@D|7-+_*&!KCwp1d_aqy=Ht8 zpxZ+~EJn(E`_y)`d5qPYjabH*>BIQbUi~U#SZOJH#_)hu-thNJJD}|j=NpW{@@Ckf6HDaOGlAzii(ekDv_|&i&wL zTy^l?IE1H`2ZOpyDtZPcF^*q83O57o+o#38Zwhw5D%baUWc^TgJ%f$&J&>#aj!4%Z8g*l&IW3WsVc#a0O5wDvn?mcxRQu6uH6}3lDedo!Oa0v1@d%F7n6; zFP3(cdQ42X$`!FN!9)E0QNYS#zz!*Zph?J?RN$i4GDHzwI#Xa~KzK3Tlh!5SxCOy` z!!5q&Y)TpJGd+3I>xUMRCkSUxQ*Jh76CsrFxRCrKLzrw&bEC)Ej>U9^(TwTsgat`` z8h?!74zeUN)N|r0lc1kD0VVb6OtHHoC!3sN#tbZn22PM0uCF_QHSE}P$ZV&95W}N# z7IzYyaJilmNKz&cC^%+OW1XVb(o- zm>YV($;bb)`BkpB>l|rGzE`}7L^WUo2@rw$Js4R-SCR<~(vmDN1|Cn6@y~agSmN1PxGXgcrTH8s812`_X_KJ5a#+~i z;D48?e8(;@+8WMdoaGhLQ$n zd%8~FRI$m3K9oj`<%pSiLNWCV<(^J^vg{!mOw0RQJs<5SshqcsMwMuPArZK$DKeKB z9o(HYlr}i@XB&=7(m`P%_JYF_TVnd>*RU!bBiIbkX7@+#@>bif;pxMv;?i#PN$P67 z>v93tD{=(tkgN+`{yiFlX9sCgfv!weXQjF`)i%HIEaApgaX0#8OX1@`@Pk3HixXy@ zz@|#2_v6BXP5}IZi%iX)7uGW)Jx?a!3z_<%pIPZ|C!Wawo=gvYvOPVtUs*$t)16as z94aPkmtO_yOp8#6BY+8LR@&3)C7*pqgUNgUp(BZ07(5#p&!ycMGXrKPzN72CtXb-0 zf&b+D3MGFU(^o|`)u}+$VUzHLZH+9G*>t8lOLalu+uGSDHiIW2fzY37NlcIZcZ!ZJkXm@T*BI1tng5(x@^X zR=p{`-uoP!IqW#ZeO01aR{t~oGrjzG6OEGkAwRMbraTC9uP2vi17c|AK@9W1&BYA6 z0G*Bp4uyLNOsme|eU%0BRsC%BCwq$2Xh-Uld8N6A6U06>2mZ(7iZzs`{B-d?_3(9v zIrw>5+$vY&4Q!?4KNcEqWnbBwv&LA=kz!oFHF0~UzN$p3R`Df)0d?pft6~bvVXbpJ zXzta?k6!{bfDcmFWXV#Orf9AZRt65oN}yE6)|??|Ml z@LbHrreqkUWPSEFC0g*tkE*ybJNU@!e+X4^!bMa&k~brIX8eiOQ`nE*i@m&45bJxVp^s zXv7RF__-js^p>qhGecc*GXpA8f!(rI<(E@%Q_OiVmW*w zwlul&!Pn(F>7q>cy0ka)`es}RKTGg*v91l>(tabfH!9s}B8kc8WKLjzCeKB)SKR8R zbSGSQb-}GWM8Ek24$Jaq@vCg7?ddItY@gHRV`}l)T-%VHBV~0eNH3c!#;@T(Lm4Z3ZEp5rt?GJgRa}K8} zRvsP4-^%R9qOd9 zY9HGH{l%v<+fHIM@52_aJZCu*46whyR5oOl^o*j!gA-l5eeswa`t`V zIPv8W>S=1eD<3oT4Iff0<@CgNI~4+#r)7GAb$8zc#F{E&6$&IAXx?aZM7Cj@tQfwo z;n&|9#%BGV^UgniwBS@el}FCQqAyw1&Ar~Y)}oU=PFYp&Az#7B+p%8N#u|^h%&!pP z!Gy<;*Q9B}+N4lxxdz{#B*7cX2@1dF5*{S_@Jx3ri7F|=b7#xPp&2*H-F_-AfX8B| z?yI3CTPN)s%Uq9-Z`_+9Mf0-;Uxec3_&o_GHpUcPb3XN!(u@t8=BViED`RZ>r`Y7B z0*Jc6z2EFk@quJ@JB}h%gNj+t*0@l2CfQ!{i1zc2>S&!`-%o)?PWm{RwnkiYuiFMT zZ};!2Z;?@d&$-;H#|hJ3lCwVP{W&MYrmI*NEzH_pfqAq1pEm&pZD9;clS`t6CaOFn zyW*ZTK!dO6e{G@)c7IA;y&;(ugu6c z?KxTJil^T!E|i?!c2q5TE~j4~?s9shcwjgmUgQbf?&But=l;wX5kY+9dD+W2 z;kn8+p7PcFS-INwNQ$DgbLy-e;9~`D57>mWjJhMYf0o9Je1xdc(0>qhLkT2V&?>Pg zF3B%rEGl9uDPSmOU}ey3b}+hClH>=q9gQUNDUK(I%ibU=nqTOgexF72_}ya4mn~rx zaL6^t55`9lI5(R34o72zhD2%pqv_ExZ-Y9{?H`@iU9&skJ01RXJoJCh6SnO79K)mn z8Wl+NRBfW^co;RZH1#qoZf~w$F6lX}76#MfN1alPQUu?6soe_6+GPo^jzUdRa#LqG z$5nfshXe5k+;3jYUWp8L`M=1L`0%QE-EE6u7L$X<_$+NW>+*D0S*xbB!Bu2ozVWqa zl3W_s()miHht0I|WG8)mUao9fKIo$bR?W$R(c#hbR5f+gpcI7TrVi!sEr{}WsZV(C zW0N_gdrM=85L!S2=@MugKIB>|>&k<*tI?+m8Eyp+03Y3{$ zNpab7GUXdGcy8Wm2BiB3c+B$P z@ou`e(oQ%wA%s|!+M0ULm#ef7+3BigY#MXwGDVZT_5)1Va+{ADQpjzfyCAOkZ% z=f@kj-nO!g6Mq}pluK-3o9^FT)6zB-bg$I_8KYg)@NKK#xD)D@@1U&uLfYpvW;b-w zn}wS>h$ClFOXEx_tI?w-?80C8Rc1QrM5Eaxie{UFZ9bUU;Wr1mBXBL?s3|BJnwT9F z6)=)0vYdP>6b`>!b{K4{l8mMCsgUbwPmT~}{ z7@CAxS%>*)1;Acjve4m%S{uuHl}IFm6L^R7@9zK*O9|Bfn2p@kwqOpg?MxONz8u$y z4j=15Z6gfL#BuQZu2P%`mP#}f1J_bec}_d=1IVgf{X7=GWDOv_3+84a^;|E)asw6s zUjwUkq8(GLTmj8XLGTxTHEB3FF*;v6%k+n~+F($CUsPRuYb2AS2}({TGp_n46=*O6 za^VjMZwfw>Wzwm7yB905pMKXVfxwK9SFF?VBnTca^XfQO0xR9AmY!^|RHI#rM4c-%>7vHVR6!>4h?jdtWnWetDE{Idr# z1@wQ2fHopyK^RaM82;1eK2D+7z(RotoXv81zRF7!-Jsdu)2Lj^+-f9E1Su zULp?EdCGxnNehc*ckgwu`eVcEQUR9WFO2j%gLqr zC7%|JoCwO>%IBt`J)=-3@70p^ivCg4=?wlCaJ8FGM!tx3167TInbh;0j;DQ>fzR zfYmkq_H>RsG&4U*cyOOP>=d}mf4wB;fGh$sQ|si|n1G(<@o)FJPWb_PF&a0#63l}q zfjS=mG~M|5A)mbkYrDmq z7skn3Rqj9%)-;j@ny_VA#?|YzEDdrnU9rH|0)&S(ayTk;w%~DQp647#vX8Q$8grJL z%HrjMB5b2RI{4(%mhpQB%i^NhS&dIU=EZYkuhC6%BHNgs9dit8JeaE~C`JALdHVZ@ z7wF$`_fE}LLmeFnRg0dzbKwukid*Xh#)RkvcMO{%j+rQBf^px{8!&U5!3Kq@*;7E^ z4Fn@h6^2up-s-(Hl7iv#FrmvQ1(Fu8<!fQP!AfSpU|Ggk9$>$|nEh!4ZH=p+8#Ox37$ulbI1$f&BwY8tM2(4`L z15cC&Dg1O-If=&@9>jt=3qP!wo}{C{z%`^uy4tn2=%V}@HwNSIb!yxzUg?XBBV#HB z(^o$GRolX{!ZOyPBG!VUuC3)JM+yFT9_;Ouaa#0mYs-(IK8e*wI^dr$td8L(wx?r> z*+=3ycn>KSM*)+I0=yDRwAy8K%W|rpKm@_mknTAWn(le7Cnu(;Iwj7)Dajru@axti zWBWix6;r-PJxMyd@%T4Oe$A9^V=22m&Y6XxH6TrY1k^$5mo9I6)J^|#amrf}J$AO7 z3ZL_zF5i?jB4V^uhhlf7yLCmyeXx+9@5{ z#1@d4nj08i4%|koCCLaaFTgoDrcU^Y$&F2OY&2r4?7b=meB8=02m2;fB zJExGaw(L@L&9u^an5;z=hp`%cTM;4AQR7)T1)o4THXILs~0qM}w0E;nRgS1yx5KIR`*gn@*T{*Z*(3NW=a z%nllnB1F|{pFHqeuxD@D+mdgPSA zF13&EfJxx2?d3$RHd%f&;faI3XDL@h?6JvUsiPs>rju=&UriM!a3hw5fynlRZNQ7>H#L{*IB?U8~guIUoBUodm$;T z*(R$m6@$wyDZx_1NIV-Hr}Xi4urX)Ay&qDpv|1?y0g?$h&KO8Clt`gLmte2@2=D<;CFH%<)mruU{;Fe({P32|Z|ctEe=Vh=$S>co;)f;5hRB zUJi%3dYAVs0r4W=Tp8r0rG#-4blqqa#;Gs*SdJA~R-W(9ra|6ZaWb&Z%6AfJQRU$= z%dDZCjyHt=>UfAU)%j#BC_s*uJ^J;T0=9W<36r&KL;veQ1r~)D&2JCVt03uF|9^#Mkq0= zcbb&@5nM>w5Q(Z<_gN z`lLz4auX>j>(Nm(GxbJTgoJk#ag8Hz{Jg%1UMpxjoh(A!c8PPrd{ zNo@DF0`9EX9iG~y#OA0s%M*nuXe7RsVi<+igTY$z84$I1k7!HCouu1qid_K(3}+>8 z3k-1be=@+xwLkp1Pu{E>@dQrjV4~AP;Wf%;=aWJBK47*TbUNRh%ixG53$ymdwzmVE zM{ALjsRx-AWaqvX{Z*bGltK)~YOkr7qo0z$NZ z+eQ0eDe)7^_d69(Yc;kx?bCz@`^U*#pd9IARPN?=h6xEc8c4uB@|XNhhv~puWm{0f z0_Atbw$&ZQSe2-mk^M7bKx$mJ8u+h8~1!9>DZ8MtRupiB6bdk~(=RY(JX!wGs(7}MeV zqXU80<#e_`OLH5qN0E2t8;eS-EZRh}E(|;)a&7CR;le;0K(MLyJLfBCupI`v`y+FE zK5DOf(SNox)%X|T{}3)5-?O)@Fykc!G-Lw}$Fz{#xBA|A`9s>#I|ANKRd}ucE}1O` ze7v+TgYy>xQaZl}Dc}uui(&r>ZwAwUcix}==Cy5VQw3jG#N@jHlaB3nc~8fSEph*I zdTI!ln$N_GL$8Dq{f3;Oqi=vGBn@U_6BN(=1;xMMs=qN+>QTgkK*KmVs=^rI4rJ8; z$jc1rxthP%6YEM$@ zf6ZJ>9v$OxS(k&DQTKBxHYti}D14w@b+(z)A@7(dZe=f-N{}Am=WW;#q{LslNN$P- zN>s31K#%ScM$JbHVu1Jt&PRylbgh$eV})GOt4)ZA*2-v)f;s2sR+bmMYb@H88-?EL z-e*5Vw5zP#_PEWOUu-*>Bq`C#$K|E!tIAWV8}cf$$G~UG0$(yE8`9ru{xMG!ZWxO6 zNhqs}%-7@PoVq4*`cc?qeSV*>L~$G`PX{6%ziqyrq3wRRbutn@x^2PqdbP++Uq>LL znQ6NbE6O^@SWQz8P;?AKKTkfuTY(PlR796a|Wr+1)n}(wY0heqiEI6srDy^x;Nqfxl5vV5@f1Ohh80MsBT0VN$tA%&jTc zmc~E^j9jErkC;bSmJ1E!J#-GyuM%0j++R>D(Qtm(9r?jYwWoDGnv|z_;7Xh{@Vr$q zPMi*d_PaXbdWzTYeV;Sb5jPop7f=VpI&X8#+v5GTPKr(z5s!$_#WHQ+z*xZ zmBH1PYHN(dG+4r=7qRx04oa$Posd{2eJ{0GJf)r~`Pcy(5O@Zp1N|4;)x`&#V68of z_YH$kqSkJGN587le`QB58hLxx;&qmv)q}%9ll($8Q)T4(?DqLpHnu{*8l?3>9^VTD z6eF499^5ic_VH51+8yuTn-c41uO3yaMZa&xd!kh{(=J}7?~EPzO`t%6@E+ZTA9>0x z0ObwLFO1%ycnCI9B8a$h{rF=dLBy(}ph?Tx74nc-y(pe7jwJi=wWf$QtwV;(>W?s6 zY-WeP0b2bnZZK^?fiHvg!S4J*8hu)dgEVi4FaXvRYtz{3NqL<;uSz%w4b%n7zBbS&<{t;Y}1dH(I+7_W+x0Liyzrk8xMn%o+_V8=F&9j zR+cO0W#tKk--#wrI<_{j+14~Q^CZ94xtbFZc0P1(yV}2f%)NcA-m3AZU0g5Lu3xC@ z)0$#;ML~5cU&X&~EK zeF!Yu=X;9u+bP#s%A>m@Gtkzv`BbmLDKkp+Lk|14bLU-*ZnQK3VxDZkj1tzY%BX(P zyStI1caGMzG(2o8qxh;-ZS&#NCxJb0o}C zZcU66gD_yG^?=;WFF@sL^4wm7NmMm2)p^U3LqFP+#;!dEvh+FOP zb1-$Ldim$g0T6P}`sNn_M*eL+V_6w%ppfcR&{5_!(0v7Ib? zl1kcO06D@v!VBzJD7B~ zc$KI2go6b81g8X7Auvolz?@et3FLuLZ>y=%W-Oc2pywK=Zhab6{gm|V&2fES*aU8= z_Gq39TXtg&tVd}N_xHE~dcPj5o;rxf(eN-r(Q*01#COV2egngXW|0k6N9#QFjSW8* z%t$sh5#s$@UIo#u+J(3FI|GKI%2fWMk3hoy>^ME$%TW8}z<{{|zrE_1wLz(JLj*Rxj1`?~*LzlTXznCc#e(wvBBO@#T zX`QDL%ivft7pAhI>H+gpS5dV9k|y{3x`w9|lzBeU!$IGQ4)>ZZ)Q2RrP`IgM>Um&u79d7)8>X_v zAZfxg)~=9=;sr&K(1+m<&q~Stb5Nrwk!$hOyo(V99_p8;e0t)?eRqx-LdB~+3`js& zZ8&*h3{L*SzOX_5ZP@^QPpaRaT?K{ZeNwkZWW1@i6#wV%@yB#PG$#B>uyXnNY2a+7 zm}A~6_q%I0ekP6Da)UK08zR5J7C0_JV_xN_F#r@-!s`T(?D;NgcRY4Nn_zjg=dp^} zb&3@9bFGZa<1Q>EEeb?>PhXhKrXVxi1Z7PGC_n!79wtx+Q+SY|S-R)VJEMs0;5HnG zkao0nuiw`(%^m2XuO4>EA;Tb-!^j)wG4TNKw!y?@?uDVndT04dP`V!r<7)96-&g2j!nS#b;*E}kin1a!FmpH**7Y#Oz@?u?`aMdxCW{BnY<4J8^*;|IAMA4zy3Q zMOqNw!7Y4!3Exp|{Yh)}yXn#%$}QHEt7e46++UvgF#fAygC;C1m|eW$jhFhLFCUq@SF05<^H&{%Hv$ZA5wy+dv5@tMWpZ0cuX-~`Y>zQA`ywB)PbF%O9L zP@>uc_YUlulAnCTT9S~tMQ-gA;DJ<>CIhHd1AVQ(+E=VoLNB23%Z9fSDeA_p&5j!d z-Lfc10knSDy@kOe^7k*$km2hdH#0Gr`}W*7 zI|K(veI=ccQh|sO+DPc%K9~^=UovU`^fvTg(J(N$*>&#+@B9D$cV8Fq_<7CYk5EDL zpFb)w5av>v6EgePFOn_1ApdK>_$~11{%%+_kUZiS>}7EL>ld2ERG7dN7d2?$?yolZ zNj?UeEESg@gn$16VtPP;ILOPa1*rbNnjx5t{JKZ1kay$Z-@m}1xYA?3pi~F(6k-&3 ziI%G$J+S?YPq$ul6UBN{amPoRH?L~2ZRBCslMSa1RlM7|Y@1sGT1MCUKeD)|OZe0^ z(Y|c(bRQbg)Nx9g&nh4>5)X*vY6G5Ah&Jie6{vkAzG)*1m1i;37tLeSc@>%r>DPX> zKhqH z^%b`N3`&#Ob2U*oB3K>Wy>`m($e^dm%aPCFMW+!6^w^v3KM?2s184a@L(tf&Ds!x` zL-u!m@rR{G24M!TK(E!T-CCJp+j*R~MB>eVMdkTx^BX|`gm)w3{fHxCj>BnRuk=&1 zEJVNaL7PqVd`xlW+2|nOo*Lx#sSmczxjT|yt*6SPDRSi1g@-%7g`4v_Dbz}9OSkIfV zirY=O#r*zKZw7N7^|BP-wiiWmp@P4@%qU8bYN}QZ*F+quCILmWyVor$wZL}$#4yc+ zslXX666g<8-x{|)Jpp~ z#UT;Ozf&jI(|x=__7Az|L2EFnGdM`H9ptg+bjJ3`FwTfRzv`4Z)AXRp)ipQ?XXB${ zP-#OOlC>)KT3W+8H8g5Lar>Fj)B|6c}li zaeV0Eb!VBL%rjLJLH~-!X7anphXIBio)2^puk-Z0Psi2S>NYZ`e>LCT?%#El#^m%3 zkuVDCy7wxG&%0d}Hqc4}g#UN0GQ!hFgXP9pY^s%FFPe#J+XZM&7RVr;t1#+rJex;T z%$t^uYgqbRLHynOkewmLoyJ)gQ#8u8xx6t$-oof4FhOQ4{DTnPwXVLngp&IkB4eu6 zF|j~}3*|H;b@`?F;jHOzyw{6rC71dha)&`LK9A! zbLll3S~7(J^|Cn#%d6z>B19G4^wQHgZ`g@~N(TlnuS$N_r#Y}ABA_;%Uvm^@M1%lE zHYD&*kmp$ZEj9|hXqRSIO*C~q zYe#wZMdQBLqi|bruGD;`NjOe4{HjiW{FCug89u{(zQ+#DH9B9h=_70xn)ph83q3&U z>3n!p@LO`Hu4RKo-@OBmh<$BY{b!XmPMc5k4}=ZmcSyJU1?o9@y5hnA(T$hFNO7m{ zehFjb8R#HZUM(hGxu4ZF7|4*g3buQ;bLp_QOb5y#$1bw7rPVEEO&mWXbFPNOq~%|QGV0l@Hra8#P= zAYq>KkrX`>M?fr4#kFO$MS(MP*$hzktpL9Q(^}F~*Q3 zzvF#<*j-7Lz~p9W?JnPQv+OXuOcWnZsGD1!H%wiz4cEvE`JE$S#b#u@h2N}<1LxVu zc2aoq^&KXbILx6#sC&h;o`B|U8U2ln$}|j>`#?iO&YjYF$a)9}7qV<#5UIki;K zCi=3i;0rI$Iu6D&6NVe5`&>p(JJl^drl)MlMphd?5O~YNDuscCB~xKnZPg3sgp6{1 zrkV4G0*wgsmBz=B@R{6HaqL2eEt3^UF+TUyl|N1t{=CoroJLNE5;4K@%c56y3>wAs z$jGi4@{1b*y3&NFT$JpCKU*@%UtpkA0Ld9HK0b55^-LA1_xX}LV|D_YzV}u^9v&WE zp=X|Zgc6yH$R2(|xLPiZ&cIWSb8VMY_m0IZ$EO%#*=X+`MT1_j%e_qB?cB!+Jn$@= z$ItIZUFdms2`6?EgEi=$i%&eq&up%L*=7(oHzydF;@wMGvd3JTUS_{$oRcv1wiN5Y z^7>Xi%8_E-j`r^KMxb|8XA*QkbeaC|8s;#uSJ%zICdr+;tks+(t!O?UiIo#xbd~Bg zXM@k~<8iVty!-qct>8Rj^LFA5=bI1mYXo^HJA6aiu#Lf<*HV%~S{8zBljDyF%^xUc zj{FjM|L7=!WXg%Esx0&7u0@s6zXOy71^KE+yVVQQxypQo5GATr?^ew%gH%?n-k%>n zd>y8Cm;eKQr~^`W9>4!0Y-Vhze%EgtLGYJ3grN8UbNIA$W@itPY4t$=fm=xDiur#G zul@?qfSN5KGP9a{Hr?&bI9T)Q9)uJbX3=LnI7Q%eLN3C)^hqf}>>DVMZ}iR^4ycrG zw0gDduS+izw~wzhXPs@*#VL;+u;96Jw$=H@vrkdVH8_hU6%#srpB49P+GcOz-d+s( z?9J95gIc4f11i1SCMBDYtIoB|akgK+YO5(fOsdf$BQ9?%vlCsA=R}-0 z4DXS}Oe@j&4iUjWxL(-95_j9yx4?#E1%pwZu-|4&G-47?=g5_Eo+2JQA;7xeIVSgE z^mTSeu6*irnSS%gh!PGX14GTluTQE|33~1*a7G~cOesz}TY8?sX6MqOz+)dwRJgx5;n>c|g4XF? z@^4_cN0L2AV|c$j4cERg66Rvrd{+hq)?vpuD8dsZ$xA8lp$8`NUCo)S+X9QA#aM=| zPIi(9Qc~;hUSNJ#!pzipZ|B5XI7QBS2$7o#Oy4XPCPSUrZ%S|{6VPycJ6|qVw0rS* z^!C8@e!z%zeDK~yd@pIrN=-?M8;~irQDUGs;DI6x(ZuDm9AXNWOMCQAOgKKlA1B7A z8k<;qGu2(1r z=#cM(TY%Eu=xAQ6rTNiA(qGMTwMfz2repR_P)Skxh^*j3Q8s0WqF}{Oas;A1#hZI% zW*uDMDnfzis2aASc}sP;?|QCz__Cs*J&uz25M=s$w0aE(G4T%2*2C>^Sd~!;l5+iW z_?{X-z@NJ4Yl0D52+ym7AJbbKbDw?G{(_@9Wf8@i*NC1Jy#7Jn=;`ea*A&*GM_V9j zCapRW`iZE>ZBGA}L(i^Fs3C-W_!pLg;CUkCgM(kgTmjgZgBdi3JF$!CrjSFmd4@CQ z`QdEN^_KoLbFl2YFlUMSc>2!`d`QthAYJh#>yeIhV6?})_)`5lMjEzqlY&) zii|}65{qcPyV_zh|Hw~2KbO}+oZ!SyKa#6UFZGf=HR zu0Z`kAcrs0WOwc|sHF$M+ea%vY}?;FARsUZ6HE5@1L0P{9qBFY*kSx#3J&mpM7p4U zKlmOFxKgcm;VZx07(cWsY$y9?JA8on{p|r+V!WfSNh+pnuCC9t*UJq9sWFPj~u7WMLi!vPWvyZ z02llvLXC%9`)?ga0klV=MrQ}>x2XSg*IzyMPj~$_!Tx_|S7&&1Ao73cC>%ynDV@^d zU!l(5e4p=EV+a1G>@TN9feF|VwL|)Q0?q+5xAu=X-hXKna4uA@pL8Vhx2C)!c?&hg z?)31R5dk(&$^D;ED?D8^5X|gMon4&FjBH>2vNyIyU}a@}L&8Gx@+TJu4-f0#o^$;5 zoS&bBS=P+X!o`vVD9s5xRVHCp{pesu!mO!aY;9)ZLc*-#YV7jI6DeCG3*d!@l_^l1 zo1KG%`JI`Sg{2D#7Y{oEvzWb&y_1TAkqJ;l-0XvuiJ7F6(MJ+yDLWT4CkJ~QBNsCg z7bjQXt*DiYv!a=kn7yroy`7nz3kf#~^IIz$pcwG^Qcm2=#NN~lK~NCkuLik;1J@v+ zfRVsK3O_wtL0jPdyli%B5{@q!MTda8f~e(>^HvE2^QSfpM1t^_?Iei5wZc4!WQT+z z0}oOBUMTAa1`YuQhejg&&maGE!apu){<_y6=Mc>eS${s+D%`8&SfQXjI@;X+$Jr#Gj?W*J$( zx7(-_M#OU1Lv#VM)Mqc$W72+RgtdKc4~be&U|bZLafR4%>c<=17{*(f;A_sEtQD9v zSI~VvYhA=SGUnXw8{w}}=G2U70st0SYrYSL^e7_Tmf7zh;*Kv%@T=|pxD=Sbc{RhWh zzH}Ags{pf+83lyoE4<8p6z16y+U_FNE#C8r>`(0J3s!7yC<_wX z%@)y(dL4B5UK&s|4l>V{;GuWvCJJOd=AHM+-f0F2$Sr4Z@U|f>R{D6_i_nfph|Rbd`Q;Uh@xP0s6-nsGHCSS+gxO z(M1H!!p!`1j~h?t(4&^Z-*@W+b;{2ObtV%sF&VbgMO%2RxZ)phX}?Sf4}P3{e@fE3 z&@WZ|^H6&_ASx2oNmMm)@R?Kx1gV{Q2kkp!P=EJxwr8pFqoD%HtSS!SdOI|goAfIa zDFn^k`aCQYUfDqj*eq?SGRT;|l}My7?6c%QNEc*O-f2@x7(~h$C%R-mXXJV7o^c}w zrY60)xpBhh#eQ9|o_r<{F&?~e?719FK=Aoe#EV$^xq@{80dl9}B5KW;`gQDSB1t{| zwbv2d8Q&2B^$!kD)(>CN&BTgqm)A}i%XOP+U-4E(QXnLcC zcrBo>7=%Z3wTDP9K~#8_H}sY4mEfb)HNyUVbOI_+&4Yz5)!R**IilJsnT ziF~^KR`kVW11qHlZy!Ugz$ng7Xt9s<3PoR9l4oC4KwsJ#{>V4J7V?SsyQ`{qvh@b- z0IM33&~-dN*i_3i*l|`t+W$0UFShAVqJ)j@Z-$KPZ-(qoE=2JU;zQBM>4mLeWo7xx zs41H{+q*iMm^lN_*jWBFbYk`Z-(lzS@`&}tA_9DhoSCVWk*K{pg3e1BE*>@#PF6O( z7xVXTqUMipzlice$S6A5o2Zz%kmvw^ioXT;7&CW(hWUei5&i2^?5|HL5w{~(Oa=313hSWRms@`>GaAwr4rx!X&EbjlZ9RPP_pKsmIUUpF%I2uB|0)Oj={?~_t zDb!Q%N?xet`I4NK>(QGqju~?zRQLO3!k>1bI08U4XS}2{7@Y2dGjO zsxl`^<_Vszt-WEV+^ShdyQueRHx%GX0s>~H{{NB|_^LmD7}$;G{ucN)WHT*I8rrbM zC$kS*5Gb5}p;d-=8gv^V7C*vHdeMcJ_Z`-clR{( zELIUl%Wkq^s$=9CS!`)`&Kk;t;{pp^g*F1TxSEMw>)MYMs*Ou@bK+Dh+P+WL<-4P% zoi76LZ^Oay&bs?24S+R9=a0?Mkot`(z5Uo3W5!mMlEgq7it&yd6vQyulu50Z=O?As zwAU2~>-%^)J1{UXPEA2U$n793A0&&X_0o@hc>at@IU4qJUr2&O*>Rb|X#^3Iib=^; zyay@8gS=~3JrfSw-^nMKDNU`hP9oWS5>RXYFgdzmk#>}qFB0bZ{it4Z+nH^$#ku~^5R)>s`0kF{Me9-p0KV)SkD;65)l+`zq4YJ&p;9*O@ zx5~kU9{&a;EmpjmF4Zsza6Oo-26jfvm2%%^3VPE>!Tr^3!{{_KRc_VIdcFN%C|7#* zoT0JiJ-0N+{RCFKcq-S>k8hsRSO^52r=vO|OSxTE`)!|y*JtgQr9wn3b**O;GQi@( z=q7B&&&Yj3sa9n7>$=4v*|p5o7V<^|~Omi<~2a8k-qV^6YwOZQH%+GE)_ z#X(<>V<4qpUOR_L)feg!B!HD24U)YS@Nt2C#9PEIl{kmHs;_5q11c z>?`Abj7-%4w9VFNnzcAKNJ@iW7DbbOqb3Ab3fB#kCvib zvl;?Bn+D|%tAPe#{DAIK(H-43jyTfZL(Q^(rx*F5chBW1`x0)Rf&Yjqhwq9gxU1o0 zcY0U3%p>)+4-useL;&M64~)cj)#B^-G18GfHeAKBvl0oCM7j9I2u(j}TNqbbfkYEH z#flxetH?Ptx9kGsCOeJ0tEx7N%|j4PG>Le?@STbS!>7$&@fArJUh7E{mkes0XD~E7 z*c8JwUqs)C8CCtycA4>Ne0=zbkn;&Rhm}aDhLBbc-0}_FpwZ;IukPW&t3LjDicYNr z>9rt`CVV4Q`7O>LHWLiOIQ}L?>yUJ$XrMNH=7GqkiA^9eX}?yTvu6cLJR~wxt4zI* zAuzv+cGA1J3O&;~se)EH->P`EFmboN@#oG4LebVwI;3jV<|`Yh_>)m=CY@TB2G5p; z?_up*``=_U+8XVK-)Ts9bZ@&n zO-HWfVB#O0(}krt!~4%hZC9O(#N+(Uo^??n%Pevu_^ycCT^DPdjTX*q&6=4@x$p95 zM4sYh#PT~BouuUJ4}#~Kp5a=Z^ZCZ8A*(-BxVPE$5?nIQ+ZiX1p0h|Y;P(DuCNcms zq2YQaf&M)!`-uWF>l1^m1`GnATd}}CD=;>W`bx$9?~t>cfH?<@jpKn9Lc9`br^@w= zj=g`skw|))_#gHR{4E$<=;``v-Ugj)S}w~ZKRjmy@Eu>b6PU=Wy^vyUEufq*citPn&sE zGIANp1fffEAevIXbh;fN^Y!F+M6ysNiAO1zPFSr422?bN9YV@tXLw{h%@LVIG^Dc} z!Z;Tc`+%?fAJ2gEo`UxWwdNx!5|Wbi_&`M9A4`%jTqvn%)M&zM8&Y>TgxZd68%M|M zZgrLMZ&{)5%kLtXmra^%*bTSM8E*Z|7g8WqapAi$G84^6xl|s-fU9O#^^4_8?FVP? ztCu%xe4iL`C2X?}{#@-yc67H+L9#F;!3^bzcktjYqo!}anrZ0AlTS7wALb0rPD>>wmhbZ%}g$@Gzz*4xAYSJn2!=6=E(#Rm{yiU$^k-e|o=kfwz z7Sf%mOuk-JpyzT&osU24xD7Gr!(vjwOnI#xr7p(EP%HS}N2T2^CNl-Qbn&ncWm4Kr zPt)hSk%a5sL7CCZ;zJ0mpmY%eCY%w1pBYAQ?;#qN2E$8$0ruHsMTjiOtfy7{OSRD8 z4BflFzS>l*BX*T=)byY~0Qrq(oJz(> zvH2V#9;`$6)+hvNA&cfyE?|F7=Ez8Bw3;RgWnsXA802s~5W!b?;_!?T^*$=01h=CK z-Xa*CWXw7BpgR8tL~(ozc2PE*rAHMQG{ks9)#yZDDGM4z5$OC6SOP4kZ_nF02W4Si z4QXzv>nD#U;I;lIWQyW}Ff^kI#HV@r(e#h`1L}%=e;USr1C);_;0$T>I(s3;9E(nW zm%RzTkk%Xv{HIL*(Be6Sy2y*?3b?wB~>P z7)pd6YkCU~cK6>K0{*r$2EFPnD4cMDq_06-(c%U46QzAhmqW^-IyYp5P7Mk>`EvPKCSH*BNt$gdoV zuGrq12*NpB1ID`Z>!^ez6h5r4{p^>H25(Th=otUwg$#3>X6@VQ^hHj53&+hV!ky9N zxDcVc4peXmAMWp$04b0_`?xWXd+$tyH<3}8;ejA`w>QMx?6SA!vlTF{PMV}f5Y*L{ z0U8Pk+nXug+VxN}GE|xR0+Z!+?^H}+-p8I>q>Zko5u=lW-t*Lr++8>g!)=KBCN-}( z-qT`QnA1G@k526q=|o6JM2+A?N}yNYnW}Ev-*RR_L_O1Lw$v|vE%PtoHsMVc>g>SL z7=#G5=H5cxBNI=dUeM0QWK&55-DUFEbZA6X*tecGp9f9;K+e_uVeUj{c6#k(yHck# zvZuDCs$)hsQV?;qrL1A}H_4v8AJB<4hJ0TK2ZAXRRUxLx{Zt)ntF)Kj~6x`F8dFe5YQRkSMztS?_uv6;cHz>le|xFEfm|YS6U_uWmy!> zk;@Yo#31=a{Pp{rNl56Nx(pZc9J{$RZ}yp^h?f{IKKSChgy2IOJ$yya`8g)|XbPG^ z-sy!s?g(kMgw%{K(yL8<2jQyK?k)&Lr#MI6f`;W0COUplrZ186CRMPQX%ISNzRnR6 zz0K(q2_MxBIYqn4_@e?Y^-fF>6C^vGB3!>{ilLAjKT_UnKI=Ih`*wI#(l;L00{s01 z<)TbgBSwL+idGbgR;n@$qeKQDZ_T))l?3Cb%q4JYxR_t@v(tz_Vk@eahlYLoybzQ3 zvG1}uGg1Kpzsjs9LiKXN?|+2uO4IR1T}U_lpJnXhK0-nQfk`k4<4o z`}rp%t2iSmb@%1E|8z=2%`!%$IvB&?}tWwktj@hJ`4HS?F45ZC+1# z(ScseYXslIDzSB+I6U@(-XuRh&)!tt+1+%tC6%Mm8#&NHe|KEUxaZ`I{EN*J%<26tK!|5?6(2B z&NJ{1La$U}jnQyb38k>2>HCVRLK^rm&i)CTnCUU3k^&i2)>r-YD)CS;(n=Uu9wU4+jS>}PxfUN_Nxd5b6|CN?ywu%aB(`p^%a{!zrD%bR-$a&OeW{`ZU4weC zS}2u!mqWNTo-l-C+>W8-70U|$!<^j7R)j#2ZUy(^*$1tid*qRkcaWwpe zM&M54vfjLEw7-xUdyH!BUqPF+n>! zWKqN`z|Q6;{Lw658|bbeV$?u)z(@$}cw8T77aQ}u;d|2w`B5T2%$#1^SkU@pc*h$W z77%7;0nJGn=5}uLO+}^RocXZCuTg-Jr4c`; z&jL_J{!uguzL-+y&oW1`z4l(bua_JH71ZnZ#u5!>2Iazrk11QfZa=NieRWc?z1ud| zz#V^Q9k_(9Rs8XNKNtitBfp{hx6`VLujENTUc4w4h%bQvmJ3HZU60m-^9%j*nw`Hz zdc)}zIElm6Ch0@pcSTb^h%D!MeJb4k7nso5^GB~=ecp_ggIj}&!VI})%ZTU6IhzM`^1vC;O`d8-$8{0$R@Vv3o zWbW?^>d2e_0=BJL+a}8t{W84%At8WZJ+bbAe!hm6Oo6&-P*8+uTy0eF0;~0Xu;78z zq?LY#W>aA#_J;b{|!I!!0BC>#@W;Ui=Koe zHi z_CvFhEY5>ntqK|K-N)Ghd}F zKKQ}uwjR`Z9G18)a@wsl!*}%_h7m!_XY!PHmR7dj-TCS>onU-&!X8{u4Xqv8vJb}@ zxORCeJQunh4zJ{Y6o2xDy;@Ke{eZV90-CX3G2t-PI6t%F0hT{0nHFD?2z|+uK+EeG z&i+!3vVxWN=IBxztwmz{DW>Pf{C(^R* z9Ib(hnyAs^p!p-Mk-|A@A$AEhdV z3e~wCM2n9wY>CGMUcYK>=~X)5R40xgLlD|7sm`_=uueAL+hbo`UT06GVIAZ;&#D~t z8?^DcvBkx*<>s(KLa;9{vCF5s!LAMs=yMzDQNgmF<}wFb>3`b|!9bhWz;#k9)2tQ? zLE-c-qcRtTB)bNpu5x5gD#<0kFlbf@k16krs5S#EXI))OadAUjoC*d;tcfuOIr)aD zSS};6oRT@9_ODF_9KC2SBpy4!rcrOgy zQBhDv|MR2U>O#EU7RjA5g$icMgnoK40)u(S!}+T0BG%?ETYRXP3GPa7Ybc59v)^`Q=k`dd zQe|8mCX6)}hr?PYz(_+wLtEh^<|prcvs?B6$!kjwmgnWAIyy>eRQ?DFF+fBJJ3B|b zK7p$+=ve>$nY}_6-oY91>;mcZ3MG&@f{A;sdnY#54!B6NSC-MTsSzE(D*@5Sf-&O7 zqMRzw^PvnyD6Z=&K>A$roEqc=6E&9Sc>J5KwaQWr`y)Sa9V{OnhbByFuL+jY5faF_ zLn)hu&6;)WpC!}zIE)W`u4guLCl9yh){Ea)7gh3qh~AtSePb`X=aEn6$1_hE?VT$1 z+#bfOJl%*5$NF5XJ~9)1_H_SwW##7AtLt}p_+Gow@m?ouhoV70SG?FKmY3&#TI*3A z7iT%IdS4TT5(*3F|N4=imj|%(CWj040-jgjLu1m?ye{|DESHv+fKWY1@E=*u0PAfx zT`~<2z~$dUkk5D_G{nSObt~Mt4fN~1F8f}$qE_Pfzxp~?$}HI7xsStzi<+k&87jg> zdazvo+GVHnDE%fPJS+kZ1xh4RIgK3=84ejGgz`*#$wO;}hlO{(2^SN+ef?O@*+Mo` zz?li5i+X|FNeSDUl$!*r70ZQ5fP?Z--NRZrC;xQ9NL}p11kXc3UV-_KUbEm}tsPx= z@q)>G9n`=HBHlfr_ldQY3d)L#duh-~a;}Z@_8-b^plyI zu3&>J!L^{a$fuoMM+v!b&?w5Y@q~UhFv_y%Gn+)ETzKmmW2lnfua@^N22jL-<*7Ih zUkHFcS8aB&Qf>CW{}8VZT&V%XyEACjh)-(LTn;8(0(&Hrxz20$&f5%4Uh`vqqprs* zdQ5T(H~^ImAz=Bg7|j&2&6wj-OM)(3!b+4Gil=1UGO@V$&2#+TNHvqLdyY}hEjGQp zzdwH;UE|X3MRtZdZ;4h{}3Ih1?S%wpyHaNv%{8}fWN zase0V8$C3`m%#3t>??gaGc=OyTqhbdK*U!uv*`pHh0Y=0zPGCpkdjMn#@Ek)MWsq) zB6^%uU>Zpc42Rc2(Cz;|1AhoaVn>6?$hO-1#u zQO{rB?@)-AtZyuzb{tCxa5KIPw zW4r6$s~f%fs2~DTR#7{oxCDpi%bmTtB$y;=5$IubXHzf|chrft}OauD;ASmOlxd8-VcbgGtIOc$yR5;;4_6+6Gu10d}5wQP8F#X72qaSLG4?uNJ0o+gghDjfeLm=6ybM z8Q~KdY zVlS!hQT4Rz=Ino%DVGe0Aoaw^rAc$XU14s&$#FYgQ7x_(c8wuPGFN-cG|q#@vY{@qDS zO|7N4b2&`Wtl3&|%E_Bd)2l!*t|kB18v7MVfUSMmvTpTWV+_kQ00pcEGel5l_ND^Vj!Z1gHr=ul~N z5Y=50xNmH%i=|YGfpeo%tIL429DRP#S4=0sK64h> z&eG-n?DKi%b0^G-4+U#_tp_48E99{IO0Gh{=;twppJt@;3fny}YJ}JjQR)-FR?$-f zEQY&Vo(3Six9AcKXG#^uJO>NU11XK|C6sN3OE~C-?l+yg?mmH#+c^~56$I~B3p0Jm z9z2&lKR{NU>?&bbF({pRGQU>XsiuWw5{b82_g4UgkfZl~eYF(Y84bq0rSEa+%Azm@ zJ?O!H2}9_TY~|LuRn=hJQ*im!hl2)OYF-9(5-B573w03D=*6?~D_^!SJb4l)HRTHX z@FCma1W+goO!jL^Q{o8uRlFFUYj=difpq8Q6i2S}qjaQjNER~e2quO>QP7vn7Ebpi zN{dR(4Lj?Cr?$fjo@+&m2A1(A?9|Z%p{=kYs&pBd4tCr1iVp(j-jCCjDH6pA0D3}_ z-1aTTPVCpIvz!=B=QF7gSq7^Q-XjxH%5ubNsuJ$q6jbbu3hL+pF08?MHV)TjQ91)M zQ{)IoEY4Y=6BAeTljZE`7jfJO=@mFT@?BG1?qIIEtxZc!j*K@6JwK@E6=;(S_vqF( zvQS<`S>A^0_bX|=^^KWr=QHz?e4}DpGW4KQ(iDYFcwCrSaJ^fr6g9-d7b5rqeXV}k z9iH*J(5$E0f0?Z)ALxzUn^svhmXq7;M^8Fv7KK5Hu@v`niC6#hxe-w+Ggm#|huIqOc{JXiYNFAT%9mOF%A+#Z7hL%+LzDcm z7gxgdtLrp_u6l~s52*AWa&G`1LBgUK3IvCTBQD)oSy{bWB_k(~ff6z^G$et#**a0s zb#bYC*G>HvBf}=a$oJEh2l5`y?HQu`&(Kt@SF`71ewJPJK@<#OV%MmI3-(%C*HM@X z(M;}(YijSG-|v6uXy`4ov{aRiNN}CA4>xmqzCI06WzhXli_3uF235S~Nn(G7+-=;HvFsT~ zjV9rJdx^{a3^k(DWXh_3VN?sF`@t6(j{>ATG%pW2(QEM$nCu~+G}%~XqTl8=7)WdX z&dKYxWe(H5{uRlgiAN_l(H2R%Jp+X)Bs$jEafH;bKPV)>OAFTMh60zNNX2cW#C$8v zo0{p~pm`HJ)n!Bbm#f2C<9qlU;P#Brh{!(W!IPc2{-V69DtCe$sNkwkprwajBT5qsO4|g%-Fv>Dt7}r99bJF+X0L}EA2*j9r;`1e zRg8Pp|9&<7Cj%y*^qWgjt3M3fWirJ%==JfGm0Z5G3Q}WQ>HC`=O9kV&AH>19t8q8x&#r2tit>iML1p~o{%FQSNEL5BJ1FQSuvQX8S|FXv z;99d*ggUfoTez--p4`T_4+5K3#VW$Xc9V`8mCNAQn&3mHKwZN9* zj7EQTGYf_oIGDoUo1yN$xT)HIQaDhCw8EIiURKq$5+ZusZtGZP#u$0ue4;UjsnjmY zgY|wOybX0sh@46d8&3kO^q_O(6YCDnwp6M5Gqf&BfFc6jD+1rc)=3`jqoOVvLIT#e z5%^3?-g7OyrgLka2?08S&%?Nx52%N@piE(A2q)5TbD2*+1$l9kqGMySPdx*8W==R5 ze_{r^R}wjIn3k%7P*w0ur@^RP6xB$nfJ z^MP=`UOBO&mX#6I9?ldo(vov7ziQpS3stMWl}?M6VNb+mSb-&LaE-$3PFV&Cuj4#> z8+YyH)+Qbi2-%}1{`Bv?JP%shQj?%Fu1d> z2#cCrCGREK>tM(9jRWsiR#w()EnpQgzrdt6rjhfv6yDY$FD$N21^mb+cu(oxl2Rt~ zs8>rUf41UTAurFSDEfiVm9DAp`RE2YRA7GYqZ(v`H@OMi1iiaeamiHFy z;9cXCu#>Ro=3^eqk5lrwDMLr+E#IFtP)yHphLU@tYh;1f2gC**yuLxwTh-#o^8E3% z{n&{E>)cqbZ?kz^FHW8(@~mgRshieqj{FKSH2X>%M2%)qsHwRslo!*87w_&1B~RW} z0Xuy1i^4QUwb_Q&=DT0bK@_D#g{RrJFNW3$K3m(>oFpj6_-HM@>HGKLJky~mI`trG zgRzLHhBQ80_b2JF^U7T*auw!pt%obD0@f#tAfcxtJ-teB1c8aB-lOC#56`E1PGSn% zxid?+HXMoTR098TD~}uMNM`>IG1MjT_xyyaAV}9rDdg=`B`Ru^46b=yq zPZ+h*?b&A6*v}jfzl=hOc|=8sB69^Z?qeZfzNcBbTS>I#A~r*NenBD@TA}EbuF&ck z8)J4lS{lb=Uo)@sfNqRxBVr-B6BjGQzSO-!Zk{PkdF0dC*s#ZC#OME5voHx488S4w zDYI;sRxl2C|r+3|_ zZoj_s>?DN@!PB2 z<{muUycR7AM*3w_KhAc9?2o^04aQBN=ZF?M+>1(9|5P$*(zW_6z2##kJ2GY^{aAr$ zhA)ZL_EYLff8$Q-*ZMmHdL(2z(Vug)I-IYaR@#p- zzKMdJ6AaMK=4?3FkU*fM_IflqCp{=+Uh{bTbOo)jYjSH`B@sifa<-6;ZjuD|Mf!x= zVn^fZ$PuNDekR|pf_hi!wid!21LlH)OM~zz3)gjn5;pac7qHP0pm}b!WxZ6V>c_`R z{r%C~+etGr{F#`1hC(8)UbA)$4BVfY8Hg`0L1dw3)}Abdxt?z`hDFM~Vlxd**8ZMe zlR7%@RtQ(;OXzg1F;dLYJy%fJ4fq$=D9i^Y%dNM{=iA}vQ@Tvt+*dF5P>I~Yz~F%y ztT1hR%lm``XS5uT?YrCKU37(BE&`S?7U|ju*O>2Rf=0F|i93m>`H|;ERrWKBB&Khh zK*ilfX!$v9^V}9yNrE++xI!PsEeuqmK>@Eg{v!-=st`^x7R(%TYTs%ij&tMcx(eF-) zN7t>)o2Lz@XO90x_O{mGby}q{PY%T)4jl0ULs~RTFbFNx!4cS3w88R5SGwQP6+KJW zXcXFH?qw8w4=?n! zxW;*Kqu?a`VU$|;!HIdsn^I?0(5v>rB@s3#fbfhe35fN6c-%Bjq|~<^k+e#uQM0Qh zW{O#9rcP*>6#hQ-wiwZ~f|*g?31k4qzZ`jl!=S&v1!bP1zyKx`+n7z{*!_wuuplR9x4)8W`m1yi7*ZfBEX&a z6R>g#hy>#vzA;F;EmS@CF8d`LD;0OO(HIMj_+`ks>}1G)$cSL##my+!{xL4kB2Hl%~Y{6mZK1_Z(2{2_+SLm|E_3XlKQeT|&H(MqoU z{WZ$M>zAh1DO8;ny4LV^iJ&I{1(VubN*^#U*a z;ol9<2BRL#u5gi9Dj^{m=8cwvVA@qNhlo37Vh^ot<~T2q{(1_Q~f9}*ov0dVG z8@7Ebf+XRR-^oIkKq$VEpO%KrP>>)MC%y~H6D12TT>lq6;<*|Bz#zsq%;cD<+@l8V zIY%gOt|prHxsLNTgyZXETgxx64n12@5Em<{{xv`V>aKJK!G-+^eX*0=G3i9N-tfmGnQh6x~odrqz zlQ@k%Wn#Wsp3P4SQ|Bw5mlW8lG8%H^KDj%zc!122Prnf3cIbpYepvW+cyK2NnknOM zHXZ=~M2UFCp#1?Xu6#A|=`a$)oX_}W3W_}Oa59rK->AtGs|M@|H(#8@UmADz9aG`c zenH{f!Cg5xUk`bmW2$?yJ%3^1FMWNuD5*pGW;YFVrza8zLQ8MqHCNs_bruKNEFhdN z+IPsM^Qu+9MNw+CR4)G%Jo94n!0>4ZMJ(Qa+bst6oUGfUu#Zo=JzwK$XD;(|UBYJj`c>qYs;;xAZx| zZR4r=aB_Ehpr9dbu`uJF@o}O5-1o6at3{i3N4Fea>8nPhtXyA4Xi!D+`IiD@o_P2| z-InBPV4v=?QL9M8tKF&VHteHTHz-L2qU^A(E4rC+k-2iw0R}w6?)I#0dhhwN_nMI~a?~GgYtwZ9deztdOkft6ZnRlv6I~a> zG@pRv#`mA8GditKvYg#(QBg8-RuKaiC8dC*giX2Uqw2hFOl8k39g!{Q$V<*|JT|#+ z)63_aWF+w5vM4RDb|!MMBXN~lJ>RJa0a3Cj;b}_>A4iCdu+EV;cOhMeF#hd zx4@{wG_m2t$~u6WE0E=!@<6w9b6S)m(c8MWAfH|(38T+Zb1`4rcfITugMZnLs3X@Q zzqK$<%DpvwhkZb_KTAJQoO~Y)6Jq`i#qp7yf?_U~o}1etO^Y{4xdG+Mt&dR;L% zF$GqCZ`b#xbD3-9-NhxxGcw1^V$1%@i(AScY$mVEo~j5d6!XKkUw#I%9RV3e?QFoQ zm732a`wplltPD!2dagZS5}CM6sIV#7ae|;dE+hhqh6a_aqwzyig$i<~=dR)(xI$Nk>tDYg z%%91&xL)O7rn{65DLon;fK7!~U@orER)ORNKw`%Gy^Q!6cq3ckJC}xtc0RVXl>PP@ zwyrQBwb+POqiz#$)C0*QJFhSGwayNqxwgXmO?M@+H;y6Z{)I$~V=Rm2QdeL_HwO^x zHK4XHU!m`6xc>987IX;Ysl^qfpFOyDTsLQKy{k2^ot6gnw|owOoQlw!y><8n&tJBu znw&ZR4{=}FRaet&i@UqKL-64465J(tkU(&EcZUR*K(OEt+}$@2Jh*NM1b4lQJkPo3 zeeWN*gD=Tovv#kp>ZcldZdrH=IMh7)B(R;wBMU;i9eba;3+ z*wowYjZ<&E!#XlA;@7?fjw`md?1f^l13{+h>P}%~LIf9kS!?9J8)pY4YbWi{tR?JX zvqNKt-CG08+Lh6z2C`2%bF=+u#7GGlbBEv81D88jq1@jJ@s#I+&w@;QlyB-n!{OqI zW59a#j$xb)_V35+^FNGLDP?`P7qT&X3SU37CTMQkEE}i{dH)c|9{tUtZEY#@SLt-a zTE|=ZYUn4wtzeaiY-@jiC)6fM=*RZ!9+pPMwAn9jCIbEmayaPFvZxpkjJ=pWX2(Cb z;2*4J7%WYkj)>`u)>&O&U@`bwm0X^PEqTPhuq@R>HK&wfR-oAPW|m7cIdM^Lq?~hH`!ZgB(5?d3-1e&P5*Y2p%^5Oq#wnH-$lwZ-fe*eJVd@uPQ0FWndtuz25?bkH8a^6c?*x znLq6~_Cm7V^}aiF(7+a|wla*K|M0i6}PLrEpDV@5%yC_7)S$toDMn^u!^G)97=i<0h z(;^BnTtY?zGZpP`*ZwmZFx~=xlc}o3)X#_O&CMY5iJvV7SHFAS=KL^|UWq-J)%=W+ zNpOtm>h!B+K&xFD1qoS132wol;m4d{n(zKp&du6|iwC^nZ)TxIw*HIWff@J&2Xee4 z;r9f$ZLM2xOh$&{GXSKdz2qHuTqKbWjoo)ArZ>o8%dg_*P8YAR@4#j8GFoyC=A`cQ zN6Cfxxh4rqMPQL(SY0nlo@d8G4W{G>#6`{N$@E8FgLbYa%o9bd_G*7DG!H-LtUWk^Z}SGLa)RfhNBP{we;7 zOvyl7wDLW%onjTEgg`%xmnY*t^tsGd4Z5Z#f2(`3dU-LUY{7+2Kc9;=ehbVrC0s;v z3vLy#qtq!-DXn$|1f<~7($jZc{#5il40W6`^#~auN6wGib@!-HYU~x1wFN&u_I@}a zDfXCH(QqaAgUrEB+oCnr6}(Z2K4){LtgiGJrLq6W1?0Au)Z=Ba|7m^+F!g>9_MCgp zy!I>J1b-lNVpQLM{q$=ivSrHHzlSbz;sRX$^Q8#D)3zeehptJs5A|IwoWH5$KV-Np z!%N+x+@?8cYIdh{03BOG=1qqS2?+^ZogcLx$1`paH@k}VOHbMJ6hT%AB+E^7vjJh* zo`r7A1_vvD%mxZ9Cw?yPV;+Gwk6pKBr=QYT`A2wkN|f5(7le*Dl#W=%9%N_GhkinU zY==hH$UBYNtTale50gactZpuqBiL{>VW-0E9%VTh9Q~nXLdnM5KJ_S3R}77#6KET!U}BbLy^RAsdLA>Pd|MA>stBs*4GC6gi}BcQg`T z(gbuleAcJ?2*(PK7x6^2j`s%YSGbweB55;;1vi`>#$3=?)M~?&IS(Ni#e5`tEmvFZ zs;|)HQqmkdr!QQ4{Kxa*K$&iOnm2x%;h6|qI}Ma8s81L#_IN)@b&9`df9>&ZCsXN* zjcu01#69%`s{Wc=_ZBrg+ZID|WfodYV3Rb^Ut_!0KC$79UGgaG{m2BvlI>GzvWuVh z#-R==B_y2!G4!(%)VWz5F53vFJb234j$+`0anbOHT##wu_Kb=sYFE%5nJFqU!TWOU z%I932;r${JS^TL3FJShdHCQt>dCaA6czxjL`ns+Z7eB)s~&m zEd#|h9vv;NPHM!^ZZxhRGVZVWc7CI}?{ZpF8d;g%hj?VMx0rpK99*4PRnp-PM(!<+ zD-*lUuCB9Pv4w@ugSyvf>0X1!+}4Sysje;)nf*)kIH<*?S!1-5VcV_;*V(a#;! zmz>(Ojf;-TM^c$wFj~^!%3HvF45h)Lij`+W27F{3`&3euuZHnmh?)6;a7d|K5~(3( z*l-I)pC7$Kv3_VzmfN> zS7l76vaYsR*RFqGIJ!}65JAxLKh|rsTTswy-Nu#|eZG~ABKMDg>@8>0;h5Z2Z2+1g zMBUMy5&Z!Jel-Q|43>@C)5FuFO7jwcA8T6kE;k>FClzq*E+^lRuv@4ib(b-*Vp#lD z-Sr&JD<0U=V7G+jinGkjKB3>@{6RBFLn$=m_;j<+(w}9j@Qp#E5JFDhya`vrXvhj( zFlgu1<|Ka@-!73&@izy&Wou7DdO+t+u_*EqNMm<~5waXysG$r|Ciz9|_g0~g1;BZ1 znM*UQSURSbZQk0hy)hEu zj{Zne!9-!o-uoU^x)Vk`%MBF52iA6vV#m#10`b4lRy*8cGT;O$avqxF!07LVV?55E8VeVA zNrf;w?M{qpikR16f<8DSkZX&^pSl(m!Ycfc^t@XZ#x+Ry)nUeQuFITWAOM6y&qS!}g7>y3#O^DV(=bBa_@Yxl&Igq@43;mPxZw@Pd0-5#+x z7!HLXkX$x|i2-PxRq{9~Uhnjyr`?^uI%JHB;@#SMZJ{kF*g8F*7xqCjB_&n9KthcZ z$LSKCl9i=5Z2JfKP4eknv%rlOxKDqL~Qs0nn;-NP?&)w?kk_bccd%go3|8fJmgp+{AB%dC* z_&|vGePm;c|Kg@q zsowzftfCV000duFzEP7v6+_ke?^?)g_SUndn5p?lrL*teZ$&UNF(FyVPjLx~IQ7J5pw*Rojd&GxpdX3uG(DYe&wlqIdm6x(#I-9KxJJsBintL6@{#z$aRO*dNI2zF zV+bgNC1YZo8sg>`w9(!n))#`C?f@7r5?*_f_@7#ax+8F?A`h1bArnx2^{h2YQWLYZ z{^>mSD+qWIrg-?4`c9^!xcJ4!PNrmd_y|m_H6n%-mZb%X^I^1~_@4USz2~>N2y8-J zngC3G$T`C_WTRqzIKOZ>JA%|uz0iW6d^p=l{&7LMF;w4K?)&>gqf#yAuXco7??I-- z1uh<4Z-Vu73?%R2PqIo}_*dRu%$ZtyCyx0_+l?UX;6csMD?=pp{pL#)P~|(a8(?(7 zf4{;}7TqLaQiogpX@Hq&RyK)%H~k=+LnM3jmAdk;{EQe6Rp4qx`uiNdJ7ZR4lG0$0 z_ExWEvw#RvHvkfb<_7it$A<&`5H@sivyFl;)So{KGo5dJptrMsO8fciT$9sMKvuQp zKgDar&?qR@o-*TbIdaBi*jpI>lknk823hRFpTNKHmqqixL+N&9CGOcN_)qa{n@-UI%G?Y}-9B#QzmxNlg~rBf2$)%5@poD{lvrA}*>TV4qZHd(N-;DbnB z_6uJmGd3c&yn)t{(JzdCdpl2B0ZY2uqMsiR9eBP>N(1zmKuJo9&fhA+S2%EAs=My% z4AMl~S98k3xG^Xi{8xX80H zKL6O$4Zr85636w4Op)C_^flQvfEcHw+=zOp?RPf-zRUBwe!5u;gZvzI<}!Ca5UCzS zg}4-!Kc#`w8*7sy)ls_NKMmb$R85tnkf(_@$7y<03ZzQxmjPs@YO>Ymi##Z6$G&?v zN$3v7!rWXG-B2rgAsCUcL3)e@I~F0ts4wHK#!kr`>kWP` zW#j?*P)Rz5?AnvziG+y3@Kn*>am-kHJ1UyrB7@tL;Bt!KOcDcjKc`72=Nbi(z1o?A z7;|`h{M$)!Zhn=rE>q`$gnS=t(Jz6e=vX1MQVuIrV8Q^l+Hc6IbWo2`=dAhOXGN>! zh9}%-fdLBn?XMEmk!GAfl>cOINT){(_?F6r)t5WuRC<0=&%*Wli)UXUgHor97>wMEobRxe(j)`a+ z*eh*>QDntr%F;qj92g=(i=v9O<&l3_cHRiqXo1=X*+RMpBfnoha>$Gf4yx()Qb!=_ zCBatlONFsm_3y<5!@e+QI}i|T`eO4qLMIa<{yvhR)}i4(FL84B+~kIL7w$0R9D7|c zaR}D&mcP%h#&OnNEl4;^yY_zZyJghLsKrx#=jGi0AIr&zp+in2O`r+D8H=ny-9>+K{i04Fu}q`21kBp3K|p`t0p3y-5O)(1MO6#9X*F@T;t3)?H&M z!OElqzcG(I3yN@3zq6`-RnuiE@TLyQHB#eyHDw^?l$4l@MSTd!G>genuGSHal`}So zPc76}n>#a!Lcak2eXI3a3DB~#6HMc# zmPr&=L>0{ARO?NQ$Ff^{>(B+4x3`o zFwx)8PJ;J3xj@4JT3O#pM4#C(syVP)WW`?Rfp`2{h5+@e{!<{Pqwec7WeZ)>XYZdEA7@^|d3stF(%V2U|KvXl2NQ^!Eah?*H!;j1W-^A3+)sXLn; zUG*>S+@^nP-tS*54Yf@=>oOq z_1BHARdnGlG>wBq$XWjMY+amjiZ&laO$kb|&-4t$*0B3UG3A zR=Y+3$|wZXV%u1Q1(<$U$zb0z!(;eBA3?$GjaWLKF0QNbE2ZCsHmcn$MZ=a==nR> zE@^If^<8dOQB9hWqh~JU99v zz_nZI^b;hswv4C?czK3J!U@c>1>o>rIw2tvv~J+?OR}qA`N95v1mS4?cF$Tztlksw z)|Od?ijvZw*|M1!J$x9cxIfb0w`M**n4@;&ED)! zcDmifdjatF_QeQ&-VXaO&9aQMpkJ0L9J@bpj%))97}}Q2JqGP;8Vm3ve>cz@e4k-n z@#UKR!e2ZBY%nW~;8a^#w1ANtw>aq!~7_X8~ zG5Bl+Bm|P-VsM#Z=%fNTp>KG2@RUVQ1xzpIbc~}~H=cv*l(Kjv5(+YT9nj3V%|}xi zcd%z>fD_Ip;F7;|#zC!WBVnnyv1z-nP7l+`gj|-hrD~E~Y|Ox$MF4O1Q2?J5Q@veR z&6oO=5OWJYqwghW{$hc-2#-%41_SQ;?>tK_yO#R1_?;9RMVtiX;Xq*qfR>|79 zEEVf=do!LzJ(`-uA`uqDw8v<$PoB{AP;N;KD(Dmx0)&N(+Bp`+m zAB6&96@ag}grgD`?m@ZH{la56~RG5~PMM<%@?H`CV!4pQ&sC z42LkRFq2FO$sr9DVc0k$qZaiEM(7=_Nx^(aVe^i`{iPVVe6d#Ug!&(99?vDRfH7F63Q^VNrGQZprp^ z&kzZTI92hB(vTJmTby^rNR#l>2z2HK<*+^^=SMPKaz0^yLGsa)uPea#i45u2zoGqI zlQAr}FjkCAI&hE{Hph1TnAaD7r~Ffv_L3YJBF&pm-4>^G3psKCXRAx-hmvv;!(y23 zOw0#jKoky}2cW-29FkS}zk~eYu%3H495$iUf6RTs#59-9IhE}pwwXBy7dQPwhg)pg zw&e*X*vKale=M+P_mr3^tuRsCnY{;6AsiVBw|wcGOxW8*^BWdLA9P?T=>%Sws+%_i z6124JQRy+HT7kQI{jQHG`=QizW>Z%5++k<4pr^HyNB8=$2pDtfu~XHDf*ZI7_xD`6 zHGyS=*!eEQQ|w1PDhlUC6(Sy&7?2(*6KcMO26gL)+jFzP0SgA<0=QjkZ?G6_Eed)c z3+Gmf0-d;8T`t*+Swwg^l6jbivVAgDTQ!}Ao%1rh?9_eC?rFm=QB+1SaG4^Wxr&4;eP(8OlTc%XPsPJ zD{jvH2NyMeUP27l`2i88;jDiyxS>Nxq$8F#0hc(Jk(Pm z3=EFiJ>eXSl*}aLhrd%01a02U9fIQPln%mBA<9)@kNpW;MXAYdDOrI+e5Z&35lQ$-HcA%ZB?|c6jto=Xn0(?}jaqGb3JQoa;BQ<|L&K@q zUZdt~Y-y1IJjTRHcgof>FxUgZJQ70hOsk0D`kg5(0s^ro>|K5$ld-o3M5fn-W_0gd zlhN02r7Kv&-f@&ZT&Suh5?;I7;!(IDfF_>$IkS#RP?~ZWzky^dY5;{#r1n@p)drXh z8O^U4IBEo?g21BEOk&9UsD{rRqfxT4W`+HOK3 zG_KG8XHABID~KiyIxu~E&@*yL#n<300b)3|eOc3q4JUA>QgfdX=?knwZhJkhBrBZJ zEbN!~GIypR80k1~?^BiWuO=PvtnV;FIG8v;%9NR=MxXB@d&jErS)ePhtDtEA*EC3j z0|~vOWl$c+*eo95Bd~Bb`minpB@mmE_ZGBs6c@+5b`@~1apo>A zhLxzyQ~pi`2Cf=j$2A0uBks8G2&%>y+#0_U0VKXMj~M^$x3_A0S(P5lWrERb;?>8I zcfU&);iaNR)worpoYLZ~a)4?$7e@N7&I3(ZlXJ`qMyl_WF~GP~n1ffbz3QG6dp^KPem3U+EC$ah2! zBv%PA2_D|x3V4SKSf{(JIb0zS**mwm)QaQNCIQ)}zs+NWpWN*hYc^xpI=e?njvN3* zy&Wjr9wVK_5YKLzRLK@8%^V%IvR7@MQcyS-G zP>5cjWkZ_vioTeq1}Ni$Qvz>C8mt>hXamQ-n&wXd3TByrfp)#sSfu6i;}o9#b z$T~z#BsMn!ZCZjI-S(V37r*Gv#s#RWj+w`F_sQti`x5c&CdJ9LM?7gGOwiRPzZSqQ zFxG~>x-e8=@6DQ$3weh$E(DP(t1Bp$fyE;J%;_4LU^`3RoIaedX=yrW>(z#3n#bl< zykhpTUi=YRIel{(Lz|R(y=9RZ+S%}mScPzItjpNLZoi^TR7*hmH;j1h+7dsTwU;YlMeOi-inD0u@js1Bxo%@GVQP z8^Jz=slSVVoH2(#7Exyi__LN6AY8ozJKxAS{(1cfAn9+))wEC2?m|aMy5=`kuER$1 zJBDvP>XGzEjiz ziD~aY5FOk<---5#Yh)jwa))~`$jZo2A)`_JYWH#pL&B9>h#VIKD(r8b{AqH%9D-Ac zL8^N#Dk0a<*x4->CW&ByF;q*yC}sjf=>G`SSiTMs|A6F|P55*VqpWN-bE}L69MqbL z1UI^+XUEv}pXCv;q@)7AX`*V4RO9oo!e5&Z{dA2u}jKzu>i3bh>cL{^ea6+~a`@3n4 z2|{t&X$BR%dPs$l>DA9fR!fMoxfEr6F zNdZ04JD{j#W^TTD30;lN!^bW=3tI<6>u!WB9NpXIV-jomE`zg3Dhg}Rn`9tF(vv-Q z`@2pxS;61ZuWZ4;ol-8FrrIi>Ap$5=a>W1_8v5pPdxO2sw~fs6vD7PCJPy(3R3Jn= z1WqmWRW!Q>@Dd)EG*HGF$TVqjqbKAnn#6Pbl+5%Urv$Y?jFT3gqnzLxAw23L2)Ig_ zGBJo@2Y4v+ID4z2jN z(My#XBkkl02C4np14%wg%sKAA%B^0=z;Yn@0)kYz>MojRFaa~d!BXH1ysYZRNT|I^ z4R>q5e)SsxD>n%4{iIAH%<>-O%vx>Kl&@5R2X7T;E8K)G-B7rbjBb(&8A^s@SVD$NDyDgmX?;k$`!TSs z!4

    &jsM{|@qgn0k?q&C_V)`eY(EFD|B9Q5 zN|H9K^w6EBs#izQA%qHarz=*$7xnsJ&gjnM5sv3+^d0;nnO?KJ1*m~;j4Gj4LX20qPMSCo1T_W&u zGi9t9GLu)3N5vz*0|gqB zPoD6)XJwJiiP2JI)t^3%I+T_|=Y4@T8=E-Sh0Ra`T?y=r30x>9!~;}p<9cc!V(9lFjoZU=L#buDl*=q3LJyPg@-O4y!M!uf$1vP=bL8H zXA8cWgQbE2#_yullhy>c-UqdZoxW3}oukp2VWV2gp52r@czSZHG_|}dIxm%IEm?jt zS#fZK{elxDdu0cY`|3~^)qYPASZK@@#P`xJg%LjvN8lRiCD8~wy_X!Riw-zO{&b}x z+DD{gkWSnn?)(Zy^Zs7kpMf6v74|*O4WaR&ow+|okL;P%vcBU!YlqPK5cNjU#)vlA zAeDjZt-m?pdtrH?Dy#We`_4LQWkhu3M^&er=}coPEG8u7B14$WHBvg``TiOERA#9v zlF9ZHp+q*r3lPEa&7d`i1T;gP)9~%J7eHu2=H9=0$bU7#EWdTeY`+J!{_ZpWvk(4f zXZ+_s^xu2Ne|H=H+dJdm(%rwMx&Kp%H@4qf{$IT?`_J*pzj~%CG*;u*nEyz;g|N{H zV@oy;;cnn-QFa5%30{9BH^*=mAC{qI8bjm_dEX9v&voJu#ng0ICQet1q-oMvFP3eh zy|;MH^sd0;UBT$sFx!1UUue}n@>V;F#Qol>Gn(DiA>MSJXT4W7%O->Baw5Vvzli6a zsic=CZ1r3Mz}Dzw)#(s@TKrw~wHFRYBWUoU?rys5JkjUzYPIbA`^o%yb~2m$vlKNP zW2Cj?mqvV&#SsC(`r7O zSnDqC9)%elO!0ePnu?J~_<2+G<0-T?qXp@X?iS_-oh3=cT=KP`WNJn*{E7w_D%f4} z6-8M=XG!5&3!yhS9>-m=e+&%H?)+x~g=FbFBL}HuQBQ|=I9W7?ziFuLvX~ltZ^b|p z$nsW?p2RwSJ(gI-r{XKZIqf_z_twQ~h=Z?CDM~W#XkFktHh0P;IciljMM2Cs zUrTN5?^*6|-8;LUC%j?IPjygn71=i+uOwVO>0s?2moRN=Oc~+myK&)*s7*+g6J1N^ zi;{J=WCp{6Tr^Qf4htxwOn?dY_zehH4$?Ff9G!NMb(ezJ+jqurPlYrBei)~qGa}#- zNj9rTwD%*PUghnC{$wg$g86EK;ABe_=(XAxT66Kjw9!e*d10e3N{SdX9`A+Uvs_af zzYOh@-#|o;B|{)$b}{N2swoG0y^Y}XjugawQ9b9=zjWALZoaFWFLO#7Ul1#+>aI_q zS4pPxMp_Rp+O=2XREME8GE=|DeiN5*GnwhPchp1TPB#3OIsK&7H5;+KQe%zvV-G_I z%FGMkTxw%^24fPQ#{^XW@EI}x?pb%ekh>zna~&2+MQR&$#*e5Q_X1$EDcoUDYCz7O zxv+}*#z(A(<(eg{B38qF><%^cBPHyet(~dM1jjb)QIfz9tc)`H-R|C)z;jCF%}Nb^ zCe=^$+-4mjd(}F#wX|V?B-Bsi9@XgewX+eYYt#dVof&oKV%O9bZeu&@D)+Dh4in8W z-Ry$w)| z^`LDFtg8u;8P8br1`vkD2_=9T=Eh5%$v^3{;=CGkrFfvW>!jp9d;!|7qQH?- zMbXMZNI0Jk{aOS)u{(eiaPZ_TBcrDR)&?n5)NH@>00I&cV{B<_r0<@CkY=m4@sAN$P{{h^le` zX-B7n>(orz1k1yVJ*CPF%Bjpp)Lo*91T~eC>a5LEt1s-zdu%{)e*EoAz~s54MU)HO z@Xz!LY$#UON175HE~wYrY_a#eaZ~o^I!-nff^Zd?=K7lHtZEht!60RC)pW&$yCDRIps9%g%g7UR;2>d*5<K#Ds8|zN+5I<{73^wbqJbKHE~CD)ZyTT0w6h?u?c)032>8h!ykE___VdO7TR}VXLG0X zG8Q#&{FZwXbIJS?<8+)U$H})&TI2w73m(^8ELp1;77C0YGZ~O(;Sy5KMz-k0tPM** zAx$ceAYvkzS;Xh#TO0PE6+(agRauH0b-+1hKAmA1tF7bZtf-8Qf_o(V7?A-mR8PG2 z{EP-u=wJ>=%gjeuEU&Xy;`DLJu0s$Y6*Q&W)$p=W^+9-)det30LQ?^#`X#Xy;2@v) z3~ET5S#W`~GtkCfVJ+a(154j%GWTxngRvAUf_1O$jgv@5oU=N8OO;xL&TRum@))c4 zU|a_iYORSAU+?1IO3omoU3mwfZ9E@JcQgcTDM~-?PQ?~H4cX>r@J`#h+GA`Sy zPw=ef!!>|@;@QOyTZc=6eSMJ!NiA+7v;FZRX{@F|IVbrgLC9i%ojIP&3-}ww=d6wL z@&VW1_g=6qp9el)gkkr;=uiJ_ zmi~}`jEo%rv~Jmc8M^B>3jQ0DMlR#kQ%FI&9N6sQ=1Mix|dze>|PwmI_Gs@nX6kKJnntUx! zP97Vt>Y48r@fB56*RFWj|p=InhExys%Aa3P{Yak?;bC>!Z%jf@DtgdpHOObBW{8{dx(Lv3$JA>xsK!pR>ucl zRgyp~lsYhjBl03njABnk~dCx!gS2{a-6E;)B;dD0@o97?dlN`(Z?i@<)RN#76IY+yB^` zWC{pAjRjZ=bS44t5eY3fW+^z3q&av#8zeCW*~t!gY8WB(G{qQ#xn1;|zB%d@gt;+C zRLBPRY)g)?q^-0NKeDmH9`2+o&I7Vdu<6ZkTGnKtyBKI}^w)TQ^r>by{&oqIdFCGI zlpZnMc(nQ40KBjsW}CyK!s>h121-R?_CuOcAD;2i_b*L@8Q0Dc?sR03{sAFd*@aMCuVRcWgp2+GGA2;y@h|i2LeM!rer27=DB_sF z8j!y64=q^2*^TVXNo`R-sc)ojbm)uT z`jIGc(0JPJ^QgWUP1^(xnYiT$P)DgkICM-+bB)Wk^aPcZBml#Ku)t2$24g3gLirv@ zb`6=#{UcGLQ#BdezR}hcAM<|kspB)(63G6?_x~vBEbMdHsfpb_T}iW4@bx5RFET ze61L26jI$0Arw%eihc{D_N;wa-ci@#c#L2va-mu-j47_m#qQc6Pe-9g+5{d*A{=q= zrl2?_kpWXHi3Rl7b>Ml?W@&_-XBul3>qQ)l_H1!ocbx%&>tKNyMt`Kz8#OnpotJc% zB8m_jSyHe|oO=9RnJq_~+Wh`W)%mWy;2mZf8*>IbhHTSKYkT2xnI=EoMNSmkj6H&s zctm0kBL+>pT>p-jL5Z#RDq=k3stC)N(bA8*>xvx`?VTQ!+pI_VJq5WoO0gZ38Vn{d z(|_Ducgg}VJFfz?{f|47?)_D2fuO zE9Vy`dz&?5FQE9CHDjcugaieC{a{`Fz64Kttn5(}Mt9n**2MN{r-x8miuBemZ1J`h z0>OSd!q7BGV9oAS$Oa5%T+B>hK)O$zqle=a=Gi(f#{5Py#emUvnzCSRADi5tg!i=k zpckauxA#ImT|rI+qQW*lWZW3D-Dbqjf<)!oa5fWvtzuw;v{Qg`Fy5l|rE4F`Or1?j^6LDddyDp_a`;G8c+iY8Z5NXNEC72tj^9V4Cl`UMzE(=M zXjLlr!KHHTsZk^4b>*|~%M5MuUK(@pWO*B{-r82rA)B9P>#T@Mqlu1F1Q~|mf@YhL zc@XnQ877#Nas+c%a;~qqJFmU@B)Pui2#a&{64F;a!*~ z+z%Hwm_6z#ZR^y~(=l6dBcH9T_)3{%TEB=^1B`1PC%(cmQVDGH z@ZIDA(>?Iuh4WkF`cpKdIm8M(#Nf)0@NS?w3C7g0G*qhw`%|$jbWIHI;l7(_c`98 z<`aU^J$70^FLBB;2w4#Yexo5RpjJ#+xKd{l%e`rkao=#e&FvZ>8RSbn<31neq#W0Q zse6r|+J)VyBX;)1eI5TUzJxUcW`4PVW4qxEia}FM`&ae*SL4q>|J#e|*?*bX|0{Cf z-z7QzEM9-Fe*bRk{2%psIK{A-8HiJVii88ZgsdY zstsa;q#x^tYDZ!B&~P4R;Vn+<-N_ooRWrPx*YVeEuL3a%RFW0xHLyJLxWn(6g1FuU zRU>GOoEvhC>+t4pRz(4aLZ}=q1c3==q1kTQb5-23OfMknM>Q8T>M<7Iu4~k1>G=KbkG;QjB6dwExw_tW6mhc#-_Sa(-_ufrAFtg*4;Tew{@gb54*!omN8(Agv{+? z))liEI=TyvTvAo%2U0Vd3yB-{L>P{X4|a?BJtgKS9jkJsh}~$^s2Gm7OG*^rpQ`6Q z!Kn4B_CRkvEO=NQbRhrQrmND=l&~0V5?$Le9CdYNANP4Ejf^YFY);%Byw)3Hz^S>W^6&rHoT8gH4(H9&r}- zQPpUGoV&H4M16?Z&JyHhSCx38O8AlUuEpqJE%lnwxGwL*j}yn&*?ZCP#a-F$$GCYO z;%JoAnh-s-k7s&g1IEyTd-IkZ?#~DFV>j{H;x{e~>{-;wWhAL|O?9%TBhH-~I?&q} z1oSi?mMGcTcr!rDQoVEGzB7h>30nNRW7}D7?wvwc9Nt!j;Z~ozsby_^T6J@5$;8>f zsa_%K43L$WrgA!VOrpbEv=|-HNC`2oH*Ow|`oN|(p`7LpRy3#;WzH3@s^q55Sqd=^ zpw#uiy4JrktoYin2?-5|HP#A&95RxiUwkZ&IJ0b7g?a;b+)y-A(H?}ZTw)r^UlTrx zQOKo)*pUe&tCB{BpnAaJVt%5<2W7v+o0mN}>NMTG!8+A!X*yu_ZtjiOO{@52R7hvx z1R}YrU6ktrI^u<`@r|aD%{35QHRK}kj2p2Ye7WMLcXH4Fn&=~as2RM zS-gy*pn$@FkaBMkqp{FSgBgUd1;~t0S?XNG&Vjr#KW{OUbT*TkbKmrA2_2lgh0-}< zUIO)bKLkB+gwe=fIRBZ;>Y=WQPDcycU`tQfgRTzCr|sN^X#@8vrGe-GqG#5YL9*BP z(7Z9rC-Tu2zwZK;6GRrBh{lz$vmsh+tDPXW`RfA$L!2|U~G5A9hgFakd9AHFp73+;25v~g6D7%@ww+z~D1mMk$= zN_JZxE+dex@fP!`2J4@F#}9(|n;(0GKVO zJot9Hd~e;+jxJPQX(m*j2k-jjBMgszB9A;7vcV#u{L4~F9oghGICkUvIk(wd;k?Ls zab3On#3|)KYyFSad7k1U-Dvh+M)PbR=a5^yv>)@2#co-GpROiQ3|{8rD4 zsPwqF_=gDKP(MNC_lL<&%foE|gdi@D zPfVNK&i9%ZTU2ZORb4qT)V`(J!a!MYgjd^OKm=i$Px_~kRcjFYaiKflwj^BXWim9k{;|}f5@g&4iE?k zj;b2Y7Qc-Vn800(-dGW^07^w{1bQQkx+De=#4UF#au}moDX`o$OpT8z<{zN^`?#Hm zH(12jORsE^^A0V@%Y%A(*q}k&W$8~828qCVCInxE_)=*hdz}#u+)cG$?|Mrm1vN3Y z5GW64yqMQ6cv-}El#x_Xax1Vvk zEj5?X6FKu}oWWJsYckH6VLRoNFg8nWHXfX7mp}eQ{{jjoC`CicPH+W5;Q5v7i%)0_ zNN%jG06whW7%yjN2@X;KAej<*Fo8}>sAcjp!x3W?MHrzOa&8x))WY--o&ff0{3`Ah z$8Nw#0!#Qw6onQcr=wS-5r-CkfX)Fr)3)f^*Ib1ddPGP$9OgUDi0*#KA*US9j?Zi! zIj7L?Unk4s#q;~9la8ba8*=h>fV1+yl{mbu4m>UIZvmGamd-|p>#KA>d8$l~7Oy(m z%@2?_mfZCofy$^WShRmT9r-#?9L^^)^!cXe_WCJ!K@HczT*9mBk; zb?}(mLr%NGyZgK=AFuw^;$3yLj*v=qTWaUI9XoQDF^OnK-s<|=bG$Nh=f-%%VR{uP z`tqdl)lwm17BWI=$=YZmq9~t+W7oOyk$<6mCu(M{rM;wTh{ zKha@Wz%Y-&s`SVf7n>A=Hy8StZ?Z5$VOGw7FEUj!3OD7-p){ZbTJ0wVtq5rEe?m$R z5>OvjxouFUIq3@Zb4u0vx@umGc7Z-}FZF4&5&8JWdiB2Rp143r(C3x^Max|js=}m2 z|8#Jz`gMNLjHh4q$F({UZB?Noq7Qcqg{+=A7}JOY1HI%Jw4k4wnIj0Rj^T?&c@{0v zmpcx@K-``Q_Jgvk!*~LDPPT16JQ|@G@8%;zLVQYqPo6~`fq8M_Ne;-6KapID4X#cf z2%uwNu?(Ax7c{S70Dy}{zBp{$JsvFwjdAr*-zK_vp>KD%7 zOH}uNh`8_w31{fvy+-xqc17KES4gp?MuIX#RLDGL4t`T!v=TZxeLtJP#QrOw{_;o} znCa>N3DjT4^#9Dl;P~k`|8}d9DGEcjnS^PlhNI#T)L9bHv~4aq=dXgN63#8%8_f{GwNZlkPVbHw7f2!DO= zB%+Y`CYixrf+)CiEynw>c70*JO|vGztwTSI*1fh#2p;P@1F7{{C9L4FdAl4dEI`ha zc)Z*iU6`raKU&m!%K3u`Qm=9yKf0}+k#!B!rs@@%(uFDA*SU&ap|TR%HA7F8IXAny z_Vn=_T7;Ix+>iX~9UCVvm^+J$(B9cZ*cJsv+1D8MASw1nX<9}p)wf4oiW`a3SvWsVqsgvxN%P6R#eEJSJ&7+-9$h#@}+!oEJ5WEZna%GAoF#@ANZ3o+zP7i*R`1ePCTXex4t^GBfDEd7uGo(LP#e>| zhGGi~h90dW_3ee{6`*TH^6dr~TrcYuOelpE&t-7|PX9h9cB1iIKDNS{fTRg6*ue>3 zb)o^R+;Oa})gL@E_ke-SvhLn0l6XiU9o%ZanT|!Imp&b0Hi7i=UxLr_=WXcAb?odpDkJ)H-3U7q*tpR1^l%H072T zM7k5tiTkX@E6a*dZtfB8VC5F)LNVBjm|+xhO@>!Gb-E37iiuQ@vxYlO!sJFEORjIp z`Wm!)wZ2{9%P&k)r4-bpWjml5ou{d8bc-n}*@iaWb>XL;-ioN4hjZ9`u8;JR-GIS`a#$R&xsbsB5N@&CH!^{5rH*L2^U8H()iXHmmfO zteV@3p_; zRpBmY{QL6%Z>8r?Jw?y)TlxRpQU0q5s*ZFOT!R{`87*h4yjBBFTo>+H7?5~NRKjx<-K>* zwY58{#i2ZH*++A9ayW~?T|we@pC&`^Af`M~7{K$EbO%F%NW?<$9k5t@3X~=HCN^}p zc|9<+1!n^fG8Xig&$d-YDEZVp?Ql?CI^=SNwincp30cB1B%YH&$Pm8arqDm~dS;iv zADg%53UxbXn9vDx+rp?cS_3X{UJYpw3CAi~h6i0r` z*sCN%R`+}J60aGw9dH)<$1?)bYj!qeC<;7Oq+1JG*KRPM`LA^;8_vh z(aEz4tMAQDe_i=>k3eirND2Wgp33N(+sYYo@`X|#o&^C+fPgVfQcKhXrVxswP=+Ud zo@q-GHLw{?a0J(!>|zVCQ1GpRnq7xp6+Z;ZE89=#5KW3>L05#bUIID-i(_IJ{vD3K zXxg;7M`Pj+w$Vq|)^6qM}Ts>2Z~C#a)Ri527I?QTCiL&j5Rj=iSrJ z+u7}fs{C22-Ci@o_?WrtB-e>e+<)1Ot~yKgb%1IEwc4~EPmQm@ErTZt z$yK>1UN05-hFM19vOvH@!*w3aQ=_|RfF5^e45r1y$ksths=OvAWbXk=Sgena)wwK{ z_mq{e;2EQgf5(Xf%j8(q-lblcXW(8Dt_Qd*a*&~=!#?-@;P&(*Kyn3$<3zq0+_Z`bukcJ#O7;|0N4b)1#cxlmHJr1l1#DKHIx9zX5 z^)CWdK4yc^Ls){Tn#rDS8=4~|X|LQPnD_3MOE#ls+)GSSs!Q44Z&%x;i#b*&nJD!w zj5WH7C3TWe6}6t>_v{oiZh`lut-iK4b7-gi9rll5otPK$*lf0^3~dW9Y(~~^+B)kf zc|9KSt<;QY17lUxeIsDgmlG2KGM)3i<5h~~p92>qX9RO*|3f@d zw1O$c3zl*=pB}aI_IGQw^@~I2Y(1gvd3&Oow;6Mw(80`VHHzhiPEu11y>?=hF`=j2 zwuqC?)=h}c#h!>KVsAS#>^;0q%w3Y*e8lzk^tr!YN=Gq!v0_h+iZ8$2Ira)`z*MQZ zalDUKMXgz+p@K(I=&NN5=FJdpsO>ASM=0W zi}{t7x?&u$YcU34kT9=C3gvm3AI{M!=#`o^t+6h$i-2mjvD0d0zE*oc_^h{OmSe@z z!dXw#BD7*scXh?N(5j^&Ph9!3K8>Dl`jZ%SniI;4>^tym#pPc_I9cicsJ4F+kBR9Y zYg}0Ae@_?wUE=+`4fh-Ie#R01WrUNJ{&(~2|7pSVyR!QS@qW6M|B85->c`f*!w7Fv z#pL7GKyC<%Ue#`{aRBNjzL~m*VGT=ocDkm-GUJid9>mLaGS#xFXrqhZQ`QRi!{7tP zb(K}6t*zggymF?P`8FLi&O_6)U&9O~C?$`B7z=lR@EqFAY>Y6OJP}upTJE&#b1lB# zX67!(Y*9xB+Jl^65!|J?sn2g#9hl~iX!%TeIwEccc)Bjb%I08$VFcC68wS)x;p1AK>MLz3PlPxvj$N#C3REo!d zI7vMf5ls~tViu+wB7DtF1$iC{NvvHKg_~GrVS?S&F$1qW&MS5#h0(t<9n>F5oLvq9;8y8Z{7~7Mu`_5E0f}0* zd}-QHWaH!da4`Q;U8eHhxuVMU{4{XNrdqb|?9tXi>7%`|W+lNHYCc<0Bb-27pQPs!1)ftF8M^U8F*3TNo8(2ESFI$|rIAW4hVj*z{brQi{7%*iQdKZ`dh zeU+|$tqJBWR=rI_SOYrZ#yO4#Q^yCd`@D%=mT z1w?j!)b;I~*p*s@o@+zT>1f*MvGr#PX1%fpPfRq0s>91{6<@ThGv6(mJWF7s9ZdS3 z#41t5kY}kuPwxJ0xW**j@H{q5!(5*p&NYYc-DxX0CSd_@=+ z6s3%lqr?`&yb=Vcx!$l@G3<8dtzp_%*Kw_jp>7pzeuo$%L3`2Ym}Xx1eX)BUIa7t%pzMve zE$~Fw?i_-4jN5^nym651!OnJEkXC4~Eg6x?07GIflD?Bb2kdjFH|}oTIy07{FVqHV z(8(#4UF1T=axI5+q+{(VrK?eKlk!Gky(#P9ixnh*BtQTb5bhGUfJqQxT6&sDw(e=# zlSdCpSp1pEs7VL!rgj8M47!-ZygW*l`pyY{9t{<+^Y)6bCT=CxO|y-+DR(S;pp>8` z7z@+O3O87A!V`MEkt}I7OJa zCtL;i5(g-#3NDXi_#P?WfjgF}D#z|#i?pzs)1WB1`5SUOWFk_TB=j&TUH*#ogWAoegZ<-Q6v?y9Y@K5Q4kAI|O$~ zaCg^WA$aiMkK~@5q`FSmJ>6Y(-+29MkAaM_m;L`*>zh6&Hr&OP3T?Pfo^Zno6K7Pg z^{mdd^z9e^h5@xQZIZG)VGyNm;L#a z9N-2srR2q^3jPP^T3N#SBX)3biUt(=Qyu2k)w`zlaM>uC z2OLN~XL|44XE#>pxsTbuck))Z3gJ}PeDU@|e$sHQ+pA;krT&=fEFb|pYO=qQ1`9w~ zGD+QD0B&q!qaUMtE^+{R9 z`h}pt1^p+{#%y|^q=`7KD#SNudenSoXK%5&kU>dG&4w#o}PU+2DqzrDc=DY-A zOKdXfQOUIfmRG(mh0P9Go1~E@P9RGiOL8{mr1aXx_7tfc8>T#=jy589r2fck&+3>@>AgfU}XdT)Pe(9e(J{mz7`z#M;WbO$t8d+f9S>k zIaBzf@BbgvAU}$i|9sG&Od;zZ2Kj%+6jr3_x~w!{_OIX2vUq(d=P^lbih0fEE49Lx zAICGQl_4-g7)3T*Paqvh$!)bXSagWJfASh)V8^+czF^4A1KB?yz@__%;A`Hkg0Grl z*1DCOUy($R5`8oGN(AKGD~<3R}J!m6`!1)y!}qM9*Sz|-MmA#ACe_FhK8F4 z56^8bFAi)f9>0M)na1hoO>5Atr_`~BN%(zF}R3*x(+kw=rQm?nneqH7i#lT*$V5Won@n%Pdv(s@7tH|J#(jaXTN$S60eNF zUMEqjPrNYCmN^XQnYwiB6p9NyI` zl{Q)q8sk`^2BaoRjpYm2(jOLzih-5Y)sN}IrhJN+Mjuko`7rv0#6QjgQ|3~k-E@m< zKrGd+Dx}HdokTO%2@0@%p5mips7rx78iz06B-I@P_{*Zjbi<6*Rrz>Ur$P14vsf-~ z2H0!N=7eSknfp01vsPDpn!LQc9*(Y0n8!{eN2?g9UiLgCx#zZ5MmQav8Skguo=#tD zChhKDT%FwqTZ}7|+I~sc(ZI0a(QO>_(ze%pg}gjF2Uw=71I~=afnlo`Ke~L7Sfhg0 zQr4{vu2l)>$|TeR1MTf6YV0{@HfZ~H)$3r86IMS-)w9!{PA!@CO;g=j!s)XSwr=7= zB!->b5j*vD1LY_2#MR<)WZT@3CY85pMCIG)+gnZl*y_pB+;q%!(0gdS-5)pq}cf-}3 zbwW#&h^AyhgvF!1qs+9HkuMaxB0w+`n8iyZ8 znK`Rejoa|H*V6*dRp|Q{u9{!X=?KX4~+raNSaIjMbt85boI^cBl?Z!#9E;jN_HI#h>fkMw8(qrQ-TCViAH7^ z2J@V_&@%P37z$$rk*i}0&Tp8^XW8Fd9)@ZM(;2fLh;f^=wi`8_BYN+qQSej|X8ONH zM6}!snZ)VKU*o78qS#Zorr--@rjoL08cCl}VauE~e^^raC{x8fWX+SytZ}fcUf0&! zI^B=H1d|99Nx!2_yxAO;o;`@ZvUn0C?!%AXnCfZGc#{vJGhC&1@CZ>V zF2j^6isM59CP`ACI>?}?DGd`}QFrY~nHPl9*1fE973J*^q$gVPI|+}%KpS$)tixv^ z3E|XlHlp9v3ogm8&TP+4ml~UFA&1qTj-F`dZPkc;!{MI(LCl$u6^v6_mZF9?g)0KC z!U`8-zqr+p=o+X`iBSpa$N;d7cAxgbtCvT=THy`)G{rTof(+X$#za`2NU^Bn>E^Z@ z$UW6uC|i!uTzRxOEiospqInky4^zg?fyj$~#fHZjC9;J@jtJh@;un1o_(oMnh6;B| zYpOsg9SO+Dokuz!?!3}QktiN;Q4!c_l^%dSAL^=ei`n}sa7y|thE;FLv3t%i)sJFV z-odyhJ3pM(%9*>nU1>rY_t7CuqKj7|F7dMvs@jZqaAe&>GY(+N`3eyJTwB8?0k$|g zfOzz1BAJ1Gm{1%KdwWQYrq4OJ-%FJ@o(5w5OdKXg5);Kj0bfgesX08rV)$c~sHRH+ zMfnn*;amt>Yay{{26?&A?FwCW|La_k=q@;&=rC3ECPvK6JF9QahXAE+Yr_ySy(J(^ z1k9TRN-C~-Q>lxNUZmE#hj?qZ%y*Qxy$NP|DE$~R+qsO&3|+9K3sha9(JVs!A2EyP zJYIv6lf73#jl7WH&5%28nidufa_<#j8po{|wp z!7a1h+cW|73l`52u_}IVnRLYJ3`vH^dVLAlwF-}qPrhQipzZ^Utl&xMs`I&u@sR{gF*n3&O%Sf) zXTP(l=h$Q98pgG^%VQu}T7bG_By&KA)TNz%)0~g!SOL=ZLX#!)ly6`74hhj+B(DUS z{Y82K3Tt(VuKbBUj0AXOP!~6{H_Zh&7r(nz7u{F$gap`d`1B_c%VzMPiCL!5*Gk6t zpt>p$T%`g=L6@`>(V3q4mswh;O;$#b6=9z^j5_6NiEPQXMAArf;hT)@)Qpt1MYs^< z!^J{$WGZ^B)2K#}l|bIM=Dnj?*(P4w3Z(Q9Q?i5%4OUJgMNGMHG-{@WvMydKAiU zy1|2z7WlQ{aVB!vwl~#b*Um8vJU#R4Rwd)uB*pUXg*g)9l0faE%KFYX%ohqD^{c;woqLwVCLA{pou|H>0M=)RxPNhFIW} zA2IE|xwdnhu|23Rh8NR%^Vv3Ad+xaFqtCEa3+3^nT@eNOl#>{IXuUbCz_F77|IoXj zZ#1dP?Y*ijMaUPAl9II)AG@E6V8UV`i!5POR6tmY*kZx$Z)QxxJTO9X=PF z9%a|J;Edz8Gmqw5M^}+rIxfq|WcqS%{Bds=v!`07kJO_Sf(J{1P1%x)L@NBeId^42 zvNNU5dqg};bR(04y23IJN@Fci%JX1bnI!gPTpTrlMh1XxlU)R9p;t@+GBxyx+VMtE2fnHq(HXW#o*~V5Ou|VVC&;jrm0Ft5Sxfg_-UJG-;aHS;Wm^l6w zPtu=jo`D@Tow_Ru;?U`KF*?v0|Et*%F=a?LTZ|A32@!%(@kTV;JE89Di?>kN)DY9t zFZMbcsa-!~)kvR~c_xhB6FpJkm|9f_r&iIu>gQBCZue8a@0SOO49C`^qu-2<#5 zN%1UlUI#qfFIs6&SH_MH!ut^bUI)gCpGJ6_T67~Vh8fy3t2AufGt9BCjMxS>gj~O| z_UAj7AlVBCq@kd)0c47M*{@4JT1MNMPb(f?j-K%lKKaF&#Z~iAa`14&cKBNqBu(?m zY*JBkwVGfcyjXlglwFqMgdAw(gCa6UrVIf?aPbjK*emyyMR~$l z5c;Kx>UL%i`bUh$!HO_X`%tsnoi&|9EkasZ=?eb5)UpH(!Bob%I4gH{p1nCqs#scl zPAN70N?T>?Y39QZ4OYO+HThkb%Z>gI;+II4kKWm8_i3;Sqrt|Xh{Gj;fP-sSCFbWalEuy_OZ#gm|WAyr# z7md?Lv8*i8hZ7}6<*3kmB?S>ErIhW1T@Xn4sqyp~VYWXHQ~!W%MXvjI-R(^FMa zX~k8qU#ng}>m^vWgnd;TRFIx{kV%8|veM(8 z!4#P$OP-lgBXBTSmcGC=hDlX4?c&t?b{7G3+j;+?M?*-ar=~SjK+m>dW3XBTc}@8t zs`26kym#))eD3xuRNa1>>yS-;W5Jdr3$dJpS=X(vj_)R0MCXoS_88I5a(s?07 zOlQt|ym@GP%0A+6aucEG}8x`1-9Iu>jO4Ym!;*^e5C8Xm3k`%)!V* z6&$S*c=)IC48v)P1#(ezBuUK`k#U(R^-B6&2btBnDT&G!NXmydRO-L_Gi{V(m1V$^ zy{-ipL(uAumX>SLxjv%_UhvB}6?(Fb69d53TX$Q3*XJ$4CKZhUXdf?G6 z-`%@8=zPSn*qcMzy5ccp3I?nUO?Ke84sD#|^t#J|4JNJ?oX=u=(5@=jPZzn7UXf&ZZaWoiQAwNXn;{79PxCWs z6Bv{DLRAez`!u0?wvTcree1-YLBir#51Pe1$<~YOlyT9)AF25SgTfp0U~DooSci4x zKADJ*{@@FMkMqtiFbpn;)!rD#|8i-2W3AlF;_WG7iA{kB#8KZhIozXuU*pH(sWFz& zIIG*%6M=GmvTxa3u@ZzTuP{;t;jWWe^}_If1|NCqErI{#Uf~|D%sO@CPyed;H1oo(%sA{^UQ*y7ljh zro*xR;YRoz^u_YMhC2H{+*AG!!|Z{8zw%fI{7sMb2=!(AX(1HfYt0dOm9Y3xgZ2Xf zG*1xN8KA^#lu|O2;*yL)X}V7*+^q-o(^QD^^kyFJOcv&2a>rlZ99!}%!;}J_^QRP& zCB#*8yO~B9K?-avMQSFnMMf3Q9Te)$O>sPU;`$&lL5!!cw+Fb!3=O}jmfp3w6&pt3 zkzqh~e@>rLaqyLkziM8+eQAwZM~730$c@VhVBpZ-vTu3YfPQg{<>(We7#1yKUXGA5 z7@q=x0)LlW?D)7u9|t=RGwO_cED=3fSIHLTfsAGVPJ~FUEGQB~j!}_Z3pM*AcS=mo z)Y8T~o=Y-hvXCZIxWRgMJfvKhqsag!6urAMSdTUz;lVA$&?xW^iV#&VziN|&U6`Iq zqzfhTzNhjeAw}3?g7%X8m_80QS0xjxjBWS^pDM_OJ%*2dGPec;!I>G7vONH966Ia(C6JH81zN(5dn}#o?Xp)BB_Z^KJLOJSalvc(X zG)+@O|6o>?;)9sFw{e$^!iHC)z#2=2_Dy1k_ob>iHbulB_XCyW$<~Ll&n)8s@CxU+ zw;#HdbSyZqsV*R9FI-Z^oM_lw#jzybsEF7caP{+X<<<4kN-qhMWx%!A0q`K_7x_js z$b>T43eNPRfswQ?-aR0bOl-lek*nX&LnLK_DGh)@D;OwUX5ff^-eKN;2=rjg+~P+? zSR?QL)ULZSqgH=ue3OOZBj|r<2`2h(@y2Ps6y}RBHVgiE$>^t4`CZM`Ty2B)@~0Ws zo73*uhBe!wQD?VKv$D0?CWm&5A51H(%*2;EP%dVHWxKw<3T)vs*_MD>)&H9-! z@#);rWqHiJDvAQSj^L-HFB)KmMU;@TDrshzbhkwtaC#Y_4L_!IlsQ|Lrojb0iH3X8 z^+<_Qbk})yoqrU-Q__Wt@m>hxLDHq^M|itSVsCgss<2XO%=vE4J#bT^+9B>AOqjTEb~zyNNE9(6K8@!C?N&7Y5gWJz7C? zGUtO=upSy87v?fH_3pvrC1=n6LOABMY9cdLLkL+M zspJzoGIz<*_7ks9ImUp!(jrLx@am%Wv6A<5EipT$sMNRQd-uFZrn+Z21%!|%X2H~H zTeeFYbbOJ07{iG;dy)2nrX#Q-Wg2*fpbIR(8|RwcYu;O7#b(!2h=lWS1OtKwFPC#S zZ=8l#1_lliJSzcSA&NBxJvKG1I4Q8L$P$)U;0s6bR7=A?!TDGz76 zg|Tvd0jG~;ehHw&2-DDb`vtKg0*#+)=31jm{(T>)@j)u5M73E}wJ#CtX z>JSvmLh$WQ4V9n1c2b(ZsEBvHB_1I03*GaLhgy=UUAleV1hCZsGA{RiOt>IsFssu$BqL=o-+ZR_Oh?I-Qd!4Nn*e>_;XYE zP@bAWvs_giHdaFHMQiYlWayU5ujCThD{x`f;0sqch z^~YKNd)NP8?XCJBvOd3M82XL5`QOQi5Bw1}{}b1Ks$zad&;K(=gaXaw$mgV@zPp-o z{sIG#<(SgSN&Qsv%XPFh(h$$31w$(ij_i$3%#SF3BD;TwfYhYi5 zrgNuryO4TGj(>?9BRc+GJGc9}cCM{>Wu>KTy^GiIb8*4xS4(uv->UK>k`kEfbLd;{ z>0W?|V5{5ffkh*mJm@L813GfE_NZ(LE%wR2q_nwPHzI{u>>jLIKirNkhanzSE}qe- zDhZDbBi3o^@_4t+UW_uPZDo|h6Y42f0za~mXW|0$%^$uL+uvKDJr@_uvvM=)YMkDd zS*l2AydI!1K)i}aK-jHvmc1C3tv+Nb7u>;%Mg}*w2_l5K=o3_CX8vE3E7QEroKIXCk1G73h%PryZ(o5r9 z!=Lk;P~M2^Rca(dum9HXIK>`eXK4jD>-4@wVb>PQEh(Pg(B)ZAe3Xhc)1EJ>|1R5h zx<{WqfxxfKEQzQU=QZAIzi$-fsdn=fwcrDE*Fl>{_nUDfh~8rx9^g`1H}GbP*mB7^ zhu4sd-Jc2&<^Wpl(tvruxqZ8maw_dzLJKjH^mMu=DbP$CQEKY~srp<{)`V8#&8YHZ z_p5%s^xi1~C;b_-H);ecxKrk&^2Po_sq!}filZEqYH(?60Hvu>5G`Df0Rk61I{6U3 zur?e5*E$hMDS|9#?xhZtgBb~nanFv?vm+cGepeP!iM`_6nRDctnv`gT7l@*%-=4li zD+rARUbKoKSfYGJ3DMnfy@3l{myvsl6(`l1sWJuqKz0gtx?Jd3f^aG*Lk-i7fJ6Fv zKt>A^wb~r|+3vTryMU%Mxb3gaz?X>sC8nW1V5MoDoG|I`VdWc(#&NAy0MVWR6Q?;T zG`|W-%*Pe-@jIC#Ne?uw89b3XMe+pL6PQQ8H^QzIx(VP=$atTP=u=B7Y0JlpD`^K( z_V=+&4^~tfz@^JHW4%bAL#~k^u3*D@J5Y^fEU|j{N$xN)UoyQ3(xBy`kMFBQ21E+P z53koLnNVgE?iO@LXr0hh!nTA`XFhGTO1|0*V$(Ovqhtx&IV+v01b|D~N9~~ywo{FW zoJEYRS3{l|qLnl!x!8fMzEX-j zKr+S}YNddV2NmU6J)#e zdRfI^^N74|@9WUDvQ#(FquDS8zQm}s$NMwKXIM~E#Ksp7DVe}f&7jOaVdWpR?J%G| zU^;_{a601z`dva z4WieG#9_3mWcm;h$y;BIiUp+Omiw#CvpZ`*|Uro)F=&Ue3=9S+1@Fdg$xsvoTf zuEpfx_r6ZIcmg-pPJ8?da`OZGz5^mFfb}t{~%Kd;6TknMLe{wMYM!-VorsgH)X!?Fa5-)>cM zFjh32XFaq>GeoFBkGwKAi?fyx(dL^M#cm_1!E%F6Q-II@7=c!BS|7Nn>L3zil1;yK4l11AebBY}(W;@>5tk{FAT@%>GbfuIycB4^>)^ON$Rqo!* zHUH`zwy{8gKBPw%BiA$>ex2fkK=JWhK)LV;NE6_yOROW(yeta^csnKrTnmW)S`kJq zL2j@f+|{pSEbK~#%0Gx}#HT=!qr{cU4B3;_Y{4Nyetgi;y84&8zackh8tg&Jypik z-GN}Us!JHz#pf)+{6+$O&P|KBtK~@k5f!3+aLw#J&ZyF{57jeUa2{K|T?jGlPuUs&e7M=+!~Od_NvJzfDt;QhTRIX(1?D{U+4l>@t%9zvkm2l+OL*B zj-kyxm04DiLemtr9c#w+rdu+7a}|EYQRWPP10|4B>KoXm{gLX)*e`(dq#x~8_LC_{ zP9nK~piGF0r}FVR&30Q_Ufv4oR`M=<2tYzm817WRRSs3&i>$Dld5$_Q+j4##%X>!q za4zYS`iuv(h%AL!NiLof*BcRrEYXd}rCvWcnpP}IPJM&4a%;io#A*DknI|sV(@x&u1|f`)q6Fy=#3(c;lLVsx0E)AKX}Bd5%NR z?C79j(sS$IO@BR|nceTN0%pluyB77=hQHem68MQwH4)9cv_kdYpV)XK~+iBEOx!^j?0OGiqB zmCxVinnVovfYUe=ch!vLr@)8DhD5}LRrGR*ZY+eWFC-8q9o=dFtk%#exbiDG&Zq(6 z^t!oE7_(DX@1QduPcfnn*MXObFxn{8;O;7^eOo3H0M>L_*pSkFp)n*d%_GnPI^E+5 zG(8cq;;(4IPg$6im4)N`_umm2$o5^0@DrQ=!YurkwBQc``WG$u0eyc<_F(%d0DY%D z{|Z|0|CZ{3?RO&kCpGwku>Lb@P_ME4oUIzgcfAS+!jcs7t96wg8qF;VC!-39I3fKP zQGJ|Hv3^^cMXWuFhr7)7n9zJ0yVnCyiM+hLE}uJ)U4@a^c~2-9d1E)KbYqzYTHefU zm+xTu87)WZ>O1;p<;-Bdbef!M06iNZmx{jh;cZN^Np07Xz1>4{Y>QDCcmY?d06DDIAP4%c z`@yo9;Q`1Rhqw$g3X6HA5zA3mk<#xC0$T(c-4iQT{KoV&34&Cc zD4IhUOxmiM2A(3S!gH_U{$E@mq1H_Bm&da^@%KYFa82Hu?(tf zRk#DXiZGvv`J1q*$*}h|gH%W7v;B1^Y+K_Y6Z!S>2bp3(+<3DXT=B#UI+Fn&fQh;1 zBdhcKK@y+lS4G4#ZQP(=m{Xr*#&=ym#@7dBBdbjfYrWr1`l^h2Px0l9zzHRXMt?6n z8rTD|cHx#PT}^|Vo10GS8saI$uvu4#CP;oMWCb1S{_M|FcQYl`WR{fE;0%WGmX{V@ zwlH?ZIN}tU1Z9g-8eO%Q*&4+0MWV`=D|-Ww2Xn zZNXe+$;m_fjB_FhYWB=D4$o&uZ5&`rx85#%8rKCT#Ci-S11|=o#V3ZR=fG$d2^|XDbd>zJtsgd`~1= zmb(JBi-tUr7+8+&y6v$SI=76s*Y7c{Rxm?T?g^>P3Pk0DAGx;YpDN5Mg3tyEWO#yS z=K(!nB8A^{A~7iG^&uVirlj80r?-yGyI~og=p?Jam}e7Y^yihBTCsKjAT0p}0C6Ko zJxt~tJJT-4o3S^+A;zt>P)wR@J6j{PdN|y%@gL*GmhVI!i8TzZx%h4N>-HSt+cA?Wh3d}NIc1=YXfE?k~iZkI=yR*G3M2TZt#ak zeob>2edaFHjj|5=)t|D&DJoGaAD9`!>vC3n&in|OcQw!7 zh4w!}d4GfUKRj9f2Alu87W=;p+QmIxB~@LGT+M!zoso0_kZ}BTQ<8LHCjqkmBU$2i zRg#2*z3Y!w|FEIK{j{O|4FxpGALh5;G*bVz%ncl~v>hACPj@J3I{?Wap+e6+1O)!v zgCDE;x8(KL12CHyk+3kavOK5S`n}8V6!|CNVE>!ZG!g29-*wjQ=k$e~&9AMHuwz=N zj&k@ZD_#?Y5`lGFO$|x6Z^zwcWo%GsyN517<>Mj|6I*z#ePld*;pQu(MGUfa{T^!i z%{im(M_y{)TQL_L`Dqz(VtDX=ELnuFAlE14=0QTUGDiR*);c4@mBXPsaG!u8PuDX~ z%xkN?j0K0y&3*G)Lx)EK!(*rgL9}y>JR$$BrorP&ERC!N7~;$jB*Q8Ca81;)15Y-6 z`@)cSMGt$qI13{mKjo$rdllpzp`-^rNU*H4$<*Q9Xn{$ehJ+H8Xpska#Pb&^=Qd^tOl$hG@2KZ`cd99Aj(>n!TpERc&ny3?!DKm3TGl=-W?-Tra7%WlE z&C&o1B}=h(cWdMk*KShi>J=mCGWS$8`SDO!b)Z1ji%2cAc1Icuwb(Q;b=G0hVS#fx zoCJkcQA@$>Cj{cVg$&A|HEBs)vG*CV899Stv=}CEn7c?S$F76==N_OBRgJGh;$C{< znH;94yl99ud%Zu|=8ayMJg?PQ-MR`8GMcJA~owiqn zdrG#X-_1!*L=29W=B_1P@y!w|=j8yLo{gGS21Zyfgf8M-wMfItWO=kLQXZ~E(Do-| zi4fD(WG=*o#37_UdXkt8zDNG|J^lygOydHIW=i~D-iOZ{{u2p&|?`4qm~&`Z5A zKSaxE_BbBgJaW+cB~}-U|yf0>UXsIouB^`t^P1h{DbIdDH>awnYfZLtGXGxdO4brJP&4M z@%%^A%GA}8g!?&J2eXu!m4&4%3FkA2GE3XLnmIc<*gj)CoU60jb3;)FTL))VMX`PoF?gWF({| zKtMr3LG(fNKtP^0K(NF;t;|6{pAduh?5D?&y&%YocA)%lV zV4$Br$nfy62&l+tXsF1jsOVS(*ytE|n5d{Yq&Rqlgv7+e=-6ZwWJDAMM8rhj2LXNV z3JnE~1OtOagn^1d^uPRh`T&9o1J(x~3=T>L0)`3-jtctJ140M_3IYcH{1~ABSnu<1 z2q;Ks7;rF9*ypd!P(VN+LBS#5VGv+pp}`?QAwfXFz#$-^P|={#F-S47S=H2y;u9vP zreVm0RW*!b_8FcH#v0_T&6C8xz!$dU7`Vr zA1TGCB+P=Ir@?!k{`(^STmuNm^Q2&qP|x21P(h#Pe13J`CkOx0H=!O zIAfcrZQYfaYOnZ3g~dCM29c8TR_@yH*fT%xA+tBj_?uLiX%F$iDhOBd4AVO0HdDyj#-UOO1vbW-h>q{b4`K=#wsuM1vgZdt5p%ZSk{oaCdxyFX~WQD;u4(( zSOCFFC*)ULfcm_lQw*-BlwJ($rKxZUhL5$jys{db!I!v~jrL#l(;mQDjY8DRq@@aH z;%`*f-9~W22jSR@&|>4hjcv!Qo+hD$TID*avl8TGoo;=SSC_yuwn#sF^x;!~0(o%- zJuu8adUOH(=hH$h7TKD)Pw3!tl8uQJ^%ns@TkFc>5eOG(qLvuo4|gz;eGNCJV{Z|V zE>75`iQlWqOl*iytdo4@cf6NaZ!O;=S?01y(Chw~%;y7qG)XJx6liJ_6zmF89PEuK z7O)k5uf~lO>x8FU*kCSxdh8S(aY*#x2G^pwy~DqK51}i6M?;?pf$Ol5Dn3Or2pbO} zy~{K!gu2D-G{#4y$e8Y8e}`#C-5Tf@9a|(K5|T)cZZ)GwGp_$Rfv`uy>=e6)D=cw0 z{nOX4Pau_rt4>3#p5LB8`s%KbU-*RAuB@#Kc|*S!kkCGMaLBf$ho{T3BC43nSI$n0 z9}sIGk#vB!r`yT+=C;t%t@tf!lJz#{A2K;k(Pg91b=Xd%zM&P3^oFY9boHM@+~SaA-SM zOsahDkb|*geE$i=D$j_6?qKYa7Td7+o@_R$q!({d!v1U?6uNb{iNjY$bgJk>Y|q;z zu1Z?T$h&wM>B1w;d*jk3Ylp?qCy-3Tt|5ofv|7p2Yg_3CYO>SBO@*#0>{JcRl2R)6 zm<>w(5E{UWGVva|* zX>nMm9Ss?yZpXY|Yomnwh>qrAKAn$bW)wxHE+TG@47mbt<&4!TnP9kaRnWVlJ0Ej_ zPV*M7l-`GR>094rmNUs%Lo(YF&c+ErVBR2SjD|;A+84CFOZNhC(Lrs!+)h{Ty`x8N zUlVj)!g?ZUpOD(N=N++=jCCL@KjGw@0Elx#H|5^;AE##Zfrc+dQLKqAuGu?e{}>GT zeK1^p4&rd(!o1UWP;AzGabD;aUdPK7GVe97Tti_S*9`d45lSw8Uln^W}5?8uaFQC)=KP za%Ej;aPRreAwD+}Vog)tP8&$$9UZ-Zn(?AKqZ&JR@dc;;zH#i&I|S1AW7D6H3g-m= zpDhtGzi-_4HG<>*8uV97z{}^23;4c91oJ-!1^w0X|HkPbp3nC8jd;EVrgeXw?f>K5 z{l}pH!S2R+Js+9o4*&n&-T%t7{d0GpH{vgM7t%L9LrXd=w#8kBq3m=qcH7x$+N@SP zM-z8rG^1dfk^n7KlmNgH<^fR1Zst3hOM)QqJk zk`j@Z;k)AvdIDKO+0ziD;&|ysd21khI6Xe2N~&E@H-)wcD5vA|M7nzdAvvw(wyegQ zQ!8c6D(NIMf49|yjoCL0i`nN<{H~2c&{>!wG{KzXKuo6O3FHK1$j;F8QOfpJl|>EC z#Ues-f0<&T+L@8LiByQZv+pQyIzK;u;Qig3rm@q}t3=4$l*8Cba)yfO_?g86``DJ& zVxN%4bc!6B{?apPJxxz3hosN6!`e!2y{Yl7c&#I2=WJK+u_#Q}`WO}|wp07j)+{qb zt$p8U7iqNC>X}`J`}*~pJ_alJ$=Olg-=ip1|2fiB_tuU4JqE=tMI&PydGaQ`xqI#xoweND^@>yq3)k%YV z$W6>Pg=u?baYalM74zEqn&(|5XvXne^%c>m>22asa&29yZT%d|a%FGm+d0dTrgAD% z-J}%{Clq9XqeZBrxFU+ki^FE(S%O<3D1ch5efMG_oG3$6DJH+=Sm`F4tbEoJNKWX> zMoW$TIdvXVw0H}54p+pG7&u6{NnLnSxCv#ede7qbru(=Vn8-Qw1(jZUcs4g`5E=G(^WFKdYvMGY9B(yl&r-_;wgf4}+DSwQw^wxc z7N2~3+g+f;8H zq8VQPC0&lJb3<3oj2S_*{3qMm$dvq1%~dZO88_4z>lH%SdUv@;h4NrP|31|0BHIm5 z4Z$#RF||HnbOgmU_pyTVzKTMmgT{jLs~dxXDU3b1l8Yj8IDv(|$!Yya7;iX!y*foewiQD>G# zmhO!8)w_bb8ks38&EA&^XM$6rOYQNY_0FbNZoHzIezd816?CFrdAyMq8)QwFSRG`9 z(0{pRyb}T~@|3);uTRB~Xp^ z){d($ssrfX9x$xD>B{54%_L)xJf3awL!H#sG#%gGA8=vt%eK>x6O1b(9jU&3Lmu(& zRvF@JoS;rB;(e*6VI898N}c>+oZM%nGnFOp;gPSYQtwj?ELudD>@^t?Ryn2XY`Kdh zXli^5V*4gdnt9^No^uD%M;W3b9{uG5kZUWNQp@t6?ZOe(`vvnAsn}4W31bmhI@Txk zn7#~e3YV*EmM+s_2ZqjO)5D zlX&i8bsdXCZk%}2w9*}$y!EK3$)^Pa5oF>5>N?ry)e&O#4J8!uF>x{~OaL-vygP5Xgq$2p>1m~HXRK*M1@2JS*Vdh^zamBd8tu2sLLiBXsx}+Ezi%ryjT-i4R?XXB zxH>{%*fR2**p-Yj_!Y-HLZu=;N`z>=rddL-{A3|1i2!OOr5%N9wc2c78!4yGkqy3 zdvPFCPYsevZuZPS1Q<1d=<`_>Vc7&~Lsd3*DhqzyE;X!ao1CVbAmrikM$yL*;u7)QY~FHqIJ z(ItwhYF{S6Asoas+{Y6-)vQpnIcTGdii&&PiHh>2;xAW4(7x(Z6BDP)&ks+Tt1fRN z^X`PaD~S9F;snvvcxqFIe4vqU8+QA>FdBT8CnYqIa388IPn6A!Le zh74Jc&rJB)YaS&RLzm#ov%x2jy(f?-5E}3Ts7UIOd&xT5jr&eR_o!+tzmb{s;tW-C zhPf5LY4zw!yD#khD7lNYkP#9GJvXuN%GYl_$lJ;3t45@}8lAHUVM2%Ltk+Yq>hMO^ z1Wo8PIEzQn9|<^D zG*`5uj0~SZ+-#4ZSM?}b>y_UB1hRjDFvno{Frw+z_{!2kuV4bui&a1uqa4y^W`9yO#{>e_7_U9GHG!^B$X8fe9~`F`Sa(-Aw?V`y`>1Q> zwEnnI126jR4Te)7b6>hA3j8Q|xAr;i;JwpNLwr0q8Fc zBrxbX=_Z*;=VXek_A!?B&AH8!2qNi^_yU|wb?43tZzFbLW)jdUh4Es|^NZuHu-+bE zeQruEP#7fyE%l*|C6fpN@|L}{-fAjLZ=Y$3uaVfqiajBi5zAX`if@Hik21+#>l?M2(SO6KE`>>|Wcf8?bmsZkgMx5@um%!``AUAzGtn zHe~-&%z}_jwXnN+rT{0gfVopNiB`fp^&RWQvXK>|x?7XGHb$}Q4VHU`j=k--W4^+= z0%?ZDy5Q&BS#@Ep+Z)Xun{Dsf_TA5_<#Gn?^Qu{jK2~Cq<)}Cz5x|tFxekaW6rs{Y zTRG)#aKxakka4VNhViG>IMHA>nhSYAh~^39S7Sq;Gxn+lNN;xP?~sHZgdXA-`Bhw;?CU~8bN*B*e4N+LKxJq4f zM8U?H*JrYg(WAxJvOPwDj<+pI4H=PQ?A(_RP!aNj29 zW!pi@e^XVORxpxokZFY_Y8~IY570kwalWQm;?GH)brP?1xxRk+`N%M;_6bDw0W_`N zPhk8(@d80&eB^ZJ3w1Wo&mxLhm>-Ni3B4pIX>_TR*y6G17X0UII1yPXTf-BILbmtg zLnS}B zcEC-m=GNg8$jlRnkonK0f}_@+^Lf35{et+%3aps$QgMA&%TBLe?Z3)q`#H4#b2xM+ zUpvGF)E`g8o`fim&|yFO?N0FW|6%VvpqkvaeR0$+ZctDVP`W@u4@f9d1f&HLdT7!& z5L)P6K)_A!HIz`L6M751DAIdJs?wz^y$HUXb7b#*?tS;2H|`t%|9ItQWDGvC)|zXr zx#nEux8|Im_%P+4q}#9i@Usb2@_~7QhSxp4cTL&&CrfTz*AM)lCdGZtIQ(nEJl8$A zu0D40zZm%Uq4_Tc{+9&)eYW{uQelFzoEbULI-*eqPQ*oNrm`7%$XELucYXB8_SEf8 zHH+1*ya#7KCIVD5yhv?bf=(>uoCDleNN&^ZQJO z7T5U+-rfAKZ2y}wL@>XhJVBc|D=rk4xLs2pJgP;K-aXK=)U(( z0lY`H>t+74Hx4O>#yhB^Si!s+32I(bUCq-qRjspqv(TQ5gZokrO}eQyAtKgXd#Tw|~qyFm3i_@Y#k!@}W^l8aIAI2@vLvF*L~ z18;kAZo?6e^LL zH?7`d;iZ)vLK2(vB&-ej?5-*WZZB15qK(ZfD1I0pIww;;s?*=$G&2e12=4xtKqReo zQaDxC#`K|ZBu+*_qc4L(D$krvQCiBsl4%bPdq#>#DdpwBW^_5|59+^e^7d&z$VJ19 zV`-xgkMbDA^0Xc9Eve<{?6n~|LYJZGtveK7!bCfy67tBFv>Zrdv*zIH(m7~vIG6`N z-jalrsrpcTGx{UT_?B|VIMzTKA`bzB5U3w`R+`PTonVZ{Xnx(9TmDeHs_DV?y+T)QLM2x-zP!bSMzY;>Da3efc8qu7JJ;cWTVL_?^_@= z1Tpsd^VsV}U0kB#^1V3Hp1ia7d1r04xWtrBN@if3;(;Gds_Yb(iJpan75=OGzcN3? z^=+}Hae7%KQ~ohapmv7O>J_rA{tLwJ;F$=`<`q$SJL;HzU%BOAic*L~- z>HYn!(2HU*!h#=o@>{LdW^ew(SwxMk#Kw7rrjy!dlM zarP7Yf!FtaBC6%fto~;4rw-*Ql&2Jbql4oV+k)4Olhv$#)5leU4Wcp|*8>w2OOD+G z3K#hwcy`hjJJqgJHI42Sy$?sJ4Q6)Mx>%Lv7M{?;f8fmykIY)^T$d1N#?B5zs-(v> zy%5g*fmfTET{AL!UBJfEsy2ltQ_KLd8Bbivxu|1e_d#sv3eGZAe~qb+z-zqe`@Sqa0p}o!?c-`b@!FSYK zj}Q4=XGE^E|D}(_7@wUl|0nd2Zg`?-6eP?!fz}t`OUOh`SFv>I`GW&W9uGD(I13w7=Dx4y(uxcMuE*9IKV5uU|I5Y`Q~+zLC2N}>T=^k} zV{mKWA3Vj%{yX02S!&K;)U$?{rHpTG9kEq1l@YM1Mz?DdBBd)idbFzm6gOLS(yhb$ z%XrHFujl^%dGa+=n8ViiNKP_50{W&>q?UVFpR&{I2VUY?5xv()Q2eD@o;PCsoF&lc zdeU+~c)p%m-R>9(eTT>JT1*d`mk?e_P!r_vq6M?~B{B^;?Sq z@4WDxj(B9{c=x`y4!peBjkMeKI8`jCmq@)-P#uY)Njh@Nkbblxu;LmG8I9JWQeQ;V z0Us?t7->Jt2tE#YE}pox+k@wq5B==EkRtlla`Y9QTi%cbZ>iFaJ4$iy4w?l#UyS8^ zeZHrdKK#q)2hJPM?~9C?R}%><-x@re-og97Guv&0T83GE)T0uzP#2gfIA7lQ;o!T# zmE0~@kuuQZWJ`AY(aPACQyjMF+p^XDdODPsTv#-xK*xhri?kW8zN%&}!xD~`x>vp+ zP^$IXGBSR#u0KLc-(63$E)SJXJi-9`edxWyjERGtE+2k)I@G%V z1CQTiuYpH{Sue`$ZTY@^-JF(6Wy?i)W)nn;{g3pU_Wx-e#>4v`;DnC%5+9+c2?L3s zUYeBJ*ti^DWo&y>|G?deAQJtcHmU4G;g+ilV{vDit$)S}m86A&E%OQ31bVcLn5Nth ziQGyC`sT86hZ-x54vPArPxCBNMSFWSOeZgfH!m)Bf-i@STs?3Ap^WH_sxcfI$M%IJ zr!GzL-ei#0r%%?hyT4~noSe*(T)b`DKE&aJp&qx)^KkH<+VJ18HLHI`jOcIB8viv7 z3m31;<96>aPa8#X*kD%ro9PW4ut#=?|2JeU`MN=TKl}DrKOKimj^L2VpEdstnH;#L zK}Bom<5fZ5aF1(90f%$uzZLk|jlbcNX4OAw5D}NPwtS45$A9#*+0;L4{u?UEtMiiv z{?E?(IQKS^|LixC zPtz3iQpECJO2V-NYpVjL?hRvZtb;sy1~anmB)g9X@98Ul3KswT15bJ{i0G|Eg^G-TkQ_L_ekS z?`U<&zZHytYmxpbm4C;o|Ibz?`4S#bQm9ZF+mZkx4grT}!K%$&&<}rYDs5_>@(fp_klaoI~{_2-5NGSXXhRwUi_w>0UD%PqRxLI(%EmXV!%zqGt7 zU--2keEg-ti837f>FiFXMj8F%uV#69mRN{;K1+|gDpScSL*9&?V7BNOBaF?bOFI^@-)WFzvI+8`O^EvnEj-W>2o6#^v zCRp&mvrU-Gf^JaJ%X9D62Os0eQO^~=u!Ye~xH5sgxRT?`G}faWFUlB~X-qY~v!rn@ z&G;wn^b3bIFop5~4sNG)Y8kxb(RU!p+3Q$jI4rQK4pHh(m9q?}l+LLQo|6xT$67Lh zryMAPI-B0Er*k!D@jvWE0w~XBpa^SsZ2d2W8=(A zHLI_u>ZWdw+F96JGcGP4W6V>{9zuE-Fc{7rC1$b&J6?|d@X42rqfAU7h-aWUgQWXL zWmX+rvAd5CM3RkJU4S4wLYL~oo0#>qLaWbK6Fo^ZGI*C|UB&rqH*vsgcHiShGw-b@+ErSU@wy9oC%KzZFO+tbVom%**7TXU1o z&9S5pqhvgsazQCQP{FH7GlQF&97Dlh=g;vU6jr~gKKCPe#J_F|MlsmdpdPvj2h2OL z?v2My73t4lqg-YlTly{o!Py`}OT}6W_yY@z{!%9367QZHY$e|wqHowWlsTBVi<4~2 zpl_j9=uRs0$E|Fd%zIhs?0mr24zuDHate|Xw6PO zaxT%(SXhk!u5N*d^SO|WMj&Ke&X4qD>SQ|Ei8OR&C=_@*(p;sua*p(*{TpO`=)Dcs zn61CtgpSxZrheR^xCq_$(Db;R?-y?6o)k%W`0%pgdwuAVck$-`NEJ>C+Q&wT6^coc z0CXC4HLHk4<*j0?+YixfafRsmM&=+=A1&K-}~Y)zva?^sjtY!2LQo0tW@Q z3a8f1bYQY=7riCTG3l^fAO!%uG~xd0{(E~gR!=r)h<=o@5RN2d9Tc!>PBUHW=}dHe z2)6@I8r))H;vQz)2>KRoiY!(G0^8Dr&B#cdDknUKw9~Vic0rzr89~brst0*Y1@aTa zLJEaWIjM}k8|Be=a-5q#woEm4j0yQ|?EW&*(<>gsF~JWC%lEQL-{X>Txr|%$90Jju zln|hwf_OOJhtm!pg=He%aB#Rh{y#~C>Ei@k`KLHCbD)ml2HTKkKYpkvR#JjGrfpqsmnbb!IOPLda<|RL4>0`Q+fwTubzgvWvH% zzB93&;#rA%DMBGSI+04`8~pTL=fA$Q#-pJ<)itGVSM!286F7Ts7U!t5R~Rvh3XWf3 z?9^^AinKhT?Y}81xWb-63Ev$h%1Nmu?}%J#{l0g-!o3=Z9T&8df8C#KgcYpf?tmKj ztVo?5SvF?vr)&qhOI8!}KhEJymXs?6d@8te$a&`=>T6hUE2_*(T7&CauGXYX zrX6@&8+MTlwTWiNhB-J6QZ9I{W(rV@d?nI~sUN1kYjKKS)IIlwdgO2>Zg7o#oX;?d zKQc1cs8!VWB7;-QILd3vFvWFSsC_LeZ#>8|)yL+*-3kT8J_M^Eo<3=)1TwKT5 zTBAW0{_LWOSz*y_{d$q-{H!7GVgL$Yx^Np$#PTShkYcoXi_X}3JYQsC}$9Xf$w-_|Nd#*3e=mm4~*hHk6wHEbQ&&Ibvm z{_D|6GbsJ|zboraZ1`dIN|wKRXDbNgfsS?MRbu-v^=PH|UbU0t5LQH)q`F(pQhBVF zCs&!4H5HYcsdXET?Erk%9b2=>P#K?T>KKdgZ3>UF@05nKKh5l^CfDc=pUDBS;*b$zq(BoTt0%xAvccGd%oNPU zw>#hIH<#YzuO^d2%-XkK6F7b~uUMmmfBodUwF}Y>IwEqr7RKL4@IzgsBI%PKKp2jaiNBqs(~wMydBsnaQw!`j zi^kYCY*w(zzL}f+jSI15UYsg%6+QUubmP2hzqAU;Q8uyK6xzN7ThIv(InsAPe~X#{ z+O~o#h}kq*(p^@V&W>Iw)V=f32+$l`C2iME90*;_%m3ic5}=6bhe5wXpiO;;k*>Q5 zeb#+INJv}}HyacK2_54n=+Sx|2m3XG;52Gk^wXU#9|lDU5GiH2Nmry!iBcNt9KBnLbWJwj&xL|$489^0*FS3UUA#`7+|ykyFC+?l_7i^a9;<5KZH(pF$p6N^D; zQH5TV*4?>lO>5 z3K$k}b6V4-?u~eh#ur7)@bf$##4Ksk2X560zO()M*wfIG^;pS|u~si3xcnmssk)_l zN-DF+OJkIvv?(HQ5PKxniE&0+Qs$&XFPs9tB{$JWw}}5rJW@QPD+=Ld$J%BPNNX*6 zOTxo9)80AAn29yNN7|`fl^qZ?} z)%}dP&Dz7e`Y@-9q2F3Z>vWk~`V-)XZYl1$p7AwVaOHi<`zww#4un7kBs5_$CgO6= zTx?=|zk>Ll$K0VBS~49KZkEHw#?ixUNP^Zsf8la$u;tygFJZ9>$b$7!CCjWgSnc_I zH4{&=Wu06~$Zi^UOWIx7quNlb)FzINPu45wZ&lsRy*Gub4kNgbJm`@`y{PLZs|2L4#~zDTNmT3 z)Z0^>as`|U5dJ>_jfHrM?D#Qs2Oqh-FuHp!x84h2hw z;gUeg#qtk4#(7@G8^2+cf)srZ&;9d^WsI0>4crm_48TQRQR$~Vg~wS<(v3W32T$X7 z*~#t1%uhLyDb*L96goJE9nnK`yqY}m+zC_ zYA|Yki7x!Ao(oCpHLxSm%L0<0ur?8bK5*ZNiLNDbgGFjO&P;Ib0`kbEr?m2zzVWbz zs+oSSOH&p4f%i!~_;&PPx6%%VECtE|8moIbLTHR2EVBQ;#NK9$(k0 z5{+U5j2rn@r}Vu!fq`4!u&xeNf*HKu=!Wxy_AkArU*J(r;o;qEL<-(LuDa z*vj0>+3EOhQ*H)jaQwnc^=0X$U-vj7WQuELlzL<GwZ!|;}@%3g3LGlXOQ%xOEiFEQ7(BA0fLDD_l;Py2#eaCTx+nfPMZ`H_# zCYq!K7*Tz&aqMV{WEwY3PPS1U)vCTg90a)nYaK(N?Jtj5h?XX#%MY?~z77+@%cPj- zkKrA_kL8LXJcL3q)z}gx5EqC!5CxHwFz{=Nya>JBlC8^9X==SZZpE{u)M}nD8$z5W zr$*?~0nUP^?F#1BdHO@!WP>lpChV2tv}?$;-l}hX$>xd^HX)%2qfC6rNSNUO;xpSQ zfqKqT_!q7`!y#)eTamkL-IXr&@Xr;x)!hZEn0@LvI`D61pWJOI*|MXL9i-RDNi`NS z8^=-TPsNc-IC;8RWj8<2nV&71GT3tdblu)u{9{fL(e${fl@X5*h=7&^kCg{m=$yu+s%5a`3I7O*w!dhRf z=qBf>?UYt(6cE)gvzxD|Y7kEnGl!5plM5JBZpGRSs-6c1-uyVi&hIj^GFqtmn?ml8 zP(-N$Kh(yp%RLU7$tB8MLMU2if18Dz&C%yTkfZ+16WMg?ay%avo z@)_gdIsqb!qmOu}6JZY;RLLFAodA5$vsAGp;O{mHRhWj^$NH*;s3(k}BeV8GS4}|D zNWKL(ZKmm&;@)tfn&i5H7nwroQ4};F3L#->gc2LOZkTG`L0!Zvxubbp{2Qv_msD7Y zpI()NjU-%m91+jZJl( z5dl@DyY=I5KX>Yo&IX?4{_=7Z$$2N_<@ig7xm4@$OnGF>`|7$eHf8mh{8$sX8RnVb z890b<4EoeO1j;KjWt)?b-Eg5!2vo{IZj!UQ$l*2sVrX7Q5dzq&dHG)v5w*}ZK;Bvk zFOy{LeQm=cys%rEACnacTr;VOAc;h$oX?coHe)E)=A`U|Qo;7+*#uPZ2shSm`VRj6 z)nxoHr4%Iv;_q#aS4MY6+O6wO|9Tpi!pN(?>W-V;M0V@;$Y+=mR4E~u5*5ym3hw{r zb?&Pay~9&a5`tyHw`qTtrY)SO4uL)g#9MLfiuxgO?+H~fqln2~TmOKL!sj@22ek%n z_05}o{q(uzB62IJBR6Zi{)IbQ7%=m?9Tt9NM@L--8#Z+}h_A_gd-MYjc{%!o>Z(58 zV%St;jXbMTH46@Gr0rEl12hN#y%Ag(v5zmwJ+ywupQ)HjGYu}S>BZ;>mw4nVRh5or z^1vMKb;k(v#u81TW@ra;e|2aA$T?JXnt4pP(rRUFOwX*a!DA$Z9k;Qo9O_Y9_ zsy=dHbaVo0Gh?bc?dntr4;992CdKi8@`$JcL(vOJ*uCbFB@Q56u0a@5x9a%!8EY)e zf4jTVNLJ6WKDQ?5LEhwYa^Lgm*btpPQ5n~2E4p@*Oblj7a8)302PQQHK&^D?MP9J; zQ|duQKDDaqN&7-c$fpo1qr8(f83v3q zD5ur*0`rnBvzq1k=i(T-yUjpvZk_q?0)=Fa@=fI`j$CIXs3x(pBEezW=ur4*4(D(d z7_PL;9qgl0xu~UhA21o4Q?@OkbJsAyYY(@1{odkYwp^qWd7z3$zd5Ct;ZiJ_M{FSv0&j4uIgerUeE`U zPR$;bwHbL?{2*oPxj3GcYF{p1JY#;_aZOE!k8vt#3~og?6=AAL(}zlH#YGd0WWJeX zlH%J?7f{)zY7EZuxKp0%`@VTX&;{m_0=5!DSY24 zlqpny<)xlE!$gAxszJr-J+uG;vZZVUH<*O8 z8wph)$V+O!urTd85mLReo^=Ox$#Ap&%}*ZLKuXpM^n&R*sm#?AD$fQV_5-k=^@>d3 zML}kpb}ePmE>OQAoAGPXnBNfu$;&I!f0Psl4P1rfQ{4r6d~yLLZiu|m0UO47s-lGJ zUsQcXEwboFaj4lOcA5!8g63=<$v`J<9LJb0pb_+>J`(7dA9&GUo=1K3u=%~>0c*KQ zO;Arxp)O|9w%)ah_iK#pgSs~>)QWTV)w2B4Tk47PUm4W|?`|>ic<;*fkejm*mh@Mv z&e}Tr$#Y_eNrPwSMF+uhU+`{p(D&ZfV-pyRlC^Qj z#!ju&G}%<1mHV~q^JT00e73@)zNj+}s6-pHht9%g@;Y>Tfv@iM5i0M;po!M!l@nb# z^+hj0W`^?dCu6^_50`xj5uI(qg_H2sA2jW5QP=LtO|0g~hroAk%Mcjj!YodkQhlRe zZ6*4ktzq7W8K=t-I%;KDrAolku9^MzJP+!vmk8)_QEFO>kjE(mFHd^UYDB4Siab?- zWN_`u^P=$X#_>l15Kn(;ojsmKqwNy2k29>}>@+ex@eGJqKtfKU|IiX6{cuw>;=CVW z@b3BdX&%bx1g8m|lujrk_)b9&6C4EByOF$d0LBH_NvJ!Bu=H%*31`gTw3R;TOP@Eu%pEQU)J0nR;0@p z@LugJbi?TTo+s&E$j3Fp25bkF9pZs9IS_t2GdTBT(8D@}58Z}sOia`luQcpIWt7~T zo!>!poOL_R0%Z(MHt*YG`N1;^!RgT{yWo>wMUky@k4+r+59)G(EY!?ZK5?k@9=%M^DW_60(02BG^P2%Brf8LDS& zpto5-C_RD-`nF2e=lBTc;w=)o&rvJ)&Y2i~QOr5+iGZ-(zdT?R{xX8eH<0K5+ydZh|WH8_Jh3XhO=JBkl#Wv3zsl*p|jv5k$ zfl4V9xi=2wLfBAE9|}Z9t676bvzEYMQdxdC{MpNt3exT8Cl!jB>8{L7lXXR!>!%cE zhA|enP&_JsE&ZwI~eSif9I$Z5Euc0d-E z4rzRtHZ^&EAoRJM4p~61VhKAVTr;jco>V=KiIHcJ_Ae)|5b=@3%fladi&C-=*Swi# z$i7|~mNisfMyDRT(Mmd)J1o6tMsjtfw`}E5(63LqOc}LJOqnIW^X^vi6p73ftg8F= zTO9u*lOaQw(YyB#wi>p|7m-_4ioaFh4c6=b%Ut3J7SXgWl~nDySLM*;u!{AvhK<`n zXGilcAMLR&(|P4D-`sY&U=Z5g74}~mT<-8y7}t*y^_r676dx+xD*X^pR64-_=3lk; zy}-x}m12fz{P-sq_UJ09dlj@j_n&8R^hb|D;S&y4BEh>~qo{zzRoG#ZIpR zi{c?B0LuV_!Fz`nfpYc(?Ib{Hh*|ZVPWK(ZV@ap!ITwPCw63sU&;^Zj9v7w2FMTrf zr}TsFYUw9i-S}5c_HD=GD4Ql2GItnfp>U()BsI(0cHi1AGYMM1!;>iYcXME^A|uf0|1lyIoyrbFzRDo4J>&8>(9wQ5{>=nazhefRGN= z7xWR3>P|Q*ey#`>@LM1ZS}VQ$a3dhOP=w$8?A*W7-8NTAU_!KuplaYra0QF%CZqVM z7+>z1|P;wDki@fm@w_oX*8At(^1)IP%Iej zC3B-JUo`w&SJp^scW?K)43*+te|DPDlNWhiy`l-;0Cb4HB?)6KL)S{9MCvT);V)Hg zq~kq+2qA1t{K*pMGvjg4JJIW|z8SU9V^CR3Y`BwzcX<7L3z}&kAeC(Jh0eHwabenw z&V?iW9BpbAlv{iIgpn^x1SKDhqK4KT(Qa}yJpp-KH^A~I8*cSrGdo9@tzg4hI1Ixr zCT5rN@#PJHc*bxSIe%OzIj8601R6Z!u~8&?knC|o)X6WK8Lba|-d~lncELrDgMQ$N z(!UCX@dQ_n`bO~#pPXJmr$vleA&2~64k}w7 zDUY8hG7i#u+aJNkPrjn{ruIz`q@b%vO{YM{*2KEeo2)Nz+Z?tGey-SnDiQ9}Ska2_ z)CmuNrMgw!&@_V*c8-hQ0ZTv<5TiZ6x)HDr%Y)mp8C4Da2bV=6m&b20<0j)<)X>t= z&8kiNCq4YVxh)C`rZylfUlkN2jFRzCWQM>vMm=_U>)s*W{5f;~^OMnz;UNxdc2qu> z?V6zMU#WWj{aNXoHoM@IWW_$uX5~(q`d4Rvo-Isbn5!==U@C!&U6Q1z7*aXZPP_CA zmN$6BKD!&GtZoX2Pj-=F1dUT-!?UJkO#{uX| zQqgbp!3>fjvhnibFg|qVbZ{p^YcAy|=_(Tt!Uo7GW#kC<5f+IqR8Q8_#W-$}CP&Z< zY{Hj=9HC}@fCXyp^s`KIY?uLe;r z8pZ0LujaipZsv0erd5t@%7%l(=yJh zb&0xW5?wZyb9~v&Oy|LGtZt0ZzCR>WuPnaQ7$=QW491r))dP!FE((i0 z@5B&pVGQm7a(PljzO#$qOpxMkeE(8SIw4jsfJ7mmW$5gQ@jj5IlpuIq*(Oyp zjFbHNpi0X-Z)?TbV&cD>oE52rZnF)wyE7+JYG+D&-(sr6|FX+pGh&^fp%W&~7mQW6 zD0FwDufDJ<*6JgmeV&}a0%}YLaGdB^!5X^NA3nIR`r0!; z_|AbGe#dS|&oY|7_w_lorS=#-&QUV2uIS>+7H|EtQ$=Q&M27#Ek3XU@y^`J%T(8X= zZm#qeqRnih*lqw7og+#-o^tcEFKhb#i&5bn#~*ksHSlAl!Tuhs>b{VArI32RY>C5o znYG00SDHmQ={pVlTp>Di##~wL|H7hH-fo)AILOEZly#sE0mdXdFmIK$EaMmlX5t7hW1=5=jd6RfiKHDp z*ftHb1+$H*BxefdCfH`scF-|uQ&iR?vS4ls5#lHty`~eL4|%HEIV;D)iF$D~@m$h* z{h>)!TxZ4j`Ue=1Zd{CwIPM)=V!LiG^-Td0t_LB?gT4EaD9&_KKNX^j}wy7^avSQPa zVCRPjCwI84&77!IF2h3Dxx0A>1ZPVaCKKXos$*kw(pIuWKQPfpHH^E`c%7(>DdtRK zOQcb`04+2+eUSw3N_?h}R&qc`CnBS;(t0qzN6&3+9kAQf0u~(=C!oBq%VAmqEJ}Mj zT}Tcods5m=!i4F6cB+oh0@U?8ufEMggmH;Z^#)OtfC}zQ|G=|w2xqg!u*FU$Of{fV zOiQ#3UJ>t%@=Pbd`ll~gAjl}Q4H7nc9j>FKomjb{W!`z!Z)t142{JKh^Ykgn?@Wlz z^^}i|$OnWWViVEuNQT6k6aOX%BK*UX4!6x7b9>nlu><3-|5sfnXG|EEl!-qU|vp_Ex! zk`rk9#%pJ)f9@=nz(M9b{Mined%}5&ZT0LxK#wBUvG<~^uKODymr9Pfeh##%CN!-A zE62Yj&Njuy&k{YCu%b?FN^DM&V!+5e$H~t1bvOX92Vkw?$5cAsRakje^kB|Wnw(7) zPyzh7SB`9?xT6EtO!*prLf06!M0f9F3V4FT6!2DX#l25HHq}*kP|n2y%m-4&KsGSU zsAP@MLo|8ki>I#d6W?}bzYKex+=PLLoJlK9rJKScM{-gJ`&EU{D1?ag{aWW3!B9#< z8#PMY;3D_ug&kYcCb@bV|OO&R72wO8P^2Db zTB|28jNJ~m2IP{eTQZ51fuZx?=swr}aa|Iop8o;UDQ(%mt|PVG4RfHfb;u{(LXMl( zRRebCL`p?^_isQ_*hfWCcR9mU<@3~@2wdz+dE8s=9qbdJk<`&i7=!o! z0UDu6W7C5*K`CC3Kv2HAnH~#OHf9I}2Bph>+>jPobwuS?mD3TeB!+N&&_9JnO5pbP z4WkrtZmJ}1D;~H}xo!5bv_!9Dd^(2_5&?l}M{gwr%$O*&*yJw5oj6OBC6)WYd*$#=x+L<;b;591sc#29e7-!o3UYLkZCbN2SfS2Q_hB8FMG6~e4 zz6^Xk_=`qz*v&8!WBpTd5AJq1%7TuPK2cfyj0_1qkqs;n3(Q=w)q0cy+x*EexPq-C zJsW4o;nEJ2%>NL;?3~oUHlL33?JtJ7cM(+c!6rQ#JEOJ8I|?tyc%M!lt{2K0ZRa+5 zSHT@iR9#UR5Go#}Q43nrRdWwJFb&`~fB}}80dBj&q-Ha{Me)74;1DasgzAldJN4xNVkEewG$8LOo)y@5k$3KHuT;0l)#~Bv0^K zSFgLDo0wqb!Q_--%T&nQ45{1D<|`V~UWjXLyBT9@(p%79S)DXt`L&=-qNHh7m0nHz zG&qeWiv%ZSvCIkK?25erbPOeFxSn;gex5GXe5&+x<=d_RVrMTf?2|*byW@jua|$yo z%VjF+Wq5yt?B}|GHyhCcN+7xHT(B|3k%JJ5CZ%#v#8?6nO3eDaiC((syMH>I5Tn+x zBvo{*Di2gcy%YtEWS;Lko{x`D*OqEjyWUf_FY&S&tCgQ7~&j>a66 z2{vPvoe^3jb6(4(nT&(I)3Nv1o%+q9bLgaZ7JFoVI5GhiT-={hVl@NqA zb*D93fC0(eb>X`lzIhWyVf?Ua@Y@eHPdOY|!JGF+t+02@vLL2_SF<{4?#z~|napz9 zK7v~L+LT@&T}z|{LW3{VJuQ+dNvkJKCkwv;ATG?ks32XNdL^@oGyn-O2l!aC=;T)e zRtlvM>FAXt8wC%kh&9yrv%LZ5l$HYt&`}BWZ<9XmDi0*p8D?y~O80hr^EFhlB<#>k zOH3+e*#HtZ0LG@+AbGjI0So$T@qPolKplstH-Xg!Q&#yJsk3TnmW6Qz;e#9~hib>? zBe}w}yl^6q@PU`u1exOzYLLnlO>n%}VE35q*EIl767MQ0*Civ;S~OY4#FRP+nC~3H zI&JIpCDhKiBTaCn(qbyCrQHH|pR*v!n&9%$wGwN|qRuz1@k@0(;-OG=d+0P}Zq{BD zN%AC?O{WYO5+ww1^W8rmeE<9pha3ERqr2dmvU5V8dX`J3CAB}S^Ke$}w-Rxl7B`2) z!9A)rw}`0Xh*tT|65qs^h<^_vyT1j*WUASK@byW{XflG>9@F4FFJclYiD9)~-Q?2a zG~PX$%cA74X3n1GyUOGj8EdytD!B~OIjo~ub70Z;EJDJb1C_So3>|c2fN>-*&+z!* ziiqoBb(RebO`dYGPSmgE?c3COhT9oC1w@rs>S6{}Ckrhm1De88tdFb!r^?}1Z%J|1 z+26y{PQ=ZToNGB>_S6lmkElHRx}y#OQHN3M18)}zi3AzaosI}2xlY<41O9yd-4`mIf&pp`q9+Op5vOQfE zcuz?_wFo8ufw%HEU))8dJ)QT8y{S4nWLgq|{sqC`+4ov6Bb{jT;|JGtp|&MQN~0I7 zdDU~Zii$N$k3!hKlFVrlCVsZD_+FfIPVDl+sL{8e;~6`6vq;$!pK5^FbWzI_7fi=> zJ~QWinJRE(Q}JO1u-ZmAo#|^LrEP@v+*r(pHd}y(^m(}DD07LRX0JjB8^;xxi@U(~ z34MQf?aE|DT#7z(2AA+4;UqHbN!&sSz6UnKTf9hMrhEFrR92sTcq|!BD~*U#bsIpR z!o6?N)Z1M|10U`}D<(P3MNu_bIlU6wA z2hg|T;t0n>cQi}rthtRs1rVdTILP<3W=4uYm69rSxn&=uMfv7S%=h!%{_?91aKRCTsIJU}*>2CX=V~~7DacZks$41eRSWjTlE_^WKp!Ta5)jr!UIcDd91;SP zs#GjoU8$dLIOqV%XK{gJmRc_$o_XfQ{dM75yzn&kRvA z+voZNFT5)d1{Au1o@6u$RXYR%GE0!n$}jZKh08?EECHA}ae`{x-I@E1(#lT>cY(1; zDl;uZA##FWJjnU|I1kng==pCis&1Z^iAn{6{pLmD!_+h!rKv7zT#2s6h*KP&K1yBv zh{r}T5Iy%o#Iv3kba)3$x@nVU`~1;%CNsxwx8ds*r>oz(Yt`LIvX+|mBwm}O zU*w8pTTLrOUlRJ;jdCVyI6Q^bZzTFyE_2^$_Z>H&9&$2Sm8yqjAaL`a2HPlYq0Xiy zY9p4^OtG$4?w~{J7qr!YtF=hDfX#_G&s!IXdJXXVYED;NB~c zPG6hUc}ECj%I5 z6Y4G88=A8Ct8PP5(qPmRY4+XGh*&U`b}f5S+GyJ4e3k0=yNab6MrtO84nk~)HF4s> z;X~Tr9!zRW)o9wRTTBh8tYK-XCB^3QAk46UQ3!Hx%%_2)_BB)5Up#4@`E@^i6i*R9LI2e-afAo^ z-euSR>Zys9@7CPncOyZ3mu|tC&kZMnK98@{QW*!lrEEKlIXLUKgVcQo8*DNG36qOx zG*GtA@9V1#_&x2!y?od=g z2&ydyP$m%4)+uv_tM=a%#>JoVizvNY<`ncT2-TIv$kZ1nUrJ4216gEuSq-lnDV5!*DEthwO+o(`&(TQwH0H7DzU1SEc;Z=_WCMsmsGAsyfY zkv*CCf#)CLVg?GRE1pK0=5ySK>5F9&pi6j&Tk?Txa}u0kw_;}P$h+!O8CyRr-thX^ zYaSf6Au>w+lL|yQz=DmuKm{m~G`;a{f>DHv?heYI3cmPR?6jQC5{7ll%VMhQ_eb;V z=xI&1C!+*t?RX=I#ZVZbb)p(OCefFZ5dSN1aCaH_29pU}I-_{bo}9HQZ@cVa+Q#GH z`U$76K!3hy=P@WrD1EVo(V z6TfTC6~)esyU}GyM%jn|av7fYD)=g{nV|wTL_$C6mLvIgiZ%WeiIyx@+pLJqmS`q~ z(Mhm2J&rch`u1y0UX!yIG3QIJair6nz+$@%BHRqM1fQ%L_Xl8;vAZ!OlxUJb!++aU zvQTUVR-I7PBiq6nVV06RvNAs7L8L1e`K>ZsJAh45pk}h@i0(Fddv@!8WADAgn#{Jo zVJiv>3IYlO3MBNPgkF^vNa!K7&=f)-p$Sq1#ezt$DIiTL34|^XI-*0b0wI7jk*a`z zB3MA2FEb9#oH^&Yp7UPU`@QA+&R_RVxp!H6?X}xlzn?{iOAN+izHp8zHoR@Vh4y~& zilBprt6SVO>tc|e3G@Fdl!KsZf z0yw9Frh;}6o+0?WBz_3pOc0kTVsJ@4Z~fW;5hqV+n9~|4s_{aaT+g7%kXc_ol1)m(HE94oNG*cP&ik6IO!AS33DAZzN_GZ0^zE8IEpNV(<@$^0-r4W z8QR-s0dv9L>9)87&mO3(eehi~EZIbzex*UA1ib<~dYT``J(Y zB=jde)TQxCn_gbyg!Gn&&zhd8CL9U5|NP*kY^xfwVscppE6dZT;*C`yi7yanNWS?z zU8LTyJ(~6?sAW=%gW*c_Ees+~=<&4crva@z(l7{Y4+YH^N^vEDYgj%-8z@up)?0ul zpdJD#X)5G3c$@2Huz3)6=lnp?1TDSCYV5eK@q`uga$_ME-pDcz;_uO$=zqL7B6*Cx z-Ym6`lKD%CXq@LO5+!=4Of^#hg^g2@*E&Vov@sG~v;(ze>p<`qx*?Y@2LCFp2*yw9s~xlDFeXj16He(s$2$4y^89aL6#FsjHk%a(ia z&UtzjF-mm+PcFf0!B&UmyBsfWJ`jM+6Q>2|o@iK|Gxp=%% zR~T1L4BteaM0f<6aX-ReelPUtRmT{vg6%?f60kz_oHv~Nfuz5+33JM4;)i4M#5HIa zS>+hCRNbJ9|#|bNTb}z=dTnL0l>u8&eA7eJ|CKlu& zd#=0MI02;yh(h=Kgbt;{OiJnwohv;*o3)x zYiWr!h4en-g2SVvOkcNq@T+xPEat{80D$Bew72DBbC*60bySPd1y96 zNq+d`BgPXz%3KEf1YQ*~Lj@7*L`guN1jNz`w*uT<5cU|h_Rp= zzR1ag{RO@D-y2uo#54&zoQ;j`H#<%%InE#uDV$@1Sn=>x)c(4!_m)tDi5Bb8VqKVt zUo=cV;oEcA{$qQBRB*sIUwaxHeA(#FHIc_t(Xg4|&CN*vda_Kn+~NeK1v$*$41;eN z_V$VTusa->FMHehef!z_B+7;^!QjLRKmde&Jk2ik1La~`z#(O3yi|t4QDKNnqp_2) zWNAytcKA?=={>IMalDEw8&82XpTD?jm3wXfb+cV9g zZBhBzKn7uUqi81JoAq$O+njM{QfpOvbcW%AgtQrLHdPx!s)_D@L#Tw_L1iE_tiHs4 z6TbegP58l;jWEAhPsf*A#@Tx5LgoC@a1jZVuTF9&p-M04KF~2_;lb9UqN*hK`i+av zZMKO*11<(=4^nOA((2$;0wR+YRekQpl-r!J(xWY`7R=}~Pa3rOnP1q1+mhMpg9F3e z+J$+#G2lZTC+|DNniQ(gHX^HVN9Shb@3<;K0@-jc&o*7stpekPQ3x*Q zeXg!8K^30BrTaNU!K@6H%=_Tj-cHnd%G}n zXY`-q6n?n{&bCe$DCak}SQJ5p+9mhms2wh$fGPjB2VnvYTd6Dcv*$;XCE|yYtDA*# zP2gwaU{sER@_7Xe0?nl%5RKPdfo4C*Rx&|)ed)Zta5D9QJ4iMPb|!kX97bwmwJ^<(x?E(!Hc?Jl#&HRnGc?I`)VB4dL6x!NkK#->uGhk23e z58sKFXGT5SEmBPzq{dFy_fD!I}3-VcJReRVP$|P6hC!Dow5ZkN=9*AGCbSxUmGtAH5)|F=` zRRO1fXN#v&<+#C;^caahH5(fCfz4K&Xm!3>v;|M}&A@eS|&`kTT%-EA59iiSyS zTwa;Nr#Jw!0CD274~tyV<9iYy+kys5VHuw;;JsYbt2UiVKR=F2mv{so$}!*QGObkB zQ>$A#D|BIB&Axr@;}WV|^#PIZqGar}BZH!3lA%Enrh#NPSz*Z@hQlmaR#;dV%yWLf zU5v}fDiY){FtW@YiV|)+P6pyomqq;`POKf-4WnDGcv(no&*>@Th_bup z+CfDJmXC4xh@-8eKN@vh>(s2S;$C$rBZ{+QYWM?W5V7J4l_w+ZcN!?EY?7C zLapSr<=RN5)~5;FZ;GYw{&?I&=Gw9tIe3al3E{{V=er-$l1C1B)_h5<^|qY`jzpjOn9AC1f?TMzh96i2ZHu!>yV7|%6;}JpTpsRc^uE@+CITM z|5$`&rn?`ni~5*laK#int13sHUpWFu846iMrx+3PnK{bOhT(vK*e<j+Fa zr@D&9+;w3$a@3_|!Dp{xA134D+&sqpF)yx;=-ZGXI)U7|4U&i|I_y^c@j#S#U*`2g zioC{vt1Uqwz1Ny)>6!vfU+JgAH;(bYyHTTl)$j0+2a5~2o0a#zgIAmg2&TQJkCw3D z3iVO`Y!gD4Un^_H#NTGMXuE4Q9Yhs z+GB^FU~u}9bf~#>txk^cGnOX|Qr!l#N$!T1AH0H_-yZw%;DRc&MOOLg5VcA=Lg%T? zMrJSH>NtlO^pQ{VeykBkLt!6paAJ+R!C;v;3KMNk*)oxI*svDo5!QmOGbIW>b5hY; z?6WpXiyRs|3J<1=6Kr@++OGe@kg){Yn`a`sGLwtx)BP_VL!v|sYMGU$Y#ApazWR}6 zva*cpz$=uJ@gi3(ry-qcj<@W~tb}L}>ub3xV|td=gbxf4&MI+5u`U*m7;cWHcaXCj zpVVw0J*hwN+EN@crXJ;WixDWRS%mG(>T%1WG%%ok*nT1UNIS>Z5pe<$Q1TJat*qmaTcaz0}ZwAcdxx+yjrah-$^`bii z>ED(wtt6^p_YOm{M0z4P9QY+9PrQD{=3ikkx;AxZUf}Er{nr$=O#XxW3Cr|Cd4<%} z0!6(9g`CJriFiQ?L+-d5u8j4aW_i$2w>TY)uwQKFXC~=vp&HF6mh}~@b-rZ>)PYNg z?a(V7z6gu#e9kIfTamHgl|&M$>vSrQ*qZ8dyH5g1znBK8FyMQZ__&VXbF-{OC%*Jr z6v=g320XL49l6a*;Zs1$QHd8PS}WRTeUeY>KgrvAMGUO5bKN;5##skHuhOPMsh8KB zm*Joq)#RuwznBL!d|Tom`a&UN=X*P&ke!EP_HtMFqqrkawd`)31Q;jJ$P38A{D&XS zn&M<-cMm~i6qs}^UE;|7C6pK0GNHH))*h-jfoG~Ot6@V6hMcs-HeUIV%Jekln)!ery?dvn zdSiRwjjG&(VU1VjN?|&((r$|LBAL zPd4LO?sp9i$TW55Ttd%UE)llLX0lxOA_tv!0yK6wPRG)c<3xynzBWLVu21Ho&JEYq z`$NmsHV==c7@ISqG(C}=c}b7FSyd3Bo>sh(RpbY_#9U#917c@yEa>LnixC=E(bXz? zIN)jI@F1-%;WAd@^Fu> z^OWjq&OqxoS0YXJ^G0UCj(3T;gglr1Cy_}Gcy6iKeR-=ZQ931UhmYbetxgw9cp5~) zrKe;F!6UmQ;mj~yr8e;zOWE99HI8Gm0f{SSQpH;E$nbsoR%`M!PUeRj`Z!5`3uDQ8>{UYm!?QxeAG z4u`LN_7Q8kba?0fUm}tk=!f|K1_Z8|dEI6l=})R6Scz|`rOB93yEO&VKKjl{t0@}5 zQF1e4BzDrytg%N~19N6OT6zSMs&F`~8oVHrjwRc88Cp0&-|&jD^U7mYd!AvMYuD7R z)_8apsDB4+cOSQ4q1k-(+ulJaVvXA}-FSnKaqt*)Cn)5Ss4M6ya-|wb{#5}~HRBSC z7rQ&cz!_O=wUS`7$|GIl`s&{C1**4_DfR-?pK*J6z)mjJe)`Hf%{qR;zEbY*MOhRs z*xx2=Rwowsu8QylU0X1lPT~hwUI69FXG8rB)4I$iz{1xeX;ls=mut@v9=oMf`4|K1 z;OJqHNo!66%*imBPHtfGh!PoUAEV&Vxtcur98hVl_FN#lN8I1!cbN-8%%XnExhD~l zl5+XJZsNO9E(OED(}D|n{$be_E^VJvG^%(B7*!gs!Di}i4(ihrie+@FnNJ>16yH*{ z&3rMz=cPe}V7}J{UpJd4Qyot^0_|LGckO}S@3n5fcFtHj5sj2K6z#JUkW@TJKL|SmTxH=U{;zi{2thMXNn#nH!Z!$cO_`cFzh~A0)?8P1B zJB1O$)Za=y%|jU(PZyG08=e-6-*r44c4H4a{y>qV%4%7~kW-DzGD3V1(2~i@Wi^`y zRA~*Db@oOG ziEJQOoaE~x2q@7BOmhMmrHx7OYxGIy^%jQJC1S-1-DljPLEd5{pn>SI1CwUlp2wa7 zGFuv>r}yCQ_nLK(3%86~mNtA>#hcgech<+h`1Sq-SA;}qev$I9a*1c_hG)(DK81G z@m3MxLYK$nj%zRdlE9sIA#z=oRpxg7 zQ7Brs5QSH;77vTk3HrXVI?ejhKQ88TzbMdZE^pWX{Dr^qyWT_s*8O^*z? z7C%O10_i1WdFVBGB)#l;Ixo8;wL0&CbhayCAlnR}Dgz?|BTfSsF0L>eplGA3sFdVf z`1`^Qlba3x(Y9&MP^|r;+{J_qA3Wg)He>oo6V{^iDkNCkXx_6|f zF8!sCR(;(&MQ1;|)BhQ@BZhuIt6|r8kl{RAM>5? zB+wRWz7KTwx!YQ?16wKm@ZQfyza9Lvx3W9f{Ia{WB_F)X64rLDZ^N+G9hYpG$12h4 znby!^BY7k^R|wozT*c~RUm=ftDlw{`ZC&Pk*sNlxfV|(hU7N_`l@&!Skt#6~-OoWY zfUm24nDzm9o!@U;A=mW;bhtbP6#Ls|hT&z%VWKp6IdZU&aZ2*L#nt$<+ajzoFDYy5 zE))QMA;HZ{R($zAx!qr2G#46Ov$OL45ht~h?iw;))>!uP^??$?mx{t<4Cm3oS3&Yo z9?b+d%>qyxyj)*C^(IaMH|wo#O~AdM1fAa}4@~P^eFQNOyEuv#+f;SrAaZ^(mV+>c z_@{A`>a!)p74Wq(%Sxd8RO3zLF;y#y*8_Oft4 z)>f+h?S@j-VusI(g8%IfSY*3Tn!igIcsLH2 z?)KWijp*~JX?LW1wsB|W^U>boy9bTNBoEcg`q^Gm=|y5gF(w^-bT0REDp*`gl(}(+ zKeRE~nxlBcb-!4taEnh|=f7AYT>SJeocaE@EjS>9Ggq-f&_{q|YSNbzb9{Aw!Kk9( zcX{qin|$Y#^U-jfRnIm#v9P_9y70|to4Uyqbm!FV67_?n+v7ieIP#EUePPAY^mby^j`Y4`kAA$m|B++sbdkyBp*r(a8}!KV z*-BbA?ak?ORGqx1+VT`;oSOU*0u4HRH+CH?8Hcf@$gbnu`X+2$6uRWKaxFn1!ab{k zrDOJ%S%Yn%6P~=@&9v!O@{T(c;0pWx)hdbmEtD4Zmp=J*OJF(En40DPv>(yDdO-}E#rPJ@b`x93wBNUptw9VAZSHW ziRRnNqCLoy4JQH*LG;45l9I4808OgEd&DLAz_l~SLv$;X9D=HziHqr25(rg-p2Wp` zZ&jSj?U@kmH<#USA(U@U`K$VRZV4!vjj+Vf+#2YTq$4;wUUtU?Wkh0vkPF-vgaUrf6LH%`Kn!dSYwMxX*f=%9C776R(a;tpp zR8y19XdIvmD_aly?C?y@D{wJT9N^;rT;W9d_K5@LK@utlU+x~cC*DZpKj>&$?9Vo3 zUNpS@4)N6Hc9~fOTUOZ;Cmn)&ho-u$RR*9k){mFLV_)pF^@|XL6z+>Epr6V`k`V>$ zBI-VN){`!hR$nR4jsLmUsJl#xd&TVkDHPnkGt7te&p9Mv;08x} zm)U?o$6GaKqj}0(#u;+l|5e%kPd>K)7dD&m)xYZ@mt(T&!f;c$^u=`H)t@|~{4$b; zaAx*%@q;|CidRG$zDt(Ey{0b3{`Hvr=Dz!T)UxP5cx8X*%#yd79th&yx!h;*c~bz= zG;nAJW|3BX(vvGV*L78%MGDzUH?%!P@#?ZQFhrjL19Qw#C{(k>nzyjoij3>tTe21* zyGN4BsQWETUIq~Z-&ol?j1s*FHTL;J8!_za!_o-l!h&ZrQH}E0N0W ze0-|%XvAvPCrQdQz%eTDPA9NDO6D;RO(=`R_d;I`4%rcfbjyqX0AQ`qI))phP zx&p-MtlBvMUf4X^qjy~xEG(qA`)WT9a;wXL2&_8+LX&xg7jaf!q}z+Orpv76&l$Is zGz0{caP`#4=-5pCy08Avru_TO5-9lAb1t)E*Y{BO9;(3ydx@;&G|^>tBdXd&xPBxl z^|g(}N?%LE^;v=8Kk>jM0=IG$7fp6QL0HONJU5Gc1ctP$xzQRCymm@HQSxL0TVXA`YRO5vRLr?G0hT{#)JS8pRe~Q9&57nkygkMEl@7%nL1NEB&B=p5lOdn zymi=(?rOTJv|!TP8RSXq<4dUwH-1gec^zMVdja-o9tVbOa#0lTJ7 zCXRe3_wZc@5X*=N5mH=Vlc%S0J6K!tT4bhDzbl84^GI%cgfyJs;{W+rrUD< z;don_N1l+(7I63n{uYt{x4F=e8-O{_iS!d0{>f0wb8JDQ+@ao$5v7};BW06oQ`2ns zJ5F@7cuOYjbPfdVcS+^Ze*)5X$xl~htCUj;g&QwAr8?+QwvyNqaKlWpVG#xNRrFQI5wU5F8K~96RrTZw<>_2zcH3QxoeYt+94DKYTgcV@)Jfek zhitLoHv5v%H!9vY5w`F2~n#+IG=f-N2H(VzeF%X;zdx_xxLMA<^?>?rx zjvuuDcml-=EdL`*&i^RU@qd^N8va*~9tjU7Pu#&sFUelUjcV#Goxo^^)OM-VK8>34EtvBlmaX)S zgI1gp;$|u6NRa)Etgul1N5Sfb8#V=xylYVC0a|5Wky5M`&?@cboFwss00S6FF!AHi zt(g_x;JHEg4%&K1S02z?R=c@V_KhU;%poIU_OGQ3F6c*0iF;M)h2@))T+Pgp7eI6ZV&&I;!psS)Z$2*d$p~ChoZn#7>+Q;# zTzK*#sWH|wbB7!`bY}#=9oD0^ZChY2)*eM;f${p#Jn7Zli3{Co(C6q1A&Yi2Dv;Rb z-+FO4t#|4H>Ed-1U!dS4k-nDaxdv+t1m!6T?s1pTA)P+E9F1F{PD09gT}i2lbIOa8 zeZ@m@RSrbEKnJ}U!8dtdTV6dg#WRnSBH3zt8ZHRdu~E@5n10WG2V`e#Uw={H6}}q;+%ukTO(4Wk;5f^-{2P%8M<3~QL~EqKVM>25p^bfj~`2k`I-x8cah8pCpS z$3U)Gj`_4gbILohxW#Nv$kAuiSx%yoZhNk%^aa+>$3xQmX(iz80a7J9>K&2CPG8G- zi~XBba#5p5;L%^y^2}%YaREQ--zoL(oiz=&$a?0Z`RJE8pa`k%EgAZ);6kiEwvykk zqY%`SzF$vjTsHa_rMz(%htc`okqqEklj{4GN#=M5zNC}yhi<)Qbm(X4l85&Y_(PAb z3`_8L+oFcTaxp{j$jE-yMTm>f+L>tox>%b|8V_OlT<|Ttd6x}7;uY9++H2*RW4nlW z>URy_#T$AXpMPX_Aa8rrC>KO6Kv8VLP}~#iJkWy!b5{K}r^775Dt@MoKQNPxnsS zhof6T{axfGOp$&j&jmahZi->})l#}w`jDlA~f z8MHyHfxz!lV_E#2&Jy)7S^Y16xY#8l73`hC>zyH)_8URsRh*Oc=CqRBw2~Er*pR_o z2xu)|YPyDLx>m~gkwIJtjdK3cTsy{(4EjVoM@Qb*U-G^-*Zp8m6agj}eY|h<@xk>U z($`GqV>8Hr@xP}2Il$1JjDm9UMXCDc3s19M+fXv z{eFCLu*F0*-gT}1i)>y9xa>A9ZU2=2dsoA47l&Q4+>!WAE9t+?VaKFsvX(hu@2N0G z2<1~}hrhs|y)AP_sO)AD3fq+H(5(>WN;m~|;D&W_86J>jrRoWvqTQ+RrZmb|nGo)?%U zSt5zAidb-g0u2Pc8G#AAm!+5@k& zC9qC&OK-0yIK2I;5)qIExHwr!nmRXOXP&h=a>xNYnH&qU$) zJG`#L+8w7F)emPjfX<}iW~l8TzZFho(zbI9%etA8zmA;XMMtCrfN8CBpgz6e+sg}yJa>;_g1EEi;Glxkpe9jZi-#ke=#d7^yS6ucFZjQz6NIerZJXf$rKM-O#W!d z_uy2F7Av3%=i`8Z)`rT0bli=0Nb1#f<#q=;iXE+0N=m!rEY=3tB`asD=gdUA;v>|@ zkwH-4ZMg7=T1H`~4^sr7o+^2G3EtcJUX(>6hf!3F>GXhB@5>!|vI4L-!L9a&d z15k}=&QnQPl+|zeZx9AB?@iC^PPK;;sL+7P-E|u z4f|=5XyL>vUe|Ih@b@W^pPB6!Yo2nRRJJ5GL)Qs|;>Mw6B%fCFW`P9Ij*&acrC$AK zZYm{BV{#T=Z#;jWtp`>2493~L1i$69N16n~ME*W|zm>B#d|Z0{i5V=cz=Il*d4(i4 zsl|;2NDW1Az~ZWsc$Q_gN+&O7GL+<~w^1hS0k`B)MS-9t7Ok^Tu0^ugun+q!^j?-f z76flIOFgXim9Ly05s>u|F_{6UY@ zo}apMiUKu$Uk}7b?OBeia{>&p8qjPKU|}E2?L|<6bu92yn`}vdRFwVl6A(-7)+FiC zOrpPSNQGPB)IZ5pVNbySD3Ss9C#jco7PCr;%-~lTZ@FJO&6KF;X$Cf;T#JPCNMSG? zLY=PHp7_%${^*NYG)vhB5gIN2)Ug&0Smf5kr}OG3w0o;hcyCl3}Cyl2mT8nz=p{xG@v z`wC1&^rt9(CjQXRe^VxZ_UT`yh3XyDphZI_^|wV~htBHWaQt&z{^-^hEdENVEF=a$R# ziK+jh#Q#?GtO2J)-)7LcXxSpReW1mM$}FPXVZ2axz-%K8?{f%^j2ub-tp68d_Fo9? zMl(a{)4Cr;z#afe^>Y%oa84?2!Y12I7I>4vJO@o);x$aL+3WYOKl+_bJ*?|n3aL_n z$o$5s-mp{Kmy-;x)UwpK;b<7Xg5>g9se`Jw2>xYq_%V=w421uYPXDHsX^j(>&3d9^ zo9A_*c+Z|R{cfVBsqSa-!NbahL;)@^`S6gLq6nbUpPYukSaic;;}_VIzCj?`-9;`H z_D~`l$f8h<`BbI>J1<^Uu8vJ?4R#hN6$g`L_^34Yw*1iB)f0bH>~Mtvo7m*Bmo5qe ziV%{n{8dI6a_{;6+19Eghd(Og7WcbBZ5l%Pq6>wJqGDhwaBIW^WATWGA~*>4+GIxr zGdoXOS#4yvLf`YwDso1xf^Rlj5q|~=&4D^02|8Ak&ghR*U_q9?!HP>5!m`I? zj5^XBc=Lft0pY%;&ug2hZS6m#Blt)6b1}Mq1hJ`t5C;KAdEn!TWK!~Y-!aWp$tfTP zZdjvFLj`wgrK2}24mV@5Zsp0>&Gz9oza1fi4$Ypa9sM?&NTMXI#fd<4efCU_=#P=c zH^GemVn|*hP|VWIODc#Bg8I;sHr&ZjS*vyI)+2H-@O0B}w(sUyJkwl88Z9Mbl)5iL)0%)yjyvL~pYEBi zGhxpoj4Lc|JaJa!CuGn7S*1-2CBQrFfq>|bqm*#33kf;9jqE1C>KhFH(`c7&{!vFJ zzy3Un^>Opds-;cGmmV7yO;hvkZcLp1%hrlt-iR@*VPy)o1z5EkQuQm*3|JZO)YR`< zg1vtY;Seg(RyE*wc3Ih#tKhw}j35JhC=W4LN4F2UNpdp!e%xv@&@T8d44yC5(hQ2) zipQ)gEc0N4gUg>nbNTg+g%ayblW9g)4mNr7B@K~lV4ekqiYt6<4PTpQ#TpxuQk1d6c%5L@+41WA8CZa5!1o~2rPuo zYE`8Mw)uA~TwT@8_8m48x&*J1ry`5^zEZMpz*TJ$hC9T0UdRabRJAq zGS1^nlw4bWcSx>FPBTVG9!RZUVizc09xa`l61vEBD-%{jJf3L2S{yw`O#8MY9c6|= zw+39T19|}4>1e{Kuqyu6(r<~@!@jWD2HNwHQSd-(g3vVbNM8LoeV4mI8_Sa7Yy9mO zG}19RkS7&HYqrh5EqFa^tP|nRexS28Nm1**kyl#J*t-*p1A_`gXHAiXNu3)wU7r=n zaCS=$I05ch?LSU<8Q18SBEcM=_gbSmc~A}NQXSXEVP_V&Y&MxY0tvj!fU+Vgp0S7H z1#2ryswlq4m18_I#0G_*ECDglWi_J~A2;FQs0~IKIPKzBm@j>dWpgIsw%Dfo5YcF4XS{h|cqddl7)EVVjd^ zhnMtG?)K$SN8C#I#w{KjEdRRC<$;N=GBzIHU%frA0_Ur9^AV|LR`ROFRRKOYWW5xN zMPy%+cxp%aC11sOXbJboZBEyQ9cLH^!pC0~UcX-Czz<=Z|CU$dfpTf93RRFKH_-85 zt}FA(B1HaAxMqhNbaMTJvyd5{63F5yo0`aVIsV1VYFS)m)av%JX5BI(giMp@Z4Wbb zf|yTj9!(IJH18`B2{kV?!?p$Yma}u{7gFcPkJ%GcCB=8_5xFm%65KEwe0h3N_c{dW zvwF5s2JafeGUdn+tIU@tp)J#M6I3h!X#uHGQB4pZ@15^UH0I%jQ#;Vg9MVE{N@p}z z8rS9B>t`iC)~SY%=?384B>gahB)X%Qhjx6;wHJ6&(;&XLgz5fu)~PiifT+XLLkp09 zW#KbV5UU8k7tJh5+uUp}FU19b7{_hTRevq`%+5~(u&a$)bNUcgK-0aatR&LB^ zAAMNp`%tbMfHjtD914R8sg`Hqib^HdgzEi;UTEi80W5iwWR}3<<>Ed44H-{syF>KN zQj>*kG9JvDrB3?>vhB23241dMxSi_FL9fY`LBB%`wGW>EppP3*CJD$^|@=jyKaIzdy;EDj6r@0+TZLk@=)yo)?Cfs*c|>BxBSRXC-6%L@+#W zKPj9d+%z*PQoBAutpG>|;jW`Sl?K7dJvKYZreTgVUibc#o^qj@cDcr!98jzCbQoN}Ev;`5gu?h><wm>4+#h32$vmfmfEx^N==}8i+ z?mi5lTg!$XQS(abGBGR0<{`0uKG?55;HtGz3JBaqq1?a8#= zF8;-s&OYmFuL8pbI&4|Kr?{S@c7{Y+&@UN#>))-#>bzWQxYy#@ijOo*HgyM-O{SgH zEpa-WOZB&fx_W|_K5|Y;m&g~%YKzd)Cy^Nns9soUW0y$2*J!|*_8jRib|tKl_Z*%S zRrsr9+SA3M{_^~QXm@X5v;PUfUPU0rhMm~;8!&e%on6XEgQYmbjm>Sd=;C;{l-lXJ z>$0g@eO7DaV*$H*k&{gu4b~PLwyxynnomoMAl)kkA3!W;jV{Qa%msmvWW4BeR#Z73Me96+~%Zi8-wW9!FnRcS?@_DoZ7gz@aUbV9KGAv ztX?vU?X#WiMub?; zG=h#kU!`9@`<2kCP#{@WZ}Ja2vCr3@{UI&Cgyyi#vlHjhT)Ffbg(%z=Rj6Ue%4 zPs%AAupH8%vM*A1<>EE4Dhma$pb>({8z`Dwi-I8&A(iWa(oe>b0OYPRMV2q9IxUj} zYm_TwsYE-Q7^>R2Gh_=Den08zleBW4LQ^Lqx9IK{SN+mBt%sGbUDb+XQ7tLX)u`sI zV_N2{a$=YQ5&Be@9P#tY8GVIlyR&yZix>D(y(+D!kzy4hfNohpw5}38SKVgxXqj9E zzO^W}mxhz)s`n4abZ6B0H5j;wd6)#MtMIEYMx{)Gh2ZP9SX-DGyMw3r=|@k8WI5(v z7IIdX95hD;nEQ`)J{FX8IOQ_0cQs6$EV6K(W;S6amcTCYQ5dA7nZ`if;z$>etG~Z> zdO{P}Wg^IITlk*R#SCMx12BfEX+@k>aZ8nvPLd@RaZKZy>6`^GNbnS*PHDtg;X^@6 z6bX1}kkoewCSTMfr6^$EV*{&H60xv)K%d($Xc>gY~;0?{18d`P;2#CRIDP zk`kbtTjTAyR+N!P!(+2Pl^zp1h$rqa%d$WLcNRJR&!1m%kg*>7F?Y6Rz!K>`$^vwFo$Q(Wg+6U+h({>z0g-u#9k$$Du{} zO+8OiMKCL3{rZZ+Gn!IshW@0eVdbC#kw80CkVLql)Vpr*5;h6$nIg6YW8mI)$=625 z#MJ>8cyWRC?%wR@>V)A9L&N^bl{zsNltEE_pZNwzMnQR3r4THcvaScVpAXDGxT0>w zKc5-s0O90)fE+ht8@73A!4nW4q5@RN=C*w@ri@7deonhl=?Sc!vUQ7Hi4=nQ@Q_9C zg!?}zYoWcV|89yMwsdMiM47r1@@5QTabUG2pwz`2k4S=E6w8RqG}kCUj_l%ORAhlI zpde;?3N)jby>xG-E8uxXr#$t+l3kF3V?f7XgpLlw1^YF&PH{}dZxL%*SZV#wK!Jy>D7~HQ7dg}Y49G5N z<(|1@$iky6IDax!vhNxn-rSJ%0SAW$ud_Ua9vV$@+bBVK`XW-U%3|i>;*!EoB`}5d zdiwsNZyF&9k=-iCYaoNV2lgXjME{@;N6Pa!laQ2)1-Y09ok%Z6khm+bS+%#b6Hlp{ zW+`x`n9dBk$g_7|eAlpM62Xzqy-6H&yfTn%t689XZ!1;sa3mdCzuR)`_l5i8Q`2ENo0}sy(0P-sWYcEvX>!!;Da8aMW9Jzt3QX8ka0aeJ{#a6{V?CgM; z5gIBFZ=W|pp@9x(CukM(MF42IO*CtReqKV2X|CI(usmh5*aCfDO3g(C*#VB^%@;;@< zmshsSMNF%!=B)hZ0;44`h}O7DmE?lujtC74>!;P^dgL9drKXvnM1*WdCvh5E?Vb2C zxVLa?aK{w3-K^+T5qO!`ph3ns&LlCc;cjB&n#P>F2Tg}m3royxyPXR=UJ91I*qpTr zOs=X90PI*P3|=mU1{{mbp1sho7pcr!rt!};Z|+oPGH+&Fc&|A)Qzj%#9D+dzYE3n)rgKv1f5q<54~ zLNlR{<1X1e^f%EW1LQ2BoJ zEUk=nFIyL3st=NhGxB&hPs!eO+%i528c}LDacO`BcZ>8EFx)jBhJn4rsWYQSYu+nX z9uRT}hGC3b1o-6%@!VF44j zK#`fi94SV$mV3T4y=&ZB4Udv%K*3y7QJuFgnIpnfhO&d}o=`7TDta*AsJOJu-d-_} zCc`XunAP$j4F@xSPUfJYbx$P{&wI;Hmg*G2462cbDJJ%$BOs+zDvH`!1tTkagjlnb zxh=+ec3Z(&O|{BFJzGutH>Hrh`%n}d0mRU?S zY9H38{i3L-Yh0j|``MWbv@pQ*HfMZ7PS{QiBYX+mLrIoat(It^+*2Bd)6@Dy?{uv$ z2~4-(_D(6wAk0JsJ~+t1mz(`KSPPj|Ya-8e#FNI}juinB^ zdz~`IMlwlg%#aC?ee!*Zro(+<6uB+eHsV)i#IG`$NDG)VP4Ti!)0it=Uw*ML?qc&5Day#XI?$y z-B=Zp`7jyb3e`$Hht&LzOji`~zM*Lg3!w~K^ocsTRRBAa@D_T?b9Lk*)32-p*?KGR z&!l$()J!u1yOn5r3VBQwJJArgNqcO?z0RGHDyR1u)`|Y!ncj{x(oTqa|KieDRP9`cTaysmaaLs=SptpT&&OX+q1+&0FAXz=Pf&3(XtRZCrpvc{6 zc`)+?d^oGjUElRW5o3mCT5G;~giHwWlj5L$#epSQK3bL-=q9Sh0Vz&yO=7hw`S&8Z z_Ny8pKMgEjNmyvJm8KtN-n%(@I4Rx+|l-DNN0GsvVEXv6!6e|qz6iGtE>Qm#o zcIfd-YM^O%S}#M`^WpO z7|IwS*W3F&(1=N0UsJ6ji)Rv_Vy z^kLaxxv0hE7l|`}4R#?|}n*56{H5^jJR9AS_Qzf@IW9$QRc~IbHjbUaB zq?kpw{8UkbCu@N;{`o{0=K<)XbB>V@ir48Id~920*TkD{xH1%xe8D{8zQ`5vr&Q=$ zq?A1gT9wM_9n(^oCT7RNoq=7VVjiLDc05m1}$nSu2=;ty_S!;oi%(X^|1p- zN~kS_tm!FE5w;Rt3XVN|97~k}y{?x_)rpXaDIrH!Xfn6TlFbKl;f|DDw-B?ve0Rpd z$;VrC&A+e4ZAnhYWehKeV)F>0>lRD^_YFg@`mA7NPFh+;%w~m!Cq)JvyXX?&}-N!t~jJc%v&l$AxoMxDqpgJwkylPZjP7xelOZO#=pc*!wV!GQfk@ZB$>1l|y%p~Z&#Y-mj z3S+8wFDtmmayX;ls{`qYxVTAqeIB7Cr=;cAs5tzL#z>hgnLM)D%86>djo?J?M!NtF zLO@{id0YUvsv|8oEAL8P|h)PUasN?7` zx}3tEjz%JPdd+O?MVpjeqwPs^`uz{0n2T7b7~shkX}xJ2u{;^to(f`P+lw3;C#qID zU#8UUJ>V)&dkBGuIJ=N5!9|TNiOfd>aINM2hC!`6IhAT++)J-?aTPV z2rL_mEzj{6V6>?nWqzK4%A6%)#YsfwXst_P(TG+og_rr=1ifa zUUDQ?G@@y>PEO9PRiR_q);ply0hGVYsI1Q%7ov2#b}_oVI$Lc)I9+xNL7KH*I+c)B zVwgSrIwsmM;QGfHzAa3)`HG-$`BZ+ir58{2kXLZz0$bEAwc_<5D?!&2HEXj$sIT-C zT~z`bR)^~;P`_@Q@f+X_E%tKb;0E0zhJ~IbCOu(h0n+8j3Tw77d3Uv6=32G&0`Z@U zfj~C=XHBGTN*UwG14y0#r>AjAKF-b_(j`W#5{>Ib&T+e_C_!&9QqqlTo|ZoC0BP*} zVu2^_u#-@c4>QRYx@;aLJfxYf1}wJ#wb95qlPG!K^|G~L_Mr{m;Fq%8vHAR9b=$0r zee{F#omN<@cL1sAP(kh&JV`KTcnO2NWdSGn>7!qrMNT0p#$@HO6G!8EuXWiSIX&g# zf!GIVk}OMN)w;3NH^4C_rV(iSA-ia#dP%y&K`;(z%;h}-W*z}D`lQTM<(+`&f?!$BR zx?hdgn(z$itU4__7mzQhBPZp{F?^3v8IBQIBz3kuIo&0{*0&fU8G)?YK^0U1UE1>a zIceO;0OUTYrh^+IMm>zcqBBV){7v=xp~dfO|UeCae% zW|GGA&{boBw-{=(cV2j!*kYs|x1M0Gs#(r>El@jK0g20EFEci^!;HkK*eHGy)DR1> z0fo_qjvxgZKG9%e(tXfInN8(;*1NfbDI&{-!cB;Y!MnX3g4DwCA?jvNE2?eOUHb?p zX)9dfg#F^gKa4gcE_bTj!{#&z`ug6>`CRCL3bZ9C&U+zMOb-2Yj z?zL%o(3-id3!_CcL_Np|rAI3J2uaZi;oX+}PPU8Vd9pQELK5uq?knWAh1#gC)v&v$ z^&YSG)!U?3_s%xugzhv_TYjx#SsB+Mr9ndQQTdIXfN9pG3*C5ha$&4|J4u-DD%QniMRU{TMjf9`-MPr>}7cUx( zFX*gOL6-YLINY+mCinQqCQ;QEA;AFsvS_RI{K7r5k!{<$LQgztjZ64gan{#|7a^S#uFc3!z59locy3)@cG1W$`uE~I zetoZdEzG^d-N(Bq0?tA+o+(s1V8l8Ia=tK_@fJ@gj!A14otntf&yeVWZi$I@xI~w_ zSmwm8)H_vgvls6kUykmay@L|=b3~QORA(+-?e14!?Aun2{1ja!4AU;|ymW~dY$cZs zwy?rz>70lq_=zwKhND>Ej$P6d*K`D5*JrkukQEWwm0U91XV-8Zd=oo7Wh=$a4gzu& zz-)V{$T&Od@XFJ8DQN0x7>vq8#)=cAI!3hA?R>e@y1G%Ih^el4ss*#!CWSNNfA>0x1it}R)@@IA8udQb zg`V5Fq4YOM0f6DN)ClEHA^)dn?`9EG9oz2G?CZhf!AJ?DqK9!h@1Qu}T;#l;uTr7# zY_u}CjNU*OftShp#MrQ=v=`~vevPZWQ{gwb9Jl1y2RC$DGa1rDfTHt@lu~}M>+`rA zz9eQT^(+QOU4%88lyUG-vwY7qxcr%H7&+;aw#|*N`$b8O4maUPUHhN5zjGw;{Xv8f z>byFx1JkVC9B*(wt(MAL;++U;{cC7$!|Crw{r+*{^S{Qz|I7w&#GkhLuPE`K_2#Ef z;ptQUE28;ly!ja@=pO&i4-`SDoGr|QEEYcNyOz3U_RVS#^|`ttrn$R%`P183&J=EP z-+6*8N6XQujg$Ybu?;kO21KiGHvXe2o|Ej?VvkOj$;GPkFEhsy$wsK?Qzx%Lp44?8 zsD5SI{GRWZ+_sE*tCgDy*_xa39z0Mp2G$s6>J>>5#CC83M-;Vxi&o#DVf;B@;>9l;QqMtvrPl@~t?q+&xwyvq>@xq^us^)DZupag^dB{~~Xf*PaF-63pr z=g>IYi&CEwtxhqq-VdZs(RnDa$xA2FOMQ!}`lS;Gnj%v$2J%4&%`HN?s5|A~-M}c( z!mBz*rMj4E@ZlK4_qpPVu1gVvViJecD3xDb;T9T!F!GF^FskFi^@&UrRS(h_Bp|== zReEg1F{yn6Ks8qA@mOFc9a{l+s_1t;(N2?rPZLFMUWnkWR`4`&PY3z3Gz)MyplZSC z3HK#~9cOykra*f2#5sedc8E{>Oe|(~2kNKh=#b#02P=%MkLRW5t}#nY=k&)SOnflR zD5X8>n|Sas{iY74a0HwfFSXak^l~{S68$=S!VZ@gzR|Fwz0_(>XB7(6g0a{Y+^4yd zzqjCiv0GI4?()^_6VGnnI|F=kon+-RqR(XAoEP~h@oU_7LhM;HhCP#8d`BKK;EYj@ zADfc-Q;x@FH7V_V%c`HMG}J{o8DznMarF~{tessgHp{?9cUzWk08hfEPY=zH0?lNn z&CF&w8{9bGIlIk1yfj01MzE*ZJG98b*(;2}uxo#o7_`VlhR%Hrl%;^9v>!R-*AP>* zN6<147LpQ8L-bQYPFd9mBjT5qYvT4dRADqg?b-Oe~yF8u5T_{GX5HT4*jK(pIB0e64kE zHqH+;4%w{UL$AC!+0bqAeE~!~Rvo7^8He9yNV^;pz2Ycbw?gi0z)W?qdN?O?^UDnr zjf=>Ck^~TLaZvs;kyGBjSn)_T6Q*A~-jk#d&{f6TPLONMO#6wf%Tf8;O6y<5=ko zW&|R$y?UV9}iBa-e-yj`HlpaQ!>kmD(7^mYH~&(z2*JB z0f-N-uHg(V=Ow%H>|1dlyzDe8h8qvwtu{yPPj%iTF6k+G_F%$;O;Wf`xMi(*PX&Ay zJTN-Bk}U8$3ke^V4T)>(KPCgJU|lDE23AUmZphw3VAtW!^?iV zk-IJbFCQ=X3{^2obw(sd?Ss6uV$ks8x?L6H#fpmBjv!Y0>xG2 zY(h{T=+ss*P5a5$TN8ICZj}*NIr}x)x!4(ZyA5+IMP3mXKS|d72lP$M;4ec2VV54i5{Zw$|r(mCthM|*_erGAkJsJw_0%ucMAThrv4KL?xy|^kmZ8?4{Hejs7-&s?s8rKfzjps;X0;2 zvik$q_tPk5`#+7MUHh}97U zg)EuEp!aZ~M-C(7CPX2p?xM)8wgI2%tJ%m2Ng$mVrA8TW+3oFrwvc~)w;QJ$ir)Zk zBfhI=$87}X_uj%&R*U?^t%f)b*4ba5$46i4`j-f>g2s`8)HguMOhV_$dYIMU*o5XB z)_F1$a8dl@Uq8)%HuZ|n0h8~W)rWg{1qbsNLFe{<71B62!nkqH4i^^A4Jfj|rl))Z zeAw)<^xkhN`x~P~+|fWEMpou@0!PAX~T)x*x%TsHS&J;eWP>e{;9Z>G>xIMpkEyoB56;=XNe*|Mq+FIo4FIZvd3$%n995eo@1R z%D=NnM##=X(siPzzPzJTosR$lg@5xb|Jh`ZO=ppl!m@7wlYo(e`0nXV0aDKk}d>dvUk>SgD$2l{c=e#)IhW%{Tcd7euE$2=0vsv%Y4*GKH z{r`hzU8&E#SA8AxreG|aEBS&Nm}E{GO=PbOyobv)<-}R~)=0fOAN^VY!a*NT;~p|( zdo6l>I(%pu)owFglTzJVllRvC=DQOvA362C?!BfhpRT*nL-j6Fjx=?b`@h~TZJQU| zH0(2ccxA2Rh*)A&V3gqJ1wXCyvugbGhyTS<<9we?Oyx&RboyY_tK(c_agq`lWR2|| zTH&H-5p4=ov;aX+F?HeXn@rqI1eo)TU4Pe)p_3E~`qvOmNrU*@xa=bl3&+qz!XT?k zhQ5SoH5U#hYva6rtw+3`UL~9c<=>>wx?|lPjPeSv2>ZoWjv{-QNz3>*0@C}RoknVU za^`(YMOYMV8uoEO&7j|)TOvsZ91O`W!WXF@l~d3@YKrQ&bsaBLgw1Mlki%^dqKmP(&6a`siD)mqGG zzoa-3IU)yM7lPE7VKB_C0Qn1#t}c7;cFF4t9`WhS!JRJ8Ch~)s2bDG`e8UaWDRT-+ zWU?r#^n5gX-vn=`7t1>+ds;a^PV5dYni3FTWMsk-j&O|TnO3L^e26vxE4HO+t4&L$yMOe>-`_WbrPF*}VSZBa{NBjxB* z2Z9&^|5RH$jC66R;E9Gph^9V*k#=ZYZl%$Ao~DHE8zB1G2siPC2v$LOi!)l?2U^_f zpj9rI9pyYv79OE=1h52LCe1Ujq${K&%+pYC&X1*0C$cJczS`wl_O!(07yx@~wg9F1 z1v*3l)b2E=)W7uXK~kK5!>8vqc73F0FX^?P=~{k1+&3NsV-M*EMltI4`8*#%J60hI z&UlvFTK5I!gX=F~kIZw2$LSbfB_u=3)U)3jeX!_61tw@Ocp6qvQa{^%c0!J^Dlbxy_2B#Pg zd9xsyDX$F-obpGjSB9n3C@MQKW2i;ES0TiNb=?82%)vX1Wjsvl%8_5l=G4neA$a=X zFA&uV>fe8WJ%WH(Tds2XM}~PSil#zjOfR$V3nF8E79I9HPB0r!s9)c1TREzE(gsiF z+cA|7C@8aw@yv|PBWpjPFecb3yRjuDH)vIUd%3insi@~&(!hwr$A&dM^GXkskCWsi zQ)*D3^CAvUk@RRR=qY{LvcULN>zo#ORtuF_ zGO>cdDSaD42slCnVKymcftL=R^tkETZVKK-H4KylQ8~uxIUH_IR$nRXmUz2&6PVI3 zY&v}<$4hnp)$u(8_L5j`23$U^J_UkP3DA?UG0?%Q&{vceLpxUFn4gv2XTl-P_l!` z*#ne;#`fd^;bC7KUL1Tc$K~(Ycw!c{0t$F4ZS1<^EYfRO4KjTx-&5<@1U=Rw$E!Aw z83-ckUbfmc5;7On^?~V^_G7kRbPeUQ@EyDoEoG`6d|Y!wuHY!#dA1o< z$sS(Dk~Lku@CJjq24t%s7onbf7Jr8L9For}?XI%@YGfn-SbaXNNd}$jcfxAQ;eZk5&Jwy<5|>ZZ;^Rw!BhbWW7L8%G}5cP4GWjq59&O*rs85Wy1L0ztMi%g z&u_cTBzmGmFSLtCf?@bxSz)3zkfov;1_OdO?tP^v-3oE2U}(LcF2Ne8b>>tRq4p7o zVC%-A&_*F5)4H}(1R^lHk6uBUeb%&plvHLGms421Y7ew*Df_wtDHTvU2zyuktdZo< z?D?&J2R?p@92PQSWj78+aB?#=%C+z91@-T5>U-_+TNtIaxjhAaoY-Cjp47z)gY6~1 z7j9RCr_vaX@tKpaGkDE2_bX;1i;-27cp&E^mbIq3n~!(V>leR2j${l&00zUdkBg67 z?2c1ZkqF;=?iJj(d;3I$_CDEI0doa24k$2Up=<2%T*1@Z;^OM}E18GxvpUoBn=Vpx zp)1lRMP>px&N|QzY;{c3G-(%9I$@HZ`@~aS1E)YJlh@%O{Pazq_CpC?T=_+gznSbf zpL`E`_bJE2gxZ7a8YJ8|>nQK`7@Y)OjH>-N<~;tpzQVc{@`PO__J)!Dm^Q9cEh}GC zt->f_^4Wk^jFa`UYXbi!X!m0cbd#xW^S#zbIjkk~r@qJ#(qWVZw_1J?D1yoYmDu%O zH?!heYukcA=PJWDz#Q2_U#eH^s9;q_+wOXH?#vXYxQKFY506d|F-Q=RyeJO`Bj9xh zif%n_s2sOT6O<)Z${8aZ!aU^@JWTbFY5R7|JKbMfBx@VE@JL(Y!om+U5%HzviPB(g zj!QnFs_!gsJyc;#rQ^6iaiF?Ve_4gGUeTa7!}Y~=smc!;rm=k%4clw35y%7IfiigS zN#r-cq}hS^8MpZZ0DuwKm>6-i_GI)mh?FBcP(uAzC;7>o4Yp`M@F$ga0g2EZiQw=( zKqa90gfYvv4d3f{w6CE04G_6_aQuS*EuVBdHg$V)`WxV}6hiaiTuuGi>+8kWHA*?G zzIuo>;%-`K^&M_J@y)r&b&-566#WfA_j?Csj8foCB5`H~(DlDK->V}(x*j~9AKYH; zkP{zqXGs*WB?yutuxjXM7^=eEwzcJMEl#I9;UTPn8Pc)X_FiFmxTY@UD$ry@1Fz5f zQIZAZo~9dq_8Y5!U7H(`2x__vl8D#K!}zd=j)2F#(_iaCBfrL3$C{y8;%J4c?Q$iy zahaJFd6#{~oQz@05_s7Fs<-&Q$pTTEwr%w1a`-N&e3>j4PXEm(t181LyBpqLmfXh^8U!8>1v4au2 zj{$?j@JZSSdtPYuLjBww=ldPV_4phG;T4FXQww`*qNJh&BBvV>lEGOVC&{d+qBFNU z;ccr4E#FrRx=|QN8>)Q_nqdcn#L2P}J%Bd%U21lOgCi88sOl8lmjSoKDCxjl_GBDO zwO~!beOj$5eNB~Ui*XgvOin1CIoC$Y(z{j2KDOXp25X2VyIYr#?XM;LlI}J^6k~aE zijKi4ZntB-63(1dH0|$tS^02J4FUu&8P%{kjOcexRh5<#x^dv?OuNTvi?rxK$wCUA z0jNwXTwn)MCavskCYfsZpvRiQ74?_yJ8Ts!3O10*0zNu*tVoI-Hd;02h!=cj(l5IU z5JX+l#0r9>^wt$PdL9DvMnAqag77#KC~<@Z_fXHt2xnrl2K`!Ns!{SF&UOpzuuFlq zookD1R=K4eGm~1jNrqNoMz<7089x)4?vPhNr?Pi}EjZl1m;l4(=B3r`r%xmaN)n^w zkPqXf!jM)CW~bGm`v^-f3%6s6L zo(Ji)Lgsz&>93NEsu9vdcY=Gf6n00E+0jptc_~p&WMN>mZ|poXHCbK`C^$Sa@m_e8 z$E@am?QMq^o{u=%E>G_$W>=9zWd%+u%n%x!qK z=y|Jg?@M$qg@jANq_ZB{^O7r&S%q?qWymXY3Ps1IJIpiAQw^(cpN@S1Q)fU@L3cH? z2?C63qOc-Z)HlGdqc3M0!A4H-T1QU^jg1Rl4c!KcHp{HsraaWn&Mf-+rW>Sf7MD@4 ztq1ckDwOq7+UU`I@M+B2!^mx1)`PcUeI`opYAn^xAiTQ2>apdewn3x-q~AdzdH4;? zT4B1C@15*U zkco7A)r#Z{F3+4az8QWc7Ko90j1flPR1!cgFVQrG2WLpa6hb(-pCz;($a}5nnCq`J zHLqcB))0*JjNM@FVS8^C!0eA<@x*J9)NSB}QbM8XyThi4DR(U4GI4z7RuZpqN;G|3 zLF}4cFzK^aT2GclW|~2@n1HA{CMMlyVPIq^WQY4#(M)A2SRxLH z)AKF$K*JA9<9v@+vX?B6Xm&(vGgrrx$Y@=avBc-BJi8jT@F5p5bV! zgP*ksK{HR0QPYg$ieCE}$Xn8$mYV#|G_ZM3@C2vRc!4-g$e;ih8EfhLK5$&AN-qDF zv4STxTvAc==VPs-%vjMFCLooQ8onRVY_o;Fu29v{ z66L3wtyboKBY+A+Ukh}*skuzduo#`-@8Tq%$wW#jtRh7Ji8cA3hN45m$-E-4}bQVOgr;svVd8EEf}c675Sf8up4P4`^Zj$l$V&TP1mDtS-Yy zJ|?$9DBPaN$qi{r8uTB<_E>aNu|U{l7cA0O-sxXR(ETr&}sQEsUc?TT7@>oN+#_ zoRvAgyW^@`nSg*P`++Vg+urS-@3Dq5JbQrB82h0*51#2{P*^ag{w{jgt@LGf4R|G?|=-{Nw&7F3B zFxO@cG<4l(_nEgPd}vNKKpdEBik5TxOh#=6M$i;mF1$|k08__ZqMKK=%#kV3BXZ_) z%gXN8WT1rCvmCM~3%h(ttye2xV{%(4us}kJ-kb!Rt;Bk88*mkYE$f>4m< z$l~r_l)S5w7(IcklXZ#0VS*TwsM)$ph(tHoys~%j6Wo0s2_)244$~Q}CPt^ClA~Wa zhSYs#%beLA;k|J|hk0f@M#ARCr2Z@Ir~Mp{4Sgs)d4*W72S)q3-7c%l8UH)1l%L?;_&aoyJ^i#-Z%Gt|bn97&S0+MHUr)m53m=oIS6 z%tjfqLOcR&=X-VfAKoIo=koQo@@nmvt>L%U?h}Es|Rdhs9fn&wP#LN>_+)N zkax)XvPC;qPW==J`ub9HB(U^&u~DgPUE??6C2E7P#01ZUN?1H$))qC#0$I!q`>h0x zcllR-JeZ&9sv)<=;@~ZmaT$ygNIeP%XURxg4fd`}y z&fGzeRftEJjA`~@$_@t`BwpwV|0(~w97(waxmkRdRRV4Z%H>Gg=d>sFlBW6RuH(>F z+D?a$V@T@bwcI(!ZoCs(^IF@8!4qSZ!+6hph5T+@$3p{ZTY`*6R|p>d*)(($O8Q<{ zJwISsPuB-5q0Mluh@d+1mHkBGCZ*SD>DqlKI8#gE>|vO#MY~zDj@n(~%dh9S%h(}2 z&m$Jd48Uc9v$Ckn*u%}u;H?+&-!1;@2d~jH8}^ zLhLsDOahi+;dtEr3ix$*7nnY8G5K{qD1R7>3cW@~sfr9V^imzNtU$i98GLUs-gm2# z+Vst8a1>Q-uvF!rj6+TPP*cGSiQDC$yNuzkqR~fSt4JystOdB0oRR5u4GfZ(eE(eV zUjdY-f2!sIF95oKe!Elv0+SyFvXin6z_@D>)neD$}gzJK%#_ru(y8*)42J%^2 zS%Ws9Vs`7g;O>n^;*%_1#t`1)D(E)=`r%&Ti%xa+QqIr65g)FZ+b^N2^hKoJPv8N| z5Z^mzX`4Ulmih6@=pwRF@9n$sJQ2c(3(4v^+7g4C9xv3;FA>L0YlaF^)ATMuYliR0`uYV)LQVoEFQg>vvS;@}WQ+_W>(x@z2f zlpU*~ClB)o%vvG=OwBrfFp=;=<;T>b~8~jo_rRWUK zxb?Zk_cK`~2Qq%#Dc6M?n@v_;jjS0q^f>5!hB0xk?bF){ZF2s#({y61Q0t{cUtrE-5RnNhRFtFhfo!}N7 zL}f=13Fh?3r!!MA<5#Oy@!mzu_oOlpk%B*jJI;07PqrJeOzx$oA_JRvGS{)Vmn^?l zW^~Jfhept~uNM9c9j-t;KLgNp?6H@)gL_2ip5!{uR%g_+;oj8-SD@qaSuKm+8=4P{MZGnAnXn2W!6~s=(O67u zKDJ?@B8N26iO?PItuQdWvX;+m7m4*$b=M(Nnp0pU6q#uW{RZfNXcCAEnlxC1+dEE$ zW^EkE&rS$PYz||~cn2@uRnKEN+D=bakLT-P2QQ{`p|Vt?ZL9l8XE~91z4NP#Q+1#h z*e_#IB2tt&UkG^^Vr)RhHqZ{mI$hEP2T4&4_toa=6>QdQ4Agr+gjK)Pim*s~>dQ9z zZX1@FN#1{lx-teV*bJXlf%36Gz2@{woxHp*{D9Tt=_615T{Tha<(PzLOFO7L0ysIPSoV59huBjc2}@N6IfAbiCoXzxqM zH^A~Y03Hc-F|FWA9p%m6msW@^)ifO+S$qTR{(b~SFfepmJ|{}S5vS}~A)KMUOd8wf zc)kO9@FSQWp{-`zCz}d|Piz7w6tmG1+w8j-`^wT`w-5A=Q6~G~+K*c(bS>Mk;+^1i z@wiEQ`PIv_s&Sc|+Ffd+G}q>)=o2i{X3866m+S-zz4f1opK{ddr84YKImor8F^Eie zfuPCy_@!~mBy6Fw(s@nM=4n9~B6>_xyMfPS-H8sII%gt^y@)q{F#VS}9JGK^DA1 zVvb~%@KO`O{4(yMJ5$tXoY&R#G&KuKccL=Six^3;m7a%{BW{)&l{xCAUJ@)mtWz$Ry-syaCA$<2VfB4CThZ1Y z>%7r56PLel0FH}=Jx`?6yhEI6qmQTF2c)0G(3Qv7F`4*BBL#L)1yciI`x4ft;m?R0 zVvENjuBr8jWm?CZzDsx)ME|6|Ey|;z_ANj3`#YrhzHyO3F01i!wh?M&0>VK)#DWAS zF9Q`#^J4SBvo=b(r-~-gCE&Hm#V_8E%39a#Ig(4z3&_|+o$yso7s4seX|>$d_6oF# zhu^4bxx{{ayWzUu_l*~(dG5wTQdaAfDOtIZlU^lVj@ja~J8daKoWkW~*Tci8u0M^O zC-um(;1(3O-GaM~sTWi*rb+SZGozTu*w1S=$OIS7Q0nBS$AAgr)a}M!zT*Vr|YaG9;N@hKg50G6!Ybl#IHX# z=sC;Wh*09?p_#$kD=|BlJKE}7XJM2PNG34zs7oLQJ(-Aaza2tI+4q+Bas=|)v+xUG zBkY8T7iyE;lm)FQ;IfXS3@VI3vjd-1oyO!p2QNzk=#RVo*r0k$S@84J|C9w-M|>re zz8>N~zGLcG&;-YdWfrv5{KhP^{WqiEqrRsm%bll)ih(gE*lwi$2CMnzo4sx8mpMm zFv~b4umwQ=ck@~K84F(YO@qtB*9aAI?Oa*Sgy(T-b2XKNVO_LVfnP-?O_m(LPM8IJ z(YH9FrHcj(U~3w`MhzxQ)iGU(Q-;j~d9%nD3}; zxi(+g@kLnT-nr}H4$p&6X}qLWe_s64U_UF#zZ~m_W2EO5j^X7?Mv&nnw}7_Lkjwgw&Pa%Im`gpk3CSfF zuNpMkjS3sQaPi+bpE51~%~-iGP%`+#B{bFYkRE<<)c%VrLfS&!Mw+UcyWZ>Dum-tO z-=2JTnW~nAqZ|0Kj4OGSvpv_xH?;!+W)@w#0*X( zEGT^M!M)$NMEUu|ME;d5`bV;)wCh2V)#VJJzhl{J6B6*{Qq{Qu9ota z=1(jv?@3D&{gLxif&%@C$U9Y}-b=ab7f>G>zgj+G`vjUo}R16r;pw&B9!gKt`fJPf>dMhk{#8vMk{JM8SHLPN)f zlf|adehk!oRT1N|@!lnod!^{Oh`iB(mD{@;#)x_))=v%<_a6ZbW>lS;P#?3AOm(-C zlk=~Yz08(-r+bJEYrjfGE#hhCkkRJH2+yLMyeeQ!-|k&0x!&+5c&*^tO%s4r&(oO* z-Mi&#>OsmK2*Z>MELV&iS}mzNWWsL6_k0NGUyYviueNj%ZneKO7OcIuXOywo+H-C6 z&FvU)s@uR!Rk@E_SY}qx6B7nPRkaC2=Lf<%+j|W;+1&2-F?_wZEv?8AD<6tn7(7>n zRD>CwMxJp6ksoV%Dbw$Ae~ALA4wDH4dk4dK9%NZlBwovs5Jc@0|CaT{VZ*eDb3PQL z+VeE^%+O=&Ye9`@;sqCbf0&(9p7|F`hIfkc5VCz)AqI^Q`O3wsQXefWt>xMg@K-G( zUo1eN4|gHA>4Quf^_zg}(%yy>500Rowpwdm>#QFzqfc;+yDP)7icgb_y=QrAr=)zn zyG*2w-^J)>c zi87?2(8 zmqSnQ5g>1a6uEElGO|op2v^!gI;9Z3g;u!IrGE@lBLFWtU&PbY0&-nxbCeHZIC`_q@!55mrH(Sqf0%e_0a zY@K|4R74dwr<);;xBdD1NZS_|@5nI_y?ZcILc&7Gb)Dz+{A0)Ir4Cubx5D>KpF3*i zQn0;#@#wN4<^RFndq73CY>T2G3W$O>NrL2@p=olG)MSt*M>Rt&Z)^c zXHf(sBN>_`IfG=0{`Tz6cHevUd-tAy-yi?I@oof= z4`Naq4b|o1uk6N3dD?gnIq2Kjl5Wf8ENK*pG2oA-+#$zPV_Re*DlI8`Ox@IpzK;L+ zHJ7D$)5{ioh1pr90j^j(cfyDSdx@kl7ID)i_9?44dcoGzXP2YzMDrL~;i6;*ku!};FnupaRQ?b<3%(*dLLe$oTE zNOqI%F8FiNF^V_6Ghli#CGf?I7!G3gnEWE%_qi9^-Xa8CP;{IcoS6PZdRJ9h{}d4^J!!qh}+kC~AsdGfsm(~?xFTQwD3N2D>UES1@K zk%#e*V}errgTWH_gni)IyN|^AUv^8J5C1p0yQb8^Eiq6pQU((&ti9>zvrrG z%2|^aQy5J18kBPhRlI%Ok6j($_09N6mEIv+`c4xVxabB-B-7SRTOw{!c;!JCHl%k*2TT1yV3X;w&)sL zU-u4(w5BYkK62||$qbVA^NdKcUAfIV{g6a6ZfgHckFlmuzMWP9@s4~>W%$CIVUf6* zBjIzUACK)r3CI2JbbIb+bV97DUzL1%$jPea)SWeEWv;&4ycU%4@?B{Mi-qkY%q}+S z^0hW+95|(J)$?19y6=`zPi1}2o>)v%PMZ3Ht3y_r7XdPrVxKsYL3eE!<}Ac2b>}#) z-?nK`zUvC|pOP_Md_NH+K4q5LljYI~HVy58MjdOKrfCS_YiK&BD~FtMc&oKl?+9gT zr`Y+e@hyV(i`wCzXgJ1cO~rCOT9s-;XhVYhf1`8bdHnq2kGdBrL&xwJDe9gykGI&A z3mID<8@LWKlR|QTbNn+=&uZTAM$QyPCv z=Y@scVt8&p_#1wO@(G*v<7w6~f%^<8PfhpTLuj&>6O&&ZZ^+X--LEyIcr#RhrybhO zrE8w#5ncQimI#+amHs%(C5wLAloP~g?q?j#P7#7ecHF!&H7g3K>Y z&r5k?n3kbQa?AUf2O1QDc|YC{4BhjmysO!4ng5c|T$ff^8X~!RPq31tU=b^_ z)4JuOymV*P#V!|<+$0Dg#-rYn@3e63)A8tR=Z?ms-MvsX*!u-?cY*A($26~`QMm-P znc2S;r96wOFa6d&#Hh^?LGnRj(!oKsoJ@ipecD3pVH78#R!OyNuNt>z;2Yq#0nC69 zDw@uRc^(WaonDtBT2I!Dc?dCl^PUe{1)fH(ZSyP^*U7UbsEoYL>%$aQ5+3a@M1mA#O1?YbyvT$BAa~f=zyw})2X-8?V5A&=8LCiA~T}Fm#T3gcm+G0>TIyr z;VC%ZhE(hOW6Djj6->G>1cLvr^qv@xCg-UkL{mZ@*_=|m| z>G=Xm&Gpp8@*n@5p$@Lp{J@_E7|PayKwTW&oXwyv)ckzhzyBod=-`TKgZc&ZMsXt2TKS~8^BWf;bM>|JnjTa_nQ0kxH(k?vIKiP-ipsGM>9?(D75*J4qgecDb z(L_@d$jMF3^V7CO_2K6?9%>$5o|~^cKQHp#eBxsSVWZcRULAywp6v z-y15}|Lhm&4=@FL6y-kzqF~QM{ktSkJ^pK_e?s1L`o@U;gVKL!#HQ+WJCMsgY#G$i zbkIbrX)HP|TDdL%8qG|eOqqzA;!!Yyha*Vjg4_SD@eZ9)di;{_Sj&xz=)>x?WiAh#Q{s?!L((&OHfqPXhber%i<`M)Go(H@Ku5lD zgRk`0w#*Oh9leX<#OFE`C!WLGf?mHo-g0iyy>9V&Phsuzpf@a%UV(pOXWO`VeKRjM zt1gP0$!J(9whX8{cxEx<(8=9y=GTyqW33n4y$a>&R~oP_>LSzU3Nqh=DSS`b;Xz|L z?;uQ5=Fz|HxFFW6$jtBbI#1;T+oh&#cQ7NI9mFXxTwM_sYK=vu+`horpcZhr+pE|; zSN!rN+KbTrMluOe0B`hNd`?$M%jglCZMH!%KKSN9WkMs}?RQFe<>uxu`8rjY^zOFU zJ&|3pF}6F2HD5*VP8nsONlbq?b{2?;Ap#20*G14GT%4K&To$v!f=s!>WwE&`66gX} zT^N=#tge5%&X{t17DJf+7K9!vC3n~ zwmd+0*jng)Id^m@WloqN6hZD^wC|~~)xI`&k1E45ApjbWE%z1^SHx~e{59)~`UUD@ zCqQN2669s7A2;y(^J?G*2Q9N|&M;6LuQM0Cki`-ZPE?;!>MBohOJ8#iXfrxRG4Jlu zi&^^dH_7P?DQYbSv-t9lCSORKS{u#lZLiT?QV`f?Vw=+$uw)m%;3m;v_a`_2v9z}L*btd#4Rljj1H_;9X~p0duEMK&?$b^(i2=DZuE|tvF~=x z>OHxhe0e!DyZa;xYQU@tuuKGa5HGtp(wZKWP{)2dw#t8PJ%q>9Ch9h+BxQoV65S=) zs;YaXMfL{;;YOL~8S@#%s_a?}&x;r3IXK}Pc>KU{EW3328=drzHSp)c$O8oadgkZ*xjx@4m;YIv^!wtE zQV};giSLi)`ahwQe!||+`~O`h@uGCnjndWBL}@6Tf1{zO|A!h%h!>@r|I|u<)mJwf z3J0ZIe`%BqIU($iAXKc=Lj{D}k|1&W19 zw4+g=p`+cpg@NkEpP$>9cd%|@VBh_D+2SD@+8uO^+c?+{aqeQ=x^o)?4gD6z?K_wN zd@KS&8lp!$np!3?vBM*@lIq%~(N#m(#3Xb;K7NRXj)kim42}Q^I61rjR#{!MbeC69 z%KS}c#VEZ;mP?zo%-igb462m2Q4 zgYgeGQ9R%i5USq>5J4(vcz8{IgAIL?%)CP@K6b5fF^;qU{Ty3 z0#>oxk-T{HB$lB^2E$2J%8{T{aKzjO62VkFTGZEPPFYcnIRkmX=q}&Sv-=g8zsL*~=_}U{dnY4=hgVqdMApPwGJj(b!mQt7 z&*=>bZAc)y&*{ zf*9Q-Q9`xP2FcD>qxDXD4ZVivjN^QqUrWcW?0uDPkcmiI&*47|Y-gdK)yIS+ny0xEihCPgCcS={>6Jo#@(_gGfxhi8l2xmo@j)XAN&8_o5 zGU+`QIuEZ(%ximw;*hM`x86RUX}$A}6sR@v%n3&7-em~mIX0IpAbe$`r=qUOYupv> zRp+o{lzb)CWD=rPq=0(Bi8<4lck3ew@5TY;;lrbMQ@iP!8V#jbazk1)+Z`fMu~O#R zYzjF?2t?LA)~afr{cR^LQY&JoC9Ujc!h~?rDO08s3+zEwPMEQV;2ifo&aV2fTAtwi z;q^1dES;1rjocnDeI%dw5XDt;Q?CA4fdGKAWZ>&6Th(sE^iEoo6OLZe+yz2f@k(#;L^!&07}XbKJKr*KCo=rFzYMjzYt^#;xwrlv03 z_}x0!Tc)SaZPnyYu$p_t`ghLW4vYP^2OM==&K8BvvIVO=nNkwWjjqFMYLk ztCJjM^{-=;Y@-bXz;7<)iW%+}B))Zu8@dyl*3=bV4%=!DSF5PiVZf)AwWu>Guvhid zxl$p&TYw5wR3P7YB{xl6+@i`n-oxt=SC1_=kNdG`6G9m)emjnyf2hMrQPg853!)-m z)7r>dWRW}9$#%JW$(}oBXKxYpIoVXDLg-O=9X=|PVDoT!iHbT8BI+*dwt{5bV(g)aYbi<%NHilU#(1QL?opz-IQi z>3Fu0x7KvH6-uMAD0<{ce=up)kE2fJH0%EJaNQ}G^+Y$+ugvbVU$haq^4#_8$n5G= z5L^^~8g1#>(#m~_jG~`i(VKH{>|+?&+))e-f>$=k`mXPdOrNeChpX7Rk9sofF%BGh z`#%5G6euf%RiAbKc{eHj)f1j%_2uN|WRd>z+2+2*s3+r34qSfcV0r2%vp_EtYD`p{|Bc88?f#S%?N3>mz(>^gfIiJ?0cxiioEKNs)E8b$^0uBv8~7BR0zjT|m&2wt1HBf7af zi9M314>A9P(Utf=`|ka(iub?R`#|BAXytf~AprM*hb3cIJOj_P-6Ckp*jjzgrp@QN6EzfrG0xkh|S`c%?oBavwdP2v!tg6G}9&93laMGkWv%4}-iFCVLkPueC} z23fiwOI>cU1&q-U&7QvSuH$$2BSe_uShLkkUx~t|c%x_pkpjd$gx2r3`l`I@uyAtK z?2LdZmuH@Im3K}2$!36_(Lj_nv4O*AsP!~4+Aw{1Bdt{1vSI1QD?EY&9k`r>qksikO z<@bGEgCqKBRc^KVjKeFZjE9o*4UIxOPNvna-N?cYi$_8Ck~B!P!qg2tiy|+2_Iha4 z({e@3W>rj0vor>}q?F^~XO;H3ht2yiSl$+;UIr4!zc7HTZ+wTrr#Ze#8)BlWVPh*O z&quBxfE~Qs99?(;Yt%6rrL3$vp<-~^%u;C0iBDI3pq0|$UMcBd@&ir% z>r9SZ2sv|YoG2rC6j5O_f_uceE%1vPGdu?703d3Y5oa;5hhOlF@MJkH=xb&D2LpEc{f=RRZ@wyhAYD5gVtbnH%GK-2tJ#AUQ_e;R$ zniw6)_Q)5q#mg00C)Y7?UUf*`eqx4)$wSpcAXg%;zh1}gK80qeUs-x0U2MmJvstj zuM!98@?X@c@Q9Z>v3u-==86#s0MqrIzf@Q~u2yi)p=;E$gcZ^BRh(lG8JJIv zfo3E2Cnw0+b(B?hyFHNu(`P51$1UJ8tI%gv^d*e39$X4@a_3zhI+ZZ(QsoHFJS&&M z4qi>S9C=5OrPEvrJ?fR>iFWBP-a6)ki<@08?7pwD^LB@Pfj@!kPF`r(Uxo*$^^Z^4$UU~E2 zT}0U3*i~Vv*}b?AfZlsnlhO#sF& zdKczmlD~S4IX1=ny|MCfFI5Jk#JhxuAw?$Bkkmtso)wKO&~}KmPgTsO179vA+Na&a zhHi;xL;gakEi7pg+0uxi%J;!(>Z1t)U*3~0JD;LT%Y8R< zp*V>r{J;9~-_8D8Apd=b{644udoKK6KNn~)ORTkX+G14`Z!dp>t7W7+FH@N!W;~4j z=E!w^EzP*U)>6z6-x{klH&sD**^VMNB|g&htq%{^#we>}8e<{$xV6^H3p4;jty2~p z)O&gIO=jMItDez@N_9BUH8MxO94C5-@+;&XZb8Dk$|knej4Oz>REH!mWq|HIl{10; zb+|bNjL`FU0;|9D8~HDVj7uGwvJUE8coHk?!eFBK!&}CUxU0OBg5iQ*m^y!qO1oYn02o_T zD~tSrX0pWQvWsjwiiu**JYpT0?4`1_hXyBGZs*{@SlkjhIMzWY3Ht9`3s$Z9Xy`3; za+us#mW@6hj?Y}wmR>Q?^)O?VRC4TekY7(VU4M~%t#j~~FFuSN^E!F*FGY0R#9MU8 z`ZmMOd9wA#J}I&csc?Te^3RWwv)g57`2e;obKmjW9jDF2QAv5xKUN$o-5lIiDrpx& z)Zye{(`vNlnQpVlP6V+?Wq4q5_)-^|T=C4;9+8F0Z5j9jZJc5I^AEIKD}9L{Xf&Bi zpRbuDLbqCbJ+@k_Im1{&t!IlJcXdJtcw779Q_W{1M|1H~b)<*%48jtY!0K^Ustoi^ z6tYgF_!Sgu?j@$Vz$zPV3rq8^Ji&rp*pe&45E%z8dC5H=dga@*bzzhlN~|aAL^WlE z7~#D#h+?8#qV_u$%?f&)H4snvI?0V^g-@$kH0c#X-V}cw_I~5DbNigne&=R!s$!i_ zexPl7%HlOCnQjm#wUW6Zf-uX}LP+i9@{|LEl9YIl@i&d|RUW@1I%k z7yUqU89U;qB$C)9@fOeyG2I@^%pN5?$krp-d^ffhVw-0%y2PlnB}yMe+I*Z?X*o?w zX6hVzu0iWs#0vnD>a7>}ABOoaWPCGq5tgM6(N&O9usL|YLR_?zro4@?p6cNsjs^#@ zJ`N_5f002Gw^qI>UtWeu+07_pj(S4{(t9xxvn2tpaXoWNO1IU`AE8AI2M#32$LyN` zRXw*Ca=`kLNBnPjXd90pq7u+&2MRnmxcWTwP zXWcTaCH``6C*hP|-*H-tfOnQEF{<6_fIqZ!N`r?g@lxj6@F?`r9o3cY&A0NIFEn=z z)AD6P6joPdBnQl&&>vV&g=uC3R_PQ~Cyd@X)jmdxsV$>{cEY_gf#* z7{LQnRBHe1>xxHgL=%QO0Fuv-g{ADOts`4G8j4^vj~InmSV1{esFUGs^-XO1fM-*b zrR`;l{3=O)pHDg0tdT;kPy4-mqW3Ico_M`Gx?q|cK<$pv5lL66jb+u=;@G6T?B_^+ zpfI1GG6?dt;_|B>K)>xVoqebz`iWB2vgYY-l zCa*{yOQms>N8K1{YM%Sm6=|7TrO);rIU;r>7?Ma8_<(8I>1osjPB<`(rN zB;Wer`M>V~ZPLNhpt!&priZbl4CY{&tlb%}j;u+@bhNcrg%c85m)k@D@`pd24mPG} zo1s%B@~!c>RT5^AYs!eq#w&EDY;Pdb-lui$|Ia+j7HNDPFl3^En@L+Fa$j+PK4ZJ zP>sKZQTE9<>)evZlLd=lJSJ-gf8W^SBntQQ8DB_56f~{(r+`HETrI`KyHBf{y~X5j z#u}!CKL23q%+KXuNyM@LJYeMJ77NOo5%hAHQ#V^{FinTACjcR3ReEBa--Pw&=UJ#IeNc{hJC&M0(=4l@o$h+&@Z!m};;^ z;4=Z6Ys$eZwX?T3l|VYn)mK73{%3D*N){^%E9jwn*~0b@v{6*FbKYN7Q+{8|Pw|s# z2{$D$F7SUNq~LhgVOc%?tr#eW6@x&sbS~I)Jh{HFuk^Y)@}TvFev4HioECt}ZFWo{>O*K_h$NbV-2qid{Mn#hF(3n|&@GjqS4<*3>02TxSX zH9e!#Mrhd!k`kRM7#+L8QdnTk3Sfx7N9fk zzgLseONvmWWx$UP5o`%D^w^wedf73C*l@!#x5h`9Hcgn95ro#GVjo=@#HV&R*^)Ee zApH|NmU`Xxkku zklOYb8)2<{#;qhy;g$^Ej#xwQk2 zkDqrLtOljF15%gaiyR;0;;oEW zW1;I-s-{^NkxasA{mtOY=2DRmUG1!$-D~N;K}s=rKn^_Q!w8Gd1>n-beQ|D zU?;(b{0&)-g;C*hPyVbpiMaRkw$|`e8gzy>9i6ZcvKEwtzEzCrA+y%dV^kg#MSjZ> zj3PCR=GD#`)vpQeEtXah>%@Von%O{A>hKM$H0()Z+s&K7J|SCd@Koqbv!VMx5s|U4 zrCQ+?4@rej?*n$n`|aF)i9HniZAQ2kI<^Nc=g+uzf1r6?f7w)x$Px+@L979i8@EX~ zwb?E_=HKicI^m|)^b`1KzA_a?zp31sV=yT$>YBF3)y1&hagmwVq9TcWZGTfqV=`F{ z52(^cLwXwy35>~g(q)j}R358->gzJ#dyboTgX~YN=ND)AW-{>-P^)ex{rU*o%>xf_q$YG?tWl$Ckew! zw92=)D&GPeRhDoC!nu`t8Iu=q!;CJ)1y-3(^Rtz#o6TG&{2oM{g= z5ullu<)fzpYcPa_7vi|@IM7PETZ!zU{H64D*ugdTw6c@Id0$q#t9hwE4Ag?2lvaQdgprJs;(e1tCU%Z*oH97GKZgrk2r9w4~**DY=yAAbH4isX2Zae z!=|-r;nnHZJ;r9(|1N)8;aOdlW4Sn!S=Me4PA4zm*bSXYYBe$2GLqUw{&}eTnMr7aQ$>Wd?|M!I16p&4Y=rNNPn<%WJ$6brQijQ;NPLmz-xxxp-_Kr$#u(RH6E1@c7Fzwg?ip z?bl>$%!GmT)3*nz;}kBmEF;sVc_!`s6_tfet`t$iwp}U`?*!KiX zbekANCTC=)QctxCwBb|8X&vaQy3Nt1h%@uCzkC=lmSKGKQg0|hzrV^e7La&xOJ6|+ zRh|z)`czjYSJEDY5io$L`N8YXi9vrzsiQnOLC#i27s=1|| zOBgt%XLq20m&qW_-;bMK5)@kAh(+Xbh471Q#H7gEujP=`?R(@s8 zC-W>7gZs5vOn|LY27x&T`ZB3qj`lG6Ej}aDR`r6ZCRyU7SuOh}p%Bfb=&gKv4ofn1 z!EhW9O?4WrzV|JWI>!k4isMb(L{peljfy3CqOf$SrgaVjK8|ucRYQADJM(DDLLR<0 zT)PUiMN2)X$3mo_3HL1!hCPMES@ac}YQ{ZtSZvVM%vliGCu*-D&JsDE(ckpnT=%rB zaf{{9zoXyWK?_}*tliL{;bi?DJep@9zM1M+&s9s-&)6@SghT)@Lk@}f6+VZnPcjku zQ+L+}58iT+q?nAc$cBXX^|iZAHrjRWDC;+Dd?~?|Y={KvCh?bp!+Yf8VojSPdDvsX z(R9Ej=R;htF>S?zxaJIS;FZi=6;V}AyVV5?AgdJ%q_CS@B%mGLq;DkY9`OF7zHm)O z!pJsqn$+lxH7~q_C!XAwGrK-~^kAQqbvcm*H*I4R*aqC20*~nA^yl;mo4NL|H)?7p zL0S6=dcv(xdFA3u*4t&G6<~`K4Nf24n%nH@huV7$XD6j)kOB*!lrjD3Mm(Ur!lx{Qa<23IcdHCkOBP?iJ@Rn+ zDQ;Wzza^N;`KD$y#-w z8)b|jVudJhO6L#Z=+){fFeR%CznLh$a^ke*-LXN3zHyEuz~W=iQm;)p&{HqC-PA;@ zkO)Y8=F@2|_hOesp8;?#qN)3^Fp7dTQAJQO{Ls9nOWi^tPjh#J3^MI+t{>wt=i45{ z5mmCS9kucHy2{)&f=ycPD^lA-?xWBAs8^?p$HjH;)B7L(s>4R&0zc~um-uFj-?oS+ zol^Y@NmEqb)q`z{19`A)r;VB?SMDB0e3rSqJD4he&`S__E&;2}O2`#(=hdp58sh~H zO&cS3RzEYVrSP}ZO!r4VO&6S_7G8|IHty=4s&=2KZSt(>Ay~sLvv)r`QFL@fZ!wAkI4M}8K3oHhT1Q-dTYZTsDRyO4mvj$K&+KmM*gd@`AHt) zrthyD`_%T-!S>lU)pfIe-)aXslf_OU1+9Uj*RJWbUs9+?{BR2{H^gN#1ugaeD$#$v zj$;fFYb|e8?Ybs-O2yAH*krRe3_*ErhF>AP{Y-pQVV8^<;&uk) z#pmd z4uCX#D`l_n6|O*R!)U;<+HbiBb;2-au$O^dW3}*fzLZK#bp8D=IgM3P5U@d>C(%`( z!tU$Ke@|8>1D*Ih@56|vL8|;S&F`pudoBg|uWuV{remnAIJnXHXneJ9E*U^5q5&NL zi5S{H_2PdqIyu*%q{y~;A8Y&EVH^Dzui!A(cKXqo0iY_xhNJpmIB-_Oy78D4U<_9; zp|^mRC~$I9ocTp zFx26#b#=Q%SPf&~!tVGrDv3~@!dK6E`?PY< zhUf#4ovLv(R1%?7rr*|lYP~*;Aijz2)eh>Sk_ZXAreUR?Ol@JPMt?YbKP~ngm4RYo z_$8&sv}G~wzlaX~pXa9Bj`{|?0G?GRpP=L!TN@3Tst+GF*EumexS73A6mzf1HO_`# zg-N}5t8&SocZfJ6_W$~?&(Oa@peyyr)tx-rn4)U4!C38RIJGxASCor+daf1|<+#l? zQYqm-iq#)>vvrd}S<;Qpydw*z$FE9$Cg$I54yR=_O)6_)Z7yGAt8s{{oTV(K)aaUM zyg=oabfov)A@M4=LcUUy-@tMAdoW-0$kwMv>)P}*`e{s|cYhzBkU?QfK<{X*)v{9k zF>I!r;&Z#X$eev$k^vWgJh{FK8!G#{I%PH;=M;AF(0X5EP+}G&*$Ib%#`?_=nQ{#b zwlHcYyvmpxj&D)j8#pV}QR_y8*yUF-?!9}enOxyLENYM|s6#6S(|9-iZHdEQNS?m7 zwrkjbLlx1pG{eql{t9fy7&Cr1mR}P|`?QLWgUmLbd92aWg{-eVH=Dsp1%KfqgRp<* zIFj88gcu7DD7f1k9OG45UqOO5xm`gKQ$Z%eGbQ`o09u{N;5mo7qr+VL-0|vBm;8DD z?Ii$!cq3u^ufqSmPIB=iTG+biR$O2jbOHiz9z{|p#_70U;EPEqMK3boiWk@|_*g3` zF~Fij)n{bVc2<2d=jf_1F@TWr7miTV<#`$wW0z@;b_E;!QsUe(LO( ztr48YR{Rz{XqY0SGwZ~p^CH-S^_!`rJwi5en6NN~)@fMMk^%^yt6_7KD?atk();k* zL409kAvr2z+VhhMW*xqF0i?9KYnMYx8WFFl=*FT4?`~^{1KYuhsP~Y-GSJQ^+;K21 z(P{coc|2~7g|7k(9Bg`P$odHSDHt(_&Z3z9uGq&}ZRMJwn1*nD}@zBB>noMziSocO$Tv zXi=Fgbs;~ird;oM;`MDr`H_tb_5s&m4G}`bcNZw7@NDbldNep!bVEEreKIEgZhH?j zhG98B@<7z%*?HuF_+%IJo_bn~&&W7R_}rT7V~@x@?G*cKozvS=8CaSobdZ8uSJ_tv z0Zh_GdwcKcuBksuh^=!c_jBP1LCQwu>JOS)V`OhO$Fm}m8aG;SZ0m9pXW8e1bmr$@ z$z4AAvUzc_hk8>dm^)d5ccFKisgL}RQn*K7sP9Yvx|`3{X}e!LE?!yd`|nZT-`@Sh zQ}OYpjH%`Y@p@4_^YhuK+Q+zIrOobgFo>%>o%^PQa@_B~|DT{sswB-TEs!~OdOD91 z_Ct{H`|FEEiN*VjgMHtfFYX><-jt9p|2liOg(BoFG@v|VqKoi3dwnTw1=?7004V{- zmdHry;S3MPAI_3MOq%uqC&Y!y?+T#c`1W}x-l5sZqU_bfAON7+07!!l-?a~hsx@L zgy<}4w>*1i!zDej#Q(wft~KrDp6h!{SUN5-J|XN(Av}ygliya>NsW9 zxbDmn)vfs{nz(dMF`#$3?r-P{kyX~8+=Yo9ScGFd5{>ouW}0-ySsE=#dK)ye2fdZ@ zg@l5}oSNgvq=q+}Z0Pui3B*Q5OFXV6->1m5F-C z&w4&0S-a);aEqWn!H^YVR>!^KH!PSfr6#NDL2Bgryu+;>9NqfJE{FlL2ntc{@T^zdsj~LCo4w$49}rQ7P`b%L$T(zme1H`wtudy z4=yemb*Fp$DPhTuku8Ej#?D=l2|tIZTclL0-6&+X(d!s5H8OGw7DD1IF|b!4XO)#nZxl;@zwnT7z6Dat39gV!h(sM0*g%cZY|{(3C)K#JLAcrW z4&-WG0@0oTmO2Be`@t7-&RWPZPlw!!Q# zQ$%9(l&Nafm{a1j{Nr6)3XKH~6Tu^$bYNWnG9m@ipBQfy>$BGW(&0+_p_aa=zK>*Z zSkhr-qT<6k1I4>dsZzW3F&>)=TVtg=`k%da?t?x$!4uWv0zkRbVJz4nkcAEazE650 zlH;sVPeLZQb;bAtEjiFB>Nm&jca|jIiLblwQzmwjS(3DJsfJcCX)hrl1**d)jg96E zEOs-2`JCw{}f^8sI_ammPsaP9hC*flom=a_XACfRQT9~ zFzYhVXXrUeV|v{~zwV2frzGTliEqZl;>hjeuH2Vt=;2(Z-T`N_8Y;%`t~`Xu>{ zDj$6!H+5C!T;ms!eZSa58K2hb;euDzi)_-Zv}0sC|Gd(!Loip)QO^=NGm_tsS&y2+ z+=GZbV;AlG_$=hDXz@6uDkuLM*xkF?Iuc zn1D(+07joD*{(44!gK@Y-Eh0papSW)q*B9+QWTL^FrW6U_GnT4GR~os(z}(VbX9wf zABiCGPfn!~qp7BSYNK?a?IofoVnyqGDni<@o_2wZREe6 zjpIgMc5eLX>|XhS#vnWWzV&FjV&I}%^UqE5ht_{SGmF-KMX4lBU~-HtPjo#X7pcct zJ(H6}#s~`mL*35HI5%)Well~4l<&_Gou#MyyRBDG9A1-kcCCys#TB-a1aJ8XTv1Kqt{9mhlHV?zof6WHHk%qHJw~5ZuoXeL5Dl z{SN9e?XU(st^kQz0y7|e0hHg#zjTJ}^Q|LU=<~j?5jN!aV635XqQ{X+#hO5%3`T=3{cXfPnlE#+PvYVL7Du z`aJ)kiK8!_pSf$GBKzWS=k}Hubd4jR`W1%OvV-Sa6MHJOF;DU|ll8uXi-_;lXKzK{ zFZptan`DQL_2L0Rn}=y_NOAPS0|C^!QXBQ!ra5Ae`^du6r}I+()yK4FPOZf0+)iE% z&$~v72E6ZCea9^7nmNS0f%!C)xN=IqZ+(dQ2Smr_%3C_sGNEmb?5|{HbS{15H!u&t zmhm%=9eI7Eze8X>DvG-wA>6$7Ct1527%|d62>$``*tk^pe;upXS{ry-L1I>*OzZH4 z90f@LY(dQ2Tt8f}#jxDmdW^D5QJ$@<>-4_4ENwQ<<77!K z!(iB)p1dS}id~F{1=(1!+qM?hTa)kpXF<`LbBS@25kn2$=rWUq&oDpjqYTXs$aj9K zV6_A(opM5z(422}5)V=4>>nVnjX$XKv&Mfczm$6Qu|o4bZqOpZD*E4n-`T!HU|R5s z{6Ra)xF%BiI_XOz{`}G3qU_|%+i9md@I56oVUFo>aZ6y66{jUm#7)wSgMj6NYvMAK z3oe|nF4J2&(0}XEiZ9StiJDx?s>xpCSsO>phv7~bMxW-gOzR+xE)@4mT``x?YkM7Q zQK6;s8VPl()Qxm<^7zZDn@(bv4A(KoPU3xsn{89k>p$rI-2F>2-$uIFTqw0#8}kjk zwtr^rvBTEc@P#}aBh=u`n^c591^Iq>52+L3l0p890@}|V$4=G$zeg;X(;8n9U1i;0 zw8MFo^Kt^^H1)}uuP!57d*Z;2$KtrM{huewZ{+dq`+P$BTvqspPk(w3`>XA><1Wgs ziKiw2f>;X+HC9aU1JvF(lE>E7cuH|B%hS zGI>VY3{+bW(Y)xskjtn@v*EL%awwgwE4^rCZF+F^X?AJ(Dyh0=i;uyXnNLsiR9lC| zj(ym|=%ZuiiUx~|E%&0Ab1|Ff0l@uT>D24<=N2+Li8C^S(GiKps?@y)q2ii(-Bk?_ zic!2L z;ZWa}m?T{KErM`_ianNh4{-J}+trKB`9j!U<$~O7r4+>6!@tsN?GwE@1Ek|VOq(~-fuIDOfAuGx%nl^bQMlnRz&toA4`icz1 zj}?FM5w_d)kzE5N`si)6U zTv!{J2#`OKcUDw@UK{LDlJ~4-X-^@ixY{$jjPPSDtd;CoS4zb3n^3u99}a6+swC~V zaB2+Jdl%~W^(6M9#*8tL<^9Xo zwoHZD1}7}G^L1CzPKSdxN=}wU4Ovye0Cb+D2LGkly|#^febu*HWtJZ@9^^}IMr=sl zVN&3kWR2)i_^N1Wr&)nl3L*$`Ew0yq1knylu+Dd3)^43TvQ>8cJFK7jI$Z#b4v;jc zCna7MY6V3t7_A1&G+U)^Au)ysPtnZ4hdm=Z!wL$1VaOsPW5eRE>jg~f26@9U2JjuWBN=y$eHvh+pCuQ4(Lky{?mPjzQNaQ-lvDjRUx0d#G zR~3lovU_8Q9}+ifMWr{kzf^Oz@B;xcASc!yv`~3(k<|qKqNQCXpQzA|@IZT)O8%&i z4G@ir)P`quaZHp8%Hc6+y5wnuBv>jYrW`2qk$qD}VN)V7g?r8&!EAqz1dhUWCq=r= zrM1Mhf^rqJHE?2zoG4%JtoJxj9Xak;XIp zZV@>;NT3(Lqs4*|GjFi>3tCP#zUAOPT`C3(rza~6^%abFkZAF!WH%f`7hyNFmeecsE_u3BRGiCkI72bo zjQeeGtb>}k=}HVTU&{f;lj87N0n{w903RG>DA8-_X#yyIkrP3j-&EHn`1WHxvN}jr z@u-rvQkBE3Okt3UpNN6v7*A)USU~M;^2|DyIGZqV)!6K{x}ozsl-=(p<+(BS21_y8 zKGM!M1`*)kX8J&SK0|cF2E$#PF#Rs3^Po(%wgAvE`bqyui`Nh!2VT(bWpJ|Tw_$qF z!sbYTwA?}}VK}`1H6hKgy-E3vl|dK+wm`k=5c!Fm%(mI7`f!NgrC-lGfLz?AB9Yw9mX}T z1MRrg0_?P%!svXgrKo3P(o@zqBTSJMo!*n+hmsu1BKnvv)eL}1U`ru9<9HrWZWeIl zgQJ;SR`pI5vh24Y5+B`=X!2y;PeMsHIiz~#1x|xcE-m`Vthqejr2uh3pagoN{JE!$ zT&Ky1Lg9SsFuBOESKT0|M{dx7e->>p;5S()N?U(1ax~JUV4^-0DTEd=aWl?0Xpeh? z&Qe6b;RkvSdPhpu<#)IDm%bgfSbha~HBv2>q-jfozeQ2sK0M7a^rfBx53D&i+3Rv9 zLt5euoS0|ZdELV1HVkrt!~ERP%~-0I3PYMAo0q;fx}&KMT4;|M3$(M;i|J)+ZKARgAlDG)QY@(RXgZNt$QShE2{!ohR zUfq`k$JbGZ!uoe+>c8z+H7f3uznH6^c{4cRZ}aSWcP6)|x`QbEkzzc@7?lZ-Do0MD z`-A>qX?nPHj^mL{C*2iVw8=hTB{3k$JstN6Y(M~q5S-vCrr9>q>`hXyo_boY8&x)2 zSUZ`P3Yj;d3#`U)H&dxfVOYIP{tniaPEXE-!4ReQ+#sd#IhdMT17~sH*6NxMPodtk z35hR~gYz=_F=|GAwOw%%!!wnQv*-+@Jor;iFd?2n^EZ{?Wp0e+WS<&=jJoffj?j-8 z$;oueKU7=ioJk*%XlG|EHe^SI5&DF`T`4AmPA4nVKS$=lG-TGh*#0L}U@Rf$U4!gz z40H2L+!_Qd>OeJ*i7fJW#4hKZ4~>P$NAKrq@QXjM-7x$dNKSpBo*o z(#Nq(H<%<4QwGZ1_&_TIXn-Q3Rw{jP{43VR<+zK!O58aM-uCg==ly0|9v0K@m(^~x z)LXcp*#=I!KH6VA%;gvOGvtJdqulpA`v;5dWx5v7WM}s5-i`ZF$0YvdmLEI&7gX@t zwdzn;FKbREdJdZhkt(qc0Fd}LVMn0p-#v{#Bfde{-d;vvE+wJx463Usu@H=S4~KVI z@Lz0a8Oe%r-L4zIRA?e`4rG)f-#V_4iYT=7qxH`I7!*ETG~fCG{Y+Io&k3BETWOi$ z*LsFPn3LVUg!_X9egaF|<18ZWf*l6<#UIX)XPH$skA42_5CDS$q`KQa_E@^PlcMdB z`Sc9;M9EX2UB84g-O{8_+#YahOC_(1W#IAZ(bNSjC2J<3X^vF{Ja>Eof_4J1P?HQd~S)P&PzsF0BZz63XUiB=QPsEpr>nsd_g+_fL<%gX5?%nkT6XDeE4 zhr7>G<(OR2CBAeyN>%ws>A9jca@NN3k(r`^oOr48xAPGwGL~pT5KaiWx}BIguco|+ ze$Kd*j$J5O%Z>24T z*}N~otLtt)T5cL>nF6qmhOO_wuW2O}%hyuL@7-XqOL+0AQVsO!Fo z>*i0*Q7L8Bs&Y(&JF;rkHp+u2AGizv%5ME^9q+UyR#iy&MzlM~Id`ZQ2Ls zETp+Sn@GvKvaIj|{-CQ$%#n){&%|$DOK#{7K*hbutTIn5i~_*K=4;YXUwOw;_T#aS zIn)+SI-0b^&AAPbU2M(;GN{s7bgP>2=29yE0yDhzX#2L7{LBpzJ<{x`4H} zom=DyPmdRBn@0UlJWaN1M7iv@x02g_7CygQ7ty+VwcB`0egKbH3zzwX@OzTOpU?nXHCN&h8Upnewgb;azXqDAh| z)xxOebPh+Spyds(9A$=ogXgm@#->~;ghr(w#1> zptAp9`RvVz&#i+#r(epp@^>|rm?wfFJ_I8GKAP)0$Uj)DqZxa5V6VsbZ6n&94NQHo z6-TqVju-lj+SQ3pHt5vnsbPsJ8EtXj_7)@P`SOXJs+JGD;3<=ShP>d;q+&k4*Y4mK%8~Y?VQ1W-2bdzjt?|7cvi%CS|RMc#Pyu_|4rKAI% z*VxC+^g5%~{3vCZi63d(xwNL6G=%Du-_V*rfiQ*C_a<0y`G-F=UXz;?^rY?NXO|g5 zF(6UJDSd!?$H`{O`=nXfCw!-mIF|A@(7%?fkqeX+d_%psY{HTzF(b9a6py~c^(&Xn zM6B;$I}8o?%qr0e*CO$9n}GE@JlT*@2Qf@Azq?e;9iYhPsb@j3RX;J4=c}A|C=51>Sc?)%E-Ik$h8*=#~;Tqvo1L^|PjSfv@my72Gk%>OlpQ}{G?X-oruQJ;9IVK zYhN!Ul$UTncCm@h8LMfw(|qwR*|hy((gF3Bago zA*xm@>(ke%Xg=55$-p|1&qSR-f&dPTDTBD+g{CWpv>D0%RR*?54pga79U^4u1?gHf zMG}Fu!dwCsa`M+c0nsA5N7JLNSlSo=G=PJ%=>^~$@Ai|MEPu0uv!ydCvQ*P1*+g=5 zbj2gBJ(+%GP#-1k+aX5h%9;@vdbq^-k<0f_t6Bdv`LzU#&M&Kh!?^7L+&AkasFVSO zD%z4EpUguR`W#q?x6uM!nK-R~AKJRJhQG`O2;K^v`(G^2@S3w2a1NV3j(7!~M+)o@$b zx$3uTltg`d$+3H8k+bJ-{rqC&9fk&R==b43;~;%V=nLGSse|JK>W@sn`Z4Q_+xGI~U!b;8^?+h@I=$&pX28Y11W1bD_od*{JdKEVn% zzK=p_zbutYyKu@>nYwXph2_6B@<#IQbY0slwAmf*l9E${)LyOQqH;~;+JrotFl?i3 zplm0PxDUG8h}>LAX?*?H1e&;O#Zp^GNjchZ5;M*OoPx^kAN2(5TwG3ME36t_2)xK$ zVG3 z%uj5#qgTOz`!ZhNYz6*cIL28g9WiCG!jX1N6T5Dfn3;5-s!$;=#a)D!MA@cpO3{n8 z$|Wgj!z9Ib`~orEu|koF%Ol=3lMRp)e3hN)X4dFVciyqIv`K}uXA^v}td8%{AukXf zk*x_>Jy0UI7sMigBlW0|K&Eh#p<6a@M;vtIyP1q*rLAgr_gAH5BEwyc8Hcstas!C` zR=M;0zLAlW6MHGZW_t|FkdgE2fI6#Qtq;qUi_!g^a?9Ecv(7vSg+3}+vNyUN`X9I2 zT=V2kHz?2wn`d-CHC6Vco{}0yipmW}e0d)fsq-$Ya^yh}q`0KcjM_@)!|~kPeu6T| zFjzexH&=TtWW$dqxhwQDY)DGBPa?V*b{AN9_IYV^-VvR`!PVvf>D7W$oSvW-c=v^p6#(2E6&cl!r_hxPsKbPdUj}Bnp_<35>mE~Lb zR)_^#yvEIxpvtPOOT%h)^E-> zo@`(-g?OP?9lt+RM_BOw}z`)hR4<~ zDM!5I-AlH3N;Wx64tRE=E1|--gxh~6s4CPH`l=drAyH5&JWv}$ur6dO$Lxp4zVb5G zsB|p9%HxyZ3INr*wroU-hi|`EkBlcO$n+ajj^<|DJ#K`GG^Uue;n&aR?SVQO$(_9H z*J->LSNr7n9tuW-YD1^XX4M9V??1l!@y1nYrE;mV7eD)3WCm}ZH+M^_{4%082i5jf zL3(f7*J8T1AHQ~bQE7T934=_`Y>klecnLmWW=KA*6e|j0h6B==6o~sn10y!?rV^_R zwNfw93;@&9$kSGj=Cxj5QLYSCSr$a_7a{?GA9*fLU7}v|I~*A_x#bVh76mmT`f_CF zDY?YLldTqiuoSZABNxjtmvV2?R=ETT`PENe-W@-;Tb`Tsmf;Rnl~3*F>Y@S>Q3xZZ z!h0to;56sUZ;$ud)zlVGR}bLK^Mez~X?L8s^=}W=#!MORiv5JbMy6{6BN1}6!Q9&R zb=ia}vp`dUEpVea&s0Rb=&+Kt2#7Us~ z8|!)ovCyvInYyc1s+V}WdPmKvhA0Guc^b06W(6xy&5xGDQ~}b=7eCs8u6vk zp0o~Y?w(AQ3mcbBp4a4G8^}w)S_y{7MDwA@d3rmBW@R@-TIgDX;T5)gDezw16IipOS>Pzc;KNc|+$( zh9sZ8C_yhB?cH9+#V@fjt$*C9c(X5VcIukIXyhV}uJBaGJgj+$D%ZmvEwd!Ag_2Hp z3Qlqb09P~RGFvk(_=R@;5Bmr)X;zoW<6DE$40&k>fHE{=HJgz8^V`_uk5K#t*NA%- z{bod}<&VmIUUMYLm_DXOm@B*NuvfH`fy!E%g(1j4L{j&aj@j-5DuY_l-%QM^#wp-u zAvn2_;se4>IBsl0)LrANL|fO9g zqVbfs3cq)@Bq40jI^Wr`xlW>jEYfA1iyj+J5Ate}TQUWprvRR?nBLDBFkrLc9Mqgc z*N6F9!yfBZfWDa&#O^ViN=A%IaH`3*1H+UnKSU3BepU&GZz)=46k{Jw=hwMOXVCZ@ zg4l%&x0%H_ZV_|EGEt(=ScFv~|8yZ374MD0nRY^C)0_auUC*T=L}_0q#3nVE6T#p# zi}F=z60-$Adt)CiOL~6b##C~FBd^k4IXpIB<*5s0HOnr(UQk3Ar%Q5{kLziGh+WJy z8Eu@>$B5_m4^8;D3-kXiPO&`rtbNSnk^M8D6Qk6$vtOs|E&ajbbXI0x_$7b!u`T{S zAWu-_ji*;PhkkYnC}f`>RME`Le!IK8!g3^&nXdrvR43jfxk{R)@fw|RYrgo+O6xpE zQ6S-M5q3(7kc&1TPFhHp*B`{hpUeHkuC+a(ov!LyI4NlQ)UN7VrcV+&kfXy(N2B`Y z0-m2S3-EmNCU=$N6x!&UX0#(FUHmtCuU1e6M;k~3P2$$)wv9VrEv~rbM-|1rWV6Sw z)HXcLNk8w5$?c{PPhN^w#`&1Ubp>{Cma@V_3%4bvW)5H%r}L>`Y4w+FO|6hHUB9|A`JMGW(L=vCOElHs)ORB`U927NpV zTxNi31;YrYofOC^>lz5$GC2bwS74RKrsbkvVan!PE4L?Eq;!*qp+oQs403d?x^98! zbtzL_hssamnV>4Jhl3u5DU{kS;xgK?kbD4os$X{b5Yakd__hhtJq|;Bpmq1?jtgJm z*`JP~sFL)r9x;LNL!;Hq>JW63!3{?+d(S|Cq{!8-SwSue4+RZ zTCRg#bWG~QOS`kzpV+=57(wY$Y%_*SFXrB080WelGk3_-zX$?K8g$`)Q+2nE)r;&~ zzwYU#KDC8x6>DHYLp4ybX_8Zo4fA@l8sh(3J3I8HH; z4^%R+@QhwRih6fQ0ayNK0lZ9gDcm|*(`fB&{aj=D6&_q=DRBI^%60}%y%Y4EJG_ge%tsw7+H;8tKG6@qTjc)G#izw!rmBYh#`m^( z-@Zt{Ip~{zH+s8A#NB$D^gWt8!)h5?e`sN&X$pRzgmyv1^m>kO5F^3OE*akGTH2*9 z#m{jk@HUw8X&8*-j!_WBU%1n{ZAD%jJaPetB#a}hbgX^eJ24bfUn*Flx94+>qy}{# zF8(g&SyEJIQ)D8MTy1C$L7MQ4zzbX5jv~TMC(cz{h$s;nFBIx~jEs{DP@vWxuRhd( z%g382&SlRV@BypdtD{?fIUYL}v)93%Crf${7#{*7NUB0E%kn2(5YbmM9<A1^X2?^^{r*W@ZH@64*?sSdlxk&=*&+nGzM2e%~o z%&!;4bV(s%&9m8~wge`77+l-(*%6Tgog&O#h6CVS-%zGV#88>3FkY zI{3`Jo1b-uK&86^iYX$e;dp0v^rNK?9VWzWIJh{%l9PN4J3AbuVj>1|0X(OW6GaMm zCXxvVw^5IpiIH%#vCJQ71#jI-0Yzb6WYMs^`UT)>I?hOvt^Oct&hKqw)MiWBLDa`i zv|4pIQ{5_lLL~7Q)ac@}Zgu}3EZYMI+EDpl&fqh^gqvJZrdyX`+?=FWqM1#{@hYgi z$W7`s?evI^>&DNvnI6>2i&^zFYW9Ot26Sl9*EvgUjFU!spD8Ar3=*2x4eFmo<6fHc z)>@F}lmXTTDq+Nw(b++&D95!L&e{6SI#2*J*l9VJpBH3W*Yxu-J8xt(u}j`j!vF5z zNCK(Cbn#2oPcjIon&v6d60UJwapuKJ@5-(L##3Iv%!uKX--ajF=oOV=pIDIv5@_gD zfMIh$mUw^Ax>UsW2fVO}A$+Uw?)^iSAygCC=KUWmza7sh_qdLHYkt%z#tcI2$|-kr zT+MLGP_E#1BBQ`7$w(J=Gr#ZVx`9GtLUVuX&DxlYUHgo(h*TlzR+&bTME4!HiY~PY z-(Fp7$%2{~iZVn<fX1&G5j?W}V5~tNi^d{ZyGZ^XnP4IFyii%9-@!y)+I*YNZpX zWp|~Hne!>A3ACpV-$AA*zU=3a7aXMaY;3WZu9kw|jkgn55yre^_Kqi(Nu5?C!IOvPA#=YyX5|rLO5D zr&*V^(G(`Q-7q6ZWJ0nAIQgQ>zK|1F?|_6w98aGJP&qI(cw7ly8QzF1xg1wRnRb zV~kzFp0vB#Ba_>s*7jaA13&pCjs0MV7PITM|M)?hpYvQ1 zCT@>PYxnUZQD zSGgnN4lO7r^D8a%bWV!%JtTxk3S4LX3fe^=rIA~l<6*DWV)=Oj>On}1$|cOd7;{&|R6&_G{_n!Dt^PcI6L zxi7u6`ssQW5YI#q>6Tusz<`&N@C1|)t5XA$Di)l*eX$(H$lIt)+PSnCue~o^>9u3v zp+ZAbD`fNuJezTJxOTvlHWT-2KYFx-SS)H>y`zxh;wAyqPVQ4^U{udsa40W7yn0!# zGTvduTzIe}cN9?DIblWMb1KBG@n7}`M)68h=GQwv9VOBfqB6pXh`K_y;T8J?W`%@{ zXOr_@T&lY{)vKMba(cI?Wbo0V+6~XcQ@rmsN>?N?(eg>^Eh&edZw_6G4|VwMLVpw! zVxp2RuB#0a;*~gTifwUBFxW~}&jnlmU^{$M@KO4nd`tB1cuyhnOi{_=Rx4$R?y{V_5gz*2|n4pnHd*`ZJ$pgT8cCPEon1pl8u^cn}ki z_5GOcBRz=s2ZkJyoi_*wS0q}jOX@Dv24e3&m9Yy~MGzl6GoaJx#Kn?&gqA@qDUCoR zwFGz6qJrV0@h>`!-`&kUnzAUKlW7gXi$ap{Y4@cP{^8ue%butWJ{nm49_OhNQp%tV zQfTF(T+2|XfN}p&!d{?6wrRF{slfeBjJ{+ycLX85z4xHK0jm}8crSf1y28uSqsR=W zJ)SQWC-~LqV8avBb+-l|>#H8VFX{sdG=EojQ@pL9FAVAF)rf>zyOczuglE!TR8X7# zGV54FzaSA9X+gSG#C<9?8NMa$R!dmoqmw@SR~|ZJweEb{041A`I~{GqxNCY<94SN; zjF=AC7*$un;`Ggz(OzT)W<{srEzNsEAZhK;q znWwfM#jKxH1C^};rNIEwh}s_3p!W9d#P!5P;l zETj_5$O~*VFu~ZqJGINV%=l>RU1LnQt>k!tg~Q?6*r1r02d!IH^W(}2o%8R!9T#W} zz))ec&bu6TSo8QphjOWg)cZN^YTW#{%STd_N*~mlz>6oNjQ~#hU33hi_(!Ybu{%CB z?rUo)(c0DMizUizKem+D=?Fs4C!fSfMQ%c=1ygy2Fh)DUb{fq`%K1ke78$V)RbSj! zPCBa%NeZ}f4pLfPBG>#qQVC`W1U}TxAF2)UB9|&&t+kBXl#01$58RVwD5L0$xmL9) z)C*vnwmV_~ruZ?oiuspZwdTM6{zYV;mM2i0e1$r3`dT5($wcV2b;3;M2DK|vhCARK z!nUKfL4VZ6@1uM`?rE9iJSllIx&0Bts*<`WQ3!QMrG}5`t_43@w9Q@1)CDOFdKp*7 z!WqwF;oexT7ZXOSE8tZd-4#UkO6`GWK8t$G&7uS;UrVznn-IiP`4GLhWn*-IE)a1D z2TZ6MyOhj%mNj6W8ubeGPEg{EOL_ zOh820Sg9I^|Icuy`j`T|-4;O;ky~Oz_B*@Xo`OFyzBN;*_yI5a>9VWctAF!s|DPBD z1M(dlB8y)~n|DWN&FT5lF{6|;y&l`NJ3Bi58yGVJTT+$QEgVH9aRs#QwC)Xa~W5!uCvh;Q?QD`9V}QMJg- zz}pSBpR&ei*kBZw97Sxi4@%rUvD*0 zKYC*#pcf?d1^Y1QwG(yVocL?b~n%}FYI7qrt|@?=KUvI@arz8 z%GY*Y+51DuU$}k_z3_h5>GDeVz-X^kCDc`tmv&QBBXxY~>j*$qM))K#L;yYWQN8`S zBo4{&7t00Kc88GVF*X*X&1pmhp*yfxPIY3T@@J0fJ3uwdQFzF~C$2<0>{0kH%LMri zzBALqxDQIrx{Mto9d%DlHCnD3=h5fg36X1(wQW;)?c#(-$ulB+Po8{IfFOA5-JW%| znNFh(bdqv!cdN(7^<61nv@Eg9?feoTI2XP!GVI2f_4kQ;f1xCFJ@TT{Fr7E+Q} zsxvOY7i!z!Gk8DjH`qUC*ux3-5qMbeU{(~#(9H)5Axn>P!%ingX@@9SQ3TkG{Nc8d zg0YFk-m$p#gx6y}k&doA&T5pP{-Mj1_Kaq}PqOkPxdI`)#Ex?=f^e$Gt#$(>;#RwU z1RI>@anuX#Sm~zUL%nD^LzdJBC9bH}7=(a-fu9D8s8Gglu_k$@w}+oKNyZGP##2XA zd_yQ-O2x1N{QN>~^>D5FzcOpc%=KKw?(D;AxZJmRgTcEE9M5Ks~4!NqkvwIvODme>4uEH6{fJ= zJ=V{`qp7#sKHxd%6Nc`X-gzp>f=u3tFqNp&e2Pjp(xQXc6i!%KO8W7aC`4@X;N(FO zgerU$TCYcWSTWk0K|Z(9Nw{F%vG%-bn9NaU<^MYQO=oFEU0<(B_^Sh(LrRt(0b{V(^l|OK)qLw*l*Seg*G5cP?p_DiJVzPn*C9(mXb} zvetd_yd~vkNo*N-K3PCT$F1nlP=;)moJCv>y91mSg|294tGSCaF@t1)@R(|lcS#9AjK+N@LuMc~jG#XBaDhEC4BPg$}r z1b+5J`gUgQF7xsm>!*k~&-Goe!c3vo$>bH-Ws5Z-;S!nU^Am=SM){r{C<`tLHn$yf|M)CIJGL~`j>Gq!dPKII7 zk^F4km`a2Cq;{C**?^;`4^|p%#}fI9yUV2x9ksT^=X1|!E2^b6nf*|Nj4h-GWcw1v z#b#$!|6q~ed^E7_am(Dt8r&r&Z8;)vDc(jQ9ds!y6NbKI_P&FeFCg!-sSPYzqjY|E zU7d#iZgNMNJ&(V=ub`epXAQ-K)@L>d*zxm3lU5Pp6V``n(r- z2c4fJDYpd1j`%gt2HdQiMH_-;fWk3b@DabRw^L!w(dRXFwjVFb{&V5#C$`sVyUtm_d^660};7z7>`WHf< zx3YOP!Z1i>7XqX(i33sD0JRYj46X~_{(oC|>VIeS2aErAU6ZqR{~9V6C|z5BT33@SfN@*ievW1}6cOFwNn}_?V2Bb)i|G4q6kVV9!Njzlc-qzk* zr={!Sr`rm8VP%Hrzy^wd93*aP;TT~l%X6gK#n&Z%{7Q#T-GrJG&1XEwnC;EirOhYq zJoL<^qPM{MHT3z{Hb)B8nU#x2uFr-u3_EHoeMA!2tK#qyfQMH=v$kAbD$71TebH|deDAaoUefQr=$A2sRLQP8O!TA!uZ(Y zeY?V8iA}6IklLx;Vi2cC80Su=ZCt|^Z!|uCQ8nUU2??-+Up##SO~ITg^ynd`@CB>Y zt5z&0<&-49-4HCjgmpRpu2c_!crgb1sHnkTS(wrXUR)aCyBt`W42Dvsc~zaB>lUHs*#A1 zaO=vE3)4aDRbM9nw}wKE^0&DAc<0kM>cFauGp(pX;=Wm8E+CtOiQFh37~<(qkIl8! zRMoHDy@S4lF*v~Hz4W#AcSwBmJW%uc%&*xzLZcn8#rIa=_=ie}?iyBhtb_Niw1eq+ zlH6S7D&uZ-*0KB!a@kdI&EH*1%mgL)wMcfEMo;QUN*!)C3@QZa?kJLlV@RP#O1k?k z$b=zUYtML;F8k|Gr#53efrH!79Lsd!3Lzu21u^Uso8)c+z0K(fXxgtOG(@;zo4is# zdu1#c95<9){RWU{j24VV(zy#O<`r8dY>CH%{QlU75Tcws1PquWz&+l zw(1Ah6Np*7ljjemw^k{(Z&md$HCT4vjNfnq=Lz(s)bMb2No2Y>+*eDUcETJqP zo%nvYlu-84pIOe~%Hl7v1r~ZP$kfQ+2M8tKkqfhZkPg7RYS8+hnlDksX1gP{xk@d( zQrm_+deZaFMa^;5K}qZdGKXT=d!E&sW0{|0aR4-9*Wh;be+oYwAs1SuE1Hz(l$e%m zi+LhNC*(TLP2v~4RJ)E2!znB47rWTQehED&{Mq{zy#hw6Glau6a;8-|vS}Nksts~(T)n4&fk8VL#&8XCV z5jjKplWFy3B2z-;y>oCCjQ=sq#dIB=amR=QUVdW7mrO;6?kHUAI9b3nNtB8}^XTHK z+D^4WF%g|=fF4DGswxIDV`AD-!BbJj`DnMoeVWrL4J^UG{p00u}Z?>1McU%f~}(19?SfEL277s|SmxtXp*=^`}Sh=QtwoUuOLrbM@Mv z7D$=8-$oSoP+CIJrbQHf69M$ZD??&{6>fA2cpc%LysytOS!lap!Ta4N&$@#T-*#)z zH3>|*_)U_39w?{R-IH4T312$w|BybbPe6pvrG!)oj=<3=Sswy z5hCbyJ{TN)P8!neVEZW$)LlMOtE&A^#$5*}T@2xl9CprwARBzvWv=~c9PghO1WU$< zazErmTr}5@NqK>;L~6kiVSMiIkU_%*ixlS}mq44~*vT;LZI^%lQ5U;3%tJNv5XGi8 zXdoOe`cb14sk#oLik2doR2RS~Gs=4wUd=|fiboVOD-^IARFBT9CFrw~K~I{rNzj!L zBtZ2`F?$(Ml_B)n{olvtMJTjHFnqO1nx$<|=IL(?QSTPD9fO$;@&$p-8cAmaa`PUK zn_(vuDm$hy+2W8R8!?O=(d0SFQMi4vQ~^IH9ktChYo)Znt=^>&I$aWP#edFvyHKv^WT5;yjU%daf$DiHSLc$mMfPY)QmG%<(6ntG*{CTHo=d|CJZ0L)w z^QkZQOLr9CC`2pThac0Pb_E1t$?HGiG?6Ega>X1^sZW%Nh8jrdFRd|Cq=nU^=l#9 z%53qxGSKlk#k4z>W}kdAkj#*Jo-FIHXhwkfA1p`jd`A7KJZWe=8F6F&a9!ezjA?d8 zi&%z7S^kK;+420cHF+u15pF_PKd)+v6~8it^*a#nIYmX?PrKO}RSCXfU9mrYg&axMT~D*I;O(frT8m zQG)jpgVI%dz@l8>RYe=DLppBNuaJ@8{>?46e~HAF?B>UPo=a5ez}bgQJoYnjkOxZ= zQRGs5N61hMm^ubNd`?G8C5MqUDh-XnXXw{9%ZICu?}1@grv}a=oBC|!W>8cW!o4ou zmNE7Z1}S`r_Bz=hD@@hEc&xI|Izd+ip(SPd;KF$~Ouu&ETMMji*i2@X922@VQkX8% zYC3IK6q(q;>WtI8t#hlxBGKkvs?~C18FVao-cq8P$qYw$loCw7^!i=C?HkVK)+43) z5El3Gx?<*h=kxbEfn3a*i1gcJV3Ix7PRDQn~#mJZAgO2#p5T6iq(yznK*!0i@% zJrzOoXbEJ;T+%NqI*61}p!l;{k*9qO%Av1@JSQO7$t#BnHon{t{jKHSO^QUpQmtvG z1(A||7tWWi;4tlFXum{Bl>%`4sANZ#8M}}`r@UC)RCTpTm5rW+XbV_xVe&lO^ z=?_jBchPva{bKQIv${9 zG7H8w1$?6#lw&OA*c)jUv-Ll$!nxwT%UXgb*6TN4T8&G13{`44u9=MJn}DgNUXRfk zJ_B9e$#vYhj^-!L>0AP&ac(r6BG3;fpi-xvMDn$nPIN#>mB@$uy?LuL2{RBYs;hA; ze(Ge{W+T~Lu)Q26wLa#pV}}BN(k;SVMn)L2#;SM(g^-42?knk^1 zbEW~5ELDEJS<1x1@FAJK$^~T`8ui4lBEAeRJ??S<_ zGIv#dBYJXW)F<_VB)H@bSq}uW^RjVj3tMtC2+I)Vc_NpMMf8w%Z^LT4TPE6v#9q<) zT5a-So~Ff+j;IpE^*NoRKzONcpueY*g-~13;alMK>i^UuK4v#aGbi+Q6^u>fG@$*Z zSAHAnw@m1?GYw=2i56JPmqN%hxUv=`Vrph*$U7R7Yb`M1@X{uz&$Yv^L4E6#3nVY_ z%~Mp6eyMbaCHD-abG_@NGod*E%p|M*ryO#zS!ewr@~NkY6?wuy>Dx?a-b;Xrle3*Q z++CBfOqM6)Rb$~ZTvWHl_Rg8dwDAL5S9iYT=i9tRnCwU$e_}HkQmF5LW}MrwAhrqx z>VZFjF-hPyQn7F(U|iroRh8L`ko}nZsNYEHU0u&Ka@+mgqteAxqZ7X6)xWtp4xK$X zosEe_%4IGgY)jT(p`iCIO{H`UXthIUn&W&YrN5aYl~zUHCJfbFsF0I>=QZ~}Qnd{F z68kr$W(i+wm@5aLda>z~3AZl#S#$S7twOY;AaT!tdOTnU`(BAzO>P5}xNhgrcQd~? zK$3`j>+yjVB9O=b8K2^?Qm)Aq%|7V;<}}n8HT$+~rSnJGe=gEd@4sN2*M12}1I>iV zU@}ktLq(}6K={#~ircnMmagRwD!A3cw-W4s4qKlEa1|_RzPCnSyh?P?T zay008bH--uvvuqC#tM6U*4mo^8S7F}4n^Z6z?{6mqzP6hc%ng+>qBwfq|mQvWifOA zY|Gfec$lv?AwyL_sdsa7i~a|D?;Y1vw)TrVjtvx)s(_%B0HLUaULENP1W2d}MQMT1 z6r>0aR(dBSU}y>?K!AWi=%6FLgqDO}lrB{TK?QYg#u+_x&Y5%Xd+z&w?!CX?EB~-R z*?X_O_OqU6t+m&BzTfXhbKL@)q)1xqT;m2ez5-jw(DOaF`DCv49z`jgF#s^B_aH)}x}^#tn)OCeNjcxR(3-R+mf zHU#IbKK;S3efO(#9+Czyx)^rMDXJnguJt9idoqE!UvrlM3L`6jS>%xJq%xyq=XVYqpmC$44BzMKv#uuHj)_ zcjDq00`=48YQ5Bqya<%Fp(kON{o9zxOs-g7x?OYfvI28axq`E+h6u}BmUPIx>!- zGCUl39KdTqKIKN&jnT43l{7J>v=ht1lg&}geA|KIcqW@OJXdQlna@*r>Z>geo+|0} zYC1NZ62mjp4{i|1U4p$giOhJG@KLDWN_u1cd0=^J<=W6P@5Z3QI;->B-6=h;bdtgr zUn7w8Xuk<&YP>6|id-Cp znYC~up>BqS=IniCG1%`C?R{Z|AAZ?37J|hpG*7C>toF?(PueGkIw$;*Keu1+>n>eF zeQ0I;xyh^)HCYeo4u0cQ6gZBV;`CsnVuBDml&Oy0LqUE4!vvRMcUHe;Co24r2*?{b zg^oBK`tHO8lrUUXvH^iJ=YJ2~!?k0vl8Stkd3Ehl`V~vuy);;Qi+iG+ehS<$T3T5^ zQ7n$0rE{a^C?a{^tA8p~kmoe>wQiS(g9SkKplGS%n(=L^E%S7^AA_ z$5yb&l)MIil+HK$OSdYAg_WnEn>)v>q@PB%e{B7{&3)i6Riysoqx4^1`JW?AqTH}S zMq%8d0c5ezyp6`P%2PrVsu&A?TEI zrD@3Z@Z0dRnQQy(w*Kz&h^+3+?jEJ;!l`T=dzwm(y=1j&GDN6J2N`wB9B>Ox zw)2EcU3%z}qVF?40jvfW@$i?Uy$GyLriRFsszV7fyc6#9TfC{C0p~}MU{N*e9Y|x; z<2$1t{*Fts`C-aYn<+BEBv_tgc^FMkV_EjE0e4n#8|s8r_j8tt>J&Dq;KG?JAX7K0 z|LGmB{8;%1(dmPO z1N_f<*d5*(8|~vz_~SaZAINXa7GC+cKK|#+oC=fXve?se%ggPba2@iIeV|;68ozqk zr4iZh&=j&A7Y}(<3!0)~a0(UMaf6<=X{%RZlS~P~sp6oz67_$4Lc7u+x8a9zV z#cy65zye#u8aZ>Cx#W(NuG!NXs~ilnlpGv=6h(|oYty*(y$zHwy7sxENa|k5tBrlp zj})Isoo?EA;Ldh6Ci48ve88O}=|9@e=JZT2N8A~HU+DL)-pOWP2P82MCFo&1YlUsT z2}~%Ai)S$T0Sh~s+|qpCk`mZSpN!6^CoUw3e_dt2(`DYo(Eq?pzpd`<82WXe;Lhc@ zK9zgDGA_XB715u&e%&|WqW>^OCc`vK#D6V&3<#gEFL)Tbq7YEK!U!UHz;d@GsZ?q| z0)OYze`%&b?&qjvnCe((T(@f@jW1x+E4nS`P@XoMZ9X<579`5hud=UqJ_D^(^1<8S z5cy*(#!{ILZ}G`9)f4>=LD`CgXvoOa1)ih-1-Swb;moHL*u>f}*Tjs+u|^a$M!0&8 zIvJFDurMAxGAWn(w;tq&_`m3&5bM@;A!XF;PxpCZUd_CDDtEC-?+2-G9~sST-)JoF z{H>(_oumI$ZW~ieo9}k^!yU8DS2?S1GOk>_l({KqkPkq|ToMs|GcKw=l;tvV+iw+{ zQDa*F=dX>){p=oPPakb6Zr@EWe)Uo#KJ-dooyvjJe<U29ex?sBMJ`5_np5 z!$di$v9O0OOb(QgjoMg|vx`N0yT?T@+wlD%EBu>0%RkzIrTJU;)$+#+J)?sJ;T8tD zby|GFi;VGjIi6q+Tt`spzL&`xF{ZtzKGj5C`;=vpx~^v~LUqja%Bcc$EnA0s-3YV}WwSR)0_Sk0WWi?(-XzoOz5Y8&S02MEadc44B$XJTSj z$7Uy&hhac~O@5F5%7mx-9V`})5o?D{dVr)iM5jQ4M~N1K=DMG>fz^>2*Sa{kQ#6hO z?1O8Ae1Z=B^r^vf(KJ|ppTCjU!VIls^ZBz|r&s2rR^RzF^$8D_58k9-U5OrMYI(J+ z`8&Lw*v$>N`+xPv`|&VPRxpXZ*-zcQx8`O7rIB^S{%h{OO*5H=zaL0&btEQ97ftDuXG}I=xjYd*Hd_ar>9ZM{Gc+flc_Q)FQ4nhI$t-pOlw-DqvY0p!Vo* zmHc*7^!t+OH~D_t{yIDv(+Yjs2~mzCgzuI8f6cO@nZX>+^;Z=g@|M^RO-q~(=)s`$ zU2Nw0cos3cVbni7P57&eTv(+ULjnT49(GHeiT&*U_5b=efB4$y>`h{=1=dzwA9Hiw zKV6LY7T!eF{on z4+8(O^ZC6$DK7q_Vmkke3Vtv0yDb&IJJHvn`~O1paO^%Oj+};Y?0?_^OXhHw9KP*x zVRcY>dB~`Go9C%l2{*jZd@;u|*oUtj+I}B;4$bo^y~g(pLo4W;gy``+tC^@b>o}~g z``U&3#mVUiw4|tJZ1HMsR8?YT_0m*T&@xa6rW0xU=j30XJ+!Ez1zLIP=7HNEB+NRE3+u?sUfxFj22itsyIzmAQ|-QA-hA2=b!F#jH{z#@99~ z&DAHTk~4H5{YoXXa&|Ze^jci0HIvxq!?8$*j2ZS(`iM|W+61UQ9Y_*)4ecnHy1gLG zv-@^_Ag2##!d)ZQ*iFDBs<~_1f=py5%C7yok6x=9gK`Ue)i>YwGI06HiH)e0`TG0` zq+wT8ZO}tBi{hDGj)eM__oShNN*Kk$7vO6c+Xr)njN%5pXxE*n>qOb%!q?ap?zj~x zPrZeDOib48myU9uf2d0EoHXDU)^4M=dS1v|cp1St2K88x1zL6lB+cfG@`_oW7(N&VQ)) zChz^!NUL)>lrP6k$O~bl4K?!4vl0=R0=4RePFhD9VLV7Cd5?3I)5Bn=L_Tjt!7XM^ z^2cS?HUv$|?Vv{>l%7>>3{@|s!ot;8m_?moFxgmTKOtYM*EI#o?%hkFJU^oF{K&0K zZf;KP*t84o9qHLmZ_wZ#Mh{)3Oc%gGx)H^4BgP@QlXZ`|{d)6MO1NUY2{~f4W4-8R zhn|L8f;aEVHB|bE2=ZTLYI%gI_7tPeT8cfBc%TT0^h+I6n2{X!XXJ{=w*)8S?QTYh zWcfJr`YA-Xszpve6k}{!xyH7k4) z`uaZf^*u${RfBwntMGDS#wG%evB^{*R#S0h{xnZTo=<%*60I{oraPpjQ=$hkACz1H zhtf{uLE=gqhl*y^H?$TOYB@}O);nfIzZ4dJ-FS{oJ`QnjcC+L6>ec1@M&R2|0TvSf ze8B~y9-%Kj!MgZGt&FJ)rK!wZDr)BGm5)>CyYTG1Ovo2gNvFG=LT5VObFg{)r46i^ zC+R9J2O7(nvBnIIQsznK6IgUQ}yhk>ITX zh^15JWTlhnfiV(96uKJtspZ_vaedj@7Wb!ePb<`P1eLC%odXrKD+ZXNd+7~&7Isj! z0M(fIfU%TN{n)2Udl4VU7u&8K6_N`*`}IJ$^ftC4dzZ&$HE}cem8%P?5@}S|IDM5} zzTuF}4WA9CwbG5%snaI8GZm@Op$s&PB&irE=H|*<7_tLk6 zHm^FdF6-j{HLE2#00@yGTtLHU+vyYmI1Qts%0!>ciikAS{Pq(rRDT0zGH10dLY9rV%?Zy{@6xrNG`Q8!almRZm-R)y zS6C}zx|)S9&Io!QoWGZdILXlb@oUv}^7X>HKDy<}i{Mz&T-CffbTHgFjSB5l_e=Z@ zfGgTVzMgebn$2>j;T=g`Bh-O6t3#(YGjT#WKs-A>BOzx2;3?1KyX<_W=}ZbhOWXF? zrCAhoFBuP`e0b)Aq#H`2ws$%sAMJd5x#q|Ci|O6jk&tizp?*%v7S2t?iTf0&wIhE-1vXby<6q9P3KV~msW7#3-3}3Vl5>j03Xv!d7 z%qvM9)L5>?;(hEOjS+ia+xc6ApMAI>Q}85geswW;Cg32M9$+Mo#6=C=s?>U!0vfQ$ z2c^0)TszT1ZR}5oVo!zn;@_|~yL|SP3K3)i4l%27ByU4F&Bz-S{)mcO!%#@#wgfat z(?z}d>pT6{7@&YHjh$ZDj%`4-i^{m5$w^Kep0j&zLu=VVRl9_GZ@Gch`AsIMcDN_v zenVaGskgi%O44_1-o!4mKd|Eb1?qf}9mi^9Gd!(C0HRyN`7JWKYzc&P;|6_w`$tS` zM3_85-3=@jrd`XztaJ@wCR-~tJft_|H}DQ2@2S3Ou@T(}Wh-x@KH<^OXmVC7N^eR% zcIDiQw@P21bLi{AVV;Wl6o3Qy2hIj90Ut%qpC7!uK1M9SVyqWLn621d5_!Vi&!|}Y zu>($qnz;X3-ij#b+>D1%*jLL6(;8S(-kNx@E}NyuE~ai7pAP4W)n*f`!uUF%!L|3~ zWpzEFdxX>Qo+mRYW%x(7MV($5Mt*{qlqzjqaQG{*so=D0eX}F2_Rq%D>eNCoBs!rR z4w=vBBcU#1wgf&Q)XQ1GBn!!9FwY`tr8DZuz-r``l4GNB)JVffart%PumgHqmR(pc z!~(}z%3Qt%fu`7ju1`Z-BrePMGbf|yOy_~?YvQIaE+wl4NO9XFr{Ny?UX>k)^L9Rj}$VM6zrQL($EevrEmlGXDiqQAApp#V%*CU=j;OG+V;g`g=p{lJ~7lm`QN zHigC*({e@Cqh3F}rb2!wgO{puhyFIc%QdZSKj?DJWvX-T`Fk|F6tgrP3Jg6EN;O2_ z=C(6rF-w#A)jbM9)|RfObWC(jW_vUcM$QH7&Vr@D`25W}-O!3Zs)Ic9WyW!J7Z=;r zD<>nBw?B&obXgb0u1i!hX{@YcE8vXfWQ0TmO7^s^{^oy`3n>7rGW9RBheX}=uWj(H zF??;c5FksBt?Dn+leZ>c@BEVs|NpXx_$jNr`Hcg#|*>~AGta|*!7+v{{S#C6v z1%lupNilVPY0NZtT=1EcXq;oxv_brL{n^*qTPX?m@*%bM>n&+n$u`nRpij_2i) zc#|DRjj<57$1Yb2vKzuJHoI66IR`w}aCeVdww2BozB|$qGq%} z#C;8epMMY2Z(;Da&i-p8d4F;BeN5`_?@?UESdM79AVjY+8)n~u9$M4=A zzh_fkr<`X#S!nr!jvg5QT%k+Sr@MbFf=5O9=8T=jkDy-`4vNr3srqWRS1%Hw(^nTRp4S{!iwY8p>zkbvl|y~) zB)(RA>EAaBU5hyu9^m6DfamB%^AR=nUKzp#&@9r7D#;-~IFr-CtuX5T-+4s)%gTWY zpnHC%^hJ0jPq1zZtnyGv+K8`DHn)n~wcZZq_>Xy;>P*YgShEJ>kN9X~^R3(=T}MT% zol1^smudz9C2C#1_NO1d^ry;I4%GRIgvkPr&OGx$w(2Y<$zi2#vmi2wmg<3U1dyd5 z#@l>^&N2{}_^91O?SdvVywQDr0XE& zcY((M^^bSpcvloOT;Gwz_TraDh~)@bEF_LvbL@}cwn}Dtw@G(Tn+Fj1G|&_9>pnbN zkGsqhqmnhwEO-7qnh1Z_fse~$5xoYrHmMcT?;}sHRV76&@RD>3wBZgIi1*I0PY#+| zOCX7(Tta9mOwGB)rwcMG`A%#3SqX(%dqb zG(L8b82jGd?&sMWt@YxkV8hKAA<==qlgqt5o=)vi)vi*CVMW+ti=4SKy=n3i{OGGH zE39+U*nAp=um=IjGm$Rte_G^91dFHauRBMAk}9t1`bK&BHli>NhqDkIQ}rndxaCPu zW5TAq@Sh;>B?q6BAyuss>_J@(=&aH90lc36eN%-hVQ?R(P~deEgq~pw>7{^SoMnnT zx_XHfy!S>XRw$Z6Pl_)>)0_*d3LxAlyHFA*PKJ@n*yPO=hY}JwE!Vgr<`nrRih0=q z+Lc;2ExV_*G|dJA3^|0nWlR)uWTz|5QM1P;v`?UD11M~=;5!yxsWx~?wzD$<8YHJ% zFvvxam1>F#UZW*4IodUL-w4f2W<*sz&$^BrfeZ|~g41jrV6%`a~?PG_7&z8_Ynvys9W{OVj{3{qf#B@jO8+hMD( z!Ei&mH#xRR57VO>)4fV;0zxbi-SH+~-Clgx zlGX~MQ7bO>Ev3NF=s?}VmtvS}L@}mds(nxZC_EQg-}@-gDs&~*chsA&Q8j`Ozz+*u zirKDRc{Q}wSvnLPK`f6%m-OdUbXqL)=6iKj<{|P$6wMM(jYdR1kD-lUQljy?!vz)a zWFrIz2PWFOaHA?;%EDtkJQh?VQa#@Tc_aH_P}CW%&ZB6<-%H6n0J%EmY2OWpqHugH z7Sybka5rRSF@>kjKMHf@qG`;Vj(S$dCz0vsDgc&jD34~*m`yDK*2YT&$FiZKd5dAW zCP{N$f$^&5&M7EeoGffQ!KI<|mC51ZkW%$7wT;F&DW#)yOHv+;Tv=UjtRxj*rCP6U zmRBStQmad;Ci2U-Z~Q2tm=b1F278O7(X`LAmt{ffh0M*Euqby;>>w z4(;xx%qO$*wF6W0o{hbdmcv<&>G}QM7ClDp!tjh_LVg0h*PT#ugBqB=% zSZtMJOX2mvXE3`*f|6P3ygV^3Xo{4TWp7n%rFm$>)2Sbi?4(sY->bs7LGmrt<_YDaQDaI0z4luf} znl?a^8v-l|`krKtaDz7^Z0sOWT|oIJT?n6i164dgDdbbf zFoxP@_e5lM!w6B^Q^EK;t#I3sdJ5#dJdH&%Q11GBGF2zWQ(fL}BCR|fjhcx$ZFnNs{?+-4+9bmo z`sQ_${4q7f2lvfVYcEK}Gl&i6mIxN7b@D$;SdZ?YJ|9dkz33d!cB_O8>EX^m_7cPG zifBX>B2l)G(43y$V*+jx{SFJy?sny+X4jJfx|{M-a@$IWaysq` z$+Msr`7(qfwz`#iZ(s~XWLWj)!)9Ai#V@i*rD-|NbW(r)(`5-)g+|&%)`9DF)RR|s zLS9crRt1cQuk^x127rCfBIf!O)|RhZ_~7}=yOQR^lkN0IF;lRUKC{xy3`2TRojB2= zWNq)2Dc5xR-Q`L*UND5RQF@ECLTp5S#vmor0@9Nv3f$A5O8DRePYR< zW>_rG&v7Z5&ot0XM1w#!RidP`n2_{}c~(KKx?qu_(#g9017i(fcL7zu(9Di6k-`6<>7P6nF{yNP?m; zi$^Mf0@MWI6_YVd#H1l5d0znt;y$4;9pq}wISj4#yv8J~wE7VwhU=89ldYu9*zWmn z@#a3Zc%K^1mY;*C;Zqji` zB*Z`3TR*^C04$Cpftgx_BWK@mxE)Ek3lxisvz0Mh|G7cuP@QGW@~`|gaY zGw(1&0fTtGd#k0jwGBERWcyoeT6CjI$}V?m4sSTWdLlR!Hl9S3HLacnR~W4mFj%5B zCXsiB*PLc4?a^E6AI%&UGFYTdS zu+{OK%qOK7V{<>M3~c#`VRcb9G_d6e&pQq~?s{TQG73~|8@qZ}k_ zACf_db4EGCIZg9J*e5+jR%4`bKB_QVr=-Jt1zfb*WCZJU5S3ToFv(S?z7Q`1KQ14A z)Dtpd$s(zI%2xqV#l@7r#@H%9aMZowQycA}e6E(^7R(p+b0K5Z{{uE6w~K6ESjM#{ z49lal`sbgPnRZpJ^q$Co3FH$OhXN0zIWrYdTZ=QJtxn7#BgpFK$D=v=Y+u{xMqtwI zh6Fsta#U-;hQkD6m7^7xbi7STDVNpsQS+BW4G1^8n3Zt}t{<*tTF$4akETB(wraq4L~Em^qsMO)e1k6o?3?`Mb8^%EvdN{UTFReb>m?#Uck=SYrt znrl@NHVs}2ZA$SNRLZeLVd!s{96=8}Rf}E2>QP}_gc;!5+Tyf38*s3gzO~Jgadn{2 zQ>kd)$Ll1#R=+99Tp+XMSccymFpNvrTlio)qRXJ7NiS?qw9)24xkbJgfW1Rpmws1o zbe*pSdA)eR-gTG>8%)@~5NFNdpdaMOa8)XE6Si1QUOjG@&PW9^CBvzj8Fh71jz%!a zSPq#4wF`xDrA@X4zDedXY~I&pj~Q;tZa)g~B$G`CJt<0$NI_z+sJyPk9SL7NW=aN7 zA2fUFB^H7!4BMvUm$Q0>kB2jyo6~1<@V?Fp^Gar(V#O?izF|7_r*iHAY^YK}p;zPB$Cm^&Rb4)GWh;lK(QS z@2*sq1ZYd2u1_<)M$1(o>7o%piCYyHIK1NFoa-eohmM}z&ZOXufI~-ky;aihA3M)3 zRzIG|>us9MCxglDlYrq`Ea1!6J$T(jF(kGnX@!z(O;~>ZUU}nitB}v!U6R&FCw+bcO8D!o00B#aVXkrNvxoI2qxmIpaTO$mMhT?{%g<0fM%b${7S zCt2}Unq+LQP9Iq!KHPnT)Pu1u`;2RH_4TwOyI%8Dzm5pMiZd#s+w~8;9E#QOwQ^ls z1e3IpaXpm$Q8?EJ7Zrn&h|N>{;mJAR+}uQdE{jeyNuTuM4vi0>Ma`d2#&h~;m?+sK ztWx8)lUGmmR(QQSYEC49^Se{^{H{L#o#twc}aU$t8JO)!cQ5 zR=BI2Y>hzTjHxaK+`Cl{+3k?QZi?S>Ds;klqg^SiTS|dHm`GwZxt6q5nFX=R93Qvx z&V@wbg3BsIWZteGqvKTlmIG4<%to^}Lj2Wk_Hv!CbgMxd>#rFx~mb6Br2s!@SCN+LXawb4|(Stkw?4BLktu4?pSz*KdRcw1+;bOipY{Z6>=KE@XDH2?)}33$`s9_Q6}0b`+aHrp*<`{OOL? z0_Wrb#=vHneelCiYDcP)?L3&DXbmhzUGwf3QU{2Rl%lZOMh6~LyG|uV@ZPIqRb*}| zEEiN|AvZvxQz92m8A%N_R4K%ejma&H4$w=Yc8U6(&L$%DTh|U4rhj9W}c%8lij(OuC(|r@dx_X6)79X z+st?RX?K>2tbu(BnJkn%i*6;W7UK&UkNsl;Vto`#Fhjh@Za~$BG9SvMMvOzuP^%oh zRmChk?@eZz2?8L{*|joosnt4t*a~NN>n{I6x#-P>HpetEwX5}8-Z^~pvJ?U(h)v%e zmMu0F*f2MoN$Dyco8W9K2*zI*>CFH=j`CV&by6F&`Osy#J*@aJH8cQFZ zOFT4^&y!DJtRH-sotoNmoj=CcCBtUBdX94pq%aFzZl78RT?PRheqK=mMq|gF4ID}p z>hDL@fvQJW}-+J~Ug233x!tb`IUYC^I%~JSA9Ypci`hV=(M=>94pW^a~oxwUe!Bj^x9qUG4LRlyY=^EI%9&ydLb!3yB zG*KC6kwz45fSp9;VQtYq>y{5lmNA3BP!d~FRE9J;zhX+Yh7HD+39ZbLwHDU>;Nf4+ zk!(kFC@#gWWj%{^nXV`uDZVZ_AN8`}@yaNe&JxZ!Mpc;r+rNa{f|R*uQoS{THi`3_ z*=>2!I+i8FvIljSD}X+AFmv%pXN~GqccpRfBhvAh23E*N&$d|0XWc1o)Z{a`+*0 zUs}ZJ!ITWgJTyVF3j#lZXp`BNuz!c2T3d*>-*EZ4bJo%fJh0)E@VT_{WqBRC7g2i>Ei`Jc|roebPMg zx-POz{)ZUi82@&BhS5U^QHN6KbYBQ3T;r0$Dd1aGTO;H?oC2xr4yqJY@bo@hc8$!Z zh}XLnF2cqevA&PAW$$D!+nyAzn^Y+=oRQ>l2~*iR!+(tCGQ$_NpJuaFG%{#^*F%HIGRsQDGGg$70OSSI?nbJT1GMAtM3rj;z;dcg>49&X23z9|E$2lY!}W^|Ad; zew?2EbCldmGhzTS7fhWPSQ-;__*i~_S$m<)ZotFBnjgBWe9h+TtKmx}+$>iGTXT1G z^D((|V2rEa~7VjJQ_bQ}M%Q&nO^kke32J>jd>sm7J6aX^(m$)WUC7fPBt zb?fy4OtwlNuNqPOCaZFbG92S7VsW6hM)axBtKEp?Oq0Wz^3O`*l7lCMgiwl{(!52X zc{+)w>js>)0}i=nh+U`|zAsY$QQyxxbkWsUd{#Q)^+=?bXQfO4=tq#paiqZt&k++I zp`%BWg=;}}ajWataAL$&I1)ypf@Kyt!Rb-m2l15c-FQ^Lxo7gch`ri`rZKVzHha2C z`SI0m2-b^#TqnC0+}f4@HaU5wm2xztPUB95vlQO8gyzEyz##M!MZqM4%wSE}J z$B-2&PQGf}X?(1Z;hmBQO>{$+bmr$C^NR*hIwY)&wi}mKD9NkZG%N|3;%j%a&?*!F zuPzy1GR!DfXL*cYL(}B>;`(H4uFbWSepF_{Im}kFu&ms`{+5t~#pZD;`KkF{MCdS; z7Q{z%Pe3CBJmAKiJqW&}BOf&0*<)|h^lyjJ!<{9!SGJ`_#yKlDniExW$E<98M++@? zp$LrW`bz2c_3>zC}&(cEXo01swJ-$WSLZJ|}l>ahq1W3dKD!@P=S)13%9H|71 z@=wl;VgrEN#9jP&O(OSAQ}#**%~DXRXIWoqcHkR8t_RbXn5L=ISSU}WIM{;?daY}u*B)^H_J31#7W zvGIHH4OEO#pgJqKFk0Czug#aEXz$g9`?v{bXk{pj|LS)rINeSNH?BZ$kkoPAu{SEnLi<#ctjwd>1drZDQ9g^M|GT_9Slu-6bk z81NjniDF6{w6|5_YAxSO;}521$mX=T)3q{0xYCk2rVT@nzzPt7y4IJ2F9!<_*j1F9 z0E$qW`UPwgkd^FYarya)!Bk)V7$ZmB>}R?WX1VgMF2((RvuB?z>^|IYV&I**e8O2% zN;aK@4Vpwt`C=?wXMf3)rr+Xz9=P5%dGZ;e8-TH|%z3ICNMoiQ0@_1lhDlxVzwWc3 zlbQ*I)2=Phu2x-lCRfJI`qE`fa0A!D!tIsb5=ugMfTzzTvmx2`&S)`r&|Pj!*lJ^W z{+7IDyNmS+*L4Nf1BG#>6xfS8e#}nxL?w%AZI3o@<}262cp!2+d*NLi+r6ld4Mvx% z7T7G_^F++naDpb3ru^{|SFy9lkybM**yJ;=ck|!ag~o(Pt1c^?u-CTW$YSA6;LnEUvli>|kI4DX2udkT&#`mCFRHgn z-!+e^{5l+j=ZCCTO>_5%4^g_v$rVh+Rkgd;1U;!xj*w%@&QDJdd$+q%jRIWW@H57w z%Y9~Hg*6vq9W2S*8PblZVPPdttVu^q+u-o$lV?J!IZNm+p4VAwA-`mIS=%A0On_}` zfFx$sDt`cZ=tZMxYpkX(t;a-Sw4^K5R+&wm;KRS6p6DOd4i8AbZx(4A4o_C|LN>In zj0Ikr;$KYn!aT#Zk8w~;cshbrh>}ctqJ!t2Sxd{W%cOI9>{J)**OTk$F0iURXKokH z)G%c^VxFAt-3(LlfIy`{z0w?oagpkB9b{_}N-{vm`JT zrB(6(su5crb6!+zE{Fp2Y8?-mR}~pULNXEz%#Rfz=aThB8!8~St}O8G**X)>{ve85 zh-N&YE%B0v0A@~A2T`Q{@>=`|Sl4C69v<~3CE`ZftxD!@1Av3?(BooP_9t80Ox6k4 zBJ;OJ*uux|*GjN>v&DS*A~f0#+itm`l0On|7y#54!$kE;J^6KC+SS(Z#!mu;pVwY& zWH?Uv5zj%D=tzDAbYBKt_@`h(#a@Ii1i|Fhi03aI_Le=FwN#ICR`iri_LjvJBf9!D zCLtv!bF`|Bqg!(r{M=~f28(4kGgno5Pya{cMExiIa?1+;72G{Cf^qICNBb&|vM`wg zI}z46ZX&-ylDdKM3bcU-)1~`1MXOxiP2Ga^)GQ~be6r;--8y=(D5sf{8sg3Q$R}T; z`gQua)k%IBAHUtD$sk!NF_J`J9{5zNWr-uC=p5OYg6rl1FD5bSF0iXE>)xxA@~uht zZPe9wjg}OxpJk?7oqe>RS3O;W8_v=`?d|GhMky>46)o#*jC(4);hSLfda@EP+Rb)9 zwF(%ugCvSXtn_UKau^^4l(SbJC<0Eqn;Vq$T000l=FW-_QNRy@F$9LAg{x`Orls&Z zrzaD=VpNPFgas=0SQscBZ*7M{0bGUJ;p8cN@};6Cko;9)cjE`1kTdR?-q5-*2JWQG z`0)M4M0jG2ZxZ5AWmg-2ZYI%n|D$3A(hfxyb}j%GrmNSIu3kxmB$%l!!So#?M^E8RJY@i)umIe9ReH1y=4vN2eAci$QZs z?gcJ{+#fl_WH3g$d2#kBhDbZ}{LKuQ@D0N#dZ1N6PKihpOfRPz*KkI-=ssE7wOblO zsBOR26#iI?URRY-Shwek|ujfIl0+YKHwj9z7l^<9HnN@0d&zbA*ng!tfF&m z$;f;n%#yei?X%~H)W0cO~A?eDsJ;i10OSAbgpfT2p87CvF=M}2>YR6xFCgYNQ zoY3kdMPd*sl@;S(uM06A$Fc3ISv`<dG(;2WB#=vom+cVTA()0%!-jXFfjeDP^FPk81`ki_<-LjMGl^KT=6RULHOxcXtmtZ0`pRrggkdC z_QJ6uL!iYXw8F%Rum0YZgjrE}IH!q_G!;9;)F81R!+A<=lfuE}l$FyjlMn%E?4>Ph zlvcxcz=BbT?-JA~p@3gHIV_r{VNK|?0VPd%jRJcW!m7tPX=YelD@KCDmm@Ih0587> z%66&98GUUzHBe-EvEr!`i4(wmANr|M@=YhT!TO|^qf84_n`BM8FkxizQmLs`$NQk) zi8M6%$&6Smj5m0xig#vO`?-fqv1L&hl7MW2M_R^=kNE_sLfzPic>WByy-qxnkSMPF zEHx2nT&DgaioxR(lZ6=b-oK z(ROHZfqQg@{UE_VoR^EkZDMKY!|G+=t&c)gn`y6FBK{G#2W%+=Bce@8Z~b=q*_SI- zoc;kW{0HXfA^B(G-s_N&?#oZvPyICzap`~dsNW&Kb-TY6aQI7EGhfl6e-9x3UYXb5 zE%RrX_;;WA=fM3QP5-J(`)-;4w=APZGzbTV%K>A5+LLPF@)7aC1PLw#pEKvDaQbqn)=A^0t1Ab;`mwVs^QcrL-ZY z`pA>WvUcw~pAKE`Y!i4gZrE$d4}ItG?968fzs{dXNxfW^^gSAzuTI46Q6A z^oDLVonw8g#}TXNvXqP08qIe5O2P zs4-D*`X$4tHCf^N8E5C}j=fRx5jx0!`C828lXYF}XQL>TZ747>Pfx)l_{7Z9Ojtd( zJVXFSbQu$6(t|?Uf;X~uJLI`Io;WgejdMCf+j$Lx%3(RuB2PX+z>vG0ayoDYgU zKWDWx+vDbM#!Sh>jjJ{$<&>-(q)j2vy-EZV)dijI+PrvyYG_L}w$lqVA>KG=(r7T= z&~V$`kF4!Moli zdXd+DFbQZ}m2apDa(*%?dCD%KOJ(+imjq|bw)pJRADl$jrzTEQjZK55TQ{P0en$`P z2Ha>f14>F^dd-^r5c*>EIOor`DN#MwqQ!488Q6#Q4{L6w?Y~|@uyn4=HbQx4hl+!T zg9P8rG-8p|Dxt-4^~U6e-Va}(hdOVTTr6SSDaczEZYbq5+!TH*T3TpFNx$XDbH9eP zoiIGlf!>^;*r1_T?x8DlT17k4Hu^)qZ}Oni};n_`PCU2elt%1n}Zd z4;Qjv<9d`s#ww#8*99)T_py?lXf?Dv_4*}t$@Za|lK)7y`9YUsOf7~SWQ-V-y zXOI1-a-oN}nteXh{|=%QD3%ih4Yc5-AneZgnsiS@fo1Rc3QST-j6mch5_LpaM&QOY&pKO8<=Ee08w*JIIp>sQm*2 z`yJx?XXp4Y0r(0_rJU!1i}?CHx%cb7&Tu2+Ij)kAjg~7RSEsOpw-+z$mV6N+`~@En@JN^KBRZ2sN)o zTKk%(rfWJ~rFCdrDtFf1lSH-fETv|wDA<3fnbb(B-Y~o2o!}ii6fseEX{K7W`n;85 z|7NQBbM2BW-_NEtxiyL>tPje&h>P@XKQ_TDtiL-*K#7ED6+f_efNVm?BYqkAR6R<|`mDAHQ*|LoPFueO7LsT;q4Y#p}A4 zLy6K<_i?uJ-tv&gvw<2+WS|?F!(GZS;#x8+mH8PfAhsKQ__OT>$5>%)PiJtN)kJ(D zHay1~D30vx?77x~-T8L=M3AJ0QioF8O6waV$zS&!a9LdpDKMVnzq&MF@u^IRmujgwE{B<86$Z};HKjLv%8LGOOVBO+|%iOb`zIcY* zmkb0w&jO6GOa}OnjLr|c-PrW`t3r&<=`vxOA>9FfKQ9ok7l5$@4{+mVs_TdIa^28d zM4*Zo!}UofUqfanL`FGzX82}Wvfvc$+>3u{apnu%6hBy|tKy|ZmyaJlXYOvXecI_- z&B^qZhFecvf6MzjrYkl7UaTTq&DaTH*Vxmof4;|eRS5dcG%enfk6urlo;X>|ai+_r z{nvfVnxrfY?RM9yO2A4SK-O%9GfyC!Iv#A;_Q6NfNj+tFmQh7ELMChj4TACS3~+yI zt#4&^*ulHieN>qU*KLz8Ae7DOzc9yFOd{!bu#?rd+y7RjuXw2Mm;C0%-|g}R!}{GB zzB@zlfA^l@AK+`ph1VOfLITbiPTS5`LIgpvp6iEfWtzmv<|ti>1$^z;CC5WIY~d+m zfCH|67=yw+o%CP#VJnO9u@&ioYPmtLLU#Xp`tq;HE~4HF{h82$^y@yuf|?z5=90U2 zxz}6GTk>9qU&?3eOa9%7KVi?xfcy6K)&7Yj^Z(r84-`$-%j2A#AD8<@UJT8-hj2fo z0Fpn@v-N%vTCVxL?)8w?_VHY)mhYeFsH*>R()Z}Q4J5zYAo05mm>)pj{ouO|e)|yq z?g!s(@ZAr7UljTt3*Tem--v~|mt$R1lp4zhg@u$y;3ARJZggQNiA9Vb8wUu9E8CIy zJE^+aI|4e4PpMjO3T`ZhIIi64Idg;FcwJL2>$>%waiM~>@^|s-9rEVouzTJC8@djJYxBD+_Uvy1uL{F<`KVWnC(LLm0MaQ(ltJD3) znxk zY>0uOdFA_CpMK(oSQgYM5{%RID*}D5AquHsw1x4L=>Z`cX{Qu{ED;sZ#X&rWy*CEhdcS)tY zk!KzaFIS<`tqz}Lg`a`&Ov+!%YQHelaMLY^=tcLy)>C#oF64m2g>Ir&`E{%FW|8K> z1uP9Qb0SYx%cNhOt!A!ytYG(i@qP6kEz!U=GY@%1J`Uy|9*_ zLw;U}MP1Y9JLtk`+_|f_AIV@{H}|!P_*jssohe3fm&T-k`S2vY3D~}*{c4y02YcTg*3|Ya z8bnc0&`<>gq&EQx5SoC}69|yd`vDS4=txJz0@6!D4P6K&ROww*Kzi?85m35q!9{tUgt8tC^~Mh8p>>lNwMiUlOHzJ|@zH(tL>4LA zCha065feLUAu|^J?j|ovb@lwO_dxf^&rOzB$4%3OP8Q`g89`(D&q&P4o<=pBwwhF) z+?4o5+^d}Wl!#LlPsy5iRM~^JG#xEvYmXL!%P{a;9-CnhDXi$zk<}QS@QHnNxz#&r2>xl?ei|-oG@r8T#H|W=C?_&1%}>=4gy&aepr~6Viy&e9T_BVO=!qW zSdg*J9!)1xhsgKTXQrGn4DPWck-a=4Qwhn~7hCSojLb% z_vYs&_il8S_<@aTSb2?0VgNq5l(y%X-tuv`J=?3m@HvOF%Ny0T+?9jRGe@V~UOnA5 zv8(s9o?D>1v;FJTQzC8Xv%Ee=*QO42D)qz%qv#wV$+q$o5I@Cuxmly z@UwmDG{5_s98TF!RH79ky+$T9OcTb^Jm2^BGz^rRks>KIrwd^P z%?E`oHJZ>2*s*0WA;$D)_|YP97Z^~cWQV^bI(y$TB`fU#$;m zQ@dqfbXFgC+`{EJ6AMvuovMM)ptIrr?2nIdTjW0(&IZSKV}}AIA7wi)*H6a+?{Z^&7&{VFgVUTZczXmZjdO7yrT>M(2H2Utyprsv9YXXY?6&rR1q^ zxG>Nwq|nLXTrb0AUasjG`7W;aak5e-Dfq*m773M*;^i~8g&il)9p8lgl_U{p)K*;m zM2dyE(o}&kx8z+<--e5RjWXhj=if_X7qyc*Ir%(~DlFg0)RLiJDeTl#)OKPZ>{nmu2vD0%g$us>Tlq zpvz`v2y0h}|E^0f5?RwYZ0rYT{+54b@MUjjy)#4vB1Nlxh+~+}T71#^w3@8{ClRzx ziHWionXeyEp$6tgc3JmcB!_qpG|*dC#l-5}=UtOv_jbtAtyXa>fQn71^O}AKY?b85 zi*b!yDE|9xfZYGhk=y^?1%lZy?-3$Z=t}c^btxe!17_lpfo_p%JkBHVt&EOsNTOzv zH=cXdEolTShZ3HJBl;j6Ic&7tr2;)>8KzdrEZ2GkrBhuhA!w%9_&$f=DHT#rXqDbZ zYt#3s@&TpRt&&p4bY=S0=NMaBczG!bSTu(YxTFMn>a2qD<<^_~4CEf{M9tLT;ad!> zOlGdBz!`!&coh_9fA>_j<>G+D;$>D#%O_H-Vkjr@oxBnQsuOzLgFex_DQb#x2D%N~ zxXHi^DQbZ+4SwnyfXhLyPqGt*vvI-sGaIbD+us2cgQfD@@=7+*Gh4gP%=Z9fj0Gna z?%6N*-_eFb39sYE)2_g!h2*1nu1@$P_Ad;rv<|IsE8G;hC$5-A$a(W)#Sv&*7!tRB z`~?7d_D|*i#1L+?i|!kwWFi=%OGMLKn<={iZRyqewB6b~#}Re)0x)Vj$*hHrqozn) zue{R>#FNev^Tnu$TV@tWfLR!q^M+I@487VT8x_*8qiS{dNGYCSFJBCAEj&z5n#C|O z2rs3Tqu7e(gwFUB@AcY88VO=eZEDOPk#e=OL7`e^PaFuPbZhB=t zMol!)>XoXcI#_gD#>UT2=Hl|GE|722DVxN%3Z+og>CrVJ-?+^klA}xi8(~A>Wv37pK`6y7>UI zCA=$M>Qe4T%`B-Us8wNFYJMgX^QJ~yrf|@VMIu!7pt!SiV)`)3EW?pVC;!21H-Riy zXs1`jw|dBEr!6^Gi(puw_{e@_F)(-2V53BM;93E+j?GJLL379?xwtyFk*O0&?Vc7;L=Qu)F*oGh+#CoBa%>^2+JI1Ed~ z-t&O;x_UoBRaHCJd(?s|rDKIimLB+u!RsCZg2&XqP9XMavI6z$(4$0^V(vDo&amV@ zt|R`1D_fw=q>|d!`0;Vx0;5$2(veWy%_8FCh=PUkPC`Ear3dXs0nrT zRkb7hbF6F*PWm&kEaZlL%1bKmG0fEKEFSpUL@tl)!#r-d9j`Ml!@O;mhJhBVYE;wi zgu$S~qe+n|gRxa+Fm_0gYAVriI$hV)+B2pRP&~)sT&}w=c8t8xk&vgF!3_!@G)aol z8343ICsmJcIl<`bpjJ5WfG*r^oNw) zl@7^R1~^Zh^onr~QKP*5xLA&79gwG#bTYD^H>I#<+uW9G2-meoUL zNg-vOZ_4#ARLIpzaJRsFbR8>1XIuuwDEUz~3mO5830WG4_ufT=`lH6Z~Bt#~ZN1(I`l08;2UeAjX4GZ)ymHf39CIJb&F^pn;&Rfgz^ zi7LGi(f5Xw#9XKSkc{D>%wf8vLWjg)>wX%1m(a#=Vx24(y>Fv1F3ybD=xnxzTS6@~>myHu^e@;(3|)B>nz3u%u;@>d zAy36EiPqmx+4O#Oy>wdqkna$bv&-_{!gy1-Ld4jOrbGoM>dkb;RapO;LCO+WJ5}w+ zWKuY`X(Y4^G2vHIO7do}>(R};yFDpE!g%UcSB8M82MUdV0y zf>1}BQFq^NZqOb)*AlnF+3Ryof9K5AH*)jq%_-{Jgv|!uR(DCXg zyArMany}?v*(_f&Jk}@eC00117QbLw@s6e>5gPay>I!0ybKo5xk_u-As{0Q_(;Ao^ zOJQ~+4rj_<)=Y*+<Lx$jdXTuRzk_p~F-VN+|SzOJXu$K^fspUz@d2(!t%lgP?m$ zor-^-DaM{7L(^~6cLY{F*Y=RQ6+4KfcH--O(LDpilvZ^W$HeS4pV*#ndw4Aros zhdApV@o0}q&Em)MjXeEWd|r!K^>h{(38LWyLlb*@KU`+$Qpl!kNsF!-B~_Uk;=Ct6 zFQ3}C+^eIj3I^F>JuV{#ZC+Gc*e0{y)0Pt$VAGco83gKOk(5rV_^L*iT4=;xqd(%| z;L>Z_csTQyeA;l*!x6EYhxN!uOt1$*&NPPO_61Pa9 zK6^3JF|1m*G3+&n%N3rqq%x5WezD^0;EhxjVX~jH$jM7ne))&Nb71GAcN%nxqJQ%0LKq@llam%>{b%zAx9>vMZsc zyd#YGGP8LPO2(vYO*QefUM}}1n$!P){lk!dH00MI^`9~p&WQfKk6Xh0yW)7qZFAgb zvBpEs34$(*6s@3?a73h_ZoBwF-~zF};)IvGPvC6T2@U(+wVac7k~bJ2kYyz3mfq*m z_9u43is2XiQgpv9|48kvK<%iITYP77c}DzC{%&PSl`ky69()IQPALgt=CNB5o;vu* z4kdFRSdM#rBKL_hW0(3T(}kwpv>z$p*`i|K*EHQ;ygpOBd|p0PVVvy0eBCdugZ740 z(d;hjv*vM=P9qaK7~C%ysT9V*m^!Q_JQck!+|v(V1q(^P7+M?l?z$~(@SxNr#Yz53 zNg|DrAkSA+t$Sh&-{Z@RFB98oA*b`W+vxCoPBoDI}p1V(p1poacN&$}M?9lV3G%owi+Dt1B}gbSKi;sYZg!JhYD~1G3=9 zQo-Fwd?Yvv@AY{!H#D)$r&G4x=OWp5UL~(4XV~62WAL^5HUEm{9lu47-Ufs`uZydE z9aIgi#Sp1I5XP6I9caVMC!w7|HBg}bkQY?2)PfCI)ChicjczA4D_r|NTy`_5OO3fl zjY7V9At57TP}4Pufac=nmf&h6rA53fH)SB8$D|DAGF-1SC~i5kFvw?{9aZ>7jz_nSdfsLM18r&mA1-Q&?o)T*bK_nnGu^e z5e8(HOUg1nmIsf@GY%O$dz9Sf9NiI)D>x#E7MhPt>L&DASr`Btp~Fg{Jy?y>>oi>`cnj!WP89`r5(kZSybufQMD^r;L80L4~aU4eNNXkC`}$ zTwRbX@|dc-_N|T?cW(nvw8}XNP->OoJ?A|^m()rn1r*%i@i%Z%dcn2;nzBv`|9yng z-MjU3kW&8~wf|{#kBSTD%5o*JGqUOgSPk7T6$yh@hH?rbpN0wwBz4LK0uWcYO?d{Q zJ~DE1iN5?$YuoK6VgG1iGh*mFz`{p|V=782SC&{K zyO`Q9X18!xj4i+;PH?o&DIT1KsxhF^cqcjM@r19O^8s5*O5|JSFkOs@E7%^X<$+T^ zaFUOEW7z4(;nB@Jwbb9~mbtPS`oWN^Nt8^@rk5&djJg_LpE8zjniBA|Ghza1k5q>k z&VV;Hkma#Oz68y3h;5Z1E&)Hj5wFe7^U^8N#x$vT1X*a%GVP@+U%c09cTIt!fOgW< z)Q3uIv{!QL7S9;oR+|@EtQJs6pVua63N9#IQSfK-Syd;OXA+ob*y*UZvlAx3l^^mF zSg9p@hM-woT4A^*ECie}Rm0V$1$hllQS+e>$7gW}C!z)(>RX`O__C;kKM?jbU9!=t z9i*d!oZynG2-X`~FEU~dH^n_t83;1Bqk?7JTO_~CFYdkuwIANwBRgxGf9Kk+#W5)< z!M`ltGoAmex=XHSYZ)%4w-70Qj!&DPbJTS<-v-(ORmZG=+9oN8mD42H-n4;cYYZ8L z*Z303MpphoZ*9-JlW6$q&cz(DUOBmEsv|7R3^Z29+L9CvT`H+<{*W?HerXQz)T@%~-Gz4m zK*1XKJn{U;?fBPHWCymt&&9#~eHsl%OdGQtFVN)cUB5?OU$pyjMPbQQi5T)7&@#dqizT))(bLkFnisLiEr-K7UH8NH9{YWBGeaU2Aa~4!{8Jop7Q~>k94Zz(qL|X zJ=A!WHoI0Tbz16+LJs=QId_@91&f98VUZfiMws-yUSolz>|V{*vEcGwjmUMt%Y4w+p(pWG+!=CaNI#7Z4r?op?dF+F`jYjQJ53&rY? z&j7w*#`D>WG7@@MK2inaX3AVZfri*ELM)@6N4;rFVnujE$yvOj*2;-5it&t_N zBIQnEw%A)hpq0JWOO4`qO6$^#PR>#RQ=l|G4vWC%l$F(jWENdnps;@NuuI1?z zgH5tUee8Gw3$$vH$8WSBGLsJWsvP{K ztV)coj=3Co9SJF$`M3=Z(vbowebP8kJ~%fvs?}8^#dS*g;vYTK^Gumd zA}}ec??;Lh&vtlnLJ`ofen+bQH?{tX-%iA*Ez&{gqQtcg0b3Bno$k;+J*gH4#8r2_ zBt=&r3XIsJisKCrbViJLjnET)YG)#;3Lz?@3Vcr0bG_P<8#W+Uhv?}GPZoVTHKHv$ z|4z8EIfT3_2s)72^C2Q-KK5GA#C(KVLM?MjeiH<4W%>NZnUJ4+{6k>B02oews>kpA z4!Z|1{;P5_0?4fY+A|Zt{|{)n!1{KR_?u~8{oY?6?={!XxI3r=#9#GT$RH?v@3z%tTMke=7(4SXpS2MnqZbQDV`%i#?{Tt6phe z@-Zx_0hOl`3Q~lJExQ94o=If<#ax_AXW3rM%jXhNFW?e^z2#Dz=ylUPe1Yo5uE6Z= zA2t;Lv2MDkreYiSj5^Y}_9w{%mq%gMv*m(;iVie>;<$EcU-zmmU*W@*)-$R9sNVn6 zfzkoo#?-%0;>h)%y_FqN$O(Yh!^i!!l|C%f4(X{OIj zR!lFndK>T!7FEe)S_IHYoSD^bOo7#ApO5H;bXLq^=BER8EqF!A)8)j9TUTpuxbq%3 zVl^dnuJA+;SG_=Ux9;80C=0hpx5cYuM$*-c@v2%Fl#3rYqNo}NdSxc;?UC8b$2V_d zeJ;mWdoeLXyp);s1zbLWo#C7c*}_TwF_qVN=ckLkUwV}babpu2U9eUG^%?q5c(bOD zqwp~Bmm_Iw(!Q|Yg)FsmsUo7bh)cLw%_Hfo9v@LlpOaSUyH(RbY%Fy>rF{)_(KKs1 zNIGS0xs+|Wn1WBuDbY&~tb9gRw8PCxHasBRLiD+y4$o3hL)Mpelf6iV&)doZ4p%a< z;TEJU%I2CX&d=%?rde9JxkOOG$4flwkzA~v&>Xmd1IwcU<11iK-Z9tHs`glft{=l< z>T$gH?NoM^KAT0Xk5@VrljB(pLKyg^!eC7Gbv9ltxN06*48KL#Uxs!LZAZu zO%Q=yftb-uvB1D8_G-v-$s1CdVzfb02Cj?#VP~HDDTx8u0Ia)w)VIlXnI`H3fi0o? zLRzAP&Sp=yTehw++%Me$$^FL14ccDbu~I@%*uYBEtra*o8T0y;)?VqXt`PJASvCMb z---_kvALUt`O258=<-K&9saZC(YF^T^4y_$K?K zTJ{kGMfBeG<%8kJ9gAzE6LT8A1Bkg7HMDJL^As35;GF9dbFuPxbz`b+Rn(_L?yazxgLQ$iGu^7ZQY z7Js6B{p>MWu2_Lp2gH*k>iar5qhQE3Iphsk-7dtvep#21}QsAGvS z1;Vdy2@sxjM~s%RdM1TSS(!v+3HK4Jcn-54FaJdO2X0QSn!1uhOD_?M?(WbXc9giM ztzv^g<`>*{FIw5XHN)^r)K;R;F)o!=1Vxi-81<#BJnm6(XP#W><<&@beI&u%xI(FKjBGFRSi=+Lf}KT7Sf*n0T0aL?-r zIDn`C3y$<+P583-A}o)X$X1)^!fox6fR%WkRK7SG{jtUISqS-fMa z&GYo<;q2~J-SK|aEwvys)Z^var^;_FSbi4BIaLbVDT*wUHs=vSbmP2ONY(~K-KI3T z6u#o5QF5YgolpheURd7`zFG5f+f^v53b%$$&M=DE6248j7_bB@+3F$ffBHE${G{{` zl5I+Tt;Q7`b{Mh?OX3y+tNJ~P&4v!#T=wX_#vqDcuf;#Psad`J;VIp_CipIM#q zI@Ud5*sd62xefej=3i(e%8lmc?hR=DY;x#m7`j zh%?s|#1!~pxuqGDSNGS)uH_2pd5UKjtG|N18@I|wQ3qPZV8 z#<-i`#DYiZuCXFjADSLbln&P@6`$rhD&!v{e7kDfVO7|!pP{XsGI}$f2j6=Ox8kEY zHKtk7ykgle(e6XJ*t*-P8Cq~l+kcOabOgGl@`5_3Q`eya#7!E!{oZwyzw78J%e*4p zKyRu#PI&Dn(@uN5AjEY&ljqGX0*`%`qjJQqan*wSp|CR~wNHW3j^o~bg*&f{pN`HS8dIB2R zo3rM;T|xb`K!zeS8yBHDDcEO{d-Z#PQIDbgC&WLX{}u<}s;Rqfr1ddDsjnIIyZE>o z0F&An8vV}Kz50DVuK8yVOAv7@67m&YB?s59h#0?quXv}O=iL_V=KH=pSAuTyi+S%w z=v+qta{=Vr2WCsJ7}Xg+f7{1Lrkl?IV78^p#lb0oPyR2fPW!dh7Tj60QXA#AS$rK8 zKI>3=B@J)CR>e6N(>)l*G7?Tna|;ot|%WdK_Sp;TH7X7~)3WJ*)h+K=zKYjmh(rY9%h-e74}#iN|l6>c^t{ zSsfmIm0qyk^7uM$8}`8z`I(hX4={?Woj&BC@;VBD^xR&B@sc@9G`a6z3LxyhK=9o;=!ap1uy-+r;KT7VlXezK2`0DkmKT6WFU`d%js%3twzH#HKm^RAI!Q1gFSW1>uiMT4J z?&RW)@*-VbY`jsbC_8r~>Z+n5)o+;n$;wUU-B_hB1us{oJuRp5AKbzcXBq`ZPEn*o zH9681@eeHcF^Mw>mfY`&-+TEF--GaYODzzh|6a<%>)F>hi5iu~@$=0^{iU(^wMWRW zE-Cn+>WU(HuPI;hZz~>_;mv!ezg;MQC=#D8wKz6-46M1SIqKJE4`3HyTVJv5pKkal z-xeRQBcapjQ*ygLz@#f9wY`Epr8ItCw{rU9dx~s+)>{u;p3IxJwdVKd?D3p@BHImx z$#K3hV%aiSz^!Bn%B(z5bT#;Lec&bX&Gn}B&?r0MUY0-;sprcWtwz=paRB6~m%-3d zy!l}0fkG*gKbe{3y6X+m=la=HI`5P8vR~R_C5mOT2o`H^P77`6UnjUYdnn z5g^kWkd@`W3tPo((*&OW!Mmx`hv&U9TEUF4DBZw+=>v<^J{CqbnRC1CmuO>=j;D8|&bLZuPH`_0zsc-*3%se+2Mt|;J%|k$ zPUA=3xo|Ka5c2KfxS0v^xto{+?AqZpubYLMyUBn{kj|r387~hRNjl(gWx5@3_!oI# zrBo2T#ci%eU1$m9iKmCedH_T!GQi41YX&NGl2ns>$y~dyt6g|VC{CT=!oL*G?WQt6 zg16@~D(QG2g^{7FlZ(DX>oVX9%aov+;#p6dk7+V~LS-E`@1sL0s!*`Ybbi;=EzLCh zlW_Q&>o-x(;wJqO|D6=31J$ZF5dm@2^!f!s(*yC0>lDNRSyl^0tmKRD@%OV%6JI{l zvCU>M5mnH(9ZD)hmDHP8c&nWXLJB(DwfOovFoHTSJWP@gzHI-V#YhLc873Vp6SG=pH5rTHkDO~J#wCokfv z^D2<#X7~N)ujTjp4Jtip&krl7x{P|z_s|)B;6b`BQz17Zl;6}Z*zc$u5Q1(ZJJiON zPn_&KWb39&3WEIG3ZmPJi#jIsS@xd^H%yIPW@5R0YnP;I-G7)copg~;7SN~DEE542Mny_|B$Rfd69pS+^l5Se|AM9 z;<@f)`{r!erLsN2f%X~$Ag5&N!^cWyTx=I7H7<`g#N1$%I`*_)*ZeIn1um7t`#of)D1VgHk`V9z%LOR(fyZcj_{{WGe1ziP; zgDii{0Y9geU!VO!#gF+z&&%CTALV`3oK#d*zba;c^7pi51|ZSvSH*wKWu!j* z_$7W-TtfWkPYKe^pB*$X5Es2pB`)>z9+(6wCGk5-6J1+0%I;rSA+8cv#X!G|< z++97~-G0bc=8qX$RmI>h^Y!!tpz08H02vt>z!G2q0DON9U{v#WvIhWQFn|!r zulU@*e2c%&15^NK$WNa>O@4;-b>_?&inABaoh5xPoJ$!@9l%ZN=kcr z`QFD@*S(>XP)0tks-57Gd61`a+wb`c)ra|NDermt)a_8ONiDIENFb5%CprM6c2Aw5 zAl;Jyl94z~>i_8yVgYfH z&sTGhl#SdzuqyPvb-$S}-vS-ydR8+_i0_nla{3+|nywxwp&qCPPc6 zkl&Zfp=NtCYMl_fk!F+CdnOxQ*d;ZPtw$$xOJMHS3%h2Xj# zMAr296r?j|k>xk3`Z1%$&drIxGk9mT-VYw%9WFGO37*Oygb0kNj+UBfH;x5m;N`~F zgwDj(B|8Yb=ar>s+`3lqGHMkgQVn$%jv@VB7s<>N^i(KndoQjhW0z>TEG?2Qyt9*b z@YQOvEq{iC?%J_*!#kSM?Te8qK^gNOsT&ZO|`5-!G6`0$W=ni$gHsRHeI7e zP)37a*ja(iSoQikA#c@0m)hENU`SPGXvto0nYmqkA*oflR&cO;llUAXP_mFXF>*Vr=nr7CKf(@V8`5<`K9 ze;}Zw)bs{}xL})$Ep5K;hg3U{c#X<=xiS#?Yr4VH*KH+u1jaI^Afcf^cUnrle8sJjTf zjy8v}T)9B%2i>#mR34k~XTdQ|e=NYc)cAcQ;b%(6CO8(%a8u zqqd0+@#fQ`I-T6oXK_s7w_`%xekX!@Pt%@( zU#NP+!=@Y6B#H04A<#I2T&LstL>p9SMJom%%tW=xHEGo`n8oJcc?cs3d8mlaIUl+{ ziRpj>4NoA>|NJwVXf4^Ne)954ZiPdQ&C)GFAuy*oh5H{s!?%O(-rHe+_6g_E)Yg7; z#)#2SaZG^}b)0`oS}-Bfh!X4vJYKATo^D|u`K~MVy8!}i;^LIYGK8E@l-?r3Dk^JJS-Ge3rM>&RD3I4yE1 zo$Ipd2kL&HCj7#yuX{h*Kg0Rxv#YX%UVA=AwNLhNc2y32xw}*nW|e_CnUrU z?OS6Y=C|v*FQ?9lOI6LoS5rGPJ|3b}k zwEW;z^bcN9Xu&j|ULA+;MNmkiZ(u)R90Evc>=&56MZAL_iihm&o&!$8^cveT4PjknY$2-rD=`WbeOs>|WkHf`Ke`RaHBB z7c(=sERwoiYa+%`q^TmHl#)1#{2>uL^ggz^D~rqcJD?=@JK(F%z316l+o?f3MoRrP zljn+`e3prKB238DYn9ciO;C0?x$+iOJbMUVQl0e|z2vH6gOpyM3^>8rQ@7=#sNX@49vm$-A;v0Ox6_Y!CAa z(JGpIIz^+us-tUAaD9$eyR|e0k3&m9nARGNs!awF36l*4It@K_J3=v}{13SPgn6h` zqk8s+hF1$#sRv2!(fwo=oDB!_^B&o&-%X!5%qXuO1*eKNNvG4C42}*vM>FIX>P#95 zUvHJM7)yImW)}5k(86!Y_%56(=1_c|ebbqafi~M$nHJfaI+*Axo%J>*CRWLDe~@Ct zfY(4^%D%x#cxSaOy*iP~D?{J(#jWBwNTaHT&uW(OLhM)zP3~cG&Xdo=Iq;J4_0{!3 z6%0%t;(=i+!j`QI*J01!zW6DgVom6V=B!$6)$8jE{^f>ioR2be=)n&HRFm-09uXB> zoI6__oS}2k7I4d<>jnA;T0<-!_zo@nV}=>lmiOXm=GRzuCW9TCOEMFcgmT$KlX)_p z9HAa0^ot6G>6%HDG{%gLJA4N`=~6JS74~r!%DNN@m1tpUBez8=-&d|RdeNg?OK;|C zC3KBh?vaC<$~$P!D~tfP8pPcM75+5*Li*|Cti-40>MQ*mxeD@@6)vRp*bW z%fl~+{yU$gAmf~(kM;2xa6IRpxd$oP`&V+C*|I{TYj4iStJj{3>W_X|xa;a9WuX?_ z$1S|eMLe79ThW`-HJPw(asrrZ;R|6hQo-4MJY%}lUzjn4l6Q})a6AjjG4mR!a=cOt z@hV^=IT=-gkqx7b@ETDch>&+J8?CmRrJxPgllLVG#I*s@JJBx+G#*cV%*Z7AnTkmeSV zF~Sb!PFRs6G-LYrv#Vkf-FYE3RW1jUzJ}USubca&uRbXrRCkDo1`?&*a_(4ulxO>3 z^NVa)?#Q-ZSJ=IE#!$7`T0b~De$G@k`1ZR}rDW*V(ftx)N@N?>DYK6qYOd=UkWB|+ zq!S)E*7Sq*tv${t+yKXhOTO!3)GezvnY-r4kMIdGX+wE#t#I1?MEg*sYMGIdJk1Pv z-?f+HMq;$Xun-%~T)RrPK0yi_c{Q3wQpT+R88R@YF-E(#2~uh%367e~6@=CMJ!X1* zj{E&<2+;cFAN)wxD3~E6`+KtW#y;R%4yG<1zh%GAD-f|e*-{2GFz-G{=dRh;H%ubE z1C|7{9F3dz`o;zF8=<%R5+3#9D^|HyF*u9`mTOVsa(Py$TEL*gUcw>8A6n09j2vFs z?74mI?!68Uy|n1Ol%|mT^JI(-rwT;D@x0f}U6|HAO?S z+=HrE)w+5DPZA~(iVy{H!7cK1T8ImFlkd?Szd9>L zFuIbIfMtD4$<;gXD4yNnE1v^`=2lt6-WzeEbNLICdn>OEj1bt_;t75F;3@9*rl%{D zOY8}M3?}kFbpML_D9~WCWogre&naSQ7hR%IiJEy?gsRmDNUhcbUcS0h!S|KKni=BX5f6~+cJ-8gqjcxt{}CNvnys#L zIp$=aW^Tp(<=xNJ@qaY+Czg|2_)gQ^l{oH^caCglCa!`N|5hCTkkxDQ^{xxL4%D19c@{jFOrn@WF2@FJ?-0eKv0-_9d=-wk$_+3gxdR*o`=FG76)&%mqf2hWv z>^)%Y9AW68wi`XAf$><0`6UiP9bwA#fnhk1ZPoAirHHN}gKE60KI6@e(f9Ut>C<7C zFT_gwDZJrgfB3g^4_PtD4d*@=(3d5Y*~CESq`IJn!_WzuwX9n1?X!b^b@4XUJc!~@ zE?0=DI`W+|iLAfdr$?YoHN}oCJ=ApyBb6KQ}A2R~!niKODlQ5I0ut z1#wjU%l~`)JK&q%*@Cm_#9xE{PL#d_)&PNeKMw2=`1Qb!=~9iEXeE2J`-Bbwlj7{A z{ zWWU!CtVax;*AX}3oxJ+m`HeGJXh zlBJAArey8vWuCb&7gI6i$DYqE{89=oFft^Gew10Xw}=wApsGfIOsL94IY-3x?jHC^=}UhHRD7l{2?o(-5w4_KyWNS1LWLEa zE}NBJq>bhGt>f_Dn{4uogBN3v+OF`AMQMS|eYSEi+2aeD;K6G73JGp#+`b4hYv}#U z2_d(kM=3e5-3|9X^9CZX91N4ZxE0Iv?J4I#3DClg4)Kbxp7&Cpt$&8zuem`SxPa7H zT=c}Gep_^#vs|8g8%TPgreR32yS`~|f8~=K!{?W%;w0275D4l|Ty{JmMS}^3XgeSG z+@0Li#IZ{nu>>@J7_^T$n4K0goW_)_2)AGxBcj`1bEG&d@``Q5-u+CO@xJhc7wF4l zv6Kr?gnZ2XeHZFKwD7O!-@`vg|Dw2u1b&PD-THI%Z=Xh{-bIU5=Gk`*DZJ@!QM&Cm zFs7cadl8A04%X*Z$s3q6wGmxcE zFk7u(l@grmYcjN)^EEdvOc{1D8V|oMZTR^x`Og9cx5N4!+2GDEYpR71CLH zkrWPuJLV6`@p_FyexkYtps97`HOY=$VcKNDt)Z<3mS4h5g3Q@sU@`96%k#%MwWQ!w zVW+yZx~!S#_MY*t$d6G>XLQzjHy>&~_AuDB$Sy__Zu2mRvKj<-NFLAg(x;^CI^U=< z#R*IV_eE0{NDCa=D42C`G*Fiqn$As%yh$@;^rXAUS$4YiMrq=L(CTKpQU0!53(eE@ zDBHW=0bg?bSSNL|F{HBr=tZfr`V%K9Fv_n83rz}oi7NQ+#0&TV*M;+@1yr&z>JXsi zBCt7lcKL2z3u!lT7L*7pcxkptmCQM{Nz0kx(wNeV9Q`pwgj&qv4ZDNanmm^!U|Gb5 z!S8@=Vt(M*)^5D!k@A>;1%rGle+e~L*mM0RufWHAwFY>-4cTH4P-Mm=b}U#%yZ0Dj zkAKysv5>VmYGI;f#pXX349(Z=&ect(ll8sP(Wfq4*-VVLoX(k(ixxshuaNAYZZqGQ zty@ML_bmTUR{5&sXvFdouIW2)PNirm*RE#uaks{stB9NW!ffXZ1$~6@ZypRp#uZR( zl#8s7Z6XjgJ} z!d1InPZ~m;h@YF&HzT)O#uNvZ-K&GQ_e6&gY)^ZSYg$_rG@nnbj5+Q06v^Q#V74Dc zRvWP{St1j!Is!24WhRZgdz5v>B2F&D#e|oS9pSVOG-?9Wm`lf^4;eSC@+T}DJlRYY zGHO13d%Ni7;JE%SXMQ^;NWQ;jBK&7VLKB2Aio%IJmx(b0Wc|QNhP^rzlEb3ie;5;r zc7{9e@qPzbg;B~ulY-*visy-+608p?OKoQfdqu~JyLQeEIXhn-IW){F9{Hs@5NMW> z#MvdwY`mJ#o%F3I9Krg$rFM%cTQ0dtufGGjyi+El`eF&`v9rK;Lev1j{qS2!$b z+gwE7Tc4QYM_0E4WE!+&%>GHed~o8PLx67}MvH9v;_T;;+q-Y&-3PyfjsK-}#50+@ z!~MjZ+yC4j{PJkDCOLf&CE!KAb9G=5ijnDs>`IvR%)9c3RJgG}&ium&s#Sp&!eFSW z)G+mrq064^W!L;eu2yY-9S#?3%(?ktrykN-BCy-GG3zScL}wf%mQfdS(cxS7$tlSu zBdkzwgGIie^DV*FIW~~QQ0?MNdz9ZH-Y=Q>fM$5$lNT}aZNW^ofLF@X1+BWf|SQ(^n>~LvF1)Z;?wGFOLMUe0eSd_y_F2H$%?Q zEOU9evOSVT*vZ9aVm!ew68yFeRh~L4?Q_Wd8hrBOT_b$#&aXkMZGQ?{EyD+N0S@=< zrr&^{-F+y#ZX4U3#LQgMFZgup4W8s9qBouuZyhsF_T|D`Tol;N2yb70#e2C0NQz_) z>?YXh98LPI$f=ys_X*EANm7trJI_{t0bT2RKx+{CQl(!R@gT~LS0*N+LUcR+tEO|T zbc}X|;e3`^mQzJ*ALj5)uT7BD?>nA?irlGSt(B?7g6%ZTY39R9l2~~}|c_JER2Bi$X zYyB$ac2IrhM={AhpAyC{RZa%#>~f|R&y8pH?>3o~KkgnuHb&l_5@&Yats=612h@b$ zHaz(-Fl!8?X&~%)n}y0mSzOz6L*)3NKGTm=XdE$9y`QT;Bkr6;j)8}>Kr_5E)IIa8 zXtiMZhQxHNam=^pa2fWjUd%h@;xA!fAlOHLo=yR^7(_oe^i?-_ktOg(ALNA-E-97q zz&Ir!(zM1SW`I~NSsb^uJLy{*9x#=b;FX?p#yRE-4q+bm%@wwu;CPERDcMRjnVD^^ z(%Zt>5Pg9qvxk0*65P6aLC%XXVwY~mg4N>5_H>l0JcTV2!6thpmYQD3lA7mG=+oEM zw<*{xJ7Zugxu$e#;>B%~q&&%EK6Rq1lVSIw8(Kc^ZUIVZDj1$nyB@DzZ%d$4iCSn5 z#4Awqr7-H+sMDENtQAqNG(nAC7x})bm;&pQUa~IYx)rsD9ip~(Y2JD?Tz5O(Ti|Rs zqKbU>aaTM3rV9hz{fz}2`+f04VS$Wehlw6DOW%)@^9T8w`0kjG#@=az8QQI>5tz^g z#4zo39B!%3nU^W(nfM#;o6)GE{{KPVdxkZ&wQHl;P*Bv+G$1G>p@W*x1i?iMBs3EU zB^0Fv2wf=x3w0q#Zy|t50BNCj2wic}dksiOsx(2V3Zf@_U(5Br-}~^5ZAFRV6FxOu3spLmDs0z% z?}u>6#ABJ$6GULvMws+RE~S=KIRn9Edge`>L-SLqpG@U-KMtNe#<)+#Jsu1jbFxab zh^DR?xnxyoBc`VcY8#?I8Bh5n9DM2x%y3syj0X+yo>Bkc=Od(1; zWRmPW$b2Zn-K~g?hr3er?hM*gK$a_|407S&aRHWRuQ zMzuHj4UZy}Pe+7JK8rdo5ceK^~%B#D$rld7woa_C1omr_v)M%!GBG%DQ-RJd?!5QXeUz&9C zd5ej}!cVK>w0PI+`(8D)Yvt|}wPbVV-M^O+uN|erD7~RoPCVTZEzHJK^@9&I?htU$z$ixX!!7@grYkXu|F4w9IVt!c*&KBN|uVQsJ9h zufIEvEgvuDyUo$=QH6Udh0jUx&O~#4^iL$l)Ui&C&`Qd#6uC=ai5NZ5BD`c zlb?Spa}Ag@ep(*)k@M91H~-{OWE(h7d3T1AeYMo|_ZOJ`UzN9U zBD*h?XS)x@ufJWHw4fQu9?=h``2@&)eUcKzDfR_=F8)r{lxykAu@n36-DK~m27sPC zuLw8$p#+GpaQIZ>;=N--6dvNWocOfdE~201cKM>H+t*#FH@;ZMaYxkf><4{S6eJJX zM$9E@_+7RutceWHRmuLrYjBAEy<64&PYVMJ1H!zs`=)Rnu} zVq`%sHRCmK+zXIb+t%B~x`G%}(ni-3p`14E(p@x8mPD&P7^#Pz(wDp*OOJ>0(dy;w zok~srFiS({dt8Oez9O+zQ=B`BB}7p`?jmf6sFVLQ00reB$-c~&6vo<{p3Ub?V_EG6 z8HoDd?RE^vsyKE%=^)f^c1`3Zk?Ut#rEO! zmOuG&^LlO(&AUx1T)0{{08vj2YD}WnOKx%MydL+zHHs=4vEufQ4zJ+;Lkwr7>YOF3 zH*776OPCG~b24l5;jh5nWkLr ze)_1C_k3+eA%(|h){bQVScBZ|YG#p!-8VG6_HxM95vrYJEm#XT25bVq!i7bMBuov; zO0eD33B^E+ieVN+mvm~Jd9Z+jVoPSNw)j!J;MCil8Ueb5F4|7e^N!Kl8??u$*8H_m z0myCJbVrYz;aAZUQCe7bA0P?%z?Z+EfatGNNF7J@ywA1WN)ZbWet;){Q$<&20nAq$H2uqQX=Uq<5l_%Q~)AftzCA6W8N;d$mkHzyRG7Gt+-YAglixev(K>CHn8Gq8( zor>!oC%eypJHr?3IT>1$uF{EY!$_{cg}Y$u{)dH-q>=%#VR6r@e1`NMS62DaQdmb2 zMpSe!*tOgzE`OK7z3Kb%RPi=0!E$`3f*xOZg#nScQ-bAe7&$U!mpWuJ-LhE5L$ZiS7>wcd%@#5@rlHr*I9QpOa;`d5?6QQX_OwddwuG)W<$4SiHOr1x zG(?y>6p@agZ!2&h?|!QdC6a-Wm&9^8^sfN6y6x^j8=|*vmGdrT(b87ymSfpeJiFmX zQ#(mW`%GqsL$Z5E_+C+KRkCJb&ybosoQj@*8?skABydp^K3s(-4!kvQd4wxE@JIbrB1M_GmjNjn`Phnq!aN&41Jy4eKEez zUzkP9%a4d-5c&b;#^!>i;^G%iybHrQl+E*A(v;;195RzlX-;ut5!w)c7m1iM;+zd= zffD9hUk#Zi0ZDAs76qb0Ac}pU9Lwc#FqB1A_s_D0V>_5>=_rYW0PpYu=S+j8kq;x( zs-s~;)2_$oyfk=aGZp`%BX`1>DZRLYE%ryx>^7QB;nkQR(+LH!9_;BnQZP$-?6{(C zD3xsNEeI)c15Ww%I>8!xTAK=R64TgBek!JdPTI+|coi?i;aWG+?rVh(?N#`Gs%-t9 zir?GbG`}#NN2N`=7wBAEX9X%rJUWD>vCv{vLW}>)rmc`Q2C4IRDUxoL0E>ESdwUK)GBeg=~o<90npzvpe?ouI)i z$x(EM;*RaN4%d0bFtDSfx@;@5n^D+8P)0D*US!9yjGf4k!s2j+cA<^Iu?!0gR#(^X zzzax{F_JH>ZuQFYy8LD&@1Vv4ZZkR~xZe>`b5|VeWs!%JY`(?0X2%_GS6-l-J>KPs z)!|9G_;@>`#hGm9TKZkOYWegO0W)+BgyLF;8_#;Md~^P;Gx=534bN$=dekr;A6qZWbI zN5#dFfQ;bO3GJ>TrSKyBpT7~EdK4X!l98N_ZG>z+n9B5V0>BEo6-V-EPLxzm1(|*h4`{SH2^1Pk)oFXK0zNBHt>2r{5%Dp}4L z!6NMh2N!5+uu*bNnJq$BcdCoi(Q#^S&R|W5PKh~lFhc-!smDmQs=3k)qvKe)xXTyq z=Z5Wz%?uBn6UT*lWb&$dO7H!#A@8c@7jb{0e8mvqS)GSo*=_aCYeY8I@L+~ihBizw|+S1}GgEtGi{#nwb8vKsm6p$r&L z^X_jkk2mYco80#dJ@;s5P`IWtodx<0kZju%@rJE=E9y_xZ1s#mEA)*UgWQ~+ns!1y zBmoviuFqgz8JzE=RC4izWoyVL-I^t-e3Tz5b&J z-P8!gTdb7E3mR&n=4jAF+a+zZqCaa>P`syY>Tg#&;Xjmz1Gr|VZgbav{oSoc|1dY> zO(wpwy8hY5T3;JQ@c^CI_>%sE_!>Hpd}H_-Ti&s#vR%5oJ@$X*akEt+)LquwsT5v|jwXowr9y4;_b|@cYc#7oKS1&{Y!3pX{mJu@{v~ zZ(%1qEgxOw&*VGe)&4+s1G!~@290vA=Se!(bVZ{qgULGGqh<%$c0WMilTvL%Uxg?g zlPfQOHKLT4ghK9#Bz{^;)$)Jzq(A}!t3*20R&F?hdLM``-b9h|=OvV8J{?TEKlRGc zs7SDO&g2xsC{Q$BK$2#Is_(aXj7xHWyIp1B$r2#8E!6BA15 z6^0H`LI^`J@@4H8qH|3)y((Gl6So_OD^TQ%HG)yj>5Hq`q=s6l2Y$a?<26HZVI-VS zN~g+LKYEzec{Is3z1_&chS$j~J_H4MOuKB%furuU!(0KC<P&^Kry1=WcfiZ6^;!d75L}M3k61 z_oiIm_NaROB<^^q|G~@&+}Ol})5E^J0hfO@0EI;m>tV%shqAO$Y_KJD0%<3fDX`2v zSLf&H$sQTIfJ1m)lwOMu=yGWV8A%|@7(S|#Vrf;*HR&k^ z5>?UA(T_Q}{OH%=|8X7>CXN3ee`qs>1em`J5)e_fzKcMj)zwYNbak^J=&39Bz1p1I z=~MQ$z_#B@s~ka6t3?5WaTh-+=%4C4+Sq%}{bGVOWYFTc8Q|0y()PWDkxLPN4}|ot3pUnYPxu8OoDidYb`1aSvB`a&cs&%qjOBR#KQmx| zsb-b@lWNwwD8Gl=U#eOEYS^CpE!^nz@Kq_zeMnClu}YwrDrkWZr?h)|2Hu!>aEIXL*ls6pm%cYSQ{Yj5fGv_9WgnFF$cIfB<(q=$oue-R>%Pg&5C8P8ZAO)Xq` zu}JybXG&;Kg||PB%dUSqrB<-DH3|4JVCC&+-<&k9pCgvSI}e!j5-7k#aL!FU(x)yIQs| z_jafC7%sl&FJ3(2n}LFH_fZ{old)b3V2L)@4PXekgqtBKJmgw8U(dWcTL2K7=o+7( zi6vOO@Y!2u2}+Z0UkiL$k#Ch#nxh1vrF8gSN#!kpP1j%_HY|qfX!(f`Uh}Ff@|cn4 znShD+vPz30V3N&End03jlGEh`SE{|Z^LwEYiB>BYB}LMh}@Rk99q07jVTfK^}Zj`66$F29h0XuF(u=tQ8WpwhXa72)DB zn9;NoaGET9cr1u=``vAPZ)X;$E1w|%%!0ml4arHE=7VK8$#C)fC;zY*&eW!gv&qe8O!0KL-_5Aa3 z@cX=rxjn>+$AJ9BndCDiEWnK~QE{f>t=TW^M0rhtdwTUD3KVQ-Im76m`S zjoC|}BTt;LE*!#`&iK_@IhwZ~zi)2&d%aAD&2)A_q*_m>EZG#_8hoB^5;|ZK@A05a zu(?vGRamd6*)VjQd+E1%gWl|HX_q=;6|tzDbEL~aTZWy8a{=NZK<CuaHnbZSnN3VvyRc|7Ka9;xKg8roD0u-*og-T((aJ z<6GYUKKb~2ndpBM}+^$~2iS?QG zk~Wv;$IOp=T6q&^8_9*`6b3!W^Yw8Tk5k$D7s|tXD#<&y;e%Zj-wM>5+!#A3_Gbr$ zeu;)#F2+wmS+_89CcZzJ##M$dH9>dQ{DDei5}M&z?WUD;bzMfTq6$PGk|lO)s@`}) zl*j&RcdcP&zrS|wojV~T9u0{+szYn_YakhJ4y9pwkku5P{YmYx6YJ=U%;Z~&;wei!wEU9$ju{-Aj5K_hNWcR zr$FQ}J;LGhr;K%E=FUwtgR>d*EXrOr9V6yFGpiNsyj}?(wy-WsF3zpp z!#HITOJoST7i_^cNw}4&2#Jy9^~$e%@`P%FX0AJzn zVz?!IY?b(7l6N3Y-l_wEh`Mss`$$w$`CSoJHzgl1BjpUhEhbbi10d<-n5pUA)e^)G zyg;Q36%B(Ku`;tDC(LBFnD_8#VgjntSA*t(8!wPC6>*Fv`{mPetd%Y*WTwM+Saj^& zfemilzGBD{jfv8PV~mK`#56SxE$&$$>NFH_lWSKn6Jv$~cgsj*z3oCOX6?1;kVHC# z0^K9ukfv$tqpp4L=}iTdtQfFHWM}FaexSJu^UpFoiJM8EvRpSVH zbHyAloi#V1eS-pcn7b>cuAm*amKc2T{r#Ma6qX$i>VYuX#W#_-;4ukizXUK(0M4Ud zb{3d)UpEfB2*GyU&j+MY5ux;af4z)5V(Xoic|uyCCdy{Ld&8->2{?%nq1a>o1pB

    ~i=O6B$P?N6)LRx&IUL8Rvu2F3ts5 zUJ9fG7xgdm>0x5}1)v;!9D7Km>>NO4((iMjnsjP4%<*}1HDq}zjJz43hpVVo&WBsJ zulU01#8a$NJ|2K$bwERj9gv=YDI>{fw>fA*tcA~F17BlUZ&SFg@CF;E;OU#;M%QN( zr^4#2eqIpZRD-W>$Je$T^hR>txD)MgFK@9vc0pQXGPk!mok6gH`)A2a3}o8U48~eo zVSdR5PT8&B*DDmo(PjSlr9f9-Kq@LV_snm^cmM45ag)W)bIOa)1}6S{U$R2g$$@}x zT_wR^WsWhReiJaOByUT$H-^4X0WumCLGgqZ-R4$%|8Go}|GX7a>;tlqXZl58Wiy98 zLmmJA?sk*rEZdHRU{!WwkI_T?R=LBk2b`|bVbExuGxTyvr7`Vvv1AfgklOq-kNMYg z@6~=eS$K6;@jAoAzP_DV@xsp%-1exA{k&dyp|u_}{mHgpCJ^9O8OE52adZSucJZY5 zgl_=;k8R=9BWUq(5{}9Te-Q=s!#M5rm*ywI4A#P5K$mg zt!i1HDg}pO1VH{<5OP=JBF7YktJug0dOCWox4GtD@Y+?Up*UYPRewfias021A!pQV-VZU~=Syk@b&tk*;!->shcIrgXHRm&wLMJfCh)2Q8i zCinHBOhm!?$DaL2>r<*lo-;dgu2{ZzC4 z>xaY@fQ#7UF(UqYc`@+sUtN6+em7cvAIr)${kJbnWCzBeXCrUZ`~Dx6p#px_y0wb` z7eidJ5sN?FEe;D-z)~6i3zqTgGW@r=$Tt4BxL|?*SuS!s{&Ne6NB++({O1;y;@f|2 z;Xk+VJ#YBWE&S&e{=d5g@j8z!3u?CkX20+xDDPDNliBiL2dI8cgQ5JLRa^J4V0H^@ SQa%&>bL5cD!KVlCKK}<=u+ literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_aircraft/images/Equation_12.png b/trick_sims/SIM_aircraft/images/Equation_12.png new file mode 100644 index 0000000000000000000000000000000000000000..000667b845dda41d58f2b9e61381bc12748a87a8 GIT binary patch literal 64483 zcmeEOg(p_WJU= zJ&LpVchIv^{P+iA_q&>^L&|Rqp!`uZ}+{5;Oo$o}Lx!%4QNb zWwQVH6cyTFx+@Z28r$l*#MWwX|Ns5MpC5qo zxuBt-xBvO#zg&!8hhy6B*?GR+|2UezzF=_*xRQodn!Wq~jsMSYT;zS}f@pdc_vEiD z{KvT$os!Xa?q#@M`)`(rF1+C!@TRo+bko;3s=gC`~8w|FPsh7vq=@ZwaSS+MNI0Wc8EqlRd|%_u)Nq2ggvo%`_dnnGe+KnGv;X%CW${0=|M&6Xe`fz5JnMha{@?Ig5jE4@;Y<{(VzXnGst8~~|lH(k4)?mYqSeV=G1o9?^(iJaxufF>bo zHNa@AmOi9@hz&TJ?cEtPSAs5xWh5gu;|n`BYHS>Mj;6?!l1yyZTw@_Rdv#c7P8>)P zEPHyil_SC)4Mac z6@NjjQ54602OjCQ)XAd-kILF{M}{uIrO;?hIM!Gz$NC4Bo0_5%;aq8DaZXb_nx+A< z;|GWlz)B2BTrgMyE3Od?HE+3@dn0pT&1WlG+=%U%6#MEm^sYAT>53-nJ(Y~V^m zDz@GHWOLg#VAr-+uyXAB_!ew0&2KLq>t~BQ*{fH|D1BwXekTMa^ENF<##t4;X)?J8 zmxx|!{}I=u@000tx;cuftkkR&q&ihiKbHyMHFmu4+@e!#+;fST#-~AEs~yH<{yVg& z(8O135V)-DZ=;kZ2GH^$aQ%gP8HZ!&5BRl#^g33KOP-%l$6_cZkzVKk{O+djslURc z1(0M3w-aVVtw21;G)N9CHevT;@SC_LA{u%7B-+`}T5<3NFLM9)day_VzYe3b{oTK< zLjΜ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