diff --git a/docs/active_damping_uniaxial.html b/docs/active_damping_uniaxial.html index a453799..d696d5c 100644 --- a/docs/active_damping_uniaxial.html +++ b/docs/active_damping_uniaxial.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Active Damping with an uni-axial model - - - - - - - - + + + + - +
@@ -251,63 +39,63 @@
  • 2. Integral Force Feedback
  • 3. Relative Motion Control
  • 4. Direct Velocity Feedback
  • 5. Comparison
  • -
  • 6. Conclusion
  • +
  • 6. Conclusion
  • @@ -421,8 +209,8 @@ And we save it for further analysis. -
    -

    1.3 Sensitivity to disturbances

    +
    +

    1.3 Sensitivity to disturbances

    The sensitivity to disturbances are shown on figure 1. @@ -480,15 +268,15 @@ Then, it is applied on the simscape model.

    -
    -

    2.1 One degree-of-freedom example

    +
    +

    2.1 One degree-of-freedom example

    -
    -

    2.1.1 Equations

    +
    +

    2.1.1 Equations

    @@ -554,8 +342,8 @@ This is attainable if we have:
    -
    -

    2.1.2 Matlab Example

    +
    +

    2.1.2 Matlab Example

    Let define the system parameters. @@ -618,8 +406,8 @@ And the closed loop system is computed below.

    -
    -

    2.2 Control Design

    +
    +

    2.2 Control Design

    Let’s load the undamped plant: @@ -661,8 +449,8 @@ The corresponding loop gains are shown in figure 7.

    -
    -

    2.3 Identification of the damped plant

    +
    +

    2.3 Identification of the damped plant

    Let’s initialize the system prior to identification. @@ -715,8 +503,8 @@ And we save the damped plant for further analysis

    -
    -

    2.4 Sensitivity to disturbances

    +
    +

    2.4 Sensitivity to disturbances

    As shown on figure 8: @@ -752,8 +540,8 @@ For instance, the plots are not the same when using minreal.

    -
    -

    2.5 Damped Plant

    +
    +

    2.5 Damped Plant

    Now, look at the new damped plant to control. @@ -782,8 +570,8 @@ However, it increases coupling at low frequency (figure 11

    -
    -

    2.6 Conclusion

    +
    +

    2.6 Conclusion

    @@ -817,15 +605,15 @@ In the Relative Motion Control (RMC), a derivative feedback is applied between t

    -
    -

    3.1 One degree-of-freedom example

    +
    +

    3.1 One degree-of-freedom example

    -
    -

    3.1.1 Equations

    +
    +

    3.1.1 Equations

    @@ -884,8 +672,8 @@ This corresponds to a gain:
    -
    -

    3.1.2 Matlab Example

    +
    +

    3.1.2 Matlab Example

    Let define the system parameters. @@ -948,8 +736,8 @@ And the closed loop system is computed below.

    -
    -

    3.2 Control Design

    +
    +

    3.2 Control Design

    Let’s load the undamped plant: @@ -992,8 +780,8 @@ The obtained loop gains are shown in figure 15.

    -
    -

    3.3 Identification of the damped plant

    +
    +

    3.3 Identification of the damped plant

    Let’s initialize the system prior to identification. @@ -1046,8 +834,8 @@ And we save the damped plant for further analysis.

    -
    -

    3.4 Sensitivity to disturbances

    +
    +

    3.4 Sensitivity to disturbances

    As shown in figure 16, RMC control succeed in lowering the sensitivity to disturbances near resonance of the system. @@ -1069,8 +857,8 @@ As shown in figure 16, RMC control succeed in lowering

    -
    -

    3.5 Damped Plant

    +
    +

    3.5 Damped Plant

    @@ -1081,8 +869,8 @@ As shown in figure 16, RMC control succeed in lowering
    -
    -

    3.6 Conclusion

    +
    +

    3.6 Conclusion

    @@ -1114,15 +902,15 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured

    -
    -

    4.1 One degree-of-freedom example

    +
    +

    4.1 One degree-of-freedom example

    -
    -

    4.1.1 Equations

    +
    +

    4.1.1 Equations

    @@ -1181,8 +969,8 @@ This corresponds to a gain:
    -
    -

    4.1.2 Matlab Example

    +
    +

    4.1.2 Matlab Example

    Let define the system parameters. @@ -1269,8 +1057,8 @@ The obtained sensitivity to disturbances is shown in figure -

    4.2 Control Design

    +
    +

    4.2 Control Design

    -
    -

    4.3 Identification of the damped plant

    +
    +

    4.3 Identification of the damped plant

    Let’s initialize the system prior to identification. @@ -1363,8 +1151,8 @@ And we save the damped plant for further analysis.

    -
    -

    4.4 Sensitivity to disturbances

    +
    +

    4.4 Sensitivity to disturbances

    @@ -1383,8 +1171,8 @@ And we save the damped plant for further analysis.
    -
    -

    4.5 Damped Plant

    +
    +

    4.5 Damped Plant

    @@ -1395,8 +1183,8 @@ And we save the damped plant for further analysis.
    -
    -

    4.6 Conclusion

    +
    +

    4.6 Conclusion

    @@ -1467,8 +1255,8 @@ Direct Velocity Feedback:

    -
    -

    5.3 Damped Plant

    +
    +

    5.3 Damped Plant

    @@ -1494,8 +1282,8 @@ Direct Velocity Feedback:
    -
    -

    6 Conclusion

    +
    +

    6 Conclusion

    @@ -1505,7 +1293,7 @@ Direct Velocity Feedback:

    Author: Dehaeze Thomas

    -

    Created: 2020-03-13 ven. 17:39

    +

    Created: 2020-04-17 ven. 09:36

    diff --git a/docs/compensation_gravity_forces.html b/docs/compensation_gravity_forces.html index e75d3e0..5b1ac52 100644 --- a/docs/compensation_gravity_forces.html +++ b/docs/compensation_gravity_forces.html @@ -4,227 +4,17 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Compensating the gravity forces to start at steady state - - - - - - - + + + +
    @@ -269,9 +59,9 @@ In order to start the simulation at steady state in presence of gravity: We don’t inject any perturbations and no reference tracking.

    -
      initializeReferences();
    -  initializeDisturbances('enable', false);
    -  initializeController();
    +
    initializeReferences();
    +initializeDisturbances('enable', false);
    +initializeController();
     
    @@ -279,8 +69,8 @@ We don’t inject any perturbations and no reference tracking. We include the gravity and log all the signals to display.

    -
      initializeSimscapeConfiguration('gravity', true);
    -  initializeLoggingConfiguration('log', 'all');
    +
    initializeSimscapeConfiguration('gravity', true);
    +initializeLoggingConfiguration('log', 'all');
     
    @@ -295,28 +85,28 @@ Let’s simulate the system without any compensation of gravity forces.

    -
      initializeGround();
    -  initializeGranite();
    -  initializeTy();
    -  initializeRy();
    -  initializeRz();
    -  initializeMicroHexapod();
    -  initializeAxisc();
    -  initializeMirror();
    -  initializeNanoHexapod();
    -  initializeSample();
    +
    initializeGround();
    +initializeGranite();
    +initializeTy();
    +initializeRy();
    +initializeRz();
    +initializeMicroHexapod();
    +initializeAxisc();
    +initializeMirror();
    +initializeNanoHexapod();
    +initializeSample();
     
    -
      load('mat/conf_simulink.mat');
    -  set_param(conf_simulink, 'StopTime', '0.5');
    +
    load('mat/conf_simulink.mat');
    +set_param(conf_simulink, 'StopTime', '0.5');
     
    -
      sim('nass_model');
    -  sim_no_compensation = simout;
    +
    sim('nass_model');
    +sim_no_compensation = simout;
     
    @@ -341,16 +131,16 @@ We here wish to simulate the system in order to compute the required force in ea

    -
      initializeGround();
    -  initializeGranite('type', 'init');
    -  initializeTy('type', 'init');
    -  initializeRy('type', 'init');
    -  initializeRz('type', 'init');
    -  initializeMicroHexapod('type', 'init');
    -  initializeAxisc();
    -  initializeMirror();
    -  initializeNanoHexapod('type', 'init');
    -  initializeSample('type', 'init');
    +
    initializeGround();
    +initializeGranite('type', 'init');
    +initializeTy('type', 'init');
    +initializeRy('type', 'init');
    +initializeRz('type', 'init');
    +initializeMicroHexapod('type', 'init');
    +initializeAxisc();
    +initializeMirror();
    +initializeNanoHexapod('type', 'init');
    +initializeSample('type', 'init');
     
    @@ -358,13 +148,13 @@ We here wish to simulate the system in order to compute the required force in ea We simulate for a short time period (all the bodies are solid, so nothing should move).

    -
      load('mat/conf_simulink.mat');
    -  set_param(conf_simulink, 'StopTime', '0.1');
    +
    load('mat/conf_simulink.mat');
    +set_param(conf_simulink, 'StopTime', '0.1');
     
    -
      sim('nass_model');
    +
    sim('nass_model');
     
    @@ -372,7 +162,7 @@ We simulate for a short time period (all the bodies are solid, so nothing should Verification that nothing is moving by looking at the maximum displacement of the sample:

    -
      max(max(simout.Em.En.Data))
    +
    max(max(simout.Em.En.Data))
     
    @@ -385,7 +175,7 @@ Verification that nothing is moving by looking at the maximum displacement of th We here show the measured total force/torque applied at the location of each joint.

    -
      data2orgtable([Fgm 0 0 0; Ftym; Fym; Fsm], {'Granite', 'Translation Stage', 'Tilt Stage', 'Sample'}, {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'}, ' %.1e ');
    +
    data2orgtable([Fgm 0 0 0; Ftym; Fym; Fsm], {'Granite', 'Translation Stage', 'Tilt Stage', 'Sample'}, {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'}, ' %.1e ');
     
    @@ -462,7 +252,7 @@ We here show the measured total force/torque applied at the location of each joi
    -
      data2orgtable([Fhm; Fnm], {'Micro-Hexapod', 'Nano-Hexapod'}, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}, ' %.1e ');
    +
    data2orgtable([Fhm; Fnm], {'Micro-Hexapod', 'Nano-Hexapod'}, {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}, ' %.1e ');
     
    @@ -522,7 +312,7 @@ We here show the measured total force/torque applied at the location of each joi We save these forces in Foffset.mat.

    -
      save('mat/Foffset.mat', 'Fgm', 'Ftym', 'Fym', 'Fzm', 'Fhm', 'Fnm', 'Fsm');
    +
    save('mat/Foffset.mat', 'Fgm', 'Ftym', 'Fym', 'Fzm', 'Fhm', 'Fnm', 'Fsm');
     
    @@ -536,16 +326,16 @@ We save these forces in Foffset.mat. We now initialize the stages with the option Foffset.

    -
      initializeGround();
    -  initializeGranite('Foffset', true);
    -  initializeTy('Foffset', true);
    -  initializeRy('Foffset', true);
    -  initializeRz('Foffset', true);
    -  initializeMicroHexapod('Foffset', true);
    -  initializeAxisc();
    -  initializeMirror();
    -  initializeNanoHexapod('Foffset', true);
    -  initializeSample('Foffset', true);
    +
    initializeGround();
    +initializeGranite('Foffset', true);
    +initializeTy('Foffset', true);
    +initializeRy('Foffset', true);
    +initializeRz('Foffset', true);
    +initializeMicroHexapod('Foffset', true);
    +initializeAxisc();
    +initializeMirror();
    +initializeNanoHexapod('Foffset', true);
    +initializeSample('Foffset', true);
     
    @@ -553,14 +343,14 @@ We now initialize the stages with the option Foffset. And we simulate the system for 0.5 seconds.

    -
      load('mat/conf_simulink.mat');
    -  set_param(conf_simulink, 'StopTime', '0.5');
    +
    load('mat/conf_simulink.mat');
    +set_param(conf_simulink, 'StopTime', '0.5');
     
    -
      sim('nass_model');
    -  sim_compensation = simout;
    +
    sim('nass_model');
    +sim_compensation = simout;
     
    @@ -590,7 +380,7 @@ This initialization should be redone for each configuration (change of sample ma

    Author: Dehaeze Thomas

    -

    Created: 2020-04-05 dim. 19:43

    +

    Created: 2020-04-17 ven. 09:34

    diff --git a/docs/control.html b/docs/control.html index e60db3d..301e0a1 100644 --- a/docs/control.html +++ b/docs/control.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Control of the Nano-Active-Stabilization-System - - - - - - - - + + + + - +
    @@ -620,6 +415,28 @@ Usually, the Low Authority Controller is first design, and then the High Authori
    + +
    +

    4.5 HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the task space

    +
    + +
    +

    control_architecture_hac_dvf_pos_X.png +

    +
    +
    +
    + +
    +

    4.6 HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs

    +
    + +
    +

    control_architecture_hac_dvf_pos_L.png +

    +
    +
    +
    @@ -629,13 +446,13 @@ Usually, the Low Authority Controller is first design, and then the High Authori

    -The principle of Cascade control is shown in Figure 13 and explained as follow: +The principle of Cascade control is shown in Figure 15 and explained as follow:

    To follow two objectives with different properties in one control system, usually a hierarchy of two feedback loops is used in practice. This kind of control topology is called cascade control, which is used when there are several measurements and one prime control variable. -Cascade control is implemented by nesting the control loops, as shown in Figure 13. +Cascade control is implemented by nesting the control loops, as shown in Figure 15. The output control loop is called the primary loop, while the inner loop is called the secondary loop and is used to fulfill a secondary objective in the closed-loop system. – taghirad13_paral

    @@ -644,7 +461,7 @@ The output control loop is called the primary loop, while the inner loop

    control_architecture_cascade_control.png

    -

    Figure 13: Cascade Control Architecture

    +

    Figure 15: Cascade Control Architecture

    @@ -669,7 +486,7 @@ The inner loop can be composed of the system controlled with the HAC-LAC topolog

    control_architecture_cascade_L.png

    -

    Figure 14: Cascaded Control consisting of (from inner to outer loop): IFF, Linearization Loop, Tracking Control in the frame of the Legs

    +

    Figure 16: Cascaded Control consisting of (from inner to outer loop): IFF, Linearization Loop, Tracking Control in the frame of the Legs

    @@ -681,7 +498,7 @@ The inner loop can be composed of the system controlled with the HAC-LAC topolog

    control_architecture_cascade_X.png

    -

    Figure 15: Cascaded Control consisting of (from inner to outer loop): IFF, Linearization Loop, Tracking Control in the Cartesian Frame

    +

    Figure 17: Cascaded Control consisting of (from inner to outer loop): IFF, Linearization Loop, Tracking Control in the Cartesian Frame

    @@ -707,6 +524,43 @@ Signals:
    +
    +

    7 Other Control Architectures

    +
    +
    +
    +

    7.1 Control to force the nano-hexapod to not do any vertical rotation

    +
    +

    +As the sample rotation around the vertical axis is not measure, the best we can do with the nano-hexapod is to not rotate around this same axis. +

    + +

    +One way to do it is shown in Figure 19. +

    + +

    +The controller \(\bm{K}_{R_z}\) is decomposed as shown in Figure 20. +

    + + +
    +

    control_architecture_fixed_rz.png +

    +

    Figure 19: Figure caption

    +
    + + +
    +

    control_architecture_fixed_Krz.png +

    +

    Figure 20: Figure caption

    +
    +
    +
    +
    + +

    Bibliography

    @@ -718,7 +572,7 @@ Signals:

    Author: Dehaeze Thomas

    -

    Created: 2020-04-01 mer. 16:16

    +

    Created: 2020-04-17 ven. 09:35

    diff --git a/docs/control_active_damping.html b/docs/control_active_damping.html index 59d3680..a4aa035 100644 --- a/docs/control_active_damping.html +++ b/docs/control_active_damping.html @@ -4,259 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Active Damping applied on the Simscape Model - - - - - - - - + + + + - +
    @@ -273,17 +39,17 @@ for the JavaScript code in this tag.
    • 1.1. Identification of the dynamics for Active Damping
    • 1.2. Identification of the dynamics for High Authority Control
    • -
    • 1.3. Tomography Experiment +
    • 1.3. Tomography Experiment
    • 3. Integral Force Feedback
    • 4. Direct Velocity Feedback
    • 5. Inertial Control
    • 6. Comparison @@ -366,16 +132,16 @@ for the JavaScript code in this tag. @@ -447,8 +213,8 @@ After that, a tomography experiment is simulation without any active damping tec

      1.1 Identification of the dynamics for Active Damping

      -
      -

      1.1.1 Identification

      +
      +

      1.1.1 Identification

      We initialize all the stages with the default parameters. @@ -541,8 +307,8 @@ And we save them for further analysis.

      1.2 Identification of the dynamics for High Authority Control

      -
      -

      1.2.1 Identification

      +
      +

      1.2.1 Identification

      We initialize all the stages with the default parameters. @@ -611,8 +377,8 @@ And we save them for further analysis.

      -
      -

      1.3 Tomography Experiment

      +
      +

      1.3 Tomography Experiment

      @@ -1000,8 +766,8 @@ We identify the dynamics at different positions (times) when scanning with the T
      -
      -

      2.6 Conclusion

      +
      +

      2.6 Conclusion

      @@ -1092,12 +858,12 @@ The control architecture is represented in figure 29 w -
      -

      3.1 Control Design

      +
      +

      3.1 Control Design

      -
      -

      3.1.1 Plant

      +
      +

      3.1.1 Plant

      Let’s load the previously identified undamped plant: @@ -1121,8 +887,8 @@ Let’s look at the transfer function from actuator forces in the nano-hexap

      -
      -

      3.1.2 Control Design

      +
      +

      3.1.2 Control Design

      The controller for each pair of actuator/sensor is: @@ -1146,8 +912,8 @@ The corresponding loop gains are shown in figure 31.

      -
      -

      3.1.3 Diagonal Controller

      +
      +

      3.1.3 Diagonal Controller

      We create the diagonal controller and we add a minus sign as we have a positive @@ -1169,8 +935,8 @@ We save the controller for further analysis.

      -
      -

      3.2 Tomography Experiment

      +
      +

      3.2 Tomography Experiment

      @@ -1222,8 +988,8 @@ save('./mat/active_damping_tomo_exp.mat',
      -
      -

      3.2.2 Compare with Undamped system

      +
      +

      3.2.2 Compare with Undamped system

      @@ -1249,8 +1015,8 @@ save('./mat/active_damping_tomo_exp.mat',
      -
      -

      3.3 Conclusion

      +
      +

      3.3 Conclusion

      @@ -1285,12 +1051,12 @@ The actuator displacement can be measured with a capacitive sensor for instance.

      -
      -

      4.1 Control Design

      +
      +

      4.1 Control Design

      -
      -

      4.1.1 Plant

      +
      +

      4.1.1 Plant

      Let’s load the undamped plant: @@ -1314,8 +1080,8 @@ Let’s look at the transfer function from actuator forces in the nano-hexap

      -
      -

      4.1.2 Control Design

      +
      +

      4.1.2 Control Design

      The Direct Velocity Feedback is defined below. @@ -1339,8 +1105,8 @@ The obtained loop gains are shown in figure 36.

      -
      -

      4.1.3 Diagonal Controller

      +
      +

      4.1.3 Diagonal Controller

      We create the diagonal controller and we add a minus sign as we have a positive feedback architecture. @@ -1361,12 +1127,12 @@ We save the controller for further analysis.

      -
      -

      4.2 Tomography Experiment

      +
      +

      4.2 Tomography Experiment

      -
      -

      4.2.1 Initialize the Simulation

      +
      +

      4.2.1 Initialize the Simulation

      We initialize elements for the tomography experiment. @@ -1414,8 +1180,8 @@ save('./mat/active_damping_tomo_exp.mat',

      -
      -

      4.2.2 Compare with Undamped system

      +
      +

      4.2.2 Compare with Undamped system

      @@ -1441,8 +1207,8 @@ save('./mat/active_damping_tomo_exp.mat',
      -
      -

      4.3 Conclusion

      +
      +

      4.3 Conclusion

      @@ -1474,12 +1240,12 @@ In Inertial Control, a feedback is applied between the measured absolute

      -
      -

      5.1 Control Design

      +
      +

      5.1 Control Design

      -
      -

      5.1.1 Plant

      +
      +

      5.1.1 Plant

      Let’s load the undamped plant: @@ -1503,8 +1269,8 @@ Let’s look at the transfer function from actuator forces in the nano-hexap

      -
      -

      5.1.2 Control Design

      +
      +

      5.1.2 Control Design

      The controller is defined below and the obtained loop gain is shown in figure 41. @@ -1524,8 +1290,8 @@ The controller is defined below and the obtained loop gain is shown in figure

      -
      -

      5.1.3 Diagonal Controller

      +
      +

      5.1.3 Diagonal Controller

      We create the diagonal controller and we add a minus sign as we have a positive feedback architecture. @@ -1546,8 +1312,8 @@ We save the controller for further analysis.

      -
      -

      5.2 Conclusion

      +
      +

      5.2 Conclusion

      @@ -1723,9 +1489,9 @@ This Matlab function is accessible -

      Function Description

      -
      +
      +

      Function Description

      +
      function [] = prepareLinearizeIdentification(args)
       
      @@ -1733,9 +1499,9 @@ This Matlab function is accessible
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
           args.nass_actuator       char   {mustBeMember(args.nass_actuator,{'piezo', 'lorentz'})} = 'piezo'
      @@ -1746,9 +1512,9 @@ This Matlab function is accessible 
      -

      Initialize the Simulation

      -
      +
      +

      Initialize the Simulation

      +
      -
      -

      Function Description

      -
      +
      +

      Function Description

      +
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      -
      -

      Initialize the Simulation

      -
      +
      +

      Initialize the Simulation

      +

      We initialize all the stages with the default parameters.

      @@ -1915,7 +1681,7 @@ We log the signals.

      Author: Dehaeze Thomas

      -

      Created: 2020-03-26 jeu. 17:25

      +

      Created: 2020-04-17 ven. 09:36

      diff --git a/docs/control_cascade.html b/docs/control_cascade.html index 489684b..c011246 100644 --- a/docs/control_cascade.html +++ b/docs/control_cascade.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Cascade Control applied on the Simscape Model - - - - - - - - + + + + - +
      -
      -

      3.2 Obtained Plant

      +
      +

      3.2 Obtained Plant

      The obtain plant is shown in Figure 5. @@ -593,8 +381,8 @@ isstable(Gx)

      -
      -

      4.2 Obtained Plant

      +
      +

      4.2 Obtained Plant

      @@ -704,7 +492,7 @@ Ts = t(2)-t(1);

      Author: Dehaeze Thomas

      -

      Created: 2020-04-01 mer. 16:16

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/control_decentralized.html b/docs/control_decentralized.html index e87f935..1714059 100644 --- a/docs/control_decentralized.html +++ b/docs/control_decentralized.html @@ -4,259 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Control in the Frame of the Legs applied on the Simscape Model - - - - - - - - + + + + - +
      @@ -271,26 +37,26 @@ for the JavaScript code in this tag. -
      +

      decentralized_reference_tracking_L.png

      Figure 1: Decentralized control for reference tracking

      @@ -334,8 +100,8 @@ The signals are:
      -
      -

      1.2 Initialize the Simscape Model

      +
      +

      1.2 Initialize the Simscape Model

      We initialize all the stages with the default parameters. @@ -449,8 +215,8 @@ We can see that:

      -
      -

      1.5 Controller Design

      +
      +

      1.5 Controller Design

      The controller consists of: @@ -496,8 +262,8 @@ We add a minus sign to the controller as it is not included in the Simscape mode

      -
      -

      1.6 Simulation

      +
      +

      1.6 Simulation

      initializeController('type', 'ref-track-L');
      @@ -523,8 +289,8 @@ save('./mat/tomo_exp_decentalized.mat', 
       
      -
      -

      1.7 Results

      +
      +

      1.7 Results

      The reference path and the position of the mobile platform are shown in Figure 4. @@ -554,11 +320,11 @@ We here add an Active Damping Loop (Integral Force Feedback) prior to using the

      -
      -

      2.1 Control Schematic

      +
      +

      2.1 Control Schematic

      -The control architecture is shown in Figure 1. +The control architecture is shown in Figure 1.

      @@ -574,7 +340,7 @@ The signals are: -

      +

      decentralized_reference_tracking_L.png

      Figure 5: Decentralized control for reference tracking

      @@ -582,8 +348,8 @@ The signals are:
      -
      -

      2.2 Initialize the Simscape Model

      +
      +

      2.2 Initialize the Simscape Model

      We initialize all the stages with the default parameters. @@ -719,8 +485,8 @@ Gd.OutputName = {'El1',

      -
      -

      2.7 Controller Design

      +
      +

      2.7 Controller Design

      wc = 2*pi*300;
      @@ -748,8 +514,8 @@ Kl = diag(1./diag(abs(freqresp(Gd, wc)))) 
       
       
      -
      -

      2.8 Simulation

      +
      +

      2.8 Simulation

      initializeController('type', 'ref-track-iff-L');
      @@ -775,8 +541,8 @@ save('./mat/tomo_exp_decentalized.mat', 
       
      -
      -

      2.9 Results

      +
      +

      2.9 Results

      @@ -785,7 +551,7 @@ save('./mat/tomo_exp_decentalized.mat',

      Author: Dehaeze Thomas

      -

      Created: 2020-03-26 jeu. 17:25

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/control_force.html b/docs/control_force.html index 185099c..a6a93a7 100644 --- a/docs/control_force.html +++ b/docs/control_force.html @@ -1,263 +1,28 @@ - - + - Force Control applied on the Simscape Model - - - - - - - - + + + + - +
      @@ -266,7 +31,6 @@ for the JavaScript code in this tag. HOME

      Force Control applied on the Simscape Model

      -

      Cascade Control where the inner loop goal is to control the total wrench (forces and torques) applied to the upper part of the nano-hexapod.

      @@ -296,7 +60,7 @@ Ideas:

      Author: Dehaeze Thomas

      -

      Created: 2020-03-26 jeu. 17:25

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/control_hac_lac.html b/docs/control_hac_lac.html index ea8e2c3..754cb04 100644 --- a/docs/control_hac_lac.html +++ b/docs/control_hac_lac.html @@ -4,259 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - HAC-LAC applied on the Simscape Model - - - - - - - - + + + + - +
      @@ -584,7 +350,7 @@ load('./mat/tomo_exp_hac_lac.mat',

      Author: Dehaeze Thomas

      -

      Created: 2020-03-25 mer. 19:23

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/control_requirements.html b/docs/control_requirements.html index 69d7fde..291d659 100644 --- a/docs/control_requirements.html +++ b/docs/control_requirements.html @@ -4,259 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Control Requirements - - - - - - - - + + + + - +
      @@ -281,13 +47,13 @@ for the JavaScript code in this tag.
    • 2.1. Definition of the values
    • 2.2. Control using \(d\)
    • 2.3. Control using \(F_m\) @@ -297,7 +63,7 @@ for the JavaScript code in this tag.
    • @@ -312,7 +78,7 @@ for the JavaScript code in this tag.
    • 5.4. Generalized Weighted plant
    • 5.5. Synthesis
    • 5.6. Loop Gain
    • -
    • 5.7. Results
    • +
    • 5.7. Results
    • 5.8. Requirements
    • @@ -608,8 +374,8 @@ Gpz = connect(Gn, S, Wsplit, Tw, Tmu, Sw, {'Fd',

      2.2 Control using \(d\)

      -
      -

      2.2.1 Control Architecture

      +
      +

      2.2.1 Control Architecture

      Let’s consider a feedback loop using \(d\) as shown in Figure 4. @@ -692,8 +458,8 @@ And \(\epsilon = r - x\):

      2.3 Control using \(F_m\)

      -
      -

      2.3.1 Control Architecture

      +
      +

      2.3.1 Control Architecture

      Let’s consider a feedback loop using \(Fm\) as shown in Figure 5. @@ -1004,8 +770,8 @@ Gpz_fb_iff = connect(Gpz_iff, Kpz_iff, R, Sfb, F, {'r'<

      -
      -

      2.5.3 Results

      +
      +

      2.5.3 Results

      @@ -1486,8 +1252,8 @@ Gvc_fb_dvf = connect(Gvc_dvf, -Kvc_dvf, R, Sfb, F,
      -
      -

      5.7 Results

      +
      +

      5.7 Results

      5.8 Requirements

      @@ -1528,7 +1294,7 @@ Gvc_fb_dvf = connect(Gvc_dvf, -Kvc_dvf, R, Sfb, F,

      Author: Dehaeze Thomas

      -

      Created: 2020-03-26 jeu. 17:25

      +

      Created: 2020-04-17 ven. 09:36

      diff --git a/docs/control_voice_coil.html b/docs/control_voice_coil.html index 4ec018f..a8bd668 100644 --- a/docs/control_voice_coil.html +++ b/docs/control_voice_coil.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Control of the NASS with Voice coil actuators - - - - - - - - + + + + - +
      @@ -249,10 +37,10 @@
      -
      -

      1.1 Initialization

      +
      +

      1.1 Initialization

      We initialize all the stages with the default parameters. @@ -416,8 +204,8 @@ Kiff = tf(zeros(6));

      -
      -

      1.2.1 Identification

      +
      +

      1.2.1 Identification

      Let’s first identify the plant for the IFF controller. @@ -542,8 +330,8 @@ isstable(Gl)

      -
      -

      1.3.2 Obtained Plant

      +
      +

      1.3.2 Obtained Plant

      The obtained dynamics is shown in Figure 5. @@ -640,8 +428,8 @@ Gpl.OutputName = {'El1', -

      1.4.2 Obtained Plant

      +
      +

      1.4.2 Obtained Plant

      @@ -697,8 +485,8 @@ And now we include the Jacobian inside the controller.
      -
      -

      1.5 Simulation

      +
      +

      1.5 Simulation

      Let’s first save the 3 controllers for further analysis: @@ -734,8 +522,8 @@ save('./mat/cascade_hac_lac.mat', 1.6 Results

      -
      -

      1.6.1 Load the simulation results

      +
      +

      1.6.1 Load the simulation results

      load('./mat/experiment_tomography.mat', 'tomo_align_dist');
      @@ -757,8 +545,8 @@ load('./mat/cascade_hac_lac.mat', 
      -

      1.6.3 Load the simulation results

      +
      +

      1.6.3 Load the simulation results

      n_av = 4;
      @@ -805,8 +593,8 @@ Ts = t(2)-t(1);
       

      1.7 Compliance of the nano-hexapod

      -
      -

      1.7.1 Identification

      +
      +

      1.7.1 Identification

      Let’s identify the Compliance of the NASS: @@ -942,12 +730,12 @@ Gc_pz.OutputName = {'Ex', -

      1.8 Robustness to Payload Variability

      +
      +

      1.8 Robustness to Payload Variability

      -
      -

      1.8.1 Initialization

      +
      +

      1.8.1 Initialization

      Let’s change the payload mass, and see if the controller design for a payload mass of 1 still gives good performance. @@ -1174,8 +962,8 @@ Kp = Kp.*diag(1./dia

      -
      -

      1.8.5 Simulation

      +
      +

      1.8.5 Simulation

      load('mat/conf_simulink.mat');
      @@ -1210,8 +998,8 @@ save('./mat/cascade_hac_lac.mat', 2 Other analysis
       
      -
      -

      2.1 Robustness to Payload Variability

      +
      +

      2.1 Robustness to Payload Variability

      • [ ] For 3/masses (1kg, 10kg, 50kg), plot each of the 3 plants
      • @@ -1230,8 +1018,8 @@ save('./mat/cascade_hac_lac.mat', -

        2.2.1 Identification

        +
        +

        2.2.1 Identification

        initializeController('type', 'hac-iff');
        @@ -1346,8 +1134,8 @@ We can do that in two different ways:
         
        -
        -

        2.3.1 Identification

        +
        +

        2.3.1 Identification

        initializeController('type', 'hac-iff');
        @@ -1435,8 +1223,8 @@ G_dvf.OutputName = {'Dlm1', 
        -

        2.4.2 Obtained Plant

        +
        +

        2.4.2 Obtained Plant

        2.4.3 Controller

        @@ -1503,7 +1291,7 @@ DVF can be used instead of IFF.

        Author: Dehaeze Thomas

        -

        Created: 2020-04-01 mer. 16:16

        +

        Created: 2020-04-17 ven. 09:35

        diff --git a/docs/disturbances.html b/docs/disturbances.html index 68fc55f..24a13e2 100644 --- a/docs/disturbances.html +++ b/docs/disturbances.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Identification of the disturbances - - - - - - - - + + + + - +
        @@ -393,7 +181,6 @@ io(io_i) = linio([mdl, '/Disturbances'], 1, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute motion - Granite io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute Motion - Hexapod -% io(io_i) = linio([mdl, '/Vm'], 1, 'openoutput'); io_i = io_i + 1; % Relative Velocity hexapod/granite % Run the linearization G = linearize(mdl, io, 0); @@ -493,6 +280,18 @@ tyx = load('./mat/pxe_ty_r.mat', +
        f0s = [50, 100, 150, 200, 250, 350, 450];
        +for f0 = f0s
        +    i = find(gm.f > f0-0.5 & gm.f < f0+0.5);
        +    gm.psd_gm(i) = linspace(gm.psd_gm(i(1)), gm.psd_gm(i(end)), length(i));
        +end
        +
        +
        +

        We now compute the relative velocity between the hexapod and the granite due to ground motion.

        @@ -768,7 +567,7 @@ Let’s now compare the effect of those perturbations on the position error

        Author: Dehaeze Thomas

        -

        Created: 2020-03-17 mar. 17:31

        +

        Created: 2020-04-17 ven. 09:35

        diff --git a/docs/experiments.html b/docs/experiments.html index c9eb0bc..1a638c2 100644 --- a/docs/experiments.html +++ b/docs/experiments.html @@ -4,227 +4,17 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Simulation of Scientific Experiments - - - - - - - + + + +
      @@ -291,8 +88,8 @@ The document in organized as follow:
    • In section 1 the Simscape model is initialized
    • In section 2 a tomography experiment is performed where the sample is aligned with the rotation axis. No disturbance is included
    • In section 3, the same is done but with disturbance included
    • -
    • In section 4 the micro-hexapod translate the sample such that its center of mass is no longer aligned with the rotation axis. No disturbance is included
    • -
    • In section 5, scans with the translation stage are simulated with no perturbation included
    • +
    • In section 5 the micro-hexapod translate the sample such that its center of mass is no longer aligned with the rotation axis. No disturbance is included
    • +
    • In section 6, scans with the translation stage are simulated with no perturbation included
    • @@ -329,15 +126,6 @@ initializeSample('mass', 1);
      -

      -We initialize the reference path for all the stages. -All stage is set to its zero position except the Spindle which is rotating at 60rpm. -

      -
      -
      initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
      -
      -
      -

      No controller is used (Open Loop).

      @@ -347,7 +135,7 @@ No controller is used (Open Loop).

      -And we put some gravity. +We don’t gravity.

      initializeSimscapeConfiguration('gravity', false);
      @@ -375,8 +163,8 @@ In this section, a tomography experiment is performed with the sample aligned wi
       No disturbance is included.
       

      -
      -

      2.1 Simulation Setup

      +
      +

      2.1 Simulation Setup

      And we initialize the disturbances to be equal to zero. @@ -393,6 +181,15 @@ And we initialize the disturbances to be equal to zero.

      +

      +We initialize the reference path for all the stages. +All stage is set to its zero position except the Spindle which is rotating at 60rpm. +

      +
      +
      initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
      +
      +
      +

      We simulate the model.

      @@ -412,8 +209,8 @@ save('./mat/experiment_tomography.mat',
      -
      -

      2.2 Analysis

      +
      +

      2.2 Analysis

      load('./mat/experiment_tomography.mat', 'tomo_align_no_dist');
      @@ -429,8 +226,8 @@ save('./mat/experiment_tomography.mat', 
       
      -
      -

      2.3 Conclusion

      +
      +

      2.3 Conclusion

      @@ -454,8 +251,8 @@ In this section, we also perform a tomography experiment with the sample’s However this time, we include perturbations such as ground motion and stage vibrations.

      -
      -

      3.1 Simulation Setup

      +
      +

      3.1 Simulation Setup

      We now activate the disturbances. @@ -465,13 +262,22 @@ We now activate the disturbances. 'Dwx', true, ... % Ground Motion - X direction 'Dwy', true, ... % Ground Motion - Y direction 'Dwz', true, ... % Ground Motion - Z direction - 'Fty_x', true, ... % Translation Stage - X direction - 'Fty_z', true, ... % Translation Stage - Z direction + 'Fty_x', false, ... % Translation Stage - X direction + 'Fty_z', false, ... % Translation Stage - Z direction 'Frz_z', true ... % Spindle - Z direction );

      +

      +We initialize the reference path for all the stages. +All stage is set to its zero position except the Spindle which is rotating at 60rpm. +

      +
      +
      initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
      +
      +
      +

      We simulate the model.

      @@ -491,8 +297,8 @@ save('./mat/experiment_tomography.mat',
      -
      -

      3.2 Analysis

      +
      +

      3.2 Analysis

      load('./mat/experiment_tomography.mat', 'tomo_align_dist', 'tomo_align_no_dist');
      @@ -508,12 +314,12 @@ save('./mat/experiment_tomography.mat', 
       
      -
      -

      3.3 Conclusion

      +
      +

      3.3 Conclusion

      -Error motion is what expected from the disturbance measurements. +Here, no vibration is included in the X and Y directions.

      @@ -521,10 +327,90 @@ Error motion is what expected from the disturbance measurements.
      -
      -

      4 Tomography when the micro-hexapod is not centered

      +
      +

      4 Tomography Experiment with Ty raster scans

      + +

      +

      +In this section, we also perform a tomography experiment with scans of the Translation stage. +All the perturbations are included. +

      +
      +
      +

      4.1 Simulation Setup

      +
      +

      +We now activate the disturbances. +

      +
      +
      initializeDisturbances(...
      +    'Dwx', true, ... % Ground Motion - X direction
      +    'Dwy', true, ... % Ground Motion - Y direction
      +    'Dwz', true, ... % Ground Motion - Z direction
      +    'Fty_x', true, ... % Translation Stage - X direction
      +    'Fty_z', true, ... % Translation Stage - Z direction
      +    'Frz_z', true  ... % Spindle - Z direction
      +    );
      +
      +
      + +

      +We initialize the reference path for all the stages. +The Spindle which is rotating at 60rpm and the translation stage not moving as it would take a long time to simulate. +However, vibrations of the Ty stage are included. +

      +
      +
      initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
      +
      +
      + +

      +We simulate the model. +

      +
      +
      sim('nass_model');
      +
      +
      + +

      +And we save the obtained data. +

      +
      +
      scans_rz_align_dist = simout;
      +save('./mat/experiment_tomography.mat', 'scans_rz_align_dist', '-append');
      +
      +
      +
      +
      + +
      +

      4.2 Analysis

      +
      +
      +
      load('./mat/experiment_tomography.mat', 'scans_rz_align_dist');
      +
      +
      + + +
      +

      exp_scans_rz_dist.png +

      +

      Figure 3: X-Y-Z translations and rotations of the sample w.r.t. the granite when performing tomography experiment and scans with the translation stage at the same time

      +
      +
      +
      + +
      +

      4.3 Conclusion

      +
      +
      + +
      +

      5 Tomography when the micro-hexapod is not centered

      +
      +

      @@ -536,9 +422,9 @@ This is due to the fact that the micro-hexapod has performed some displacement. No disturbances are included.

      -
      -

      4.1 Simulation Setup

      -
      +
      +

      5.1 Simulation Setup

      +

      We first set the wanted translation of the Micro Hexapod.

      @@ -597,9 +483,9 @@ save('./mat/experiment_tomography.mat',
      -
      -

      4.2 Analysis

      -
      +
      +

      5.2 Analysis

      +
      load('./mat/experiment_tomography.mat', 'tomo_not_align', 'tomo_align_no_dist');
       
      @@ -609,14 +495,14 @@ save('./mat/experiment_tomography.mat',

      exp_tomo_offset.png

      -

      Figure 3: X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

      +

      Figure 4: X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

      -
      -

      4.3 Conclusion

      -
      +
      +

      5.3 Conclusion

      +

      The main motion error are 1Hz X-Y translations and constant Ry error. @@ -629,8 +515,8 @@ This is mainly due to finite stiffness of the elements.

      -

      5 Raster Scans with the translation stage

      -
      +

      6 Raster Scans with the translation stage

      +

      @@ -638,9 +524,9 @@ This is mainly due to finite stiffness of the elements. In this section, scans with the translation stage are performed.

      -
      -

      5.1 Simulation Setup

      -
      +
      +

      6.1 Simulation Setup

      +

      We initialize the stages.

      @@ -725,9 +611,9 @@ save('./mat/experiment_tomography.mat',
      -
      -

      5.2 Analysis

      -
      +
      +

      6.2 Analysis

      +
      load('./mat/experiment_tomography.mat', 'ty_scan_triangle', 'ty_scan_sinus');
       
      @@ -737,14 +623,14 @@ save('./mat/experiment_tomography.mat',

      exp_ty_scan.png

      -

      Figure 4: X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

      +

      Figure 5: X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (png, pdf)

      -
      -

      5.3 Conclusion

      -
      +
      +

      6.3 Conclusion

      +

      Scans with the translation stage induces some errors in the Y direction and Rx translations. @@ -762,7 +648,7 @@ Thus, this should be preferred.

      Author: Dehaeze Thomas

      -

      Created: 2020-03-17 mar. 12:32

      +

      Created: 2020-04-17 ven. 10:25

      diff --git a/docs/figs/exp_scans_rz_dist.pdf b/docs/figs/exp_scans_rz_dist.pdf new file mode 100644 index 0000000..de4fbc9 Binary files /dev/null and b/docs/figs/exp_scans_rz_dist.pdf differ diff --git a/docs/figs/exp_scans_rz_dist.png b/docs/figs/exp_scans_rz_dist.png new file mode 100644 index 0000000..f424471 Binary files /dev/null and b/docs/figs/exp_scans_rz_dist.png differ diff --git a/docs/figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf b/docs/figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf index 5ca3322..427ea2b 100644 --- a/docs/figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf +++ b/docs/figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf @@ -3,7 +3,7 @@ 1 0 obj << /Producer (Apache FOP Version 2.4.0-SNAPSHOT: PDFDocumentGraphics2D) -/CreationDate (D:20200415181200+02'00') +/CreationDate (D:20200417102501+02'00') >> endobj 2 0 obj @@ -2061,274 +2061,284 @@ endobj 344 0 obj << /Length 345 0 R /Filter /FlateDecode >> stream -xœÄ½É®%Ër8¿_q~àmzß…DŠ" @ƒ94ªIÞÔï×Zæ½ï¸™¾O¤^5Ìvv¸…7æËl™›ÿ¯?ô—ÂÿóþkÃ×ÿý·?ÔK/OÇ¿ðøýaåŸöë/&ºW ÿ¯ãóÊ9ë”åê¯ûC}ýÓF¹/§Ã×ßþpÚÈ¿þ*ÿŠÿ Pþñïüëÿׯ¿üïþéŸñþÿ ’Ê …Æþ‡þ²ÿ?þð_ÿõóõÿþ¡_Vþ÷õÿA›ÿö‡ þe|ŽÖk]UZ‰"ÿ|S SÕp¹©1tЛ -J ¥W09%“šË£#%ìí¾hcñ·>>÷[uG­Úœ^)kçRŽµùåÑ}=ü™ &”Ï­–G÷õ‡zèWL&›äzÌîëÏôˆáe¢7 -ÿ_Óc~t_t¨>>z•¼ó]éÑ}=ò™!¾rTÆyÛçÇüè¾XÿgŠ¸WˆÎÆè\Wdzt È}ÛYÁ0„h´Îº+2=:PÄœ)âÌKù¤­Ï¹)2?:PäÌ‚ZËV• fÌÕùÑ"‡FÕ¸WvÙ'7ŒÙüè@‘C«ªóË9‚S}ŽÌ94«šŸ¯£Ó¹¯šùÑ"‡vUë—¶![c»}Ÿ(rhXU|%§•µ£GæGŠZV…q°6å”mWdztÂ-«2òÐuE¦GŠœYV“C‹Ù¸TY(rfY±Û¿Œ°®Ù‘åÑ"g–Õ„ôÒ:˜¨;J\(rfYaÈ_ÈÃc•tE¦GŠœYVãñù*+w°<:Pä̲ï^V%;Ý{d~t È™e5𛔊Ѩì»"Ó£EÎ,+–(~¢<6¸¾jæGŠœYVcÒË‘ -Îô¡™x–g–Õh´º:WË£E-+¶ZWJ[£»"Ó£E-«òôaf÷jyt È¡eUšN¦fß}—GŠœYV˜ñ—ƒ7}j›Þòè@‘3Ë -8øÒ«ƒµ<:Pä̲‰zxSØâbWdzt È™eÕ)½þçƒkÖòè@‘3˪áù{¸uX#m².9³¬:°UÌÌ›YDÏÎ,«ÆVëàÒ)ešY(rfY5v8xS µOÖùÑ"g–U;~þâé-9³¬Ú©WX=½åÑ"‡–ÕÆ—…[\K,9´¬ã·Û~ï‘ùÑ"‡–®&SJ÷å;?:PäвÂÑô¦têm~t È™eÅNàLùÐíÙüä@3»š =ïl[ºÓƒ&à̦¦HΩ Ú,Ÿ¨qfQ“}%e}RWczr Æ™=MêåW¯j~r Æ™5@Ò™Ÿ¨qfKcë„#bÎ7»ù«ô „¥|~é}-Ôjç_ݯ–4ÖV¿’]ÂrË£›j¨µeó'-_ñÔOµ#“ª“àO´ò3š¿|‹Ã}C{¢‚|ñú$½œ¢÷ƒh¿ÚÓ?áû€É^i6ò¿kWaOqØ“Â+*t||Óö½37P¿Iúè›% ->0Ã1õíEƒ&SÁ÷±¼Œ ˜Æ -†M »`§÷OÌþ•“·Ž»œ¡hZ“îÏ;ñF ™tÀ§¿·à¿¥…_pJC¾ú†ð--ÀÞ‡põ ñ[Z°øKx´€ï-¤oiëŠËå¡^ʯì€$ÃEù;/ë½WƒðŸ¾ãýË óöソÿŽ^ë5lìEÿð x—½}ÕEÿù;À–AŸÚ^uÑ?~GðÍ’…Ã|5‰þËÚÀSñÌøÅfFjÞ£ñÍ­àgÅ—ÓÜIйŸ¸7T^ÆÔö‘»q£Ñ7cjû7¸NžSiàñßÐõ³ƒ·´ýd×_8wKÛ¿ÕËö­Ïgݽ·”שåOr_侮g»Î*|özK…-ÑuQá<ãõŽ -{Žë¬ÂÉ®·TØÒ[Îó\侮g¶Î*|âzK…-§uQá<¹õ– -[6ë¢ÂyZë'Ûï¬ÂïÙ~ßRig>È©½£ÂžD;«ðA6íöôÙY…òh侮'ÎÎ*|A{K…-evQááñEÞãŸð*fÿä‹~R@â×[4êgM¾CO, õÞ¸*†ñKÓÁkË“±9¾µèµ WÔçÓá‡ï·IF’ï›?lÐxÎocìwN‡¶øƒAÓêtÐt4Òâu¥ŒÏí‡ïbÐ~Øà#ƒöÃ4hW-îU`þ¢¤Š Ë4à ܦ,Ø0mhÇåì›R´%)'Úø€Ù»æ}¿£I‰›Çâ¢MûL›6°Í˜õU›î­¯Ã#}–ñÝö]‰‹)%ðW߬+Uù€yŽ]øÅb=þ'Öýûû~ÖGÀî|Ñ ÿð{ÆÂù—MîzÞÿR¦oÐ!’%Íéj|O”VÏ­Öêei·£“¿unLã-S<à5a2€LSòщ,¥à*£YŸXä_YyË—•kÙzJìA¨â¡f°)ÖqqqL:Ìê“-³À±Ã²Õܾð' L _V.KPµ Iã”ø»\&2dpj¡ T£qÒ4Tº,Æ>YÆ0°FKÆ ºd¦$gÎMŸ­äZYoÆ46 ¯0ØÚ¬wUÆáÂðò4³Î@‚±ÈlŸâ†³³X³dÉQklüIóˆ4:Z+˜Œú37¦?eá€i$‡þÃzÕØs¢ÈÌ ŒqQ3Œ¥a$–"ù»ºÊ²KÑbºˆ,ã¥Î–C¿·uc0Ù±üÐ5õ•ÀqÐ%Á#‘4Åi“Ê@Ö×e‘óM+™+>³d(zß°W Æ48á"1£ð(2™MaJøòèå¶!Ë)™70ÓÎÉ,g ¡­EÊB€z67YÄŒ•ÈböNÂè|¬SÊRÄЙh«,a»3Žõí(ã¤Ë€;Ö0eØd"¾¹ÉjØ5Sd&`@³|2fa[ß" W¹ÌºÀ,!|ƒãôaYHŽn,ZúiíC¦-k5–¸¨Ð‰0§"ÃÀDÌ©Òca² y… e` Ëh3Hß ë³Jsq2áÕ»ÉÐ ˜dN±ÝbrÜË+ÓdN2‹beªŒd7ú‰²ÀÍ]R†:K“3É›’Yl7~«`´cj¡L:ìüÝq¯å¬ IBT”aOž%•&.­šÄ ™°Û ePê#Dê ¿B#¶È6Ž:!!ëÆKdµº'E0£›dÆrQÄâ+ûDݬ‰ˆ`É•¹_ÂHDS4áØ8ž"ë&OdØ¥¼ÖåÜj¸Aºú;ð¦Éº9¤ +ÀÒVQbàZŠÁ©H$:LZ‘ùa))Ã$t˜d¹Ê°©&š" ¾nÑ+ -TƒQuNniX³‘— ãU/ï±&‚IUÖ-,¡Oýwù]|TЉ kk«@ Ⱥý¥,'|xŽ¹Êˆ%@ÀÄC ¢ }Ä4L³ä$*˜æT–d;p¤¥fvȹɺÙ†¼€PKw9Â.GSÒa(°Ëæ_6±è"LÄ«›¥­2‡.5ÂèV k/² `^ʲƒ óÖ/Ä"K´p‘)ë;eÀ1Øÿ‹½Á^ƒÿ -M‚¬ -¯LIß#(ƒ‚É4M4‡z*/2X%ô¦0±V€dÝ?(ÃtÀžªÎœ–)Ý53‹ÊVF€Ö¶‘aý¹P–2¡P‚O1Ì,Zl²¶íP„å¨c9q@QÊŠY¶åg‰ÅT«íÆÕ·$‘AÍr\ƒ"¯rõg«0S”ÜØ­(ËØ4LYؼ°qáCê×HÀk+Ûd}'Y²-¹²Èœl%ï4/­†¸ºùó#Wˆ}ÖvRú2G³L•õPd0&P°Š`á²Dp(‚'„]†%Ž½‘"|€fµæ*s˜ûŽ> e€‹ØÖêűoR†õ„/ƒ{—ø'6‰ ›¹ŒD–ÆžJœ3@F—ª Ó˜…¢Ë×e˜lP®Êú~ká.ë8XÕòy¾&r2E†%ä‚OMÖ÷bÊ,¦Zª2¬tKÃ*2Lylzµóóا)‹ø#ž  ;ÖÖM´"ËäÜ’¸¹”µ=œþú']–"Dp)‹ǺxZ X•µý®Æˆ¬`ô ÓÂñK× ß‰Ý¾ÉúÞoÂÈÅPdS 02ö [겎 ¬ D—çPF"(‚”ÈÚÉ#8ÑXMB§Í¬È°nyâkcí(ƒY&¿vaí è¢PtFas€³.)³3kGQ$NÑ¡0sjÖ€ž Ÿ…Ñ›X;Êà6á«,ÎÚ@aº¸ Y;ÊæHÑÌÚñ‘àxŒ6±vY2ˆ%JÁiÇ'°x®@ž…´£ÌabcéË‹&ÒŽ"æPÃ-?›H;Kؤ -ÖÿëÊÙQ„ .\qvüh>,(wæì)ÅÒh6váìø}÷Ò„Èìø#ô -×,œJ¸L”ã쨴 Ý6ÏœuÎtÚuqãgÎNœYøpa -e6qv¢ÐQTO¤›ÆrÂ.‘ž™´ãûñÕ©Ex÷‚¥'ããßI;¾6Ði)ý4svâÝrF—äÿ…³³L‡ ÁB)Ê ÎŽïø롉™´«ïкWgÇ¿ƒe1-n?svta-gS˜Ž™³£›‡u]KíœA †2“…ÑÄÙ‘ÙÀO ŽúëÊÙI4ý §¬ñycba†µô6D6qv Æ®DxgÎNBÁ–ÅBŠÛ5sv%lë1fÅš9;nÐ VBYÕdÖc†¿ì6…›8;nµô¬BÙqÖŽEx˜¥ËfÖ®„5¼²ðÆÚÉŽ"ö‡Bk ÒŽ©ñÒŽ{‘Æž¨B™}3i'‘¾/© ¨…´“= ;y=©¼vÄ–mþ¯+i'2Z K{q€è£\¥y×ÇHà¥ÞH;‰,ÂÊäKŸI»ZŒÝEJïÄüiÇ4øˆÈ&ÒN¢x€ÚÀj¹ÊFð‘<“ -ÙC1svÁàÒ“vU6bˆ «Á©ÐÖ3g'a5UT%ß&ÎŽ²H5Úzâì$r¦F8sâì$p†ÏæUF"š8;Ê1 -Ï:sv9KðpBafÎNbgØâu¨$Úàì(2mñýuåì(æ1+´ÖÌÙ1”U\ê²ßÍœ„‚T$ûl«lD½HôÍpâì ç´QÌèÌÙ1ÀP׈Ņ³ãF  ¼Pv™l‘+!ÿn”÷r(ÛŒïLÙ1øÔÒÀ‡€ûð+(ïÌX(©Vï$J•Gðå¢Ìå¥FIÑ<ØÓP*Á3²‚Ô(uØŠ’¼µ€TÈÈØ&ýŽQ¹C1oLl5ÒûoDÉQ£D]L­V±BTú›09pÖÒDŒ´bíºò• DtÔ%º´ÔÈ?ÃÖe›˜*e<üV!ù P)‚…!O¡+Bå#| sF¼Ì¡R–àì¤èv„ŠõKò€îÝB5r³+>¼¦(Í•90š{¾®ÍM•90†ÿË;@eš >‡AF½TæxZ¶LÿŸFÓžKïðT õ(d÷;¤bláJÚÅNàßá)‡7cES½àSGS;Qõ >udf0lá f|Êš xž}ý¨Ÿ²Å’QãÞ*à3ß×ó@eì¿…Mw€Šm#ìU,¾Ât,Æl¨´ÀšQâw|Ê@Ï>•°ß>Í0d­ïW|ê^’GPY©Ÿ2¼ïH/Úw|JDÏd'ÝòÆ&|š˜§ (V ÑŠOLó!ò[NYa®{Á ŸÂ¸R¨r}çB Š {ç™ÞÔH˜*†¢1b/U‰é]¶T¶Jëê7€Jˆ‘0­c!È€š2Æ4·MΕ,ü£‹O;T!ÒxÒ£¢ö Bæ¢iAü Ê…¶ÀR¡~ P‰h Ñ Â$kl„¾ÄÓW€JKhõ  xБlfp¨žV¤Òš3BpkÌ»ow„J‚@a0IÞª0°&•Îªð -©Òd+@%\al0•¸ñ P…PPÄÕ´¸  J”®Â J|‹‰Í ¼NU¢ütWR&€*Aþ„ié‹ó6T†Ïñ##ÇÎ6€*áb–M+G­€*q>X/ªºT[¯¾G‰ˆLUpyƒ½›*Ež.Qµò3B%¤ÂÊ—€ã†PmÁˆbµd´KÀ‡h‹á5à,žpþ’;¤ý/á-9Æåa±ÊpÄ[òS­V¼EY4Œnꆷä=q‰Ÿ­€‹2ÒÅÅ€¬€Ë¡«±¼q&§†—lA\†Ù]x¤³@.#)Ü~Þ!vf…‘`ìä²\|ýÎõrYîèRó=*ÈLb¬Ü–ª÷ºèƪøº˜t¥ bî +“úâ".oZ@½£ÄÜ„*›@y]8õ ñ[XpÚÉÖ° Y>罺 - ÒÿwBôjù„¥S éÄ|ö0¤íKXPSM¬žšG¸à.!lm𠋃·à.‚¶V%0¾à.ÀXk_‡lÅ]–i±õTðŽ»Óª]ˆ5†1ã.ÇÔiÙhÞp—c6˜*çr+î"J„3%1dÁ]Žç’`xSÙÖWÜUÑ[º†7ÜÅ=69¦23fÜ…­šÃ€wå7Üå‰Z`j–ÀŠ»1mÅO îbÑ ¡ÂÇl¸ ïT•€yÇ]>‹‹é¯p׬Ɇ»X!IW_cÅ]Üð•íi‹ Ö "ýŽ»HQ˜ýúuî¢ÓK`|Ç]%™Å¼åò îòìg}´äzˆ~Ç]Jz8ß°Õ„»¢äàß-f8Åy€˜Á–o_p—–ЂÁ+î"‡ˆ¯q6½ã.¦(„ÄlÓwÜEG'9ÉyÃ]Ì; 'Üe_NË -gÜÅhú$Õ³ - î"ç§û­¸‹5Q²e%‚wÜ%þwZw1ÃË.üŽ»¸eæV|jÃ]X˜2-ĸÄyÙ0°M.nó„:Û¬* t…] d`’×Låv)RÞš9)ï¸ sË\Ÿwi¦mzô~xÃ]0´’eô†»˜©0‰zÐpÂ]<¦%òw±ž§wæ w™‘ò†»,“Ît©…ºÁ.¦–2;o°‹±¬¤ ^À.î¾X'ÊíAalÉÄëwÔÅ.R¦“uñþ³~Ú -»˜iZS$þº‰ÿ@Š¶øòK`ØË[YûÝ J €¤g±‡K`À1ÀX†Ô‚†#0ÈôN¯™TÞ‰ÅÇsÀ?€PÇ7½Óµì}ióƒÿ@B¡üãßÿø×;/ÿ»úgŸ¾þí?4µ2í¨þ²[š­fÀ”‚½°¶ê´<º_úŸz䪾éàî5IB’Ü InZÌŽ´€aºÛm8þÖ‡è Y}Ôìv+Ûÿä2*bÎYï&E>¸’€ŠØCE– -Š"çPw¦ÈzO(òÁõTÄ*²ÜVP9¿¤€Š„3EÖ; D‘®* "ñP‘åæ‚¢Èù…Tä¾ -Š,÷Eί- "ùL‘õ -Q䃛 H<³£ÛE¢È÷P‘C˺^' Š|p‹9´¬ë¥¢Èw P‘C˺^-P9¿Q€ŠZÖõ‚¢Èù½Täв®× ˆ"Ü.@E-ëzÙ@QäüŽ*rhY×+Š"ç7 P‘3˺]<@E>¹o€ŠœYÖíúQäƒ[ H:³¬Û%¢ÈwP‘3˺]EP9¿€ŠœYÖíBQäƒ{¨È™eÝ®%(ŠœßF@EÎ,ëv9AQäüN*rfY·+ -D‘n& "g–u»3@ùàª*rfY·›D‘.  "‡–u½? (r~m9´¬ë-¢È—@‘|hY×»Š"çWP‘3˺Ý(@E>¹H€ŠœYÖí^¢ÈùuTä̲n· EÎ/ "g–u»c@ùàj*rfY·›D‘. "g–u»o@ùàš*rfY·[D‘. "g–u»{@ùàÊ*rfY·Š"ç@l܇š,MÎïMmëzhòÁ5¢É¡q]¯%(šœßF šZ×õjÑäƒD“CóºÞ š|p1€hrf_׋¨È÷ˆgæu¹/@Ô8¾&@´8³­ëµTãƒÛD3ÓºÞ zœ_ zœYÖõÑãüîê¡Ïìêz—€‡çWˆgV5¶n8âêXõeXjw,7öJŒêƒ‹zE{ G»¯8·WßIËî åíV™²ƒ<~™ÌýT;2¯:9þD+?#Ÿ™™àY]#H³½£ÂžW;«ðA‚í-¶ŒÚE…óÔÚ[*l¹´‹ -çIµwTسhg>H§½¥Â–?»¨pžH{K…-svQá<…öŽg°çÌN*|’<{G…=[vVჴÙ;*ìy²³ -$ÌÞRaË]T8O•½£Âž;«ðA’ì-¶¬ØE…óôØ[*lù°‹ -牱·Üõ-vVეأˆÁÒö³ƒ·ÄÛ¹í2p侮§ÜÎ*|{{K…-ÙvQá<ëöŽ -{ší¬Âù¶·TØlÎ3mï°öÔÚI…Orlo©°%Õ.*œg×ÞRaK§]T8Ï«½£ÂžH;«ðAFíöÚY…ri侮'ÏÎ*|E{G…=mvVáƒüÙ;*ì ³³ -dÎÞRaK•]T8Ï™½¥Â–#»¨pž,{+¼¿%ÇÎ*|%{K…-+vQá<=ö’cQá·DÚß2rg>Hͽ£ÂžŠ;«ðANî öÜIƒ’qï(°&ßÎígáÞh~ϺÚÿ ýöŽ[ºí¬ÀyÞí¶<ÛYó„Û; ˆ[‚í¤À™¶w3 ×vλØ]¦Wò ÅwQùfiù7P|5oVž§ø.ªÝl*ËŠÓˆÊÛÍ“"ÂÀ%ù?Áåéƒ)Ë -ð½|o mw:BåÆ"kŠÌN>"c«•Žò~\˜(2¯&h‘…©£( !gS:çqûªÈ°yóvbÊX ht"¯xæÅïrÃj`2SÆò¶R‘1þ£êïìÜÁŒÝ«l}ù>æ!ÕÛP)Âúc )+"?÷=ïµ5øÉ]Ã^Ë[Mñ¹ºüα²]*oLÓ°h^üŒÿS&pȼœS«ˆ2x„ -ó^F:ò›¸Ê•˜QÀTí—Œj8±ÎÀ‹örÛlˆvO¹{öÖ–W9¹-ÔðWxgµÆ(Yé'Ìç1ÖY.~O1§ò»0îý$ÇÛb¬‘»S¯›nóÀhþ¡Ew¨òÎ4.ðä]×)aÉ„2¹úÙ¼’­e‡‚ SM&“¼ëZ½¢W6‡XdzÌãyݬ.H™—j’• ¼ Ö8Se}nñþl&qE)³¼ӨĒs˜0XLÊâ-"scÞ åS¬”{`÷¶[až^¼-¼\5RS’Wrgü<íPe¼ô·&dŒv€m)ÝÉûzÛt5‰åR5z0•OOré¯%†¤ ýg³–›vaP¦ëÁ!Ã( µäªŒ—þ* *2Lî”eÕ§¹ˆ°¦dß HË¥¿P׋Ì[aa¶(ëK@dv9•Î{~Û¥¿"K¼Ù^ò$B¶cyP†?äÝݺÊú¥¿”Etz´üÎ[Ìi a~¢-‹8{¹ôדa04D0_X‘MÖ×e¼× £¼2°²“Uš•ç ƒÞœªå¢ÀçcPd}Q†-T‡Òy—JsŽŒºU4p™g$.%ØSeØU0{CÑÄ£suqð)˜ ² X ¾· > ±q¾³þ,Lp2Xnî¶Êœì)º4—ø/­«h =Š°©8]P d0ø˜Ú´øÁ"ÆìÊRµqB”ñþgs•±Î¦¨‰5 +eÛïB„›Žùš¸Ž«,hü(ˆšŽ #1I Êz¤ ž+¼²IübD¤…©íb• dIYÂî´¯2B&xƒ¥=# jÒ„:)ƒgil¶U36ÕÄý‡ àìu¬ô*ˆ”Ùg˜*p J{0?˜ÕÌWì±2¦~CžÐ*e‰9ŒÚT¦"6 UtAŸÀÆÇTeÊRÀ‘¯2blYO"Ãò$„ Ì© æR{‰2¬´bk`µº‘n²¼”áotn¦<2,Q$ØcÚ95c‘S.2-›öÌòåT¨ÓTÙΔ%‹ñ*“š;‹u(ïäóæ÷@6@5dŒ»*‹.a‹Ñåë`ñ—tÓenï_@XÞe&9úöÀ‚V“2Iw/«²Æ!ÿê‚ÄÁÐbÃ.¿Â6Å^°UÖq:D‰t]jm¥fÃ$¬Ö÷xg&Y¢o™sù6vçœì˜è—v 2M6À=C`ހ̕™:Ó·-Èð÷ß„ìýØ60:¦ªDGFv^• §€Q|N ¬n‘–@ˆe<•ó>_¢æ/lvpÔµ«Cƒwä6Ñ!ƒqc._ûÕð%?®ÚÏ",1åà'£°©…ù)~FÀbÁÜE·”æ0ˆ0ø¢$§s±RZj7eÉèX¸.˜N®Ê°_&8P%blÝ®@Ȇ9ƒJ ©Ê#àyÐa€ ュëÚ;‡ïü_£UØœ1+a¤r’sÌ0Èè‰:ark j‚±-ndØ“1ul‘y˹›Û+»ËÃkY†8ÆöJ ”V²æÈtà9ÞÒ^9Ü¡‰Z}s@`‚azDÍH+©Š†§WÑbi« &*(UE˜œ0ѶŠ†EYûÒ"ƒ!ð–,È´á?4M†ƒ™Z6Æ*“TaFx)ó—¯KÃûŠòolweqôP¹ѬÇÌ Ö]U%M®™P5™¡ý3!‰³)D¬åmAaeÝkË8Ä—ºö³äøŸ@RèXŒ„99z¡è²jüØ=óõßÎÞ1 w#1"_Ù»ò;¼’µ±°w"#\Qâ]’½“G0m0º…¡›P1eäFC,ŒÅÌÞ‰ ¢ld™-ìpî‹G•Må¹äU˜îC«…½£ ¯$/VdqVpæ]&AÚ™½£,f›²,ì^ ÂyågyGú<ŒÝÈ;ÊãdUÎ䑳,‹!Ë„†Ž¼+vïkcï(Ã&­\9¹°w”ÁZexY"›Ù;Ê a¼$и°w؈ñmÔ×ÆÞQ ¦Ë;ÃÜQÄ+°ÓÅ¥XØ;¬âx¸U…-œÙ;éJøΪmbïÄEêÈ‚ÎòŽ>+6 /ïXÉ;ºže)ãLÞYÆ,ÐCÜT¾6òû<þ@ß¡p…ƒ½£ë‰ÞŨØ7öŽgÖé°–?í™e Ð8‰f3u§„!xOöµQw–XÞcË-kdfî,qw˜Î¹È&掲DŸÛ”Ž˜™;K¬‹íŽea -'æŽn1L<ú±2Œiv‹¤Î€Ue~ÌÌÝJ <ìäªÐ^sG&UIΙ¹Èìx×—iìÜäÌ1+›ÿÚ˜;B<Ä -ÏÌeäl‡ sW -*äÁøùÙ‘°$¦Ñsc>rTIyU鹉ºC;Øöà -`[¨;Âz±Ä.Ô!ˆ^ÛBÝYÎ8ßQ对“}X‘ê-?›˜;Ùqx7Én´0wÜq°¿)S9ö™¹³Blc@u.œÓÄÜQFòÁ¹bQgæËúåTúã×ÆÜYòÑhœ@økeî¸Áa'ƒÏT8ĉ¸³ CsM6–;ø7‡ÂºÎÄT¯ ¼Þ©Œ+wmî• Z—¿žx;¼âÅSºøÀ¢ÛÄÛI)82•ªXx;§¸àÅD—þx;Gk·ÌÖä‹™·sB©`>—ã& o¯36÷\™­‰·ã–« ÙÄÛ9ZH¬E@_e-ªGQ€ëÜb[3oGYF˾UÖ£sNaó,#VdoGûK">]x;Š€W#ß#¢‰·sd*±K‰øͼ##… ï+a9Ñv¼‹趤¡þu¥íxA"ýXÅò»‰¶Ã„£I”X•µELÆS% ƒÔðü ÏŸq>”ÈñmèÄUà&(àñ`e~ =E^íÇÝ—¢ DOò(K˜ã =Q†JÂ’ '>‚«æ³Ë}L½ì7ô™ûè ¿ §H?ë7•\ú*@B8*%O`AO4RfÌ[îepváÓ° §HönRñUWôTÂâlzƒOÜá5Ù\–ߟ ódzC¡Ûgø+ºÁ'<‚ýô-QjFOm…ñÈ…c_Ñ·_¬Ì–4± §ÈÀ‰ÕŒÎ¿¡§(ñ¿à³{Ë}2RqJs¸wôyÔÝäd‰,èI2* %kbFOF ¬D2ÌŽžL6ò¹A$»ò‘øðÄqÛáÙÂPÿî >1¤ã*£º¡'Ïüj ÿ·Ü'8&ïA—|ž¨º®äŸ |"ÿ©aÝ~J0FËZñC½€vÝ'WšY@ ³ Èö‡šx=ƒÒ“Ž'8‹[@ Œ>6O–Šo EŒmd. Û!fZ0Þµ„m*ú’-¿£Ã7‘ȸ@-–¥@l ,í f4´tδäS¼†Uëu˜;háÞ…ýk$¼ƒnJ9Wr,™é[Ѹ`Z>ŒlÂHÛªÉY˜Xka¾²È6 ¸_ÒXÄ°Ëõ–­ÍØ 8®3d õ•êY!KÀ5B°¹†YDQzºeª-˜%ÐüÃ8éðó d›R¬¹•+fá‘,]x fÁtÂfŒž){ð‚Y‚$’(UÒmVÌ$O°»Â­³D9% „"Û1 5,iR5µz-P,À¾¢sül‰B¸g™Q S¤aAñÆ÷˜YYœþ ¶D¦Ô`°MÙØ"Ùþ@d5°À–’W*áö7ØÂ?ÄøÕvA-Ä@¼ï¨…ÁÞVšô[¶6ƒ–y\¾&¸O°…n´L16YÇ-²·(I`³·ôÎÃOv ‹Ï£:Iö6ÆñÉ -ÕBÈòO<Ë?þý½óú¿û§föØ¿ýÇL\2íLúoì2f;+Ž½&ó>sX rÔU­åÑýºÐ¢H¨ŠÀ ^îuû‰uh,$d‰õ*o÷H•¿õ¡:i85¼U®¦Ÿ¬Uò¡*kkQåƒÂÕTŨSU–JÖE•óÖ¢Š>Te­h-ª|PÈZT1§ª,•­S¥ÌO Z‹*öP•µÂuª»àiakQŪ²Tº.ªœ¸UîÛÕªÊRñº¨r^èZT ‡ª¬e§E•ªM‹*‡¶u+?-ª|PuZT9µ¶kjQåƒêӢʩµ]ËQ‹*T¡¦*öÔÚ®e©‹*çÕ¨E•Sk»–§.ªœW¥UN­íZ¦:µ3%‡Õ©E•Sk»–«.ªœW©UN­íZ¶º¨r^­ZT9´¶[ùê$'çΫV‹*‡Öv+c-ª|P½ZT9´¶[9kQåƒ*֢ʡµÝÊZUΫY‹*‡Öv+o-ª|PÕšª¸Ck»•¹.ªœW·U­íVr^åZT9´¶[ÙkQåƒjעʡµÝ*Q‹* U­íV‘ZTù µ¨rjm×ÊÔE•ó‚Ԣʩµ]+T‹*¦UN­íZ©:Õâ §ªE•Ck»U¬¦*ŸªU­íV¹º¨r^°šªøCk»U°.ªœ®U­íVÉZTù €µ¨rhm·ŠÖ¢Ê…¬E•Ck»U¶U>(h-ªZۭµ¨òAakQåÐÚn•®E• -\‹*‡Öv«x]T9/t-ªZÛ­òuQå¼àµ¨rjm× -آʅ¯E•Sk»VÂ.ªœÀ¦*áÔÚ®å¨E•ªP‹*§Öv-K-ª|PZT9´¶kyjjòAUjQäÐÖ.eªEãêԢơ]ËUSªT‹"‡Vv-[-ŠœW«EmìZ¾Z9¯Z-ŠZصŒµp“çÕ«E‘Cû[Gœñ€¡ÙÒ_'$û †¡}rK$‰êD‘vSqƒ.^’¦õIÓÛ¥e7yü.ƒK’ü©†dn þ‰f~ÎoKº“ÈÃcW¼êo»œš„ -]-÷³tfá±¢¶î)~e(Wbϱس.‚ÜÌ­ž»&ãçsáM…ŸT7I¦7¦Ä2)ZùÈú¸R–^ÜܨI»QküN¾}ð{ W…ïÿ¬ò÷&“Ôf9TÃÒË–åNáÞbS#!Àá%\ ÀþI±qIBö<®nX‚BÈŸË"ÏçMDÖ]býè‹&ü÷4x„|õá{š` ïY û½‰ø=MXI±¦‡ÿÞDúž&¸Ô£Ôk~¬£XzH*„¼·¿¥mcUß‹þÓ·4ÀJu,Iʽ¥Â–ƒ»¨pžŒ{K…-÷vQá< ÷Ž -{Îí¬ÂÉ·wTØsmg>Hº½£Âžc;«ðA²íöÜÚY…’l侮çÔÎ*|\{K…-—vQá<©ö– -[í¢Ây2í­ ÿ–;;«ðAí-¶œÙE…óäÙ¨ŽU…ßiK×Uø o÷Ž -{šî¬Âùº7TØÓs' >ÈÓ½£Àš–;·œŸ{£ù=wjÿƒ¼Ü; -li¸³çù¸wØÒogÎópïd$ni·“äßÞM‰\Ûý=ϦÄódáUežM‰çé«š<›Ï†WÕx6%ž§ ¯êðlJ›OÓˆe}V ž'/ -úl*èè½û¬EŸýIÍ <œxž2ÿõª¿Þo^ö¼Jè½÷¢þÏ‹Jüz‹Ø><¾É{üNPïŸ|ÓÏêXüz“Fý¬­ãWk%  -¾·pU•ã×æ„çµnJ•l÷&½–!‹úƒ9ñÃl’‚äçÄ[4^.[6ö[çÄ›üÁÀiu(^>Ù1ïãù]íúør×@]4kŸkÖziÖ¸«vÝ[¿‡Çú¯M‘qÜw=.¦a/ÿ€Zî"÷{ô‹Å„¼¹."ôì,´áå?T¾êø}£=:^ï~¥Ç¯ÔŠú&=¢z9Þ³ç¯ôø–-ow›¶”ãÈÛnƒÄ9³r:Q†·ÙJ°9ã úÝ€š×årCc&$ï7›ªôʘBìl‘…éfS̨cª×êf^µØ¯6ÕÔŽwK*N敉ýjS-׋ìåAdfºÚ”sïã¦"³ÓÕ¦š½¨Ðe<²Ÿ®6Õ¼7¯°rig†G=.7eñ>Ÿ°9ÊÅœ™·"÷ûØ!ã ä¹Ü@‰RS3>‘ú åê~½©Ñž·cûå6qÈÌÔÿ¼ãÿU¡7œRèñ— -]W„~ŒŽÆüÊÁ†’ËYwœRˆ‰‡ î«°)C¿i˜WžåqË©aÚIÄüÈ2ï5ó4²†WÃ3*·ÔC¨Ç=§¼)˜zUÛÌãÂSr{*†œ”ÏM8Ý9œ^Ú9|Qý%z¬_yJ!¦æ/£ˆ³ÑÛ8ŸÛø3.=54Ý0ö)‡2*èÎé.cŒŠ–¼Ü„ýÞS˜7ÌŽ„¹R覉ly76«1¥ƒ€,ûŧ¼!ٺص Ó·¼Ì#iêl„°_|ŠWcva6êX†„CÔ€¥µrMx‘%¹²ÝY„¼E¨47áXVnF×rñµó¸´]„9ªz¥¸Vè±t,×Ì «óG®ˆ®×¶SˆÁƪòZôוb]{ -yÕ²nKÝ¥af`}½#¾ÒG¥›p¬: ƒÉŽC]uè°~w;…³õ­ü:L)ÎøÖw·SV.óÕeYácEÄmBŒ¬áÜhÂÈ+ua*!Ì,Ì+g«0LKY -…Â<Ó…ýþv -­§yeb0Þ×9„ΖþmÂ~ƒ»±Œ­võ—IŒ;F„0tnôMØîp™ó¶¿þ0O‚BLbU.q!,”uí­ë¸ÎE éÉ€Å@Q¬×î6!oqWeÖdX#™¸E¨Å°Ðˆ|ü¥âûSí;=1Y!æ&KšÉê´Àæg|5òÞ³ÒŸ~© 3^§›³b‘äâjÃüKÃ|¿Ø…0@RËBËéƒêgò2sÌkoYݸ8jÝmB˜ ¦*µÕРCG–¹ˆÿ¶ÌÃëÚë̚Ѐ+§«Vµ¡ aètVÒXsݬb™³–7`ÛORº2°>t™iU8¬ ãþ„iBí=tëýi“¬M( °ž4Ï@Q»:`X5ÛMâü¼Ã0;ˆ}óé9`º0aK˜š"„AÆüqµ÷ˆ1Øb" î°ñÙ® áëÇHtÅ4›hÐEV™&¤á……(·È3 -â°ðEˆ7a›2DXòúy …tlÂa–ÉBbr)Ìá"„ o3ŠÂ€ÞQÕdónøn²!ÃdF/wº¦Ä$(ËXýø_™PoºñÞ±gñÑuwö¼ÖÃì8g=& –>5á°ö¼cÞZi¥HšÝ B¬µ¬k¯CÖwˆ<à°‚m2î'µ_aÅàçÁTuÜ´M|'lêA…& ž3ËBØ¥ˆ®rM8öxñ:T@"BÀ1L8Xj+BÌͧM86¡™ ìB|!¦t­DÕ],¿ôû@h-ViªóÂ` -%™ À CîR“ÉÃH`Ÿ­ƒ‰U0ÑoµÏÜdÛ/ã´mŽ~¦ëÖíiŸ™TYy»ŒYM8€0M{=ÐJ뽧Ï[ZlìË&|@쾘°Õ<1¡»‘(i;10Kšpì†Ë$Dü]î¿PÆq0ûf&ê©ß”<ÄG¿ÔYx‡½fxˆ0cÁ’´M8vR¸B¼8^¹.KÝbAæØc¾.H’}—¼›Ý,„ؽ-|C+˜d5ÙØ#Ó§agr«b‰i8¥Ì –8plÓÇLÛsdOØÛÔ„ìTv`æÂvq¨špìÝÀ¼ÕÞ–[Ž—ѧ¿‰]hU7ÙØ×! œÕ&va`ê–/eoÐáA»Ü_:ö|¸‘tp±wÕ¯D?³J2æŠ1„ØST@+`ìµm˜^ Õ…‰À½©bàXHD¼n®z‹8H¬G"C»_g1„I$¸õŽÛOì¿ÄG[N^ÑDÀ¶êë†ü3èsÃÐ3'²@\í=`hÙB²­›„„dN-ø|´íU°â¸ëCˆý„¸/TãaG(ž¾ö W!# ™ëÕHV<>WuÂ_,$ü!úÖ5a`À,æÓc¥ŸC·£ -;¶Ù€‘Œ»t0–Ñ.tv™-\3ׄøPag°»_•Ä´ðIVÊ TaGErm‰ÕOÉ\Øê½aætiH ÂŽ™xR#$¸NÚõ_zÀ!ÍÙ†É o5EÙå«°*Ìy ÀŸ3ýµ0œÆ#*0 Å+óÖÑ°-]Y •bâ/“Ø: ¤_ŽUUmÅ0V(†}òEÿ#¥:"-C÷F -=1wÙSD¨N³– 0dׄÞj¦]³Äù˜‰ÎÕÝ›ù\ ÄYFÉ°áá·¶ Y÷Öɧr:ú²ã—áQ·Cæ[bð¡ Ì8r0°s-”a‡–x;®Ku­Zˆ˜¨ÔÁUÝ©é&ìØÐ8bõ‡¶è##$\¼ñ…BæES­W´8R,&ÃÝ„N6'Í6á¡›Xp¶ ª¤ 4 B+vŒŒ"d s¾,lô9)„ÈЋiB#¶Ý!¾ÙRÛ&ìx”ˆö]Û×dƒÁÏBUPÛSµ˜v°J!^‚7×¥ÂM„‘¬æ"ÄæiT€Ü'’µDËxb{œYlÃ!¡Ð÷Õ1áFÑ`.…ؤBòM!?º±Tš°c` --/3ðÕ^ÈN5’Sù%zØJ¥&ìY„iòw Äö«$C†µË-×=—·L4ô,Bšîž2È UCÒå;áyc3õSâ€Ö"ÄÂÀœMhèuÂLaHôÄMvà-BÌ‘¬Û4¡¹Åš·Y‹Žz+7a‡å"„‡ª[H»,D° ôPȼ®& -²ÙE†ù’[œ.JÆ9MIykæ„2^7aÇóP&*tTÎ}Ö%o½ôC˜`6‡&ìXŸBZDXŒ:š_€qËY„jÞ‡”š°;zFC|õA!„RI)ÄtÆnÞæ^în6tc­ª7™ºÝ£Wg´„³›°ûaíå2^„ ŽÎW„Øpà/Ö)„ÝÁ ×t`"Æ&t Šõ‚O/V.÷_vïÉ!ζº®ápaåò›´ëo힉¥OœCÝ‘ a<>Cº&+±P“u¯Å¡WëÕ„0u%Jë´!°»4–.¾·Yb ÑSàI –{52vw‡§vѾ! *¸ÇS…ÔÖ0Ö EnÂî a ¾J$¾µ)ñþ±³A˜ À3OÎ4as”1ÐuÀyÈ"ÐŒ½–óÔ€éÒ›ì^”<—K×ðg Í#F+±éj¡!ë…pg25!6yY'"Ä£ßë–aw¿(„%pÝ &Fn<Í8º€ûG±¡¿¶ûfZÌlgõ3ñÇŽ= Ê/aÉá©× Âî¸ñ`;£·!W+a1jª‰g0›‹¸ »Wgiá‚hSm{¢7?6„{„çõ§MØ]> -#ã¶-<+|÷qØ ìo°OÕíM~øƒ–v#@šë>γ|A>‚…4’¥6b~8‹V81lE­ƒ°KÁ^@@Èp6Õ.ë~$ #æh‚yªfBŒdÁ Ž e¸óä4£˜ ß`Šÿ÷ŸÓ– ‡N#[UhËò(0p#$ÕL[) ñI[Ê#Ì>ømåQš£”Á5´bÚ²ÈðWe‰-¼¥È‚‘ÔŽ¯Â[Ê#¼×—ÀáB\Š,‘õ fÞ’"Ì XÓÂ?μ%CœÑ0•cÔ³vÂé+[ÐúÊ[Âv EøLòU oÉð ¡n’õ¿ð–.pø6_•·ôxm*ß¹ð–ŒÇôuT¶ò–íÀ΢ -{¼ð–ž|'\‡â­¼%e°(D'_;o ûÌ[“ßyKÊðUªRÓ oÉàJ¬›òÎ[z^´?8Tuæ-%î‚n«À…¶„ÌÓ›·}œhKÈ2ן­[éB[rZ39ìE8Ó–fl£X…e¥Ï´%%Q¢•(iK†;‚8õ­,HK×JnĪ´ëL[ÚgKF¦2v3mÉh…e3áL[2ZïN®‘3mÉ™`]%CgÖ’!ŒüÁÊ Î¬e`Æ%¼ÔX¶…µ¤žÈ*œYK -³IªA°…µd€n‚Õ{œYK#TƒõKfÖ’B è Ö20p ™«ÁÆ…µdàcº`-)moÓ–NXXKÆOàìºN"ά%à 0c@p± kÉ`l$z¥tÂB[GÊÚÇ]hKàà/‡Á¿ .$0xÕ™iÂʦÃInZ„|&.¥h Z¼%ýbÌ ×ÖÕÂ[BhqB¥™ÞRœæht Ø/¼%„ðè±|* °ð–ô¨ L¿à-éQ˾\‡zá-‰zHÈÄš¼°ð–âQÓ<7:tæ-!$€wÍQ&qI+ cžQ¾0—Œ~r|Uû‚™¹d˜’›`ãíæ’¡H4„öëkÃ…Ma€û‚¹¤0•p[Æ5ÂIW»ùsIaŒáÌ\F’ÈðË´ï´fFRDÜ ‘ÍÌ%…X®Øººp„)D Á6qæ.ÓiÞStÁ]Rˆ5 *‚Z¨KV9¢“–cç5u)%TAë"œ©Kzà˜¾X×Ô%…:aXüwI!lVhFká.)´#8ºP—”9éX¡ýB]Rˆ·ô\š…º¤˜ ³Ý7á .£ìÝa~3uÉX,g§ u)7Vb,UèÂa -‰–a—:]¨KbØĶWÌÌ%=wÉž™K:ç°—p;­9L(3^s/E³1—‘1¸®}ÈÌ\F"ˆˆ=»ú sIïÞzºsžƒ¹„fHª““ƒ¹¤|zË8X˜KúõŠÙ¦þrf.)„W‹uã›p˜m -é2éÚ wI!þ×múÂ]Rï>©kÂÁ]RaŸ‚é¿œ ~&‚ VõÂ]RuVCŽÝ +Weƒ¼døh”áˆ"œÉKÖÂ#[ZÀ w)± cz²ÂÂ]RHÇ°%+,Ü%–Bç5§=†#Ëxj’™ºLŠÑj+‡]D8S—2!g°“¹d0óA·T…¹„ÐÖ)wÁ\ò°L¼3múÌÌeç}³" s Ç~,}Ý0æ’¡ å„lÂÁ\J„bÊÉZ˜KÆиՔ.Ì%üMB¸Ðyñ™¹¤{ÎHGŠý—ƒ¹'Ûñ‡•FQò  £$3s —Ϙp§5ÇNJG7°`›îÂA]&U¥G+k5S—)ȪÇä&Ôeâ°AjrÃÂ]¦ÈÕYcOfî’'ïta™‹pæ.³ç`ÎŒêÂÁ]ÂsÂç:¯96oÈ"„æº'ê2òú¡†Ïæ2I¬+¹z3s™]Œ…©²±çÃUsؘREð q™5·x¸ð›‰ËLˆ5…²fâ2;&çJW5YÇ -=îؘ"›‰ËLfK2/uv 9÷bÜ -ÐÖ6a'.­’ ¾±QŒqi“¹ŒìùE81—°/àèD–® ;1~ÁåÆÛ±;1—–9þ\K¹Ëq ¸ÛT;ý8ˆKæOÂÒ7ó°ð––‹ë>§ÎxÞh”†¥sÐ3m à‰W=¿t¡--¨žÖÖL[2ípöÿÚRRÑ?5n½°–@X€ÀKªÓ‹ƒµ$´Ä5-j»°–<3„ÍEº£ -kÉ´4Òy G,¬%°6¯èb›Í3kIЃš;±°–<- ™©Ó»™µÈQdX[üpa-IVah;–ZXK¢ -LtßBÅ ké%½Ützq°–Œé`‚J» -kÉÍÎCÖÒÓLX†g›l– Gø”ZVãÂY#-ªN-ÆVÁà“OÎŒe‰IM8KñŽ«Í¬ÂÁXÊ -¶¨¹ -gÆ20¥Õ—óU8ËÀÄTE×7ag,¹Fs`FV§:cÉ5*ù|õ¥3aˆmÑÁ!vÚq–fèfí8K9¦ºe¨.„%—~0íxÀFX¹êœEo:'9K ->È K -—qž KIUâñ—ÐÙÌAXRÈücÛeƒ¯SäÒ`˜g¾2Ï[m:s8ØJŠ,3P[÷Ìl%…2Ý…ƒ­ $p˜öì.ØÊ Õ%4OÍ4á`+i%U«Qå3[˜°0®ØJ -# `ÿá +)ËЬ%³-d% .ú\’*d%…Ð\œg²²˜jÕ6è…¬äÝìm\«p•´ãŒÉåÐiÎAV2| ¿2Û_;ØÊ@·*$¦©7á`+iÇ )fZÎle`*)æ½leXb¨žŠgkt Ìle`&2¬TŒ½ÉÁVBˆ·;:žM8ØÊH üêH/le$;i»¼°•4ÕÐ ö·óœƒ­ŒŒ9`/ß ÉÁV2úŽÀ5á`+aÆW ý—ƒ®¤¥")á+Š™éJ}æž]èJY˜ͬ/t%ÇŽó¾S’ƒ®äga{ò Š,|%ÿƒœ¿kÜÏÌW’ò›eá+ÿÇL„q0M8øJâueY¢¸ _IºKGúkº ;_I, m[žÏÂW’ -ãù'“û[_)TIšÆtN|%dvN|\øJ¡É`ƒ²ë?|%Ý]†Åšpð•Φk¡+S:‚©¥þ.tebè“¢„º’÷¶g.~Ý©ÃAWæiW®ÂAWfÁ"¶gŠ-t%„)L‰ ]™3¨‚(P…ÝÏsŠU2°·(ÝLW¢çÙ£„Šp¢+áÕz×¼¤™®bC?3£ õDW:"o†°Cè\fç+O­á=€¨ý—ØÑãÔs< †wWË“ä÷/˜•YÁë‘–ÔðN 'Z˜Â§¿}£%é)ò8å× %Y7ÆWNLî´$]Ø»·Ó”"ƒp%9ë–äª/‘ìÆJš’òuAJro<ÜÎJÇB©r -sa%éZñP¢è¶’’žÛ!œÐ*[HI®?+ mœ$APVh·r’‘$?–7 -'ÉÝ '•7­œ$wN4©m‘-œ$Öù¬ê±Ì…“d*|4_ΨØÜ2+% ñ’ܱQ’<Ú¦¥µQ’dZ1QÊv±Q’‰™ì˜\e^¬”dbðÎ¹æ ­œ$6ôo=­ºq’ À+q¢Šlæ$¦1ž‡¬*µ8s’Âf&ìíî‚“T8Í^9I-PùñE˜ -‰ 褛g¹r’ÜiTÍ¿Y9I˜ø]X[•¬[8IÃã!uÃZ IËsIXü—Œ¤¥¿^ì‚FÒ¾Š[Ù~¹0’˜Ë˜Ðpªª # !À5Ìa%:F’4¼¯vve$¥Áê*’ZIfÑÀív5¤¹2’bSòíLãÂHÂBó=•qe$É#bgB’1t]+ ã  €[ß:ó‘bå«ò!©yÚ #Ñ>r!$IÙÎR¬|$]pxýá[øH†Xaëºò‘\°_ÉZùHÀ±˜xB¯ž†\øH˜¬ˆºkì|$Æ.7«ívr„žu;£è„¢Œð|a¥E¹Ò‘¬O ´ÐÇ…ŽTž#g;W¹Ð‘˜3ŒLÔ¦6:;o€ëuMG‡qíTãFG.¹Ÿ;é´c´+éa¦¨îBG’¢®ööBGÂÛÕzâYéHò€×¥lg':Ò3¥t:)¸Ñ‘ŠY[¦1ÜøH=Çæw>@ÙbmõÓ’ iæœîÄÄñ=ü¶ó‘°&5¢ç#y ›>pn„$cɦwÂFH¶46ju'$KÎ`?h¹’,ßÈ‚M¸’/I` ÛßÚyI¡°½;ô$lÊ~ÂCp±¡ƒùc& šý -Á¢MÌ„Óý|”¯åT9ÃEê] œ<[Èv:À­¯.ÙJF¨ñj.d7€¬\?nå# -a=™ê¯|¡“bh-À¸ðtæÐ k®|#úèЖ­¶ò<«ÈªIWYø:Œ%”[„ e‚¯ì»ÏÊGhzD#V»ò†ƒX¯ø´UJ”Yù#‘ñã"\øB$˜]±ÖÊG8rxÑ´J;!Ì‘S;k¾ŸÂ>6ÒB‚é$Ø‹Y–¡—R†±dõCNŒ„`¤t}BJj‰Ä³•‘ 5ˆ™53›pIm犞¨Êæ5}þšn¹n+%‘™ë½5ýüÔ’†ŽøÎ=-”D‚;0ûØ %‘0ÖØ}œ÷¥½òä±Q`×”ðÀh|3 ä$h [”ª<›8 ˜4øÜtkS3'»•˜m¥ã;'Áˆ‰×ë›9 †:دÂ)¢ÁäŒql$Iœ£d¡·mÂ)2˜k¤»ç=s¼ —é)ƒJS€)¤6U‘ËÌIX¢â9}æ$(Þb}­wN‚B1 -þ2s’öÌ#„*¿s–ÖÏN§"fNB"¬pÙ"¦3'A¡«~xÏ[Ëékš¢úÚ‰“ 0úIiÂá?K5§Ä×½’!mTsègN‚Â<å°Ï”³» »zða¦$Jê·eRÆ;%A!Ðì`µfJ‚Q|’¤Õ7áð;™4Îð«oÊN”/µÆ`ŽÄĉ’°‚ ƒM'Fêªd”OôÀÄH ·¹мétÅÈ?e´Žðo#Á X½‘‘¸&Y¤´`ðzlk¦$(ÄêR¬‘߉‘ ,³’g«U;3"¬P­'JÂÂôazFßLóLIˆ™ºn{3%!Búj±½v¢$DH*ÝøwJ‚B†ö{ý£™’!xªmž( Ψg¢$DƚήN®™’!¦YM\Y) -k0Ö6áÈY4R‚fðÞ3%!Btr/^3S"dD±UW)‰"´ª;O3%Q„Rů -'J¢½­uJ¢ÈlÊÅ)©"œbb3%!B`*̯wJ¢™ j:™1’ò(dúŠª\ûLIˆWPúý””óÀ¾3#A™”-‹£‚ã(ç!× -` l‚™‘¡Ÿª}ÍŒ„å\A¯ÈXž-ñÒ™‘ 0Íqᙑ0lWµûU7F‚B͈h;23F*G×üõ…‘ 5g{f$(ä–hú[!A¦;ö¹^¥qìІç&$Ýà‚ Ð3âºplßFj!ãcô;!Aè$˜é¼ÂØÚ!¸E¡fB°2&x+=³€UŠÕqµé´Â $ Äü–ÅÒ„X–;N,jÓÙŠNHX"êÀ²bý­/°ö8ÚïÄÚBHX£Ã´´mÌ„„%Ï>ÿ^ Bl™ï !À“GÝ‚.„„Ó–»ÅZ '‰°0%í¬ÏLH8æ¢M‡àBÂ3CŒÆvˆj&$¼T !uÊaàš™9‰xá#¼äÌGØwÝ„ÜHÑY.ƒÅŸù®k˜Pgûq§|<“â8²ð\¥Ñ‡_>‚ 3,ö3ˆ3Ar!lf>‚ë‰>EK‹_øNü‘«¸ñœM´ý€âÌG„rÜö@ãÌGH?êô*p3!ÁŽSºïBHð/áTäžþ?ÌsÂj‚ûÝO4 œÆÊO¾ÄÙšpô¬eÒWå™OˆÛÃÆ3!A¾ÜJô÷¢¼# $hëm¯Ã8‰¹ƒÙ^ 95)ŽzÿåÄHH=WQ?µpd÷GÀy!%$÷Ý6Û¾ra¾þc;+•Y¦ -Ó@Ù.ì ’Œ¸)ùìM6ÎJAèÑ!# :–‚0I•i÷ÎI#ÑåÞÇÜ„f‘ƒï¤…q\,²–‚[9 ~‘Íg¥2ónX™£°Y8 ÅUìõ²p˜Þ¬Úu§&NBÉ‘ýZLj'%hÜé^w”ŒzÞ½ÑJ‘¯¤s}0œÉuÆb"%È…1ú¡§‰”ઙK€.¤³„JÕ&œH ½EÖV‚{:ü¨:e1X ²ZåA§,+!õÁ¼ê‘þ™• læaVB2&'s¡%(dµ­æ¢/´„ĉý¢˜…—P OX ÌƦμÓ"Sy]?5x †%Õtîbá%˜vPÉ‘Í´„bÙ:F0G‰ÆAK(4ØWæ‚– ³‡…sèÔC§%ˆHX3ŽR ZBŽ4Ó’èþÖî@%˜¤¦t?ÔK‘öè2@؅ݻ󘳩PšK a(ƒVµn:.EfÈ:˜~«–^S¥§Vχ¥H‡EL`(ÞK4¶ÃRd‘x)¾ùý°‰¢º×Ù&쇥Héðd)\Ì^¢¨›³J±6úëßäö- /˜¢¯¿ýÁp(ÿõWù——µEiù׿ÿñ¯w^ÿwÿôÏÄÍÿö¼7íš/l ƒ2Ûõ¯_ÿí¦f÷ô¢Öò¨èrëCE[5ÁÏ/‰©ýZ)ÿ‰Á"N¯z,Nõp·{¤ÊßúH´ëÏÚeæu. ÑMùщ&áLzFh†¦ÉüèD“x¦ Y6Ì9°]5™h’5,^Èù¦ÉôèD“|¦‰ó¼$Žìô>™h’Ô¡&ZpWêšLN4ÑgšX¹ô Þ¹¦ÉüèD“ûö´hB ñM“éщ&öLîWr±i2?:ÑäТ;ø -Aª&ó£MÎll„û[Z -M–G'šœÙؘIéêâ®7M¦G'šœÙØÈ@N—Sª&ó£MÎlläáâ÷Ñ™hrfc#Ͼ;FϺ]h’Ïll¤7ÁKSî£3?:ÑäÌÆF)8gÏäÜ5™hrfc#ËñÐ3Eºi2?:ÑäÌÆFò^Zõôy2?:ÑäÌÆFWê¥FÝmìòèD“Ck™—”X«í€Ë£Mm,ó˜eŸ:*XhrhcÉzJ`+õÑ™hrhcgñ‰ ÑʦÉôèD“CËk”ò¦»;ó“ûzuhaÜYý®åщ&g60Ê»ú]Ë£MÎ,l`5ŽÕïZhrfa³‘V¿kyt¢É™… ¯~×òèD“3 xÚ|õ»–G'šœYØ@žkõ»–G'šœYØÀÀÕêw-N49³°!†²ƒœÌnšLN49³°‰I«¸<:ÐDŸÙØ`Ùìâ.N49´±†I“‹¸<:ÑäÐÆòU«¸<:ÑäÐÆjv€–ë ›&ó£Mm¬æ5狸<:ÑäÐÆj©K3{€Ë£Mm,“5Wpyt¢É™õRIxñ»–G'šœÙX%Qpö»–G'šœÙXÿÿ÷6;ºìÈu輟¢^@¥ä? P·džYîÙÅÊœùý»V™üÉÜuvfV–˽Ïõ}ŒL’kE¼Àeæ]ÓG74±÷ll`iÍÌ»¦îhrÏÆ%˜y×ôÑMîÙØÀ*¾™wMÝÑäž îM¼kúèŽ&÷ll`jmâ]ã'wô¸gaCÿæ¸ÍžþnžQãózPp@gÓGwôH7ô€qøÜCFòï;#ç#GFpSoúèr³¶idû‹‘Ï2ßo£+«çÕßçÏrÖYZ°¦ö:l¹£‚>óüQ°,–ö;o½í?© È ;PŠõÝqÀÈd@;¿‡6E~e}ÄÂ"@^ðÁîëN }Òÿú%^åeÙDyôu„ð-#ðBòbc9{†ø-#H»_VÉŸŒ¾eÇ"<ÏKÁ#äoÁÊM]¼`ï­·Ä£~l"{2@ùŽØ@Œ×Ÿüþ¿|Çï9¬# = ð×ï€Gý‚áÑëãûŽxqßöÙ+ú×ï€ΰ®îìýÛw À«Æ]’Kàü÷y€·âMnð›ãôZ¿w‘âbðÁØ‚‚¾¯÷ ý¸ B'ÃØ·˜Ç…A\cûHÇ ácUq`)9O¥ýÀ«¹Þ4ö›¯þ„æMcÿ(ß³›Ü“³ñhÐËÄïPB;Žü –öŠ -kíì¨Âƒ"Ú+*¬E³£ -ªg/©°TËN*Ü/›½¢ÂZ&;ªð ^ö’ -K}ì¤ÂýBÙKŽg)ŒUxP!{I…¥"vRá~iì÷;©ð#î÷P;ªð ,÷Š -kî¨ÂƒzÜ+ d­¿TxRˆ{I…¥ðvRá~îÖŠÛQ…¥·—TXJm'î×Ü^Ra©±T¸_l{E…µ¸vTáA•í%–ªÚI…ûåµWTXËiGÔÕ^Qa­£UxPP{I…¥€vRá~%íÖÊÙQ…%´—TXJf'î×Î^Qa­•UxP4{I…¥HvRá~µì%æêØIƒÛe²·âãÐ/Ç µ¸ãØŠr¯„,Ö"ÜA…'Õ¸WTX«oG”á^Qa-»UxP{I…¥ÞvRá~áí%–BÛI…û·WTX+lG”Ú^Ra)­T¸_c{I…¥¦vRá~qíÖbÚQ…UµWTX«hG”Ó^Qa-ŸUxPG{I…¥nvRá~íÖ‚ÙQ…•³—TX*e'î—Ì^Ra)‘T¸_+{)¿°ÔÆŽ*<(’}’â˜Tø‘8û¡.wPáIîÖ‚ÜQ…•¹—TX*q'î—ä^Qa-ÁUxP‹{I…¥övRá~îÖ¢ÛQ…Õ·—TXªm'î—Ý^Ra.³4¸]o{¹ -røG’é[¯·{/ÝwrcÎ<òû龓«rfÞO÷Ü‘3«ð~ºïärœE…×Ó}'·âÌ*¼Ÿî;¹gQáõtßÉ=8³ -ï§ûN.ÀYTx=ÝwVò1«ð#%KºoVáýtßÉ­;³ -ï§ûN®Û™TøtßÉ=;‹ -¯§ûN.Ø™Ux?Ýwr³Î¢Âë龓+u^O÷Ü¥3«ð~ºïäE…×Ó}'·çÌ*¼Ÿî;¹6gVáýtßÉ}9‹ -¯§ûN.Ê™Ux?ÝwrC΢Âë龓«qfÞO÷܉³¨ðzºïx΢ÁÛ龩FuúåÕ%Ý7ý~ºïäÎI…H÷\¶3«ð~ºïä–Y…÷Ó}'×ë,*¼žî;¹WgQáõtßÉ…:³ -ï§ûNnÒYTx=Ýwr…΢Âë龓»sfÞO÷\š3«ð~ºï䶜Y…÷Ó}'×ä,*¼žî;¹gVáýtßÉÅ8‹ -¯§ûNnÄYTx=ÝwrάÂûé¾³c5³ -?r¢iI÷M*ü@ºïäþY…÷Ó}'ï,*¼žî;¹qgVáýtßÉU;‹ -¯§ûNîØ™Ux?Ýwr¹Î¢Âëé¾ã­:‹o§ûúu:óÀþ7ïz`ZëàM3Ö²qЯnb`‡¿@Êyü·¯z¸0€ÇŠ ¸æ8Àñª‡ðË«.ŒÈÖÁlÁðOÐ ðí_<ÓŸÜ.qaH»ýÙX· €ð -G8»+ã·Ö„)ěҲ©×:$[¦bÊ’¹¿&¾Àe™!H¾oM|=¢e¥À˾¾qM|=äg¶Û -Í߯nÓø†‰ûr€W&îËß™¸/‡üjâΆ\/‹ù§M.›ámø:…გ>cfWÎ}õÀcÄxP‚×5Ÿ]}BÄšI»ö8™ß2h”¶¼Ñ™³AÝKƒòî,–|:¨?¼ïøÎûƺÇðÉh1ßâÒ´À_}·@;m–3ñÉ‹}Ÿ˜ú^­P‰©ä³÷ð·š xp`\Ú±%N®úŽ1Ù½¸”ýÙ˜'}ǘÑÓŠ²Éóɘå‡fœ½¥ä™ßr3L»½ÐOu¶Á}:“›õ±®Ímí£l6ižk={w–ͱùw“InÈ ®~”ÙM”LÀòm¶>¼UV¶,}RÁå§`Q« <”΋,Byc½ñõ7ñ8›—Ž6Ûú‘Ó†äü(Jëf>ªŠBò^šÚ²-ô†ß¶8v•Å/—ú0.¥˜¥[¶ÅLÍÚyãØ2Ƕ¤­ã¥Ê¤½±™]4÷{÷Iú;6Cvµ¾°øéöQÐ>–Ž,£5Ý®"°}aºÎØùy½+Îyéï,ù•Á±&ipéL\Þ…ÏËLD™„1…®VZ€Ã™²¼¦°E…ö;k¤cíVr.P/™DLÐò -”ÑItÖKoÔØeQ[ÿR—×úvmÚ›pŠ$aaiAél^^<Ú–õ¥¸­}Od[0'“âÌ4)Þ‚J;ýIǦŠ16èƒûb°Õ7ýIÝ.Éh×rù(Hgv|Ÿ2YùÚ ˜²8Î&ÖOÞz§ßKÒë<äÈïÅÏœ´´ÈrŸéÈ›õ|Æ/Ê+t¥w2b”6À\ÊtúmX øË;_W=Û…s½² òGÄÎI˜é*L™VH±¬¡Ê0À2žwÒß:Dfôغ=K·fùaõ61öY:ÛRz»èŒ?–¢^‘HY_Y%~jãX«ß‹l¿,Ö21²¦lE!õU—Øâ•wîÉšó¹·3†]úôq“nõ"+}=&b…h7ìŒ&cOX˜-ÊØawóì%Lïulk5±1á{q%êãb7 †„©ƒˆædo1ÍîëûNdí8F¤Yª²d2ì&>eö›-yóâ’ÀEú.¥ ž |$UQ¶xZŸ¢ˆ u²på"s}‹,[˜²ä« ›R7epÁ%5KÑï›[D4K¶þ$&3J L¬ºQó#-å«­ Èã7¼©ÚƒaÏd/Õe v„N×ê/ænGXgñeõ©Œ ÿ8ŽaSzu5±ì6&ÁVÀÉÀº«óŒl?Ž}€÷Ÿ™°;M×Vín~²eëãàš«ûÜã;0¼ÆHÍÏØÉ›Xš/o©˜*ƒk0NdÊÔ|¨Ónôj¶(+ljíTÍÚo[¯@ˆƒÍ”«ÕŽòjÒ(Ã|”TÕÔžñ1Y/"¦š`Žšl·v”aÖìft5'mün™¯Æ¢þÜ€buihíN™“¾Ój “6oz;ì°Í–eé¥ÐÍ$Ky±R°`ÔwÔì&Ù"•Æ?ˆÁK•í&Na¿ ×MÔ3 CqM¶›× ˘c²—FÖN¡{!È -M6&_MBmu.¦—ð›Ã»ÍêÿÆnæ”y‡=^ÔÝŽýÊ)Ã+7™}=TÖ¶žÈ0&¼´šúÚs\L6e˜dö.W™¶Ç k5~ŒÕfÃá>±Nm™nl .2<œ›‡#îM“€YH¥±ˆÆmç°»#Ê0*{—7Yƒ¼é÷Þp¨²ÝUQæ1«>«÷aA/ŒQ¶òpVúÈc³TÑîÅ(Ú÷®Ê’Ö¥ëOç‰/™>`ž•ý%ajz¶¨šÇœl¸¯²ÝÿQo”¸7« ø«ÀΩ - € þIe©ûF‘ Û‹ØÔˆ çáØM•í~SdxkûxØíðñÅ:}9cæ¾ÄÜ]*EØ°ÞWV1-9÷¤8J݉íþVdÚß^ßTúÄBÎVe0:p«õ••î‹)ƒû³ÍzÑÙpFoEßK%í~š2¬21”C&h ²ó¿)ȃ¬ùpÀª‚ùÜ¿ŒÁ²ž ‚e6~SYóïYPÖ^aøI°ÅÆa9–ÊVÙîû3¢^ºNQ,`.^DØRú‹M¶ƒ D‚7·ãl |SHC9A@V µ«²4`AÁ O€å{ÄüÈIµ`’m•5@M΀Šmsv»ÖF« —š€w¹Êv´’@57°—TeØØ‹œ˜w'+Q7qq‰P†¼mY½PDu ü^†w;š.Ct‚2<+LˆR ¢liXD+2ìûŒÈv“yÃyŠÔMŸt'âÅZKºXûæÈ!k膢P°ÀZtˆd‚³XÚ·JÂÑëÁu`0WÉÊàUB®QÜ1ˆÅà5 œŽÈ†dG[!÷ H2†¦æ †d@æî–p1kà~H`½aA*ƪ²é ‹Ò!@YÑ(ŠÊ†d@ÞÁ…K­QÏ1@~Àï‰lH`¯è6¡c:€¹V•õ+ÓXdÅxÞòÒ0çŸJº!é`ÀO–RàG|•u‡¿/o^d=-¬˜ö¦àeJ`¥’óÅÆÏÆtèt6V¿7ä•8F]dc> Ë.‚­¹²1Þ)ˆb+ ùÆD“€R½1 AJÓÃc>€ÑFËP¦u§|£XI ó0!ÀÛ2x^ª aÌ`ôÏ Hú ²!#±šà² à@“õÈk#cæù r`%BˆTcXcF€±I<ˆ†Æ¾ÆŒ€Ä‡ˆÁ˜¸¦dÜÿ˜2q -^^èSB@#3X~u¦Ç„àè{æsL dÉ¥¦}3Ž) •„ ®Ë®)‰xl€è›;äòÞÚ3¦cN€q —øD6ä2¦]pv]ÿcN€1¨0èZàgÍ‘iåš„s˜}æf>5";æ"9 ÌÓ.ꢌO8["S‘¹¾ÌXB®²NU#Ù6üyh™„n»¢Döu£ÿ±d û ð®Êº]‹ Mn¦Å -§”@´SÆfJ `A‘’¨ˆlL sÁ®àµ´tA·‡‘¾À7¬ñ¦”¡áÁ²è3Œ9È"X$ÖJ“uVÆõ&ièàs‘b@g£A©)'ÀRþZéjŒ~Ì DÁÇXNZ1å"£ ¥1Œ9'€ÅÈÚ$n[eí@Ȉ•¯{rÊ °ÅšUÜZeµ`¡âwž>å"ÿÐû -MçœV*æÁÓtWÙnÓe¥ÂVxÝBSN²Œ…S“=SJKîÃéJšR‰«,“û*뮀i\°®ˆœ@bR?J¢Jº“€,aÝ·÷˜HÄÑL -VÙ˜€,b˘¨ÖhJ $’QIðUQw-‰iYÉBë×ÆŒ¦o˃˜Rœa¢†¢‹vÊ p‹Æ÷D6æ8 ßÖ£,sN KÆ&›†œr¼R#“péF˜r|žMÞ²­²îÊ8x]ø,9²~’¤‘3 ÿboØ=¶ßsŒ ãw°¶[¾ÏçVzÆYǪèø˜K=~‹0‚¤Àl’[©Œ‘¥–¥™ £ˆöJ!Œü£ÆgÂÈbH@…øM„Q -=0)›DÈfÂÈ:±GµTLëB°÷m­Ž˜£áÏZЀ uha„Œù>Ér¬„2X( î}¬„Ñ04@ÇG\ #¸¾Ÿɘ£a„U«¾>ÂhdûZÞ±éÁJÙ–´›ø"lBÑ ùÝ‘.ŽgK®Áù‰/‚1š…&_4ŒËåÜŠ¡&¾h¸²X£àoâ‹üL~ªPz⋆¶Tr»‘/b}`/Å#_”DºÔÈ(Ïù"ÓÉx¢ýùb ~­Ìu¤‹ôíIÖ€¼°‰.2Cb,£â ];îö¢„‰/Ò|ÂF‚_(ÉÓ¦øs @­|‘[€$Œ÷}¬|‘†žYjX&¾˜¹š`lk‘ÑÈÅNª™þXù"C”ÉKbîcå‹47Ot1ˬ³>WùÔD ßç¨?9ÒÅÀ—«uWYŽ¹AK›[uØD3\­9©Ëÿ4{fj&‹°!.3t¨c ¬@fÆÇ,òG0F·ØLau’ZÑÀD¹iñ<îP;•$1Ñ@ïD-_ºB‹•,Ò:ã‰ìÖÊÊ®ÈÈ`A9íÄñ±³œ™+&[l |¦Š@8x:¯Q¢S´’`r'L®·`I™¦hùÐuÎG¦hÉ›€újÝâÌÙO™÷jêÚ›™"ë°}ýÞÄ™1v¯Î"SŒÌW3ßU?™" me>S Rjm9gŠ‚±T…™)fÀŒ4’2QE,‰€åWœ†fªÈÒ Þ8P ³&ª(v›‰ÛV!Ö©"HüCðDvªèX3ƒÇS€°RE,o&º›l Š€(\àu+ÎT‘!~¹ÚÎ}¬TÑóFP¥HªHj$P|“ T1} -†¯1Æ™*‚äÁÅ©‡šˆ"ù6¸¯ñª‘(B°Gr²G¢Èk"‹£Qä; -d?LÑJí~ÈùX90E20,¯æ¥'¦H§+ß}¬L‘õÂÖS=ñL#žnë¼z"Š‰uH0a•`ND±@©V+U†³Îï=¢pŒ2¼E~™'ðƒ¿AâxʈÕû¾’À747ÃÊÂWå?2òæ@Qž'À‡ù•Ã‰LÎñPT‹àÔÞÉ  ¸I>œ/jáp/ÕÇ@ ÷ÁçäW -i§a;¬«Ôo<”çãGÓ!çY©ÖÙäLáø‡xo±¿nc©_—B£p€± :pmšb™(`lôXxZí0q¸MN“Àb¨÷Ÿ8œ¤–7Ÿƒn¹‰Ãm\”©´Šš‰Ã᧴âû™Â^Üè,>R¸ÏWÑ-6ªU°Î Žµ=KòÁ±ô`ƒ‰Ú•ÁEjÌ´Ìv¤p0À,|Ñ)ó dŽÔ°¾æ‰Ã±* Z¶ú*§g -‰;µ-·ôáÄáX£œR4°4Y§qüã›4Žð(°’)·B;ð"x q™Åœ^Í4Y§q,^ y”Í"ÈÈ#,c€Yx~™V;`ˆMÆü—VRªÿúÏ¿üÇ•Ÿÿçÿñ¿ÉýÿÏÿhâ)Þ -’̇ë8É.W-EÖh ›«jMÝèBM¸T|ý®­7€ˆ+aþ¯ê1~tWsù´YùÇ>SwƵ÷Æ•ˆú“ˆ&îž&s¿ÑäA›ÑÄßÓdn["š<èV"š„›šLÝKT“ûMKD“xO“¹‰‰hò w‰h’nj2õ2QMî·0Mò=Mæ–&¢ÉƒN&¢Éu{ªšLMT“û M¨‰ßîi2wM4MnZԹɈhò ·ˆhrÏÆ.½F¨É“#¢É=»´QMîwMîÙØ¥óˆhò áˆhrÏÆ. HT“û}GD“{6véC¢šÜo?"šÜ³±K;ÑäAÑäž]º’¨&÷›‘ˆ&÷lìÒœD4yГ„š„{6véQ"š?µýÖøüýnߢ‡¿¡Gk¥)tóNM9ÜyiN¥þäõžTg™ï·ÆÑ•ÕóêoŒóg9ëZM¹Õ3þ¯« Ï<Äzû­”¤W¼¢ÂŸTðxßÞiè¿j"ÞWa-šXë(X|µíw‰þ׬…ƒ -Ò!Æð¯L’B„x<‹ü‹vBY.ÎÚò‡µzÄ\"´>ŽpÖÅâW[. ™¥éÌ Zªï#ºß袰(…¾Ž‡ñ <Â(gºO›Äð6¼Ì[^ HÀû6¦ÿâ=^‚¥ï¼kÜœ ¾g=¤ËÙSÄï‚7±ÕÂÙSœ´ò¸3 õ’7!œ qÒ¹ãÎr*.en›·^ëžyÃåÉå[FˆŸ¼Ä)MÄ¿|ËÀF¼èÖð8Â_¿eö - -†·GGøÛ·ŒÀâM¾ñ³·ô¯ß2B’zG^`páß¾eöŽr‰ÅÙǾ¥¡ËŸ#Ç›\á7Çéµï"ÇåàƒùŽÔžÐ‘ *t2Œ}‹‰\ôÀ=†±€„œÀÄ€x.EÎýÀ«¹ß4ö›¯þ„öMcÿ(ÿ Þv(ú.<”ÔŽ#?¨­½¢ÂZK;ªð ¨öŠ -kí¨ÂƒjÚK*,Õ³“ -÷Ëh¯¨°–ÍŽ*<¨Ÿ½¤ÂR/;©p¿pö’ãY -eGTÌ^Ra©T¸_*ûÄýN*üˆû=TçŽ*<(Ó½¢ÂZ–;ªð >÷ -Yëqžæ^Ra)ÄT¸_‘{E…µwTáA)î%–ÒÛI…û5¸—TXjn'îß^Qa-¶UxPu{I…¥ÊvRá~¹íÖòÚQ…u¶WTXëjGØ^Ra)¨T¸_Y{E…µ’vTáAIí%–ÚI…ûµ´WTXkgGÑ^Ra)šT¸_={I…¹ZvÒàvÙì­xÁ8ôËñ‚Cmî8öƒ"Ý+!‹µ(wPáIuîÖjÜQ…e¹WTXËpGÔã^Ra©¿T¸_ˆ{I…¥ðvRá~îÖŠÛQ…¥·—TXJm'î×Ü^Ra©±T¸_l{E…µ¸vTáA•íÖªÚQ…åµWTXËiGÔÕ^Ra©£T¸_P{E…µ€vTáA%í%–ÊÙI…û%´—TXJf'î×Î^Ê/,µ²£ -ŠfŸ¤8&~$Î~¨ÓTxR°{E…µ@wTáA¥î%–ÊÜI…û%ºWTXKrGÔæ^Ra©ÅT¸_”{E…µwTáA5î%–êÛI…ûe¸—T˜Ën' n×ß^®Šœþ‘dzêõwï¥ûNnЙG~?ÝwruάÂû龓;sfÞO÷\–³¨ðzºïä–œY…÷Ó}'×ã,*¼žî;¹gVáýtßÉ…8‹ -¯§ûNK>&~¤äcI÷Í*¼Ÿî;¹…gVáýtßÉõ;“ -?î;¹wgQáõtßÉ…;³ -ï§ûNnÚYTx=ÝwrÅ΢Âë龓»ufÞO÷\ª³¨ðzºïä6Y…÷Ó}'×èÌ*¼Ÿî;¹?gQáõtßÉÅ9³ -ï§ûNnÌYTx=ÝwrUάÂû龓;r^O÷/ÇY4x;Ý7רŽC¿\£º¤ûæ±ßO÷ÜÁ3©ð龓ËwfÞO÷ܺ3«ð~ºïäºE…×Ó}'÷ì,*¼žî;¹`gVáýtßÉÍ:‹ -¯§ûN®ÔYTx=Ýwr—άÂû龓KtfÞO÷Üž3«ð~ºïäÚœE…×Ó}'÷åÌ*¼Ÿî;¹(gQáõtßÉ 9‹ -¯§ûN®Æ™Ux?Ýwz¬fRáGN4-é¾I…H÷ÜÇ3«ð~ºïä"žE…×Ó}'7ðÌ*¼Ÿî;¹zgQáõtßÉ;³ -ï§ûN.ÛYTx=Ýw¼egÑàít_¿^gØÿîÝì³e]4 oëò•YøÕÅ ìR“X9‚ÿþÕF`›Ò`€lŽ#¯~¿¾úáÂkOþ ¦Êý‹§ú³ë&.Œi·?ìþo›M02T<qv}Æï- Sˆ:1¦u°«ë˜X圶d,Œ¯GpYf ’o\_iW»µî[Æ×c~1yf»?y¡Ðþê‚/Gxgò¾ò¥Éûr̯&ïlÌõ™ÚäÞí€_ ‡>0@½¥o[Ep!1a×+·lE§±vÒ®‰=Îé· Là]6ùl`÷âÀž /?9ØÞ}|ïÝc!±ýsô'šÌ7½4M¤ð÷k‚7’-°få“—{~¿ÐË‹‘ý1Á_ž½¿ýàÌ8öveoá3EN.ú¶y7µy;Û‹g— }×°Ñ1§iËé¸åo¡Â“ÂøŸ(ò-·ÉZ·“ y+ÙÔ -eXåé£?þ²•þš~øóâ´/g(N?ª<Añ±5/ežýc½ÈòòSÖĤa4˜‰b¬ÙŠ¯²b³*«?å-[ ËOY'M-["ŠŒO¢ˆÒ¬A±&°‡3en“æ¤A[C -X[lã%ÎÚÁ×뤣7ÞñÐXdÁ ¨¬ÌšCæaÞEso÷~šU”vRŒ>ÔbÌÚ¯7’š´F•*KÁib}™¸àL6š‘íJ[H‘eãð²d˜à–·jÂ/Š,ô¯*+Ñzi»¥Kèø¦ŠƒÔëoæÞªUe°äNZöÊõIý-Fl“Ø©\dFZ®bµf•™·lŒÈÜø†!Û/¦ÊüÞz±½I°È -L·¢4¤v"3ؘj¯D†ý5+ö‚²Þ1}£‚YÑ@YÆþµr·¦Ò‚·™5Úc×wøz˜#ï«,À·x7È° ‹ìÖ¾¶[ÑL½¼×±)cmn¼Ü K†gtwS¶[X¶SÇëj{R µ´•góvËÊ¿3]E»ñe;u€©œü.ƒóÒø Û©ÃëŸêÚ4aìÞŽÙ‹õ5¨,`?`éy‘áK0¢©Šv›M4´›ú«ÄÀGÂögçxéÐû×âÐóž,êÈ**‰7è:•aoâfYìxE»©†É)TÖ%¡Ÿöƒ7‚Cêp©»í_d[Š ØÃúX»È;¬K¯yqJ¦.òøe˜Ï:;™³ -=7Õ$âÁ*&gáÓî>(# !<¯2†~Ä’P–±%Rªš”¡û`bµ¨†²±3=Ö=ÖŠk_ËX²Ls‹ 6ŶE¯½»$Ê°ˆ€\ª2ù·Ùô{HÝ-E»·ÌÀˆXúßU FÒù&Úý˜Èð> -{Ÿ©,iM{ pV(‘¬Ž!Ð[é A¶’ì_•9õ$U¶»?‘i©‡­²,yî: -÷'fM¿ç»o¼}Iº D°ôáT—Ú2U¶ûMØ|üH‘þóUV*O±7@™>qè>•2,2¾›& ‚ZSY»xQe»¿¥ Ö?´Õ -3°atì¿(2<*œÀÊv_œYšiª-V|/œ²\ߟŠðn'Ç)°pA4ÕBÔ¼;Lõ'Ý«©žSŒ‹ØW¯Š™°i²ÝóóœÊè©!¸çKñXÞ9£p“²džt£4›¾Ú sâø=0 ¿m•nR¶Cž‚w‚QÐ-LKPì&;¦ö(‹µRY<×d”È׸ky öÆw ÊŠ¯˜9Se;ØAý´xCµ`$ÉUŒò=¨iᶳ®#·u BY¶‚Öêob©:/ÆFŽyaQU KÑŽQ2˜.v”>c.ÒÑUCD‰‡‰UÓá eXm~k? ºj¤6O’º²ùc•íЛž–¸£}þÕI¾2ØÓ$`Fe ö`W¢“‹}©²ˆ™„búà®C¢L>N  P›2÷'Ê°“ºš®Ã%Êà8²b“Á}Á'Êàà±#*òÄ*Þ‘E€¿ºAUž).ÂÙ0–$+Æ¢ŒæÛ¹&«ÆÂýa*’©²Qƒ¬v}n° -zŸu8üö±m²›‰ V‚f¼Ê°C¢ªB=àŽ]•uÜF™ÚÅö=ìk˜?N+dð…Pö–‹¦‹X˜„ÜÞ3é] eØ1¶ZVµïx2Ø6¦ÀB•Áî!%•a[¤ê•\°`@œ]•Y1Ñ6«¬×'RÖq"dŽ-:²ÇŽ/Ū'–"ÁTª²Ž!Yp È% 2¬p¼]kƒ>pdÆÖn²Ž/)ƒ——¤2Fo@9À ¬þFÇ­²Ž=!ÃÊ·¥b]ÈRÁ™N2x„èÔ'¸<àRˆ`£@Ê`þ°®Yý±~ÑâUÊ:fLl\…¥Êà›`œäÂZ,pƒý›K¬²Žg!ó0©Fí7aˆëˆÝ ÖO EÂjw¬Kln›>ÏLN1Õñ"žŽ®Ê:ŽRåf¶ÜDXݨ(¨s®²Ž‘)Û­¿ä±¹]‰úèÜE[…˜Þ ø™d ¯¬ÙMÈ0”»F¾ï+µƒ¨Cëˆ]ê#€€m?™€„ -ƒ¼”aë1 PEvC?Öp0ÏŸg§L«Yé)Óc«¬#òH×ýK}_pïx ¦ÖsCWÙ×V„­½j(ÊÍŒE™l¨òvòy­ëœºh¢î;cîñ³„QUÔXCÆ ÇñQÑ,¯)/m3œg 6®ncéÐE”RY† ‘Ó—k«¨®¢N6±ëEý¼šÛ`1ei_§n=lZ•‘׋ׇ5!ŠÁ›ö7jÊ°—`¦ð?‰Á³ÿóìIRÉ%À9„T³'ük-ÕøÛ”= JŒÂ[˜=‘`ƒ|4eOD†¹ÍŠ™§ì \ƒ…‹‘­2eO(óÎA£kòS~œ¢){’‚߈!ÃŒélÏjÝd˜1}B™‡…fôícIŸP†E o/Ë}JŸ$'L˜ýXÒ'”W=fO`˜¡ TÑ̳'ü3U?eO( Ä{Õ0è˜=¡,@Á¯Ë;³'r¼¾¹Å Çì  -9EƒYSö$ÝÄU\:eO°Þèï3ÃÑKö$1™€ÁaÂÙ@RøQë´MÓ”<áAHë BÍt É“Ä}åi1‚&]zò$eE0̨qÁ)y"ñ1Æ.uŒ¹žÆâä—Hû:‰ÅÄÿ¯+zJ0:¦ºeNÓáœf+†Ì cbÅI~ìcIœ0$ˆ¯Ë)m W¬M¥>–´ ƒ^„ûÕPOi zÖ[GÒ& zry • i“,)Ž$ûècI›0êLå| ¯i,°Cà!ç51¤M€èhÛ€M‹Ê†´ £ezºJóƒcÞfˆ\&ú7Ó'UÐÔϘ7¤‡:¬–cÌ›H&×å˜7¡,—=þ3åM2 ”éLy“Ì0À¶Ù)oB€vbV÷cÉ›0â·áÅ‹Í_ò&”ÉäqÍyF ký£8œ)oBÙÐþmÊ›P†IHÍ ŽyʘD úO™ÊðøŽ€þcÉœˆ ë°FÇÌ EP±yÚ)s"AK«á´%sB蚯ф)s"AË,Rs!`D‰Æ§šL™CGÜÖæúóÂ"a-W©OœÇcšåó,©F4ŒW<ô±¤N( à2€4‡Ô eø]S7Á”:á•X \ÍJÆÔ e€â`­5a†à -‹²Rü1§N\—d@•õ ‰“Np»é;‘ LéQÂ!{B¼…¢Î?æìI&9#R\8&OÊÁ¬cË• É“,D*i\xLž0ÌÛO·qHžP¾€…­XmHžð’«‰}—Cò„²¸íà{Ì0p"F»Ó’ ÝFR·ôÇœ;¡ ´7ïZÉÊ°ÛY½)y’ WUÚõNÉà=¦ŸÁ×5Z>&O|ærpN‹éçäI0]é?–äIà‰9ÝdUÖm"‘hð曨ó^¢# ÙÍ(Ÿr'D2 ¶˜¬Pe¿2OX©-·ïuSø¬X#-3&OˆðÞZðuJž@†uRWcò„àd뙶){Â8‚÷RhRe3tŒHňÈÂÌþ° a¶–"™(Þ-s¦Ê&‡ù¶ *‹3YhÔásþ„8©gæçü ù“ÅÊMYrÌŸD O²µÊ:‚ ;~ÛÔ^Îù ‡ùÍ5ì4äO"£Ÿ…q‹–YéŽ"2¹[MÓœ?š#gi±Ä)™ÄƲÍù“$œ,Ô“½sþ$1 Å9¯ù‡1’˜MKu—ŒÙRC–¼Y×¾Ô³'‰=TôÇìI"ÖƒËmQç1{”äø¾jrJŸdF±L«Ýó'ì®f€úRù^º’õÈ\•õü ã b°ÿÐ -ðæŽEú ^3³H!‹¾ÁaYþ–ä·x¡!µ-û•Ää…ÜX˜32û/¤ Ê“Õ6^hÄ!Âî(zx!e`JE³N3/4LÈxM­¼H3iƤñB|×i’ⶉBñC¬A;ÐBÃb<‡HM´w7Á˜Ö§3-4„+²ÔÂB†ÿ“J‚-4LÑ;­My!ÊŠˆLã…†0HbèÀ i¶¼[y!dXødïåÀ [xò=mG^hèòÄÒÛ/äýXúâ´W^ˆµ¶Éþq‡ª:É †Îx! kgjèw&† :áµùŸˆ!OYyÍ2®Ä:ûXCÄ+1äØŽÏ(˜ad¢+²ÌÁ®Ô0I¶,Ԣ̉&–ù½ÔÔ0qyÉð+5L¼^.ˬÜ01.Å_®²’“é8º•~œ5Þ=²CÞ8ˆ·¹ÊtFv˜Šd¥3Ðܱ¨Ž¼ÀÖ<ÂÂI}™~*µJrb‡„šqPÊ2±Ã.qKÌ\ØáÆäd[>Õ‘¨:IphÕD¦|K´Z¾:‘C9œáŠ˜É¡‘Ô([)rH“Vf‹k²¡$3T…WXo"‡Ìš„–‘_È!cVð¾ê9‘C,¬4yïrHeò^@6Cæö€P\ªÕb#9d²©+W39åaˆ®z—™JfŒåAµn$‡4~˜Øš¨˜É!éP‘ò¡°’CnpgÛ9$㑪Ç|(«Zƒ­Üª:'r舘ð~´ CÈ!s8Å´âã™fi'Œy?rCÐ –¸l9—7d ÕÛ+7d\ϱÝV7”;žÐW¢0rC˜4ëSÌêfnÈx¸–{´Ò¹Î I"`"1Iiå† lã 6çÿëÜ2FCkUøÌ ¾N{8t憌_ãYc-5¹¡„¨áÍkÞpâ†Bgjy%‡žB*¢²ÖÀû øÀo8©iËs­*x&‡y5ÐA_ä"8˜L_äy÷½YúLy|¸øæ;fr¤>P#º9¤ŸÊm™Ý‰ÒÙ}%Ïä0°8#–ºVFr¨3¼G<©¬“äzEÇrÈÂ'-à8Cú¿€í×@ýHyÖsnuu’óÅnS°5sÃHSƒÕW I&nH ›ÂšÉ7dn’–᛹!)3Pµ M6%"-æÛÄÜ8Þ”l„]³¶Bð™²îÖ·xÙ y^JN±µê¹ÒüƒÔäFj+òÿZ[4SCY»Ÿ†X¨!WÖt¬4u † Oð«˜ÂʦGjȺz¼¾Zå41Ã$Ä—e3îÀ !Næ |`†€Vµ”Jn;3øÀ^õÞ)±š˜!ÛQc1·\ãÌ ±Ø½d´ì‘b_ëce]’ƒô''Ìy}ìÑš®Ÿ™!OqfI:¸!~ƒLH Ùgn˜YÀ¡<êÀ >’ÓØãòŒ‚nwä†RkQ+’Fn(U¬Øjüoà†°1XM-ÜP^ÑÆèp•i© öÖ}À ÏÁhðˬlÂ`¿Á ³6«æöVü¨T³±°"s´Aƒpz¾ŠŸä=[5Ÿ¯"©,ÜW&(²÷s@óù*˜e¹–HYP=dk™ÿJ)Ã_c1Ÿ°b D^ÃË+ÖG›VŸ3°Ââ…•/´ +$Ýœ¢Ð™ -ÒXbòÍJ9_j>b#‚L/”ýΙ²ê/*K<AÆûစˆ ‹í˜ -«Gš&"È’Uìôè*¡‰ +î3tlú-Bî@ñb {Ëۚ͛ˆ \Э|^ˆ ‹Oˆ·Òáx‰ PŠ¯õ•nÍX¯DN’ìøÿ˜"ä±,Я·êÌD†ÂKÎÿ@Y±þÜž#„áÂ6nõB"p+ -Yˆ aŽ¦4æ2A8C&ß47;ó@¢Ø|KbÏ<0~²ú¸VãÍ<¨á4Ð̹ h¸\<ò@è¼éÒšy a’ºŠ#´ [É×”%çß8\h²!K('tJ­Rœ‰ £1i` –ÆŠÏ"('£õºK–rs5Þºd ‰I<zNW‘ÐYøýZB¶ÁÂ,!¸§9AÇL'¼šŠ‰’µñ„Œzñ™²®©ÀÜirq&‚xVà”P9éL1E<§½ibu&‚¬þ uãÌ4P*ŒNh`ë3g(õwíðÏBI`;kd¡€$ êI—…fZI):Þi ¶u’Úát¹,Óaë <¥ÙZ)vä¬ob¹glyÀ’þ`!·w?ñ@>£Ï5ìµð@ö(`=½¡˜y iÂX¸xÌzÖ÷Ê–6ÈH!¸¬×bé™òíc!Ú“!/àI0õ8ÊÌÉð5¿1ÑÀå¸ÐDaʱIê3 R=ÐJ_ÈM´Ÿ¾i kq1­­~¢  k©º¿‰ÂUàÑâã1GHP¡çýÊÞ^Ò=ñ@2¬/.í„ñÂ~ò‘F.s Ö–Êy < þ…±óñ„UÒ ½§}FH§“ô°í&fóµ<öÀaÇ'(>ò@Ø\ØŒVu:A½<~çl#ÌÄ z„çÀ3#xšö>ð@X9V~·ƒ¤Œ{°”2˜q˜DÖþ>€¿0— -ä”kÃ쥶¯‘ê]Z”ë¿þó/ÿqe€þÿÛâWþÏÿÒ6ØVY›×Áµ]nöÄÆú¬@®*6}t£¡h’ª&øú)Æ_/ƒÊzL[B_í ŸÝÕ$_~'ûÌücŸ®;—›Ï=‡Dƒ­†¨ -àž*sï!QåAË!QÅÜTeîA$ªC¢ÊMk»4UôUnZÛ¥‘¨ò ï¨rÓÚ.ˆT•ûý‡D•»ÖvnH$ª<èCDUÌ]k;7&RUî÷#UîZÛ¹A‘¨ò /‘¨r×ÚΊr½'çn"Q宵©&·û‰"wmíÜCH4yÐ:HT¹ik—^BY’=÷[‰*7míÒSHTyÐJHT¹ik—ÞB¢Êƒ–B¢ÊM[»ôRUî·UnÚڥתr¿ÅU±7míÒsHTyÐjHT¹ik—ÞC¹ÞGy·å¨rÓÖ.=ˆT•û­‡D•›¶véE$ªB¢ÊMk»4RUî÷UnZÛ¥Á¨ò ¯¨rÓÚ.†T•ûý…D•›Övi8$ª<è3$ªÜ´¶Kã!Uå~¿!Q妵©&·û‰"7mmè -ÜØ7ËúûÙI‰å;–ìŽxmúèŽ"æŽ"­“®0Ñ; teh{gè¥9ú–×{Ò&ÍßHW×’c ?Ow³¸w‰Õ‚Ç÷•hÏ=}ìxãÃJüY 9ö~cÿu“ñº‡ª‹µƒVú’ÿªõpPâOZD±' k½µ‹qï/þEO1ÖÕGÞŠÈ;V~»GÔ•!B{äãg]Ë~Õ¯éÂYÚ™ÀÐZṊ}D÷ýQö¥Å‹‘uûÙñwÏ;DíRÌÄ{eœ€þÓ¦<÷‡`»•Ì¢Ë“!Â÷ ybØÆröñ{†â)½xö'½zî á¤rÓ„p2ÄI_ž;Cp³cYqÛ¼õ¢x2†÷ÕžŒP¾e¹3$èd€ù–x(ˆ7c¸“þú-#ȵ}F÷d„¿}ËAnQÜÊÙ[ú×o§¬Øyéì-ýÛ·Œy#Wâ…/Ǿ¥MÓŸcÈ›Äá·è^<ø2†<o¿¼Öã;&ïËÞ™¼/‡|iò¾ó«É;s½¼æŸ6¹ü†7Jàè#†ÈÎ?cÞ@Ôñ¶Š,»±ÉéÓ$g¢BÄÚI»&ö8§ß60ûwæT¢9ؽ80›¯c`Îö‡wß{÷lÞl\ÆðGMæûeš&ø«74ñŸ@`ìŸØ:{c߸Ó+‡^^Œ–9ì\sö>þöƒ3#í€yÝæ‰'·}Û4äO¬‰îlÜ“+¾kÜè>SHþüyË.^öeÙ±ñDo¹Âæл` -&im œ?K€‚[Kâ ÷Þ ï3'½2h¹¸ *c·—lý(÷î—âñ>Ëõ~Ňá§Ø^ÖäÌ~â”… *×6®¡Xé6kSP ;üˆ)9Æ"ì¤Ä­w¥¬€3ÔΖ%úA…‚1µ)©ÊRï^I™ƒŸÝb”axÉЮe%o¼ŸNd¾7µ¥Ì›T¶$½›ñ6FÕ»§¿IÑ–ȵ_¬ˆþNûÅ–lëGÎÖ¶º…„¤õaU™w9Y…ýÖû‹¬Ô–£…íx[ƒS•áuHƒf`‡ùe@ä³vE.|Í­uh•%º_¤ î𢠋Qcÿ¹·ä¬²dµët‘ÊÃK„L(¾Èrï(¬2üF”Vž‹{yÃ.ö"V¡Ù{‹ÌÛ,ÍëEfç×÷í±˜“ -}ïó0>3Zµ§9ó‹ûäD6p.&ûP¿{ÃÞè¹Øx÷”´š…‡ÜÜ'ƒYx” Ÿ•¡ö†Å{NÚîÖlìo:v6ö‹Þy ¡Za³Ù/°v>œ±C3ìÀ–º!× „nè†Íâ›Ì—*düÐ;qƒ[lYK†¡vb;u<±îDãÐ;ÓPÁ¬¤U˜z—ZvÒvØ}˜ÆúÍ -<~o‹u‚ †¹rº4¬úÃn˜csPu¬ZÀ²6Ìb‚¶¢bÝÐéÕðA¶Ú\d½›+žØ¼*ïêýØ;@ÕŒÅ竪ahŒí0í>}HÌüÐÛ1øCkc­±Ù—»øjE¸özol3Åææë¯æÞK—Í›†Ãî·M¸oé´ ¯€¯VeËЛ}‘ñ"M®ú@ùÞ!ÛÓ'Å’R}³öÙæÚ Y…F¶™–Ô柧¡--»dc¶¡–ýå['lö6Ù ˜½wMý¦údÃí½xEˆÇ ‘½œ7˜ôú~è”`ø±†­kJÙ¯…æö|ËxãêjdY'_„a?beVð\*ŒC³lVÑd&» {·l±ü±TÛ³§¡]v g€‡sÅ4aï—Xöî¹xê7³˜¾bž sî³!Ãk“j/­ -³á4«ü¾¯7Æ”_ŠÑKÝË4z°ÒÑžÂèsŽ>…&dÛìMV„ØÕÞi"B#Æ…†Dš\oY÷KöÎÙb³c”ú¼ZgGÎ7Þ‚ó± µ"!pLìÉ-µ°Þ‰YÊÚAÚb’i"˜7Å,¼È=·¿jB`‚¨[àAÿeü^F„uâÞû÷¯W†§ÇœÀìám¯ˆ‹E2lÔdîL Ï€ -o$Mß„±)<,>æȯ ,EQG}ä „Á I#ø„EìqØ>Ø'U!0 EØðþü -Â"[¼C)1ï ‹Üç¹ã€„Eî=LV Þ¬ ,â-@ ÒìVÆB¬¬U}að h[`°»8v ¸‚°ˆ÷ ¹£Ë -ÂX‚ôØ2ý‹,oÄ pba¬Ÿ±¢¤ÐrDaQà£ØÀ¼¢0<Ï'{Åcg¸…áûRF²¢06¤ß°ˆ«?P›Ç®.*<Q»²c~áýK> 0öIçfHÁ¬ Œ}Ë L8l‚;€°d¸Ý\(†wÿi°ÿc…)cÝ\` ¥¶„ÁÀÂÊp÷ÙÜ@Ü¢7Õ -L ÌÆÀõ›œãtw­ VJì&b‚`ðm Ž!¸lŽŒ -ÛÆØtD`ô7§Äê°&ÆHL£ö _˜#N˜íhŽ Ä ©‚š €(d•ê'æy]4H®?0 nrGkº°Ä’x&¼æ#Ÿå,ùÝi,‘Úín Ռ尘+Ë•yÀ`D¾€ŒXÖ[:`0¬G˜m¬E<éƒÁ¿rÞ÷5° ^ L²Ï;:ÛÉ‹¥¥±ùÀàäaN¬K®bÚ€}î710 -áÁ±CB>0L1mÈÉðW À[†Ã ³ìd#õ;à/Ö¾{ hŠñYPrˆ¶¡¨±tŸUo&ú]¸ã¯¤·Ãwþ6â/ -3¬ëÎ6Gü•2€$[:Á_<³à-÷~Ø…;þÂæÖ(þ€¿(„ÇÛ±ÙÀà»ðòhë2ð4á°>è:Áõ/_×1ï¼ö³‰'KR jÎêa0g™ìnà=4Rx[RDK!HFC„¶ÎH¦Øœt\Ãl"„ñ•º¡ 'X, ›N2¨Ýf=èc]àtº6:}ØØ,@jöBZI½§h€{­éêHPHN À è4(%ÂnA!Ä–<Ò„œÝLâš$hÁS¨æ• 6L¶I úyv?¨2ò' iSW'š¦W -Þ ­©%ô!L±‹ÜB–?°Á‹Ýôӻ]†0ÓNÙ¤ï'`«B Ê#¯/hv£ ø‚Eˆ—žmâÝh"ŒB¼¯e -´6ƒE'|Ú°ù5‚0…àš-Ø'Þ뛬Ânî!6dtV_»ø ¼‰98иX;d;߸5M@†e¨/«„ØV(· -ý@ÕÙâ?b˜Ì¨ÂhÔH› LcèÂÎã7' rG¤ŠK!m&äyéæØÅ5’!vp;V…xB¬d¹D“Ìö ¥ú³qˆ°€ o -žÔ5!–vàc3´'ÂDeõàÀÆHPb ôÀ;>Á“%Žˆ½'<¦né†ÈÁÆÀr”P_‚¡±ÎÓ‰.¿SŸ2a…‘yˆö1A1011¤°)6`a9%ú\0¡Î&%½‘(”ˆ¼ÏÕ‘’Þï beGÃP7˜0x©ŒåáHZË=@ ÖºÉgp^-Âùc¥°šo°’!ØôЄ=”Aì½1æZÚ¯}æf±2AgÄÂk^%({œ ûQÞ`•µs¾Èàž±«}iÂ"Å -ÙÙö_3…Â4ú€‘ !\í¥Ò"¬¾Ü‰¾Þ¹n6ߣ'†$VW˜È|9x¬è*—hÚ5Y¬Éú1v¹[#Ç0É0²PJ“õ  ‹E -WëK -f÷M¡Ö'ùµmö‘!1¶[õ>Ò˜ÐfË\„±:<Èöh%Ú²L»Ôç€9-XÕb<€{¬^d=’Cp¼Á:ìª*D…åùI\ßU C˜‡‡{0Ë¥-¬È´ŠÎep¾xÃÖãí! €cXN˜œ°ÒÐå‹P+Ñ+ìqˆ± Àj†ÃñÌ@~»ÅƒpG~Œ²Ã”GYûUƒ tžaž”7Ëç&ì -àdŒˆ=Ô…`ï°–1‹0þä:fPƒí.Æ´, ÃXâ˜hÖ€…á´:a‡°J‰úÛ!¸Möb`͉xe²åD@^v¬É„ÀÆòG=. B+Fݪ0‚áb¹Û&ìÙÀY§–tFx ‰[QX†8»¾4Ê4þ¹Iƒi¸biž‰XéØÚò ÁRˆÝ Ð~6púࣦ€&±Ü«ƒJ¡ã[¬jXÒ¸³Èôg$i`%Ú“Ú–N¡c_ -±Ñ¶QƒÀ DV CˆÙ³)¾n[žlnÀ˜É Û! Á‹}”pð$Ö¤ýg{F‰x-GX}¿³XBaÄ@‹Œém„6¥©™â°ól/ˆ‘"e¼NÍOÓ¿ÙUÀ@„¾%4SA;‹gnB1” - -!Ú¡8#ÿT¸ØšŠM¾ˆŽD‚Á}ؼ¶Ýóý‚§‡Qu g4!þƒFÄê3e?A¸£ø,u[ôM˜³1Û M¸d]ö¤ü ãvØbõý¶…]“ Þ,¼²m)[v Ûñ?Ü1-¾"u Hezì„TÚÆ,H\#`Ÿ¶·G{ÔL,§#²yÿb§4ŽøÖn÷3[iÔmBKµ/Ú¼ ¼‚VÃjºªlL«ÉèœÈ°aOMé0°“/¼À:ß„@U$cY>]yWrx/ŸÜ¥5ª!Q'žƒï€or3xÍuqe3°*‡ñ“-¡ ÉVD‡ü¡iÂNeØŠ©ðæ 0O².˜^ÁV#ÁÞ¶óœæe†SðÛ\:12DS’«†°“ 2þ u«ÜB,Y}ϲG,(ýÀ$#àŒÿ³’TI€í}Ìš7ŠÄâ˜ÜVU3æxL«„É|É;¸íæÛÐ4¾<ç°—À|QšóF‰7X²ïç´Q&ÇÝK $mÄÀD9 -šœ˜ÒFäÝE—çÇ’6bâ<¦å¦´Q2 úšvúqJ%Ð -¦¨ªçšÒFÖ¤cÑþ¦8M`I#ž<-à ¹Œ)iDƒ¹6-¦`ð’gg¨VÖ3¦èì™È5“δ‘ø0[TfÊÑB‰YÕ\̘7¢A"“%2á˜7‚A‚ñ,;a›òF ^Êhe4cÞ(ÓÅo½dJa…`§!V—6%Ž -3úŠ¬D6&Ž+TÛTëo¦Êǘº¡‹WáT¹Ãì -S¥kå8„ïù¨©r‡QNŒý±rGâo~p512Uî0¬ˆn©¡©t‡Ì*jX@„c鎬¡”÷(ãT»³É®ìmªÝáÜŒ­âeªÝÁ""Ì(ñ¬vg“Í Oµ;\N€í{Pk¬ÝaÑVa ÈÆÚ¬&°,©ÏhÂîa±šˆ‹w°0Õî`5÷˜ÖT»cd6ò·“Úðž'H¬ßkw°œà—,ësT8Öî0vƒ¯bŽbq4rs©&¬Éž±vÇH©ðxz‰½À%ɘ±v‡©_'g÷äPia¡`ÕõäßTºƒµ[ì·F*§Ò6ˆÔh‚kÂ|b(k@h’ÇÒL7×WjQø©tÓ ûíj­ÃRºc¥¸™,›¬Ç‚j,¦QÙX¹c…ØKÜ£ÊzD‡uøI mP8î0(QX•õ¸ f <ظ­R‚©n‡q‡m?S¿Ôí`vÈkâÊv «äÊ7á#aœÊK„K…cÙ&ÀÃâM6D:ë¬0z:¦$v+’O²F”áÒžp³F `áÅÕ¹³F ØÑsŒY# -õüD˹Å9vLŽI#@d ‹'ìþ)mœƒaÈ-¡2¦Xµ0Ô§¬Q`8@"(MÖ½KÀJ..{ÞcLAO×óËSÒˆÕ‘àg{TfL±Š1남¢î•ÈtïWUǤ+ -õ ìÂî²¢ÔrqºN’FLL`%á¿ëSŽI#° zÞlL1Á—+R˜rF,RÃa^H…cÎ|†•‘X#¦ »#$T ÝqÖ”3bH?³ÎÀôœQÄô9¨Q?RF‘îKc(MØ=¨0JÏO)#ò*¼•bSF‘¥±°²¥>Ý”3bˆÆj§öSΈxž¨µÕ)O9£àŠ]ÎXµ -Çœ„Ø$f‡¼SÎH¢Æ9îž`ÊAÈPxýÙ!i”HYeÝ¥3H ¯mSeöcÒü"ØØ¡SÒˆñÔJDD6æŒuf/g›RF‰ç-ÝðCʈœà©´™2Fà« Ž¼·á$căʥ¥Ç”Q’âZìÒ„=eÄøÝ”2J 3Q¬cŽ9#Ÿ`·T½ö”3b( ¢k;æŒÑ -Cø}ÊAË”à«BcΈE¼øž±=¡Ô‹Ä²Ý3-cʈÁœ³l V—­Ùó:=[$¼nÀÏS¶(KÝ%ñ…iž-Ê ŠÃ=%³ ;⽤²õÝžØéé¢ÌHÀ&ë¨ ;NÊbb ¬œiž/Ê4òx­-‡0å‹râ‚èµ%S¾(  ØhóD8å‹ÈBK‡àSº(žã‘ׄAsÅøšiB u+éµg!³ÂCx›àIüaèì7‚f¼§)ÁyZ¹*Gbf@9Ø\F}ß2‹r×A+õ’VæVßËÇ2+ÄŒë‹WŸBfð²<·²WýŽ13VÓâͶ1cf,wÕ²<¦˜ËW¹û²vÎ13Âï †‡ónXQÃÖ˜Cfž¡6ühHÇP‹\“±†Ìð2VàN!3EÀ6Ýò2‹R¸àëÕ7sÈŒûKûFãbcÈŒ5~‚•â1fƬT!Ùß4¾5Æ̘ÆÀªe¸íc™Ià›ÞCã‡SÌ ;¾ TÙ3Ëâ‚[\`Ž™A1Ø`ÐÍ|,´.f<3¸ÄÌX€ø+ÜCf ·ÀpÔã•KȬ0õÄ«Ð;‚‡aë€=b&ÕEø 6W8F̤F¨h¢AdÚz7V Ÿ 3–â„ÂcŠr3)¨qbSj´ÈŒ•˜¼=ŸZÁô1“*¬ñ½fŒ˜1l™U%Â!b&¶ÚÓˆpˆ˜Ié&!µÂ¡1dÆ(„—ªè [=C§Â!bÆ@ƒžÆlQÃ!bÆ@ƒÞ2ã÷pÚ¾Ö²V©»z;×rÖÅ`ïÑTð5EÌ0° 5©®Œ)dæ$¯ÜÂEcÈŒEìA ûIÈ ÄÀ²¶:Ê)dÆ3áÓÙ³é¸ÙsiU¨óa7P`à=ÒÃ&»ÁFáÕ–JhÆx™£St?þ$^F‚^kšp8ëÆ,“Ál¶Bôé¬ó6ë#žÄË@´ƒÌk ýLgÝ<«Cz‘Ç/óa§ë"Ãe¤ÒÊ.NŽº‘çœn -—‘-l„úQ7/غ‡Kç£nÜøC¤`>êÆ’ÄÒN¯GÝ,O¥Ó;ïÅÔÃQ7(e¥P%6ápÔ –ÇK@t?Í6ucBó¥M8u‹ÄZys]ÏGÝ0‰Ë°ûI7Æál}ûÞ/cBþ14ø8̘ÐÆK²¦œÌèhušöcpÃI7#§ýø¶T8t³\«ŒˆÚ&NºY®Ý[OºÕŠ£c¥5¤Ã—)dÆ‹HŠßË°;Ú‹¬îÈÜ;U¡1fYmû¹Ì)hg JaâVá4‹<<…J¥÷ÀX·é‚ ÜëQ3R4ðÒØê令³ñ¬‰Ü Ǩ¸XCeÑ5ã¡{¬3ïÜI±5„²û÷ˆÒ5˽[yÂ3ËŒ¶Ùš]Bf™}ÛË¥‡Ò…Èb,¾×RÕ L8ÇH‰å#¥bÝ%fFÖOòÍ13È0ýý€)h¦hÏÊIÐ B˜-˜Ëº/B¡žëî 3 [¼^Îtc’š=»Š¤«ñKY ª¨J±þó?ÿòíûp±Ü!ÅÛ`6±…cø°äŒÎ:ø÷p¸,eû`~WŠ¿º­êñ8RVmH×ñLøâί߀è `sðß2}‘Üâa€ø-ÀÔ®pà亠`ͲʜÌÁ÷<cWðùä\hþö=û†lKÖžLÒ‰ûýŽwH–ìɪ۾gÕ†Ò`üNlÿö×›–óÒ ³!•™r-‡;ÒQ6ßXü;o$“…Dð`¢ßiW¿úáo±«_ ð-võ«¾Å®~5À·ØÕ¯ø»úÕoØÕ/ÕvõË¿Å®~9ÂïÚÕ;ñ—†ôx³ðwLRI2Þ™]ýžumYSÉú“ï³Ü—«ñ'ãÍd€É5d¸ïIvÝxc{}F^TÜ÷ï¯~ø[Œ÷W|‹ñþj€o1Þ_ ð-Æû«¾Åx5ÀÆûËEõ†ñþrÀo1Þ_Žðkãm¾k'~¿ñþr¼o1Þ_ð†ñ¾^2›oƱC±<ûz0ߣìYƒ*±5(i‘Ò áÓRÝã¬:úÿúËÿLW› +xœÄ½ÍÎå:r-8?O±_ v‰ÿ$`pÙU xÐ×gfxÔ*£‘5¸ð _¿× +’ƒÒÉ“âþ”×í¾Î£õm1$‘ÁˆXÁÿý‹ymøÿþÀÿã\|ýßÿe{äêñ/\þß¿8ù§{ýÁ&ÿNÑá=ÿËÚw)Ť¸9þ¡yýí—íõ¯¿ØÍ¿¼‰¯¿ÿâ•}“¥€”ü÷/ýåÿúñ›ÿñ_ÿ÷ÿ +¹Y ²a°ÿ4/÷_øñÿƒÿú·_ìëÿýżüÏëÿƒ4ÿþ‹ámCI.ÓDR—Dÿ¸)†mbøÒÅ8d0“ „ÀHïhKÎ6w!Ô¥%!ÜíwÑ¿Åß÷ïsT¿4ª+ù‹ñ>—Ô†W—îËÖäÈ4»¸…Ò_ƒºt_Ž¸(‡y§l‹Í~ã¥ûr¤59R|Ûì†ÿ¿Ë1^º/G^”ŸÂ–ƒ»Ã¥ûr”59bz—´YÜ>?ÆK÷åÀú_Ä¿cò.%ïwA†K ‚Ü×U|†˜¬1Åì‚ —±k‚xûÞB6.”Ò/-²¦A㨛ö˜«ã¥A•ªõïâKÈþPfã¥Aµª)oïMŽ~ÛçÈxiAEµjøø&ySöU3^ZdQ¯ó6.gÝ®ßÇK ‚,*Ö-½³7›sÇ/-²¨Y7|çrÉÅí‚ —Œ°EͺY¹èaí‚ —YÓ¬6à µ>ësD]ZdM³b·[¡7|×#êÒ‚ kšÕÆü6&Údv+Q]ZdM³B‘¿#,€U² 2\ZdM³Ú€Çß2låÝ P—YÓ¬6ø·Û`%{³¿‘ñÒ‚ kšÕÂoÚ¶”ìVÂ.ÈpiA5ÍŠ%ŠŸlܾjÆK ‚¬iVkóÛÁ‘ŠÞîŸf¼´àY®iVk0ªv®Ô¥A5+¶Z WÊ8kvA†K ‚,jÖ-ЇÝ+uiAEͺ:u˜šûî«.-²¦Y¡ÆßÞT +¹ozêÒ‚ kšæàÛhK]ZdM³Â‰z[xSØâÒ.ÈpiA5Íjr~GüOˆ¾;XêÒ‚ kšÕÀópë°FúdU—YÓ¬&rTÌÌ”ºQ—¢gkšÕ`«õpé¶Ív=¢.-²¦Y v8xSê>YÇK ‚¬iVãùøÊÓS—YÓ¬Æoï¨==uiAEÍêÒÛÁ­‹~K¨K ‚,jV‡ï·ÛþþFÆK ‚,jV¸þ 6Ù¶™}ùŽ—YÔ¬pt½)“w…6^ZdM³b§p¦BÜõÙxeAŒ5½Z,=˜à]_ºÃ…&`M§æDÎoqë³t¼² ÆšFÍî7Ó'ïb WÄXÓ§y{íUWÄXÓ¦‰Ÿ&iJݯ,ˆ±¦KS KÄ\èzóGéA K…ò6ÚúR—Ĉ bXÞ»_-ÿ^8- lœyg§ÂrêÒM16=²ý‘¯xê§Æ‘Iµ“àOŒò{43‡ŒÇûŠvEyb}%¿ýFîÑ~ôMÿßïaØ6ÃAþO}†ÇE˜S椇øN[€tßøø¢ypà1¶0Ì +‡3½~ý+$â0]ª”%!%g¼6O!½·mKÅyI[ùÓ¯G.ËŒø¬iË/ˆî ;tÿ¯ýç?àæ_ÿõúõß~ùó¯òÌ‹#„þ°çì8@{&è£gÊD6ølXÀ ¤¼è.´…žÄ>ò¶.bXS82lJ³ zz~ÄÞ%ç¹ À™Š¦éû%Þ!á/³‰xôóáKFˆé §4–«gˆ_2|ðBŒWϾd‡¿„G “âVz{Ã/÷—ㆇ—1Œ½änÜôäa cÿWãÂÉó[>ìñŸðêGOýä«¿pîÔØ?ÕËö­žÏº{§”×aäOr_ïˆ0g»Ž"|özK„)ÑU‰°žñzG„9Çuáƒd×["Lé­J„õ<×;"Ì™­£¤¸ÞaÊiU"¬'·ÞaÊfU"¬§µ~²ýŽ"üœí÷”J;ŠðANíæ$ÚQ„²iïˆ0§ÏŽ"|G{G„9qvრÚ["L)³J„õÜÙ["LɲJ„õ¬Ù;"Ìi²£äËÞaJU"¬gÊÞaJU"¬çÈÞñ æ¤ØA„O²cïˆ0§ÃŽ"|{G„9v჌Ø["L)°J„õ\Ø;"Ìɯ£dÁÞaJ{U"¬ç¿ÞaJxU"¬g¾ÞrקT×Q„r^—"jìg#§ÌÚqìRlïˆ0çÔŽ"|\{K„)›V‰°žV{G„9vჄÚ["L´J„õTÚ;¬9wvá“$Ú["LY³J„õôÙ["Lù²J„õÄÙ;"Ì™²£¤ÌÞaΑEø YöŽsvì(Âi²wD˜óbG>H½#Âœ;ŠðAjì-¦\X%ÂzRì-¦,X%Âz:ì­ðþ”ÿ:ŠðA"ì-¦ÌW%Âz +ì'$‡á§DÚOi·£äßÞaN¸Eø óö†sªí Á9·wÐI¶ãøËÙ¶7†ŸÓk‡ñ?ȳ½#À”X; +°ža{G€)¥v`=·öNÂá”L;ðAVíÝŒG=îÏàÏ··-¾Ð+yâ»èj£Fþ ßEC-ÂóßE/›I„Ç)¾‹66Z„ç)¾‹6“S|Ík´ÏS|mk&§ø.ÖL"ò®12ž;„= q1Å þê‹…`§ª1ϱ ¿Ù¬'üŽvÿú÷¿ë#bw¾x ÿüs¾…o—ýõ¼ÿ¡L_ C"KZòÕ2øš(½;Ÿ×Ö0í°ïû¥þÄm¸u [7—zX¹›ÃäÆ>-®¸Ìp5¦®ä·g‡—ìé +Ùèß.Aa%S^˜Po–ÔF?Åây'ã31ûNÙDè993.EÈn¬7°AL ïÍ”-d ÌÛÌHUÂjñ%å(·ÊÑäOjÒ†¯·h#£D¶lƒ _v+<¥"˜{­N«Ý@Ù >y|¦Cº  !ÎmxKp|mHY0ZÞ[i˜$'f7W°wÞj¢UÈ9ã¬D˜ÝÖî²ÛŠDvÍì„w•r¨Xv6à!³ÇJ›Ýl”h )~ï£A0ï1†Dó‰ÃËÈÒ&È;¡üv,‹U¢«£eŸbˆò5˜¸p¼'byþàÆð}mÜJ®Ã¸A-í¢ßa±êEb˜ÌÇÀÃa‚tŒ„Ó&™Èð~Ö6ù”Âê±I¨"³6f#ïËæñÍ»7^fiý*³€?Âã †Yê{vfø*X‘®`’GÄñcl‚EÊ[ed/\Á3Þ¨•K0‚Ç3fb˜ùøÓ$Ë}ü˜‘±R½Uz»hð³Èß•wLÀb(‚åãCöBJ2b: &Ć7ƒ×ðÞ|†åg~;&¾Û›Ÿ~›<¯7o¿O“ÀÒ9Áo¨Ùc~p¥'ØÙˇNИ‘ &tRÉ@|½£?æŽ –¼ÅV÷€Qš3^ÜÁ¥Ô²€ˆí³ŠÔ+^‰ÅÛ“Wâ#ÔA6˜J$°—!æµkX:fÆĺ(x}¡ŽÇ×UœáÎeCÁMàwÙ"ï‹Ý§úl¤b²xYÆlƒ^€4P ˜^x_&X°Äð°ûLµ¢AðÊ1ûĊŔd%qzS³¤ q(‡±Ïb›H.â_¶¾—ÀŘÂßA°`’“Ø nŸáVtîêZ#?m°égÃòhª‡ÚM«aûì'Ƶ …S±Åð<¸ ±ä¹+Ôµ¸¯ bÙZl¿®cÅc½òc+.ùX|}ò´¯›¡É]{{„`ÃA–L}m%%4—´µ§ËÇŠ‚&ç"5Øë㶠ž`½`Ébõ!~\Üp‰ó'JŽ@½ôøHÉqŽpáFY­ˆÀ B_ŠÄb¤þ®º“YXºßR°Ä%«ÆÂ6´/S+Q¥ ï^B›Ä 40{ÙÛŽDÇË7ݱ„+V\‰%5 3Ô;nH‚ካ$3“$ûò÷°Ùt¨à«25F ¼ˆà¼DlˆÇÊV¦D(¶aÅã%–Ä·âß«9‡\ßJ´0®F¬Û0,#åÝcžã}Ó +Øl…,©LÃ2VNö-\âB„ò L„Dƒ®6í–™¯«qVàÆ°sý]9M€«TBnHbŠ +>4;æN†©S·/¬Ù]qŸÝ ¦·å+ƒÉŒý>„öèñб4|`Å%j:Á&194‘`Øy`~T‹ +Ø®‰A£'_Úka–_®ÑbÙQ]Ôùu¼ëfÁðp°mÃvÙ„Å'Lè+íIl×Û‚á[%WíªqØ°øÄ5Ë‘ÎB‰ÕÚÖ•º@[d©[u|b“W×0ü& ¼2èÜ]á ä= üS…ð¾ðKÃö½@ò- )š RBCUÇŽ$˜X½ Ùw bø+H_— 0|Wˆ¹ÁðJ°—Õ)M-ÞwbXipirƒàÊy˜ã¹BØâ·œ|ÃöÍ…f +¿H}n¬„ˆ;æT*†ÑLSßÔômãh°CDMṉ­?Ãß`i·ôǦ$<ت ¢ç·ö»„ñr}Ù1|D¨_ï ƒê(Ûöx‰*sµ €í›™`‘{Ué¿KLÉÞú=ñ2£s}¬Œ­{‹UZ‹ð¶ö~sý|Ùw@A‚‡Þwã]%|C¬@u³ÕçMÇî(ÞìTÓ0¹ïa#¼èfàýáMT[ؾsƒ?¹ßoY Ë(+lrõUäcS%1å`愆ag[g8”#t½wíñò±á£K‚[_JyãíÒŒ'óûciؾÃÍi;š†E<V´Ìóë™þ³}Ÿ&dÇ«k»ÐuxíÉ OµšèÀúNç«jµ:ÿÁ¥ÅX¹æeã Ô”ëû;ý2L+¨£j½,Lf¢‰†…c†¹É}¢AûÖUƒQI× ¬#/ßWæv嶛øšïªª¢$}ÈÉù}à`Yƒ-Ù´·‡Éàç€ykk¢*±X,{ýÖ_P¸V°nNÐ/ÂÞ…µžª˜ŽjÇÂÃ&–Þ2÷êÄ´[ôa°a‡Êýg° ŒLú0ÜÉrˆÛ­:1ŸjÛª±Ä$¦º{ðwž¾r Q±ÝD¡Ï™`WÞÖ6Ô!ë+°Í•fBTl7_ˆ(Œî3ï%PUÂÁ„eërúiC(1Ü51±«ZÌFÙuàŽÀ Ø°Ïõ[îv#4ä}]ìÜ"Ç &ÉRÌ™ú³8ØDôF cú¦ZÄœÁÓ…(ÞOæFÚ°Ã^ +t¤±&Kè–•‰¢~L0ì!õ­¤Á–†‚UR6`Ž¡.QUÀ ‰¡ëCÇ; ~ÌíJuè€qŸŠ˜Ák‰96è0Áè?FXO®†S +Mˆ· ŸŒÙt ;Ì3b¸cÕo%ËÖsÉ +â=&T¨{°ÃpŠ º=¶ÆÈCÍKˆ1TßnY›.ˆí õÙ–9ý¨gê³aÒ¾…†ö1(;¦â5Œæ>Q 2öü˜õƒ-$Æ‚­@¶/a«baÉU;E®ñB‡™hÂÚú¯"¦>y}͹`ÚX‰Æ;,Hz PÁŒÞ F3‡Ö 7Gx øøøÈ¡c‡yI ú4ÖMX“Ù E¾ñ¦ ;LO @yתOb‰AÂìêxX-|{}¼Ã, Ô~0Ž¬ì¸5Ô‘sL<ŒSÝUs–Øa²Ò‹6ðs““^‹Å´Õ{âýàe‹f$v˜³À°kB¥Zß0èa(¾XïÉ]«}Y<÷`꣑•Sl˜Å¯aGä‰Øa Öþ°bï6¹öì0ðBeÇ v˜ÈÄ Ì1Ø»‚a!â–¢ŽG·æ[lØa>c’q Âfãð.ê- ¶1š ;,ë€=ºÓ–†À Ç&CE ĸÆÑWì°¹Cƒ›ø¦‚R7XÚÁT KêÐ6ì°Ç‰e*#‰=óüÊŒ¾Jº£ô [Áï}¨N2¡|h1¨IL@Ø‚ýg‡ 닞ȋª¢À-ÈØ‹RÃ?$¦VàS¶G ;ÄÉZ€UÍÔ‹†Cëѹ؞£Ó(C 2¶Š¿Ê:\ƒHÓâÕnu4š… 2×âÒ¸šDºÓÏöG¬¾_úDTªý]vøpÝcà~æMÃ"Ùg‰DìyêM ;|$Ž6¿Rï ½î™åB@Ÿ¢›LÃ?%öLú¦ßHKdä%Î_ðÕ+©Øá¤ÀƒÅÈSÇR.°ß«›a±AAÇ>›óàÀ0Ì…ùƒ©QßKÁ¼ÄèüŽâ Ò$!4ìpnMÇŸA¶ŽaÀ\¬Œos¹”ö åp|Þ†öµý«–7zÁŸzÁ°µfsÜòpŠèw– ²ð‰Œ­6ýHÜa¥BŸÂâ 'ÞN ŽWÌÌÛ ”ȵ;Öá>ð­*‘6Ðvy+1ÁÚN ÷1FÚŽfÚüi;b4QÚn¥x;b,_‚£WÄ2¾&Ò„pL*¿©x;Á°|`ÙWnίéÔFr¼`bïÛŠEýz±†¨¿*;ww„`cecj@q$î°mAïDü?wÄ<ìDר‹¸#„Ûgׂç#qG ¦ýJÓy¡½ð:å‘åÒÀÜc»~½U¿'6]ìh¹ýl î,Ïîa˜´E4âÎ’VƒúìáEÜÁ너¯VýfEÜÁ/Ã&²ûeŠ¸£…»Y)Qldî`EÀ–SN°¹‹Œ“{IÞhdîÈÁÃ>3¥ñ„#wé8c…ÅNë+’A*QB?ß&ê&Adð»¦hꎡwr™þ‚ºãÖ°Ñ›úÉuÇ3&ÔvlØ@Ýe¡õ°WâKQwå|›¨;žÍë×ú61wŒÁZÙÉmÃæ#nܨ;Æg·\oÿíLÝa0ž%uIÝÁ¸ÁÄ­KÿDÝá7=ð4Sw$s:¡9Sw j–býÝHÝ‘ñƒ5mêŒÖÔãâõC~›™;¯ ê‚¿`î$,îìV0wôát¤ª45sÇià±mÆ æŽ!o|[§fîˆå¤ˆ;@^j¬D³&îˆÁ>j:DwÄö¸«æí%×7ÅÛŠÝ|´)ÞŽPóԿͼ™'|¯ºáN¼aB?­±ú;ÅÛ㦱¹Îé¼ßÂPŸMñvØ´ßHêØÀÛ1äð9ê +ÖÄïÕÕ¥x;šw˜b0t«$o'1k<ŽÉ3qÑß²A9SY¡¸ƒYŠ­Üc•Ö)§‰;‰õCÆNÎ Äü{Ë\–J2k⎾?ö½Z1wVÒˆ:é¥x;Ë0^ì¯Yóv¬·°=P¨i;KßÕÃt h;Fð‡5€0Ñv¢rbíH1±väW|€T¡akGó³¹1^ŠµÃ¬7°¶«y£I;LzÇŠ‘š¤I;ÏØ0fiãiG…C#ÒÙ†Qztöa+ÒŽa«ÁvD+6ªlVª9;:X˜LHläìàÕlX¨e»àìˆáð7;vÄè˜1¶UÖ[qvÄ2IµÈFÎŽ>›Dš¶þ³Ã×'k&heFÎŽ®Ñœ0 ¤êËTœ±TýeÁÎŽ"ôUô-9;:ˆžùf±ÿêð£7úßÌhI˜;|ezÉ +‘ٰæ÷˜ 4lo$í€A?2ŠÛٷï%ï'´ÔEÚ1KµÙWš´ÛhìùWš´†ol¥8;žùÌä‚ë8;Éæa2ëgG¦Ú%׌ÍÙiKIsvÀl¿ VŸ +s®nl4ÞHÚÑ%`l´îš¶ãt±øaÕ½š¶£ qLåë5mGÓªØ6ñmGÛƒ±´öamG;‘æÜ)½·ÛÄe¤õ+˜âídK‚òx;òUø¶MkÞÎ0øQLK)Ò¼}PŠ·ƒç–¹6«Ò¼¥îÇFZ-GMÜÑu³X!•œÖÄÝ*øñ…ôGânˆØ~›‰;¸Ð’‚ÿm"î0Ó°öáÍT&CwP©R. ;˜;:à–ä æŽq Ïäæ æŽ9BøÞ\0wÂí¥fî`×áàM؆ Ì­*蟸ÿndî°E‰q/ÐÄÜEØ/¶V]ž¨;ãèiÖí¦îb“Î4l îl: -)v¦îø=õp¢îàgÙ/¿©;k™ Wúïu—ñQ:áÛ0Eݵl¦KêŽ$ÕN„NÔ] ãnƒ¨;|fOÍPÑÔÃbÀÖ×lEÍÝa +dî’ÕUÒÜ{Ão7ž:Ó6pwÀšÙ×0ÅÞmVòhLÃ{·áEÀsë¬ßÈÞa#?R̓™½«Ýaª!9³w0å`Ä—ÎÐ)öBÒm‹ SìÅMã/Ù;æâs2½ÎìïªßybïxÜx›e'úŽÄžâ’¾ã®ØˆÞ‰¾£= +ç’}è;–Ág1y_'úŽÆ$ýêöxŠ¾Ã]¿ç@ß1E½Å.Ë@ß1 [™Ùi¸¾#‰ÚÝø‰½“F×Ô{ÇvøÇÅöß ìç¡Ï[5£'òŽ õ\½¥"ï€V 4QyGóš2oä˜.)WG`"ï¼tÕ§š¸;BIء׉»£ÆÃ<ŠCUÜ°«»\pw~¬‡˜¸;Ïø16Å-½Nì]45ëRn`ïY®…N™ ì©^¸¯›íÌÞÀÞ†g膦׉½cEì¢;Ø»W#»T^'öŽJ›µ‰ýg{H~õ¤¿‰½#K*Rvfo`ïH\z21ýw{EÛ§âÎì]À~â0û‚íØ@ß1#ÐÓBëã üü8˜A5(§é;,„ø~Mô^]œÔˆqÅßÅ7_)³x^'þ.ŠS [ãÌßEöâ`ÞÖïyø‘v" W) ÍßmÀ°÷Ú­stïµÙ°¯ÇmOЛè;‰@—´3‚{×ÊÓö ¯™½KYö•N§ì]Kn•µ·€fï»>oü æ5³wð;hñ¼£ÓyVhò.ÑóÃíBî<âá%Ò0bIËûRä]âM ÐsêtÚá8‘ÓƆOÐé´½#Ôžà5³wR|€·>ÜÀÞчsŒ wBp`ïèTa÷ó±‰{GªwOÑwôL`qå׉¼3T|ÐÉ¿Näwå@·¥ÿî ïèÜ0˜Ô²@4yMžØ©<õß äÿPBÓ÷Û°‘Q1dŒAð’ð4?ÈßÁ¤žþËî¼X0'þ. t²*}W§:ÔPm3}e ÏêTvGöÎ2C»ŠœØ;&Ïn57¥³wŒ3ÖùšÙ;cXØ.Ù;K»³ˆ‚8±wpx¶û öÎÒð¥n©4œbï°ÛÒŠ¯~¢ï€A•`„3}Gz)sZ‰½Õ;‘œ1-jªù;Ç‚AhÝræï¤T¬øªk&þŽn|ñ(äöÄß1¦§1Õà´æïp“ÍÒu©¥|Š¿§f]MàÓü­±Öjýœâï<ÓMd±|›é;ÙŽ÷­žOqw|{ì e: 7wÚü£bïp“LÏvq`ïðø²P€…Ø»Â&xTÛkèö®–5a³.¯ ö.³)¨µ‡é;®Ü–-=ÕÞ‘û¢ÿ½uQ†Ú;({¬…–Ü4ÕÞ1¦¶·Ñ™ŠïØ –!—Üy¸£øncӞЎ©™Šï=M[3ùOô\ÃJ‰×}Çz%[»ÚLôMÑZ¾õ:Ñw çcΔұÀc€Ûû¼³~š¿ +CgþŸ8´tMßqÁ7¯U}ÇÍu¦÷&}W¸_à]áàÿÈ+ù½ù`˜Ð®è}3å +^‡KS÷Í$†Yèkå 4Îä%(å­Ú6ºq&0&ü×Ý7³°11“TOÕw„`˜c +TÞm3i¸Ú,)ܯ©mf¡ +²5ãA³w4(Øc±VhöNÛ@ Ôt‚‰½ƒ>ÂÆŠ½c"HÈ¡žä¢É»HïíÈåÉ»(}Éz…w‘uÝ0´š­È;†PáRw¯c$ïxä^¢sÞŠèFò.I^lmŠw—™–T“Êùܳ°Ñ´#4w—XCJ¤ñsF—A ä’¢î’ä*ëÏFî=Ö5Asw<€¸v¬TáÀÝ%.”½ –¢î Ò7öº256ª¨»$!'8¯sÇL"žU£©F»s—hžÁ¶µ» ©»ÄOÍJÜPÔ]b;\˜¥Æeu—èâüoåMŠºKAºn¦zY#uÇP&|Ë­Uq(êz ¶Pu<wÇÐÜÆÀG )òŽeÙPYÍþÕäKb˜õêÓ©gfÒaoz¢È»ìU¥"ïòâR©abÍÝq…Ãzj…š»ÃÂÌʾñzŠ»“Š½žd6qw‘,U ñ¢i&¹;r´®Æ5w—„gó½ºNqw¤¬¼kŠ@SwIÜÞ>ÓÄó‹÷R'â. {š¸K*¿]w¬Qñu[ý6w ^ó•TúB3w<2‚çüÔ™¢™»Ä(Ÿaç­† Ì0L¢ž®˜»ÄäHU.˜;a»­31wìåQ1wùÝZRV¶g«—hCÙxQxǼ¤1÷¶˜Cá{M`[Õ±×…w™m6JS<ºðN:+`3m|“*¼Ëc)Œ®»#Tðª.úeföõancd¬»c€sÛiª±ìŽHõÅRew´Táü·F¬ºì.sÃ^o•‹ªì‹d£'¶õ’¼£ìŽ-1ØÕëìÜ ,¤ôiFËî²Th±üD0UvGÛÔÂ]±çº;†>Kõ¢©»ÚïÙYs®»Ëâù5êTSwŒ fk.äDÝ1ŽÇ/ØøEÝ1C™ekí2ñÃ~ØJN5wÇ )î_®ÚezöiáQ¸í2y<«§÷zAÞy¦\ÕGý6“wÒÿ©Ì4yG‹Â»¶ +5w7xÔßfîŽyͶÆC¾ÍÜs—ñ°ýÉw‡›`‹3­€&ïèq½¹ð.J÷×­cºðn‹{Æ\xgXgR™¼£Ë&=R·^°§*ï>°{qÝPxÇ£7¤±Ro¤9Þ‘ÄИ/]x ¯¨÷ +Ó…wð ¶*NÍ2 A6™§ßæÂ;—ã=´º]x—%JŽUر¡òŽ%è÷Ô•wylt¤*ïj®§ÛL§õ†Ê;º£e¯¢ž+ï0iM‘ΕwÝïÿv.¼ƒ–-’v*¼ƒ +énØ©ðS ¾Bkj8pw„,æ”÷gîŽ<&6dläî¤ѶCº5u'>³ë½¦4uG¬0 /ž ïèO㟥„3uG,2Ÿ³µ%©;bߦm¹>UÜŽEÝ#ËÑrYuG º£gw(êŽ>½ªGêŽ+²ïtuG_Ž§3u'Õ’e¯:™ ï$µ×6*êŽ!…ˆ?m=NuÇ|ŒM2ç6PwAömfî¨à –ÀsG÷†•Í½^o`î }v«Q¹‰º3²¯âu_Pw°øD«ºÞLó îhhK7ÜРºcËBvBØËõîŽ]‡Ø_´*î¹îÿ´õžëî¬iÑŒo3wG ‹Êo˜ª»ÛØû­U1ÎuwÐäxºÖTÕÝñ€ š]Çîσ½ 4sMqwŒŒæÝñÓÜ]r5uç8õvn˜ §ˆ›vß«s¯(1œºÅ‹†™’]´áõ]TÝI{ŒÚXÅÜID,Îul`î,w×;åjæÎÒU¨oýÛDÝÁš¤Âˆñ¢a¦ã®„ l{±ÞAÝñd„#gIsw䔡)̹_&}0 Ùófuç¹U§mÛҹ莧&ð\­fˆ(êγßZ†ãe;•vØRtìØfªJ¡¨;Ò tÊlì…u‡¡å%Ä͹s¿Lv4…Ð-r¨©;évšG +î î€9.ù:ì3B¸{§ÙF⎒m/Ç;L7b ú6zdîÈãÒ°ê«|dîˆ ¹ˆŠ¹#1XSbŠ¹#†5ÖØ+æŽ=ãà;Ív˜ƒžÕ+?üš˜;¯úªkæŽX`ðv'ü掽[:v˜‘¤©k/ΤÌ1ª•NŽŒÌ +¢ˆ2Ÿ™;bIú{YÝa~2@`0WÊÖÙÀƒ¹#zŽ&îj\JàÌÜcÒ4¾Wgç«•˜“Šñ^Vw0wÄÂSº`îˆI¹U/Ì1†Ó.ÈpiA5ÍjäèCôÝÁR—YÓ¬†©l§Æ¤>YÕ¥AÖ4«‰•'§®GÔ¥AÖ4«‘ÓeÛ/-²¦Y'…À¾+vŸ¬ã¥AÖ4«aî€öôÔ¥û‚`ã^”„9ÊÕS—V$YÔ­Lˇcý˜P—V$YT®ì¤Æž¬Zî’ —V$YÔ®<övÙ¶™} —V$YT¯$ŒéR‘*m’Œ—V$YÓ¯…Åц¸kµñÊŠkê•i\Œïº¾‚‡ +R¬éV:°sUÜúT¯¬È±¦Z™º¹šÎÐ䮬ȱ¦YY ©ý«ñÊ‚fM¯²•¾­®rŒWVäXÓª©¿†%®Î˜®A”2¬ÊÛhSL]Z‘Ã-ÈÁ²ÉÝË–¯ŒìF6<:Щ(ºtûPG5²ý‘¯øë§Æ‘yµ“ãOŒò{ä³gW(fSÅû +wEyb}…U=à~LíGø4oj¿~ãüc"üîgx^„)óaÎ…`òT€=tß ù¢ypà‘Î!6²Jàõë_!‡éR™Äœs‹½‘Âb‡Ã-±S¥úÓ¯‚ùƒÿ–G³ZV¦Kòà¯ýç?àæ_ÿõúõß~ùó¯òЫC„þ¸çì8B{*‘賧ÊD6jEÛzí#º‹m¡„#Æ(-1k› CïwÈÒÑe~H¦ng$†­î°6}Lÿ÷xc–%eu1Døš!bzÃSåê)â× QϬˆñê)Ò× ÁÓN“䞇È_3„•í™Ëæ©Å}Vc\ŒP¾d„øv ‘.ø§/€½Ýyö±»áO_2Ï] + +÷b„þ’¤ÒƶWçþåKF`ñ&t­»zKþ’²$òâ#üEð”Ÿæ"üà0GþÞ£ãÉÑàcy±ÑXÖò‘rC„ÃíÆ^ò?n zò8†±‚ëqáö%>q?Ió'¼úÑãSc?ùê/œ=5öOõú‚·bˆv@}Öý;¥Å#’{G„9!váƒÌØ["L©°J„õœØ;"ÌI°£dÃÞaJU"¬çÁÞaN|Eø ö–SÊ«a=÷õ–S²«a=ëõ“íwáçl¿§LÛQ„Rnïˆ0çØŽ"|l{G„9»váƒ4Û;"Ìyµ£$ØÞaʨU"¬§ÖÞaÊ¥U"¬'ÕÞa΢Eø ö–Sþ¬a=‘ö–Sæ¬a=…öŽg0çÌ"|’<{G„9[vჴÙ;"Ìy²£$ÌÞaÊU"¬§ÊÞaÎEø Iö–SV¬a==ö–S>¬a=1ö–»>eÂŽ"|»1Pc?18%ÞŽc{G„9åváƒÜÛ["LɶJ„õ¬Û;"Ìi¶£äÛÞaJ°U"¬gÚÞ `Í©µƒŸäØÞaJªU"¬g×ÞaJ§U"¬çÕÞaN¤Eø £öŽs +í(¹´wD˜“gG>È¢½#Âœ6;ŠðAþìæ„ÙQ„2go‰0¥Ê*Ösfo‰0åÈ*Ö“eo…÷§äØQ„²do‰0eÅ*ÖÓc?!9”?%Ò~ÊÈEø 5÷Žs*î(Â9¹7D˜sp >Hƽ#€N¾Ç_ν1üœu;ŒÿAúí¦tÛQ€õ¼Û;Ly¶£ë ·w§ÛA€2mïf@êqžxˆn¡Wò ÅwÑùFü(¾‹ž7Z„ç)¾‹n7“S|}n´ÏS|n&§ø.zÛhž§ø.ºÚL"=öóßEW-ÂóßE?I„Ç)¾‹N:Z„ç)¾‹:“S|Ýs”?â»è›3‰ð8ÅwÑ1gáqŠï¢WŽáyŠï¢KŽáyŠï¢?ŽáyŠï¢3ŽáyŠï¢'ŽáyŠï¢Î$ÂãßEœI„Ç)¾‹þ7Z„ç)¾‹Æ7“S|—Å4J„ŸRÇ4Q|Z„ç)¾‹n;Z„ç)¾s›%Áóß©¿ŽÿiŠïÜXGÿ<Åwxœâ;·ÒцõÞ?ÞßáÇà¹IÁ[ÎœÛ;„ßnïðã#b«†gYâŸp,`ÏþÆ3ý^G‰Òn¿7Öò­yŠÿ']ŒpÕãÇæD0<°~ËÖ•t2ùdÉ|0'¾;€Ëò…€|áœøîˆ6pšóÈ©¯œßò;ÎlËÎðð¢ßlžñî»<òá¾;â3î»C~ïÃ] 9÷‡ùÃ&ýeØ´wà–0\0†Õý³ô ä,O{œåH<×òØVŠâÆ.}]{þž_5nƒÏx¸ÜŸî¹qy:,¯Æõ§{ñ<ýÌò ½³srà¯CŒ}ž]úÍÆ>Á^÷ zvºøNiËñê³è.*Ï~¸â<Û›+9~¤oÓÉ‘69ÄÓ…_Ò/¥÷öós>v’óì6I9ƒzÂœxçTJ(â†lå U_3È=Ï@4®È±µIôì›F( À¦Þ ­‘ltr–· <»Ò¤‚;ò@Tqþñáà ȃNüQ¼âã´RbxÍÑ—-VÁ3O¬õ1Õc¸£Þ\[Û—©¿ò¡^ñ93!—Òqȹ`Ø,r’£F1Øð¼À ð8‚9Ž×(òrèa nxÀ,Ýf‰ÃÆŽÃkÇŽ ‡÷DŒsÊÔòq®°`Å[žÄLŒÝŽwˆ™€¡c’_#3yü†©àrÅð2x «`n|¿Àä l9><2 ©¥JÈóMÇzÇ ß<žÇÔÖ_ñ¸hø;<2W0(›bÛhY}•è¬ƒ1 Ÿ%ž )gæ +†¥»Y/gg22`¸"VG®ó>V6ÓL 8'1Ÿ+“?'‘ ™‰‚y9`^ά7™§Ñ–ä$ †·5|i9á½6œ,'·[žÅœ¬œé,X:¦5ÎÙ„·_%ÏÇ™èËû²3„ÔL|?9ízKÎÇÁpgkb•IRäwï“Çf!”Þ´2f{œâm1Ë ’ÇÇÎ Û'–ÐÅ>G»UÍ÷·ŸªL6;cŠç­j‡ìIgåDÐý Õ˜Ãqò45¢õSGøߘã1!at‰®wQB Äx¤sË!(Ç×"–ŽÉJ ¿Ÿ$Ê6‰<*YŽš%–S}‚•c"ƒ$r*mÃxñ札X +T³ò|øÐ}’Û̸ñ—±Îÿbäp_ˆ*†m$9»Ø¾‹ b‰ÞŽÅGç +–¡ÐM]Å«ƒþJmØ~$-1ËWTå÷uCÀL¿R×F rÐk µ@,`E$S—i Çš"ÆÝ]=ñ8òù­ÔCÄ­L*î`¾ +’äf–F²Q#zÏ\q ƒ l͹ˆr`{[‹ÄxZ;OdnÏC¶Xƒ‚ñ¨zo«j-×Ì™]÷ðœt‹.Ø:^¢ºÞäâÇ,„~H-± ¿ÛaW óµ8 ,%NÞ¸`Ø,Š¨Bœ0\šV”÷ز@vXúÄ0Ã1zÇ +ö¸ÔïX²ë9‰çzïj«ÏD¡\à +Vt´^ ©«S½¥4Fæ.Æó¥mƒð˜˜’Þ „×ÊÝ·Þ1 Úëz­p5,ã…Éj·XÏÎoœ‹ƒ¦áúÚ°ZêyÙÄ“Z8C0•ð°0$ëåÐBŽçÖ{¨|àñí0ј'Åý Ž@}„|h(É¡Âô +Ù5(àGÍU(ajv)󡼈yø]ýâr(2u¨)[˜á0:dW$¶+6Á°´MÍ£L†;¦…`˜Œ‚%Ü\Ÿœ.cWz‚á•øzv<> ”D6–¼.1Üs¶>%î +Q0èJ ÊXÀVZÇñŒy»g'3zPoxÓ&äXß4û,n93›s +“S¿ÿn×£LŠƒÎfª˜P4‘kÄò ÁRÄ*ÁÒ+ Ûu¬ãqã/ÝÇ*§ç1öx×®æ:β’BÃvýK,lØüÚ-ýp=g€Öló{â~â<0Ld]$6ì8UžwÕz|7±]m †Í(ºöxq8žÖÞ’iØ~<³1ð¹AÇ9ïÄ°=ÊqäÄÒ¡îÃ÷߶ª OC§¢2Q°bŽÅ lß +ƒ »ª>^ÞÏ^çÔß\Æ46 9ÎW'ëÞ6ì8C‡¦»ë7(ÇBÌBY´’b< m>+†µŒ5cvœwN,órÙ 0‡3Íå vÌé"‰¶ÄösË*a+rP=¡ãlrbxXDõ–æØ–ó°qk¾&±ãqbØåðrûïö-‹˜çQÞÛVgyX8,½* +^^€2ïо› æñ)M]%Ö‡~Þ†ÍSÞŠ­£PLßô6¬'YÄ+x£QÌ9bû.H ³ú1´[aÆà¥å6L„æÆ®âùc‡¬îÄ Âbp‰†&¡Äþ¦Ilbbûæ)änF=±RðÇVÖ0ºßmDüúØX‰extÍZ%¼tš®ãa­Õ#Ý+¶oº‚öân¯%¾ñÝá‚ÊÛgb¾PvÛ7db˜ãØB:±Ñ«˦ŸÆNlß«‰Ñü-í­À2XGI´ ,ì5©aû6îäœ{"¥.}`øt·“\éÍÂÄ€ ê[¼Ź{ÇÉb‰Ñök¸“&fÛ›†íÛ?Þ¬{q}Ã`ààµó~Ì“Pש͇icÊ+àMÇ* +^_ɘòxXh×w²M¥ÉR³Ž4'V­·©a0ûØ%ÓÈÑ +JÇ÷)»Iá{ÌⓇªcñ—†}ž7¾L8Í þÀÀ² ÛÍ çé‹bq'±c‰E†©"ÇÒ46ßMu+pÛa‹àrFcêÔÙîEÛƒ½g™ªNܤ€ßõ6Ø5LÍC g—Ûµ@…¿Š&6h7a°SAC¶þÌÒú.Uë£q­§4l7oÜ|LLãÛ-±±b+®Ìy†™=¿mX·|ð ð3\äVÞ £Ë\3,r=´ÞÒ VQ 3m ± óÖb Q0l©Ð›u/vXLðéð¹}SPŽZæŽLf¾Ô“`~0¦Ø¹¸/¦ŠÁ.“]5À 0 ?´Áü`gƒ¥Yä†Wm]Oƒï(6ì°ÁÞðXvuµ:|ǦB+T5“oØažƒ‘“cûpÜû Œ‰X%ÁìÂÌ,ýg‡åF ºÍãÓ5ŒA2ñrˆAÆÚcÇÁ¨#«ÇõéL‡‹©Ã%ú0ÕötØ{€ ã3V]hþJ™:ŸX€¶ ±Þ2 ¶ ±„É–«!%‘+ªg[¥ÄÂeegÿÝa'ƒö,}µŠñ ¯‰)ñÀ-ú†FdÀç‡RÇÔ¨³6„f³2Á€1äÑ67„ÿˆaybÖ†ŽÁ±ÂÖ%_X„T¥Í‡<ŸÀ ŒðrÛÌ„¾+ØWiYü)»$‡Yʼ3lÐ ¢ú ~ &5½¤ŠaÉmÕÿ%v˜¬äPaW皯F Ûn´UIð0‹ªŠve0g‰e(ð­é)ºþø†ÙÔ·‚ß³q¿`~L]bð?m³g=#0 P¶ñ0ý"¦„mØa‹rzDlÓ7מ{˜ìú:LdBØáœV {´ˆDwÃK»ev˜ÏŒCrF4 #Q;Ô{fj£X=oÓšX†˜¹Ú³^^1XB.õ{f71è0¨µzO&ËXOc}BáÜlÓœ&¿UUyú^PH4׈ÁTdI[Çvs=ÐVJ.w-ÆÕ»Û{Þv< 芒jþHòô~=Ó)V(¬cþeþj³Çøº%SB¬%Øþ!¹Ô°Ãú…›$l&ÛG£aƒ­õ”‘ž5¼ó†žAäF¡\{š„ŸOÍp*ô=,ß î4D<53xaô6Ä—>Óá c/¨F…4ÇïE¤s3¥é0Ï™Qç¶c ¶ ;É7èð5¢ìu؆ªºáþ Á¨ºæzìøø<©a‡’èlbŽ†vÏ@®«“Æ‘>`¥–i3/ >JÂ,Ásäæ³z*ýâi€†È6MK{`w_e±¹M¼ˆI U²T0³6-ºjí:<`ŽŽ@¬0ìÈtú+¶Ì ynØîõð@ÖÚêîyùO È%—®ÇœrÿÙá‘{œ}{8"ø1aßbJ• vxKÄ`ÞÓÍotTܶ +1Æ¡iÐáH%a|6ל%Oµ™ö‚Ѻûp‡“•èöÒ‰¬ûµ§‹…ÊØ1X­›i~"‹[º–ÉÁ¿`6ˆ4¾2‡ƒ s±4ìpβp\0ÌÛÓa62X¢d*":u'v8nLÓ㶔Lÿ–&86A†L°ÿ¬$“B™ã¦ø?‰‹ìý>sgé:á }cîäMjå*æŽf„Æ+©Ù»ôΣ–Lì7߶’*¦Ø»DRŸ¶{Š¼ÃRáÒ©›ÕDÞaR1öä¶zË‘¾Ã–*Á¸*¤bï¼Ê$¤ÍëÄÞá»Bá½×;*öŽln¡Q—ä„‹>×e­Ù;F\áLåÆ:*ö.sáÍTBY³wŒ„Áêj„½fï2µ;œxÁÞñ»c–û5Öì1¿{dš½#–éWH±wÀðFðjúNx$l'ÕqÔô­ ,Ó('Eßñ ¾LÑw|fš)úŽn0,‡ì;G7Ðwl*D¼ §ø;¬oÈ‚U]‡Sü^-&ÝVËÅ4W˜ää¡5:òwÅŠ?]ê¾­ù»(ì/œ¤JíMü©(·åÎí üahs­54gxl"¬ˆêAi•°øS[ÝpMà1uEÂ>õG ³ÓUFCxXÑœb®Fâ4Ç´cií4l ð˜¿ñyRü!3!jîÛLßâÝÙ!Åßá7ÒQõ 4GcÆîHÍßÑÉekÌVówÔþEüVÁg%ìŸù‚¿ƒé …È4ÁÇ°¦Ž¿ ï`3CÇ2Ö°¿cô× š¿¿51´Õ°¿£éºU•ûmæï=‚ÊjL¢¢ïaU`ëïÝAß1©j¡1Nš¾ééoô…b±;E7Ðw´"ðRZ¤QÓwž3@øÁúŽYpÆM¹ ïøbáo!Vôt?´Jª©6}ǘSÆìØ:µ7Ðw %ø´;6ÐwR6†¿¬‹YÓw aÖäRô'C!© ô0¨)Q“ßfúγ1YjÅÔ}‡yKJjØ@ßÑ 5Bøm¢ïá™0å:E7ÐwANúÄ‹· è;`~­oE&²øD~¿•¢ï€áOSrô]`¤ zßfúŽ‚§¬8Mß‘´nÛ7làï¸RŽpæï€F;ª¶ÔüS={Á3jÖ×ÔÍßqõÁÝ6ýg}86Hê\Û@ß1˜ärhØ@ßE®8FaJÃþŽA’ÝÏžø»È³áBÕ·¢ø;îCØz¼;ówÀ +öÑžª2òwdõîawJpçï¸-ÀÁh 'þz”ë9m£ø;–ÿ†3\ÃþŽ’à;Ö|2Íßaõ%Ø\=gæï`.…–¤9ñw‘9Ž)Ô¼*ÍßÉ`:ø†WüåÚÇ>QjÌ\ñw‰‰¥z=š¾cD¾¿½o3}'qi(»Ð±¾ã¢¥9¸Óp}g™˜ˆÛºNí ôL$Çèj*)úŽ*]æŸmÐ@ßaUÔ”ÐÊ1(úŽ$—¦“m}‡ÉN¾5Ç™é`<›Žü]âú15¸ é;iÖ’å%|›Ø;Æžr`°%7ì`ïV€ÓFF­a‡½D¶Û{ +Ùè;|G¬$»™NÑ ô¬bëª~ÿ¦é;|bnð6vn ïhæàCæ킾۰|`éƺujúŽA¸Ôz„Lô݆M{w'úŽ cOÒüÝƦ‰Ùî·è;¶åñu_û6ÓwÌÄÆ&n«vÓü°ÄؤéÜÞÀßc¢M MŽfJuê¼ß@àÐ'Åß±tÒH©aÃþŽ>>HK”ÐüÍà#aKówÌàÆtfLñwbÎÒ.¹àïh²bþmM(þŽ†©ƒéÔ¡¾„ÞöÍÞѶ=’–4{ÇØj£Wüw{Ì"Ó>žâï€9ùD è;ÃmªÇô&úX¤b;í7ÐwÀð·fJiúŽ +«©½0MßîS¹f«NìÃ0&Bè4ÜÀÞ+¥'ÔiöN†xå[gýú˜$üÖÇÓôaá ÖWìØ@ß™7[jÆ-wl ïØÿ•Í£r§áúNzàqR§úŽAH`u3×ìƒP$Á]°wô™ô Ø;ͶÓŠ½³LÚptv°wôuÌAx죮۸•4d ï¨[MNäóJ¶DÛi¸¼cÌŸ­ùš¾cH‘fI#W}GÍ„-,íÝAß‘öK’× ½Û˜Ü 5Ø”‘½c~ófcCvòŽÉ°ºLìŒß@ÞÑ ¡: 7w°©±•10Ò°ƒ¼cw'øCyëƒ ä–•ƒúFFò.ÙOnØ@Þ1h~dœhòÎJªcnÛ’&ïœ8ºö öòŽïŽÇû.ËÀÞ1W ÃÔo_udïèHa±l悽# OÔùZÅÞÑ 'Õyב½ Ì«‡·›Ù»ÀþH‡fPì^•³ióR±w5–‰ Ø»ZÉÑÓ²{ +¹Öš»C`k>¼æî“~JÌ¡s~w¬DOï¬aw‡w‹Ö_}€‘»Ã{ TQ¦ólw'QT|Ðy½Ã3#çÇšœJ1MÜw3ÌÜÃgcè˪˜Ü˜» +Ö߶ÀÜ1$ò¢Ù„Ap|˜"ï˜&¯œë‰uBÞáG5%&îŽq„Љ‹ÊÝ‘Ç÷t^% :sw0÷`ØÖB™»ƒ5Ñ#[w‡ÙÅ,Ööª;rpø$¸äOew,$ò‰U5º«¸;šÅ˜¾ö3™¸;qôì[ýœâî2VeMg}¸;2?1T 7QwŒšâ¶2&Š»ã$Ø°'·Š¼ —°ð±SVžMsw™ª†¡¥ îNÈj¡ž¸»ÂêZ†÷ÄÝÁì€õ-½bŠ»ƒÙQꟾfò{ýÆPb-•QÜM Ü;TQQw´, +ãÄÛ™º–à渪€5uGËëƒÉ¯‰ºÃnÎ|YÓªpuG/r«a[MÝÑ +`QžósÝåF$ºR%©;îØ°©°¤å–$%öñº?hî.‹³±kVrkäî²ÄîXvæîHRá%à§ñ5“wd.°,b5~5yWXé'žÒ¹ô®G Ë©Ê9’w…*©º™¯™¼+Œᛦså]aLv]£Gꮞs5Â1SwÄ°\\#Š¹ZÊ÷J[EÜ: +#qv +ýÊ×ÌÛ†Ÿ0ßÙ¯x;bó¤Ú5oŒ&d¯VÄ1HI³æ5wÄ°£BmÖ{Ä”X›ì¾fæ®Ðäj³çº»ÂTx]¾qˆ#s ±dc¿s‡KLàkÍܱ«%|“Z³¦‰;BðPñ·æ5wÄSCÔÑTÁ·$LœjæNwTénï ¡ î[±SYjØ@ÙÑàò{&»¦ì¨«,ÕN¯«Û);hoîvZn ìd¹`>å~Dz“bõÎ2kÆ.Ñ¡ïĵfìò».Õ½o`ì€ÁõÀ^Ó+çÆŽ 3*åNË ”S +¡ ¶^Œ70v j9*€Î¼ Œ]f&‰º¨¸ËìšÃ}µcc—9k°Y_•ÜqC‡1Ó_¦¢ì€AÛrý4eÇTFîá¦S}eÇÂr!(WŒd&ozß@ØÁV†˜›Ý:½6vYŒžžÿ  ;F_°çFÓ±±ƒ>cš‰Ù7Pv¢Ø1çS§åÊŽžmÖ‹&였ÿ*{qÜ@رá&ÆYÃÆŽ[Û³oýwcGÏÆ1‡³³rcÇÃÙ_¿t¦o`ì ˜•Ö&5˜¬;ÑÖ¹·ÎД]fI$,üV£(;b°z½étÞ@ÙK­iÎDØñmLª˜"ì +;3ÅRŠ°æ#ne.Š°ã&éÂEvÀB‰jûïÂŽ›Q"ÃÓɼ±ãæÊ-¬ËcÇ´Pö¥ÙI´±Ã§Ä.íßY¹±c¾ãm{ ßÁرÁÒaS Œ]dS—mOÞRŒ]dÔÝì¾³âì€ÖJ6ëNqvìo玼ÅÙñˆÌS~ä†æd•²‰­‡ÒTr¨…éUĆ ¤-1Ø¢Þ÷ººƒ´+lÿ#Lƒº×Ø€.îmk—H½3û‚µãÁ•qoƒ¦X»dy,Œo†–"íØo[H7otÅç† pÁÙ1F€ ýg¥(:ÆTœ]‘¼œÎ¡”UÙbwòv¤ì¤¯Ô^s£(;öäëÚìÛDÙ±'éÁtAÙIÿ:Ö÷Ÿí>[ÍAßî/ydìX°‰ésfì¤o4~*D;;öf:⊰#ØŒ„ttÊ;³>2vŒ÷n‡Yt6ï`ì²”â$r¸ ;<,6‚âáPé¢ÚŽÌÉöıËVÅÍcÇð2­œÜɼ¡ØŽé¬ØÎZV´&ì — ½ n(¶Ã4t™5Åvø]l¥Þ7 »BBúºÿǸûÊÎði±Ûmn§ìäTS¬5uŠ³#]´Õºáìä¦ôV늳cÀਠ+Õœ±0Ó©S&1ì.=?<¶[A;@÷‰Öœ\£ÍH"ZÅFÎŽQ„ †Ù™³³ kcßm÷ÔœÝl\›9õÊ´’úÁh{9“vë—¦ž9ÕÛA-zöI-µÈ‰œõ!­ËZœ¬9»ÄA J­þQœ5[\PœæÉF'߶Ɩ#gG²+©•|)ÊŽ•±0÷L=TSvÐllÖ\OÍÙep{èRsv…íãö +WÅÙ1[¯ËµvhŠ³cäC3/ÍÙ‰_ ?zkÍGÎNd¬0†=_gGKbcÕÚKsv„0£ï’ œ1¬„Pû$0>€…*F?‘×DÙ‹ÔR­›ëHÙ9Y¯ÎµÄ%EÙÑ g}zi„ÐHÙaCW»Å½eçdž‡ÔRqeG¯Ö­=õÊdwv98vŽµšÛÁXŒ„={ƒoÐŽÊU„1VG÷bØ‘°ƒyŒßA-mž&ÂŽX 'WZ/É°#†½#´¾>Š°cÉÌÞ*=5vÄÊ&í€*õ6vŒ@À,u-—E1vÄ`Á²ÏY­Ò(;I Æä±­céHÙ J`þâkâ윭ډÎô>š‡5ê$ÅHF%£ÒŽÖ!Upíå8°v‚±ÝÜÑGóXNâÛ‰}8^kGÌ’=÷­¯äÀÚ F ·ÕÓŽ¬`[g¥ùÖN ¸>±žb­X;b°ëC3”kG †©á1v¯‰µ#Æm´ÕK‘µã%èÑ­wÕY;ÁØ~=7Nq íƒåšƒ{M¬@ìµV·|ÅÚÃ\Îâ†L¬]ÅR` 9÷«ØÁŒ¬`X‰œ‚ ´`Ê©Õ- ´]…ÊVBã“ÚN0é°h;bì²ÉÂ9ÁÜ„‹Gh÷›¢ív% +öTnçàdm½÷FÚŽ~[üE¹óæ·Áey»óÃc×½Róvta©R©4ìH:lþ”·ϼ$éúž°¢‰;6ô…-oCwl e¶-ú^‰7•ØörÏÙR¼¡öR¼±8”5Ž¼1ö‰7çZ;BØõ¹26DrxÑZ¦ˆ;b à—ÆÔŒÄ1,—VP®™;bG ]ÍÜ14YO8ìØ?aÕ\¡›Ø±!JBZr‹¼ ˜Ó­‡Z¿^‰7D;»UWUl¤î˜ZŠiÊÐoƨE`Æ};P3wôh(çj;˜8ø¬{€XQwÀØå>m®wÒÂÔÎ{V<—ÛƒÆIåÔ,“Ö\/—RÔ]àåáH´V“#uG,ÕŠºF •ÅM ;ööô1ìagꎬÏ^V¦¨;ÆyaíP°†î4±ÄìRsn–¨PŸ ;übi!ÕÔcŠºcìØíå*Š¹#«7´´ì‘¹#TÌ^†¬˜;®–iVíg#s'FmdÂd§ç§“X1˜¨¡ÓzdžÄÝu©EÆGê®ö@2=!CqwÀpkܾúœŠ»#†iŸz5[ãv®—î.”\+ VÜÄÑ·Œ÷tî•I,ºÝÙTÜcì–­º·Þóàîˆá³ô©¸» )/foâ8rwŒÎ»MJ2¹;FçÙˆÉØŽÜ£ó0|¡“:çwlºŒ¥½&GîN‚âÔmöÌÝI´Ù²©j¯¨;¸» Xì]w$‘?lïsäîê„]SlÝuwÇp¦¸ºÛ©ÜP¨ÅÕý–ûϼ;'ÁË3w­.O¹;žY}èÚ–¥¸;ø Sq;lƒ(íEk=½yGo†•µPä]"stT^(òŽ§ïàál ÈŽì]®Å{˸‘½ƒIWvBë'9²w4Û¡v{õ¸bïØ8"à…µ]ÅÞåÊ„laëTÛÁÞÑ4¸IÅÞIéb•q/ªÛÙ;Zæµe'ö†G°~ló½ïåÁÞ–÷ã?[êbïŠôÞÙ)ú®HÛú÷£ÛM&*’ÖëEH#}«ÝbÍç¡;¬"@x#eÛ;bäm}žal¯Å; ¦Â2á=äO`Æ<ì*Q‘w…åè™ý,æv™L¦¬rhÈagƒ%à›þUÜ!2V-YN‘wâ@OõV #{WØ“ìiÝÍ{GŒ©ÿ{'̓¼#TÍëíˆa®ïdçÈÞé~ÓûÃhöŽÛŽ™ö¾FöŽÏEhå#yGˆžJ/ÙÉ;bYœ¬^Sw˜ƒ…]jc4›éusyGŒ'oØ;LEblÔ:)öŽOg&}Wètö:ÓwÄ°Ä{ AEß³Xò­ó¸¢ïˆaª¸–¥è;b)äX·ÅÞÕnú;i¡ø;b~“ÆŠ‚ü1رÌoØaµÃ2é….Š¿£ÛKÚ²U÷+þŽ˜9*·'q`<ˆ‰ç†™Ä|¶l;ø;b¶Àfz9Þa ÃüÞ×9Áƒ¿Ì®¶†f²`0ô®üZÅà©ÉfoŠyXׄXËÑü#l8_GxÄ0!zãEàËŒ$µº›‘À+ŒlsæLàKÈÞLs7ÙµS‡úÏ:W²±7]W^¡ë`¶ÞeEx%ÊÁB¹5lV3µÙ¦3Y#Ç<羿M^Éb·áûõʺÀc Ëbš4òw˜¢lµ «Ñ÷j·Îßa¾ÙUºgýü—“ôiÈÎßyö`¨wìm1w·‚X 7ÒŠîþŽ¦™´InÐîqxö=ØöºEày"àÙ96ô +¹ÝñÒ ½M¨ošÁó†UX\í<ƒ‘Á#Åij*:M·Sx°ÓiDü¬·{1Ø¡:`˜…Ö§ö ð¼$Ôz×]Ž‘Â#†­*ì# +nîRš‹îˆ@3àKùNÓíž7l<#ÕÒ' +÷0Ö 6PxÄÜöº´Âo9m¾cÂ;ÉÞ£vàðÃ\°íä•‘Ã#6ö69ÅãBÌ9sÖkÂä ü› 'þøc¥b™i¿~ý+dâ@].›Ù;ÑöÎ6/Ö’ÊÑAÅùH¹þô+äà_þÁàÅÍe‡mHïjRá¯ýç?0ïæ_ÿõúõß~ùó¯òØ«C„þÀçì8B{*‘賧ÊD˜ödØBKJbúˆîbD6Å‚xça¾­ã™Ðb.G`ëÑÞ§‡d^af£%ì +p{„üécúï¼ÇC°KEæC„¯"¦7süËÕSį‚Gµ‡ãÕS¤¯ÂIQ(=üóùk†àR¯Ýó{Q,¶b•ÆÅåKF`1¦tQ:ðO_2ëÌj•ôy„?}É’ªjØEõ<Â?ÉAR‡™•}á_¾džÒ]ë®ÞÒŸ¿d5ÀWSé/z„§lÇ5á‡wÐ=OðYÛñävàÁØ—g«§z|ä’Üa÷AƱ—œ‘ƒÎÞÇ8öOpC®¼@Ú,–º4ƒú /_y€zô'_ÿ•÷§Gÿ©~`NÒ®e“ÃãžõO9¸ÃÈŸ$ãÞaνEø ÷–Sέa=ùöŽs®í(ÂI··D˜rl•ëɶwD˜skG>H²½%”S«DXO®½%”K«DXOªý`V"üœMø”Æ;ŠðA>ïæôÝQ„òxïˆ0§íŽ"|¿{G„9]wჼÝ["LiºJ„õ|Ý["Lé¹J„õ<Ý;"Ìi¹£äçÞaJÇU"¬çåÞaJÃU"¬çãÞñæôÛA„Oòpïˆ0§ÝŽ"|{G„9ÝvჼÛ["Li¶J„õ|Û;"Ìéµ£äÙÞaJ«U"¬ç×ÞaJ§U"¬çÕÞrÚ§4ÚQ„òiWâzìg㧜Ýqì’wïˆ0çêŽ"|´{K„)GW‰°ž¬{G„97wáƒ$Ý["L9¹J„õäÜ;a¬9wᓤÜ["L9¸J„õdÜ["L¹·J„õ$Ü;"Ì9·£$ßÞaεEø éöŽsŽí(ÂɶwD˜skG>H²½#ÂœS;ŠðArí-¦\Z%ÂzRí-¦Z%Âz2í­ ÿ”;;ŠðAí-¦œY%ÂzòìT‡á§DÚO麣äíÞaNÓEø _÷†szî ÁyºwÐi¹ãøËù¹7†ŸÓq‡ñ?È˽#À”†; +°ž{G€)ýv`=÷NFâ”v;ðAþíÝ”H=îÏáÑkæç)®Ï‘|WvôØ?æ»ê±3 ñ<ÑwÕ]gâqªïª¯Î$ÄódßUGYˆÇ龫^:“Ï~W]tf!§ü®úçÌBY2̉ïÀsæð…€|áœø'¬àö•sâ»C~çÙmùÙdeÈë–_ðá¾;À#î»#>óá¾;ä÷>ÜÕsWš?lÒÕ†­"pn +Ãr¯<Þ8~Ó&³Ðï'9Åc+É"Rˆ˜6iÄž¿çWËÇ#ºÖ=7¬ 2¬õWãúÓ{½wÜ6'ÆqÏr\L9ÂÞá9xÞZÁÔÇÍ'Ù¨ø²‰Ð³³ÐÅwàá¨åêmüóÏû*pÑ“ç1¼WrüH¯¨/’#moÏÃNÕ_Ò£¥·ôsÊqÚ¼…WLƒ´l^B'¬Â,ÜKÁìg¾_Þ%ð$n9Lµ¸íeÂö–ã 7 ÒhòýdfL-ž¸k|eÕŠíB|[ž9k2]¯ÂÛô.Ær[è§ –À°W‚¾N[ÎBä—¸§wCõ¾ñÇ[;pºD?ˆ@×ÂÇ\œ«X:Î6Õ󉹞»\ØNg‡+‡½çZIþ8:ÕnPò…§‹÷\R(Ü{‘¼lÇÛ°2#Ï —ï'ÇU·“¦‰ñTÎXæ-|ýMYè Èb½““> OWíçsÑ™vr)éx‹ÄpsÃ#¿ËÇ»Ä0ó¶ÄÝ1<Ý_1•Tàéã¾bf?ÚÕòLH‡ÇÙäˆj`vxý<7p›Ì*€þ8[” žÔA´zÎãŽcßêÙЀâq°%1¡§mn’ÖŠ²Ü‰%á¾VÀkÇDˆ¯î7Š-¾ÖñY¡ÕMŽX¥Þ̘ãÜ{kå?„~­ >ºõx¶€ÙžèŽ3å-¬¼tO‹ÿ×S‚çÙóÞº¤†ã¸v‚ìcÖNæ‡ 0§’R}a|IýtB%–dch`&“…É rm ,Ç!ã±¾"Oâîà1Õ,Ïÿ4øò¶>%Þ×~„·0‚뵤úíñ¾Ž‰0qþºúE¬=ǶÐÚž õHc€n˜¥ßÇç’uÜ϶]f. 4b›ôÖ3—dI¦‚Û¦Ò~dµè~€˜›…gíæŽ%j]Øò‚Ùœ¬o«œçÂï+˜w‰GÚÚfè˜l¸Üæàû2ˆÏ°Q‡âygc2ƀ͹ý0‹ +àk©æ:ôNÇŠÃ0¾>ÆåIÝ+ƒv ˆ™fÒf;æ|¿iæt +¥¾jKÕ#4”•sÏ1SÓÒñÖ¡Ü8iðó¦bFÔ +Uˆ`ÿ?qï²+É’\‡Îû+ö°áo"E + ‰Ô3áNI Š#ý?p×2ws7‹Œ>}2ve‰ ÐuríÌ°ˆp·×23ú'·K5EY•wô2Á`t]¬»|L­Ãû…€Ï¼$ù_ÜÿHŸŒ¢’`s9‚KVWKIŠ?°àe+ÀÈ2r¸à}<¼ÄC•¡{r<¥Ð%–Zš‚Ø x™Ç¬¶O{–.c…DÇzPYñŸØ'¸Æh¬†êj°ë‹Ðsg?äà?â<”\@l#(i&˜ò¬éù3ÜJ0qÛ¼ös>Z\º#ò¸” + dWr4zc¡ŸøÓqT<0(i¸_­qý„eÁŽ¦àVŸðÎð¬ð¤¦uØ`7aþš€™¯®M’è1â]‹†È'pöi%"Ìç­³ÂÂA”® o –t±(à ½‡_‚ÍÀ +¬Í#ƒMß"*¸µr†¡äàä67fæ¹á&ÎyŒûã4æ·Ê–„LZœÊ•‰ÔFBBÀs sÑBÀ­ÏÒ?ÀK¨ +âi&8U@y²uz%·²ÏrþuÊê²d&ÚÉ! ¼­ µ\– C‰»ºpÇÓÇ7Çñá +n«Ux˜<^fÎYÁÖYQÝ9v« ŠoÞI3&­žâ0 Àu°zà›¯‡õÍmïŠD +py§·Àjv#Ñ!¬¢ö©ønkˆ¸‘ß]`e úAM„Ö;´ðx´åÏ –ršWB,O‡© <íqð÷Îi·n3 + fw®*€mé¬Êض¼OC`ÙX€ Þ–ZÛaU¢€¸lù†ÙM°,0"/tK‘DŒqöÀ^¥¶E¿Œ}f̆§ w5(˜“LÔŽÒk mƒÛxÄ®çÆ/ªà¡à?åõWntØ +Ü´bÛ°s”+%¯SónW¬ê<†Þ@x¾Ñ¢Ø6ú•Ý'øŠs/c‘œ‘\°T–áäF·K€ènÔëô%¤d¼?lF¼D¿ê…—´ý&Ýia¦¨Ð&ýdp8iöÞAJUÁíL4fƒ±NãÜá”À)`…>-õò·§¶²ÄÛd€Ð5° dv±)!N÷àvC:ע–X°h÷6jÔ”\>JD‡[„ œ.1 ØèرaÅãµc¿—ò}xaIW, )³e%°˜žYŽ™Âàrn""–B'Ì B?Dfº`"–„p¡éê1é˜ Æ!¸v\ß+†* ´g8§ƒl9EÄàÙàâómÁÎC…Ã× 4\ŸøÕ:-%Àå0±G¯\u2U|ñjc|Úðé¿•¾}©Èðoñà ¾Â4[Sh¨ád莭Çv´"£ƒv«˜?˼"7Qsì[©°Ë41 +./,Fj‰Zäg&ˆÅÛ®±z‹TûÌŸ=·†X¶7Ϫ`D¤Ú©Ó"½lh‘\\dí âBºn +rÞm’[¡G‹ÇXû\!—{Ç> ¬æñ„kšñ ßåðKFMåpù~‘IìΨyjpÜ¢%þ,V3BCüÑúær ãp)µbð + ‡2„êHSP•«ÓH0a)Õ<-He°E³tF ßç1u@õ(‰áöÅ&(Ö˜ ª|²ôSÏPÐw’¶»‰0 æ ïöHŠÑéa`x4IŠ-O”œ*8zeý(–)4‹ˆ* :þræDO7•àزº + O.ÙÜh=6%¨K°ÑTõc}31ZÀã`“F§¬àrp ¨tØÄÛÃŽ‹\ØDI\‡uÍåýd¬"™]ñþj¤w0¾ oA_fÙ®1ÁÈÄÔ¡›>ÞTä…dž£M7•GK¨ßÅå?àÏ5Å°ŸbiT†ÄðíNyêö© æˆ7}¨<âÏ!0<†<°dñÔåS·¿-Ôf?¦b 6Íë±€±¾×¯.gœ ¬F‹$ “Ö°©½ŒK–>MÇ—§NoçÄÆ +Æ.jdü,lÞQX?»Üx‚]Óf¬ žåAС/iýìòñ bùÒbÍwÒyê4[ïâ1Ë:Up±Ô±$TZüwí,ØÀtöÔè€X‡bczB±¶”Â%.(¢à +2KÍ*kÏ)‚Í/A¼/(Ö°ÀX„eƒw~.Ï'UQ] ´ ‹jŸºàŠ:"§ìËVŒMÁÆ%NŸ"² ¾|œõ³+$‰HàÖ©¿ÝÎáôEX1gŸFØ +W"¼o>fh§SAa1d+À‡FðqÌæEW,I>À(ä8­"((| òÀ‘ÄcfÌ°~v:lÖ…Û>•AƒI€/ Qadà™ºèUÁ±Ñ¸Òeès'„W‡%qP,—Ó¬€Áµøaw{£µ`–²±…ºðGc]?ºb§H‹Äå ãР0•I¬!ð@Ä’[qU”øʺ–õEšVîÏ2× ® ‹ §z“0’X4‡ìKÆðÅNµ ¤u4"‹4,xΧ&oC>* +€ Ÿ¡¸ÂµH}¼{Ï:í]ðˆXá»ÎÝÕÒŽåVø­ L„£¡0ùôx2ME𹿹=‚ d9åY, x +G­¦˜ø‡Ü1lÂÚAy‡ˆ‘¯Ú©*˜¡ ™gˆûL^g[×\ñ#ž„¬Šµ£3õã‰v~%²2¨â£þ&± ™·Á½þÏ¿OU’øãH­?™Jù$3Q6¨'KUÃýbË“$U)ÌQ‚Íýç˜JB=‰ûÂT’þÄcl¤Ñ>ds3"Ì•«0Vr߱ȣvD%Yˆ‚'™›hzGT’-TFc;¢’™û%š²„ÖŽ¨”’ÎøÇ•ñ¶+n±˜›¨ˆ7߸¬ÜD%¢!¨aÑÿ´De<¥îkÅÝŽ¨de,½ônˆJ‚xèP&ëg7QEµ’¬Í +n¦’ ^ËræSÉØ g?xËT,‘ç>GS)¼s䣿a* bÉ.âË•‘á;éY/æ˜J‚,³*ÊI[ª’ —ì9µ©£* æ •2³T%A[–à¨J‚÷ê©d­¥*#íR¥~XßÜT%A’UMW¥* æBf'*¸©J‚ ª7‹ÇÜT¥L48‹,~-UIóIÏÍFnª’ ãN-UY„—J£GU ¸üqÞp•±ô Ó«¸¹J‚ИYëÛWIÆsVp“•6‘AÁMV,tdóúæ&+þj>KVF!ˆNm$p\%y(­ÅZ®’ ´TÔ¢#7WÉ<Æî¹p•Ù‰rÄ%Ïæ*Z ¥wW œÌ©’Ž«˜àØ.{í¸ÊHí—P³0–«dÝGÊiy¤Ž«ŸƒÁîúÕÍUFºúœa87 ã*2ìg:IÁÍU”“³•Ã³TedÒvƒ‚£*™Œ/ò +Ö77UÙûjÊ6Yªrä,°2Ëâ U™ÖâÙ¤Yòï¨JÖ5·•¿P•‰Ñ ´°ÖG:ª2Áõc%Û¹ÙÈMU2C0¢åª’…ä¬Õãul¥°ÒØ™5v7[ɹyaõ9]ØJ†£Ü2e¦M,[É´8®»ªI])ž¸Í‹æÜtefŽN¹/ÃV2„“B¶°˜ÃÍV²Ø•i†8M˜c+3«b ƒîØJ&Ï'V”õ³›­D,†-!UÁÍV² –™Í9¶RB¼tj“#+¥ØnÚ”ã&+3³€XxÚ¿áÈÊ,ÞÝn§rd%ypøleúŽ«Æ.7émžàæ*3ûˆbÖE*n®’:Þú•@·\%ûû +kú"27W‰ ƒuX^‹rÜ\%Ã<ÅÙ5xá*™u;ëŽ-YI~4v¨ùô`„Ë ¿ð}èEü|š?ÇWBÖ¥z7„åAòW¼´¾ò¤võ˜ÊWbõáŽÂ-a‰ÌÆ˯¾’Naº®|%âw¸ä£[sò•™Êeè¼–œä5K^Kö•>Ä+aÉtâ1û ¯„%#ËYwðBXÂÇ Å{í¬d†­ eˆ~a,±¿ð‡É2–ÆwÌ„{e,ñ²{ì£ëòÂXÒÝë³—ôJYrå,ѾP– oðï&½x¡,«Pú¤%/”eÒ[¼¡,Y½[ÑöBYVú’5ß¼P–ð™.GK[2ðiŒÖÛ"·}nlÛhËv;ÖØk¸m7OQ‹BøÏ;1¬%0(ÏCÒ©Ûv½1 +.Ö²‘?k™Šm›ÐÔ(_XË.£š`rÛ¢4·CÐéõ#jÑ:>ËZvæýMwŽe-ú5Qh¡ù=ËZ2ö«£P@ÁíJtRš ÛF{R-k‰èZ~òÈŽµdD˳{ÀÒ–“¯Ž¶LœHo&·ExnÚ’ ¦Â›BÜ´%§U°· ,br³–ôŸp]lÀõEÓ^ÉXß;ÏÅwšöJ(,Y œ|w%ÞA­r×]Ù™©crs¦»ï ¦‚¦»RÆ«Ð&Mwe—!˜Mí#-ÙPE‡Eó쎴dCÛÔÏ™q¤%AÆ+U¯iHKŽÝ`‹I×'kIË,Å€ðuŽELnÖr´iÉãRp³–á­MÖ8Ö ‡«À­¼a- 6Îp¨ ܬ%‹ý¡à)àXK‚Mª÷¸YK&Ý°mkÊ Ü¬e cP7kI¯:iŒc-9{>æÒPŽµdZyñŽµ$…ÕÑÝ}¹YK:½A&f-îq³–‹ìÀ àf-ÒÛÃv¾a- B3ìAËZ¤?ŸÎÖ’` »hÚ±–rßê[±¬e§©ík™åЙ’£Rø–µÌÜä%i¦ðmI°rÎŒR·–¶dX@·;‹|Ü´%»B`W…–£- 6S+ähK&géÎ~ÓbÉh㔚±ªà¦-Ùm’Æ7mÉvø¾ùÔ&TC[J» b„Sw k±dA ØyÞµX²ö“GCÔÅ!šË þ‹VûK:E0/çæM‡%Ù"q'Ö7M‡%‡¾d¼Û©K|‡e£EÆf]_ܬ%“ƒv¼ˆe-é¿A•¶|,q³–…óÏŽc 9Ö’>˜;† +šKÎ?Cô¥FÃ7XNÔL°YKÓ`É8 =' e-i%Bã°'¸YKªO2u.KÇZRçà­#RZ”»Ç’1qaÔr×dÉ,Ráh­Ewš&KF‡XÃÚ² Ï$„¢b›¶ä’@•ÕF¹YK¾ôÐÌOnÎ’uxÅöîZβñè¸,I‰YËYòàáÎaa‘„›³äÛác:â¢7iÉ·Ϩ@–´$8Ã7iÙXû`â~GZ„âJ†(ݬ%_zƒ•l›Òܬ%ßk¯FZËZ6I†îÊ7ßa™EµWõ+|‡%‡r ±~ÖtXr¼õ¨PÐtX2z‚·£I`ßbÉœ,„¬e§.Ärà/\úùÏò–Ð>¹9ðið–$þ`fÇA6â2q §D +ó%Äe¢“¥êí…¸<£ÔÊÊOyæ’9xi Ý”–¹ä ]lÒpŒ¤Â\FiÛã³úza.qMößbö s ]ƒÅÁ[üza.É<ãÕ\™ËȱðÍÚÏ3—‰‘ˆLNúza.I;ð„ )%ôÌ%b1Ÿ™¨Ì%ƒ¬‘Qþza.a‚aN¾öZÒ³¥¢žœ«g.òbx»Çhp¼4[&-æˆVG\2Yƒ­Z5ì‰ËSÆ”@}¼Ž„•þÍuÂê qÉðnâ J/Ä%«™`2f_ä¥×’e#Mó'Ž¸ œïM±K·e¤óÝÒÍLXÖœ°ó9ÝÌ„e'¦m·ñÄ%C~Sñ,Ä% ăêf\Û-Ùˆ©ÝÿWÞò,¦&Ä—¬)ªCÐx!.9,u9LWâò°ã5®Ì%ž'ÔO»o¸diõÒ}ɳRÚˆxm¸ÌTÇ-})'B¨t3¶’¦‚†¿ ká•¿tæWþ’aÉÒÌWþ2s"[SîÎñ—ÅØ:¦©ðü%¢›q×7saI&bQ®˜Åó—Ú‘Ãv& iùK2F§TidñM8‰M•y&1,ÉÆ ¹®)YÇ_V–¢Ôñ@&h2Ïœ)”÷ÔÇ_Ê„8Eêm9þ’tòê%pü¥ÄLð0U Ç_JäŸES#Ž¿” ;=Õ|ÓvÉœuÃãÒ„•ã/éüÀ<ã67Ù˜*µÓç]gãÒ”Ãò—^¹üöÍdØÎÌß°þ¬%0;«öÙƒ1yG`²î´–Ç9þ²ó¨pxé!®±±;— Õ3Ðò—ëðWOæNIròo¹³f'„½sÌ…ìL€…V4*;e Ì^|[ª#0;›brRbØñ—Æ™ƒ“g¶Ä˜½ËaP¹Ý˜xÔKqMB±&»,ðtÈŒN΢œGæwuYXº?c"KK`Bå°:õ¬:ôÒ˜L‘B3“ýŸ !0 fÖMèÐ-K`lü(ÇõÍà:i†#Ó +¯]—:žéø™5:v§©X4V‚¸ã4&çÖ‘ K:"̘£±#îá=–ÁœæbÑ1 &»3ä~uŽ•e0ÙQ¡ÁhL&‚3Ÿ¹ó² &»3p†7 &A6¸Yû# …ÉÖ N_Ÿ~¡§0¥¯ƒ×W×R˜+ûNëž»3)œ…ëÁù +îd A<ŸÚ_gà +ÆݦËÝ2˜²›õ8½¹“œ±nK,ƒ) V‰\© ÎnZz-ƒ)`-Ñ4 ¦Œöƒî_=–ÁpæV܉‚اöXS@R”Ú^`Ì8¦ÅŸeqGôĤ,ò¦ëRúpÎM¬þR (}¶ô*¶#o‚ìcz*Gzû‰è[ùõ¦ž\7?».;5à ‹c<°=‘¤<“„áúˆŠJb?z"I}& ÉÀ&G¬d•Ä~ôD’öPÄø«$æ£'’ôg’ðD4DŠ0üë™ØHÒŽ‡’°ô„= +ð§UóÑIÎg’°ª ¦È;•Ä~ôD’÷õé„%b•gŸKóÑIâ3IäW&*SUIìGO$y¨Q^vúÆSûÑIžéX8R¦(G IÜGO$y¦ckgÁ9²H*‰ùè‰$ÏtleÏÂU™';%±=‘䙎­ân‰ºÞŽýè‰$ÏtleÌ1“aKóÑIú3[¥øq–MIìGO$y¦c+“ qNÿRIÌGO$y¦cð˜ZÖÒ©Ýq=‘䙎­dbX·åŸ¸žHòLÇVfñϤH%1=‘ä¡ŽåqÅpEÇOIìGO$y¨cY#ç€/¯À}ôD’‡:–¤ tV¶õvìGO$y¨c‰Ô"Yt•Ä|ôD’‡:6PV¸c?y_Žp<Ô°k"]Üå>z"É3 [zàh]w¹žHòLà ëâ.÷ÑIžiØBRÁÇ]î£'’<Ó°…Œ…»ÜGO$y¦a Y3w¹žHòLÃaþ\Üå>z"É3 [˜¸òq—ûè‰$Ï4l‘‰=x œ¥«’˜žHòLÖÊùÐ}ô@’ó™Ž-lÔõ ûè‰$u¬Ù¸Ð}ôD’‡:–?å#@÷ÑIêØ“€&i=ûÑIêØ3q ¿ÝGO$y¨cÙ=à#@÷ÑIêØCf®ÙÐ}ôD’g:6s,…»ÜGO$y¦c3™aw¹žHòLÇfžéã.÷ÑIÂ3›Yðåã.÷ÑIžéØ,Óî\Üå>z"É3›YZêã.÷ÑIžéØœÉmº¸Ë}ôD’g:6“Zsq—ýä‰Ï4lÞ×x]Õ§–gùyŸê¼3÷Ñ9ê9 ~¬”‘üûÉ•Ûƒ+6qD—Çs½}©»røW¾c¾?u±²6¯þ‰ëü=κñ@Ø~¡¼ï¶<aܳÿˆcqÞë8eä#OûïT4ÎÎê©K·ßÿ«ñq^Š&®u2}%g=~Ër¼] /"üã¿žA&¯ò ¯¿þdâ…T®*Å“yŒ¥ ‡·‡T@¬ú+ÄàþÉÿoŒn+›w™7“úÁ¿þÇ×ÿþOøÆùŸ¿þ¿¯¿þ÷¿üË_å®^!ëí¾^ Ø Ì{¾uOl?Žt~±~)°ro]0Þ\Ò@º— ’±d©òâùdüÙ*ãU®·Èö–yÆl`À#®½^2ýí‡øÆX÷ØÎ"·~½Bþ%Wà@ÝJ¿»‡òK®À³{Ù xwõ—\!²:”ÇßÜ\¡ý’+p‡W9ÜâSO‰Í§Ož~½@ÿ(?b†}÷þ˯øý“çjÀ× üÓ¯¸»O3O¸¹À?ÿŠ püŸöÝ#ú¯¿â,¼‡vwè_~ÅZ•)“åný«¿À§<ұÁŸ¼Î®õû¬§øbðÆäø96æ[áÇ"ì€Ã\ûQäñÆE_b síßtÜ|¬É毎þÞÆzîÚŸ|ô7až»öo÷Â!ƒš ¬Züpà÷RBk¯üZÚwD¸ÖÎZ¾QDûŽ×¢Y+Â7ªgßáR-ëDx^6ûŽ×2Y+Â7êeßáRëDx^(û–á¹ÆZ¾Q!û–—ŠX'ÂóÒØï˜_'Âo1¿/Õ¸V„o”å¾#µ ׊ðzÜwœký­á;…¸o‰p)¼u"<¯À}G„kŭ᥷o‰p)µu"<¯¹}K„K­áy±í;"\‹k­ߨ²}K„KU­áyyí;"\Ëi­ߨ«}G„k­áµo‰p) u"<¯¤}G„kå¬á%´o‰p)™u"<¯}G„k­¬áE³o‰p)’u"<¯–}K_ë$x\&û(_`/ýá|ÁK-®½ö7ŠrßIY\‹pß©Æ}G„kõ­áe¸ïˆp-»µ"|£þö-.õ¶N„ç…·o‰p)´u"<¯¸}G„k…­á¥¶o‰p)­u"<¯±}K„KM­áyqí;"\‹i­ߨª}G„k­áå´ïˆp-Ÿµ"|£Žö-.u³N„ç´ïˆp-˜µ"|£rö-.•²N„ç%³o‰p)‘u"<¯•}‹_¸ÔÆZ¾Q$ûŠÃ‰ð[òì/u¹F„ïè¾#µ ׊ðÊÜ·D¸Tâ:ž—ä¾#µ׊ðZÜ·D¸ÔÞ:žá¾#µèÖŠðêÛ·D¸TÛ:ž—ݾ%‚/³u<®·}» +Ò_ø·éÇ®·ûÝw31Ç_ùótßͨ/Âçé¾›9^„ÏÓ}7Ãq."|œî»™ŠãEø<Ýw3ç"ÂÇé¾›98^„ÏÓ}7p."|œî»+ùð"ü–’ ÝçEø<Ýw3uÇ‹ðyºïfÜŽá7Ð}7sv."|œî»°ãEø<Ýw3Yç"ÂÇé¾›‘:>N÷ÝÌÒñ"|žî»¢sáãtßÍô/Âçé¾›±9^„ÏÓ}7ór."|œî»”ãEø<Ýw3!ç"ÂÇé¾›Ñ8^„ÏÓ}73q."|œî{†s‘àÓtŸ«Qu—þpê…îó×þ<Ýw3sljðè¾›a;^„ÏÓ}7Sv¼Ÿ§ûnÆë\Dø8Ýw3Wç"ÂÇé¾›:^„ÏÓ}7“t."|œî»¡sáãtßÍì/Âçé¾›¡9^„ÏÓ}7Ór¼Ÿ§ûnÆä\Dø8Ýw3Ç‹ðyºïf0ÎE„Ó}7q."|œî»…ãEø<Ýw×VãEø-MºÏ‰ðè¾›ù;^„ÏÓ}7ƒw."|œî»™¸ãEø<Ýw3jç"ÂÇé¾›;^„ÏÓ}7Ãu."|œî{ªs‘àÓtߧã/œþ䬞ë"¬éϯÀs¥óßšÄÀc'[æ‘låQo\ ñœW9óù寣òßõðÆy–5½Éø' ÄÛãžþÎt‰7.Ž¿w­Ç?@÷¾^ánVÆŸZg§¿‰K†z½$ÏðÅ+«çó5ñLjMÞ_·&þøŠ!s™sØ×/\|É?xqçñøÅežÃõ7§iü‚÷‡øÈ‹ûÃ+~æÅýá%ÿèÅÝ]ò:,æ6ÃiøóAçIÛ<Êj­XŒR^„ฆ3ñ¸wÊ“ ÖL]R„×—ùK.Zä¨èÏ»‹Æ]”³;°XÚíEÓËó.ŸyÞX7°©Æ)ü•‚§Fþb)"m9FøàlòøÜ¿£ê?ð ¨…:Oe¼{ÿü›Þ,8|\ê±!nÆýŠk¦Æ#kKw×¼ô+®Yx°]çÉã7×ì¿éóL!Zî„ø%“atzaru¶™§ÛÎCÿã/!úQäQžptC⑲ýࢠk‡$EÄ918ðYêáÐ)ãˆR`ùCЧŠU=Ž’¾$éLú‹Åñ6cßçÙÃ+úÑqƒrx4°t˜UPO.ÅŽ§›N9 žÇKìÜ‘ðÉ3ê÷ +é¯Ï¶È ¨x–rä:66 ÈƒkòÃUØk§óäøšKî²°¡,Öæ¥çϭűv€íu…ý†E1ÇGÆTx øYyŠlÅ~“-{Èi«¡ëZrõà‘Ñ< û7Ðö ÛõŒ?°ð>D¥DV<èr¬smÎ3‡‰ñ bž¬ó°Ù.‡%ãLG]ª5F,cž)]D¸ö<K’M½uºJ,ìeŒøÑâ|ã±Êx¿l‰ŽPõG…Á׋k‰ã!ãß¹å4v×´ml'{Æ+^dáAäybkùW¨ÝœÊÑ°Ëûà_ˆþÆ-á ¬ì­QKÇÖ(}*Abë(ÝÊãæaXJë—×mSy†|Ègౄ¦…`Ýõ™'¢'xø}bkK±/ +jÞHƶÄ]|U9Uø¬r`<°rà#ø¤tØ‹x8T(Iã–Êaž•™@Ñ­Xù†á‰qBõÄË5 TðÒSN$F$²w)1ü/tëPí¬3¸ßT‹` />—"±Ä½…‰ñ`çzŒµUxÄoä¡âa`øîN¶GIk „—FüƒÄ 3Ë׎SqÖ!IÞ[ŸØÙJk<1|`4}µ×..ÜÎshH¼ù¥ˆAwâOÏ>19ŠPkIÎü&R·Â¨MŽüÆ‚6ŠÌDhIÊËðú"4Aiãjm+bØÌŸ#ãß¡:áéÀÀ€ÎßëKÑÔ^¸’T+©ù„%._íÀ;… rà1®³U^ÒÜGi<ÿÊãàÓY2‡³MÃS„ß;·zÂU~`õ”3ÉñïÄ2¾•ŽÌñ5´ùˆOCÔï-ÕE,ãÝs“Ö@•t@euÁ°qŽ\‡b®aëµÃsðð8ÖB¥J +På! ÃyØòÄ–Î#6κ¯òÆ+½£vòÕÄ0A•RÓևİ#’81Ø'è+™ŽÇ ¨ß©×jÞº’µ¼±"(OùœXîuœJ ÝŒ› r*5±¥GôáY°ºÓ¸=jj¨@:q¬ÓÆãTí hiØ&¬/b¾sXÀʽ‹5¬ZØҾĚBÃtÃýŒdþAÓ *'Ö¶f&– nK˜×CÄY±Ä°õËqk/ªÖLó|{ã¸{¼áS°Â™ÐÓäšíj*O1Í‘õÄêÈßÈ š‡Ò‹¶'ßdÜÂ8wÚ¯TÁä0Zز‚É–Æe_á\^Daèz{8¼`²0ƒ~‹Ç¿ã²`'\J]*ã€÷a?ˆAkÄ^“bÌå4X"Áàƒxcib˶6<²!‹9‰Ø´ªŠ©Ý!„– Lâ8K]JÔ± Æþ‡¥‹DoªBÅÖqèÄà•CÏG™¶µjâ$ôÒ¦O94Äö‹Í~Z†ŒV0–ÔyN¬Žºô<0c主ùÞO Ã&®AûAQ–1ÓíÄ]ÀќвÒÿ7—Æeb0 +]¡¬H +I–8Í¡ÚFÁöÜnbÐ+ð±Òè)Áϵ¤¿Y·á¬lïÆ«CÓS? +Ûd`mUb°]]}@`XÆž=nªKË^ˆ-ƒK 1p­ŒŽ +r ƒWƒ2œ+`Ë#2û1ÞÑ¡ß+XðÐ5A0˜ph‚¡H-CM Û‘íØ7ˆ"O{XaÁ2¾£÷L8¡ +!Õ¾*P‰1kË,©Kw$ýI5ðìY>ƒ5N¾g.¾Yæ~Âò¨-ãß2¨?Ü`p†cO‚a™Ã¦âjú›Ë1@œ€MtFxpõÝÃÚñ 1dÇ~€‚ê[NC+\V'¶j˜$ãdNd¤ÊÀójCWS‚MbѯÑ"}Æ¥Ä`¡¢ž©iØ+ ÎFKºzª]üdìE¾šü +o}bË!s_ulp„$Ó‚ð{´'úÚ«›ü1ò:‹Ïˆ•ÛÁzÓÄ–ÓhO°Pá­Œ'–—â•Q[2ú‚kPFç1unAßÁú e > ´-O¥²„_—ƒ~my>PïGkðZGÈÃ‰æµ €ƒÇ»¿XŒWoTŒÒÄ°Úps™_ƒ9ÆÏõ©Hm ^÷ ÷7N +O/Œï!àƒ‚Ï«gŠ½p€c[^˜ê*bPb²„¶-15Fp®èœÈ Êéy0I×ÍUÆp2ös<|,pìß2 <¯³ 5lûgÀ°,™h›m U‹ë”ÄÛÀ¶ëFL™1u„ñ5˜9xu\­¯Ž®¬)„Îxº)žãæ ±rš±PïÆã£Å*ÅNoƒÞïXþU0hå”’¼»„`y{ƒÄ +¿%K%IâªC£7à¨á)ŸuBÛQ$Öçû¬,žEϹÅ1¡íCrÌu–DŒî-ÚÇÆ~°Üúp_ˆmÿ’Ö>Á=Âs˜XbÚ¬Ó⣃‡ŸlÛ¾g£®Hê{«lññ¸öNÂ%ÃĶ_ +l\ZÖO¨#Ćæ°1§”ñäEiÛN+V€• XÆêKLA3þ:±íÑciFú=¨aîûñ›PðâæýEãí6:ï0Ó1‡‰f: ,–3ÞdÒïmO¸‰JbS†õpÅ! ––t?'¶½d:B@Òˆa°™¤âº׃‚ :ÛĶÍ°¦¾†R&4²¼M(qæÃĶwÝáÂ/Í +Á6ÂÊPÃIÂÚAWâĶãMlen 4&hˆS l +èöS±í“‹Üj!OÊa¤àÆÁ½ê×–»ÎÄ2ÖÉŒ§µ­Æà+,9iebÛ•gÄŽ‹­u„8[TX$bø7žm-Ûn>ý¨dxÌibx&xwe`ø›Ž½qN,sÊ7“PìL¬œuPtÉpëÌsAñýÏ?ÁÐ +¤Joerヘ‡²ôÁÀòŒ¢„#ÁzÊ–ð,` Fjß±ÄrG|% ‚w~Œ«$[Å‚Íà›Âé#/lx661E1µ # + ôq`°-+Ëx´?Ôéûéy(XZ£´y5K0I'²ü–ã ðŠ°¼áÚ 7Üñ‘¾‚¸&ƒC°<ó[Y˜)Å6O€÷úy„ãž'È?FhÞnx‚‚[…ËÖNå6O ê +nÏÛ<×T<y –' „gĵ"å "oYfGD©:ê9š ñc™êÌÒÄ°‘¦§çibYNĘ¡ A­b5 +bY@p¦`”’b›%`“&žîLå8’žñQ5-$?B@TÚˆªI¹üÏóÐìµ% ˆa·NFÙ³Ä`±ñl” Ø,1,X²sb›% ®t ǃ•¯ÊoX–@°e7ž”e Ê’IŸÐb ALßγÄZ¯G¹ÇD’€:4e¶R –±…Ú`8-K@;AÂøš¥ "MCþÎÏ M@ ~Óv‚Yš€)ã6b¢‰mšX‚#‹Å9D14Õß—÷ˆ +i´ sȵvs9¢€¤6~l3´µDv¹wÝÜ–(¬á7¦²DÁÀxŽ¸Ê‚A±ô¹,Q00ÜûH7Yž`@)÷™²<ÁÀ°ÍCTaë<`xr0Ã!±<ÁÀfõÓó‚ =l©å £¦š¯å Ë'àüžá àXÒWjx,O@LF3„±Ú-Q@ ¾iSnÈ2Äê¹SÛ–) CtÞ»a ++xY©è÷V $X +Ö,‡‹wÉÄG^ØŠe™ª81Ãï“´Îä‡ S  V¦@ |§Ô­ðB0ì„¢™KÃÆvÞIìY¦€-÷ØjËX¦@°Ø™ ™ÒÅb(ËùÏô[‹) þûA[¦@°¼œlÇÖÈZÎ<·a +ˆ†¥q¨pˆë³VÄ0Z„“e +å3T`Øp™”XT`¸ÑRÖ÷¶É¢ƒ„MšÏôB–¡vRWlÛ3q¬†iØâ +ƒ:Ò­ÐÆ]á9À+Ë/\1¼WÜþ|i†,lD£ú½EVÅ”„! ˆA9†9FÅ‘‚á9±‚kbÛ~ƒíÔRK†Ìœ¢`†, VÚÞ9–, y!NTlÛÝD· *wZ;K°ÚϳäÑÆçÈbð/â©‹ËÄòàØâĶ½VGœ‹,¬3ÿq^ÉB½ñüË<‘Å@Gÿ¨£4B¿µÌ|b[B_T­å +X/Ré‰LçÇrؤ°LY“Ž+@pþ#d¬ºVÛî¼B +GJÂqdsÖ×o® .$¬ó:Z² Ò7)dŃr Ë­(ÌŽh­Ÿã +XR¡›C-ÊlVª°Dv2ˆ–+àÄ—ÊâË©£,WP™×Oh`†+`y +•Zõ%˜,>„ÕÀó + [\Ï?…+ÙµðÈrœÁ“ø`Û-W@Ì ®€Õ0y'ÄWP™ÏÄ8Ϧ?¹¼™kk&Ïc¸VÌà™g%¾-YÀZnt%Ú-Y …#°‡sV‚# ¤^ROs­²@J@`šnÃTæ_˜ ê9Nl±ÄJÂ^®Ã£²l±Ž®¥ªØb XV‚PáñÂÃu5ûíè‚Ú©5oèb–€0t@åI£8ÉÒÄ` VˆlèBpË÷§ÝÒX÷¬‹<Ò ¥,]@ì4Õy–.L +³b‹. µËÒ%Íûo§ƒ8VjÓ´¿²D’ìÝøÂcÓ”aùº°‚Á&Ä0Sц. &Ên§ï]@¬b±‰t¡ «¸Ùx(•°èbmÔ€(±]P*<¯#¬ï-º€#Ê°Þ"7_º@°¾ò‘Ž. F²~n=GcµÃLI9º@08‰9}]ÈA* GThq„ðÛB•|]¸Á ýYoúuá +dþ Nê¶/LlÔ(°¸Á‚ð{Ê?l?YfºÉÑäýâ +CÔ‘FÌqÄhÂÛ`(W@ ÖuçÓ WP¥âZ.çóëBƒ·ÜÄö½‰%óò [@Œ.È’Å°pcX Î uúºÐÄ â—§ Á?ÑÒQGTêlD¢“ÒutëÜXºÁ¼Ö×…. 6 +&ZýºÐUÒØPáǾ.tAe£ÁˆââÄv•p¶šççpugÍ77lú{»’ˆÃ Ç¿GÇ“%9¨Ð ûd÷ê*2:á +ÁÕneòM•èäÅNÆ™0íarXÕ LÇ­¦ØwÕ#+ÁÑó iÝX5ÅI§øM0Ue¼7(v8ýUø³²6¦Mh×-æîIç0±DnçSCAýÎñÔ}ÍÔ4…È€ Æ'„=–¤FûTBVIOl—;ñ¬_,{(˜ñTXT‰=w96¡<±] +Ŷ»À#à{›Ìò¨C!#‚µ6eé»L +ë"û25ˆ(“`ã¼Ò¨?¹k¨ûöõx˜'9¦jÐ%¯Þ€ ­(!áðÆGP çk§±Îb "=‡'Xª³ZÑ“xÀ +ÖM #‰Çe öÜ‘x„FlõÚéà Z q”µy3«¡h؈ôu%ñ*„¥=‰W%U<òöŽÄ#† 2ç‘x„Ñ ._›¿”±%Pò#Gâ#³:»Z,‰G¨Ó) ¯$^lQJ´‚Y¯JÈ‹Èh¸¦ŽÄ#†ý ê•Äc¦±ž«Â‘xÀ¢(ÈÁ9¯R+®nÇá1A³Ôñ f9¼JŸ”®u ÖBÍÆ-Ïá1¯‰÷¢Í4–«´ÔˆLÚÒ,…'ugxDqdZ…ÇŒ'î}´îŒS’ ÂWªØQx2'&xf0…‡0‘êS»º\«óhŽRœ‡íõaYHdì9’®×‡Ù,Ï>©?×ë#ìXŠãðÈ "&žCB<‡w˜<çÏ ‡'a Ù—fR†}:ŽÂ;Y,³ëÞ‡wÒka#É$Ü,‡K\F ñÀ,‰'+)ôYLâI¼*#3&{y!ñ,ãàI<ÜyBs$žpð£fÒÚ‘x|´úïŒJÔ¹D±ëÚ ><ýôñ½è¾Í$ ‰'9køF³}αxÉ—Ó9Éàƒí™#t,žä¥¡0FŽgñ$Á¸;^XþÁ ×ô%\µaÄè©iÆÌxÄšÎh»xÌ“o¾ÆxTön:r^s)uOà1¿ž–‰ð;;°ÉŽ¬˜Ñ¯äfO1y!ð:à ê­u1pcfFÚx&‰ŒÚ+Ç& é]›„¡%ðˆEóŽ,G aŠ:~ŽÀ#†}&™ˆŸžÀBƬB;à—~‘]€ï¡&3ë ¼N ÿxéŽÀã(ßšç>uô]áÕ*{W”¢3ô“RXª³þËÑw ð`aê¬O²ô{h`˜ÅÈòwÔVøR £vÉñwŒxD½'åè6‡å}Ò:‡Å홦c*øš´JÓñwL0¸ŠÔñw]ê’¶h:þN’¿’ŠÖß4ÍÊ™}æX˜ó{–¿V®³Î°MÌ62tRVhówäu”YØd{}©h`¿Ò~»×ç Y?ËL‰ûfæRU í›}˜Q„ÙÑ[×ìsú~D×ìsÒƒ¢*éʵínŸ« +FclºfNa8΢•M®Ùç$çg:®Ùd>~žØnöa9*Û)RV®mwû0ó±ƒ×ìh©ŸŸ—nŸSjÅ× ×ís²?XÚ•¾#¤²ëô9©!™¢ ŠíNŸ“ûر*­·;}Nvìç°ZÐl§‡aí~qßé3Šp•°u>'”g,Ë×µÓç¤òLmîVßéÃS èÖœ³Ñ¶úœVßUaúV¦ŽÚìn°>"Ã':ÏꎷöaûNŸ@㟎Eî>¦  ÆéÊ]û|€umô‘¿®}>5g¶fri¶ÏG*“„Ûí…¸ /?/h·ùpìnº.špwù0s&uj‡väì.bX+Êêí.Ÿ@s&ŠN¸ÝåC,‹K—¾®]>Äq¤Qî»|‚ðÔZÎá»|³ «­Íwù>Ú5Âwùðì ˜›3ù.Ÿ@§q¦¾Í˜c&m›O`¨›út9|ŸOê˜eˆJ¥í>`uû¬¾Ñ‡™søš,‰üº4úšò‚v£©œï]£O ×X`c•œÛ}>bá%çMêí>Ÿ@ËÛ4/ãû|{'Vª#îdFüÜYmìÉ»H>ĹdÙä]¤5ïm†’Ž¼ãøüä,N°ä"oXî2scž¼ã¸…”b5zž¼c¹•˜'ï$›îᕼ£÷XáÓ”2Ûä3^X–¬ìþº²wåà¡ä”¡Ûì\œ6§xö®ÀwF8]é;æ Vݳgïj°ù6ÏÞ1F‡Ÿ3G;yöŽ,æº=ËÞ!ž†ò„•š;È°w€¨â}]Ù»Êñ×ð“ÚTc–½cZO$Ï¥âØ;`mÞñì ÜÀ<ˆÄ±w„Šô°]É;¡q°ÖÆ”OÞÁ'4C“|c:;é/£øˆ¡™6;ù(‰Çøõ2Œ¯Zø2ŒmQ²Ýä{~°ÆwWŸÝœD5§¦ùa|Ð …žHxí³cæx§ì=GWp&=õÂstˆL ÈV¯ˆãè{ËFã¯`—F;xÄkHšk´ƒ:ÉuÕ¦I£]û1ÚH†ßêí¸=OvD]çñqXÙYw}Ÿå舑Ñ飀Çqtìç~؈,GÇ3š¸³ŽI XŽŽ¬BŸ¤ !ËÑÉp4è”0ª¶GW©µæèÁ IGZ§¥±a~zŽŽ3ÕF5͸sÃÑ‘ñIçh¡ÈptÄŠú^?=IGl$É}aH:¶á¾³Ñ–¤#ÆbÖ29Ô˜„W:ÅA±™%é*}øsó5–¤“6µc5®û>;º/û·Ô+I7è¨Vpøñ®Ñ.0 ‰Ølèsßh'‡ÎÕaó~^H:V WIǽ ä“t)€6ÇZX’N² c: @–¤ËYÊ#ÊHÁ8’.ó0v*ÅöÂâˆÄ~fI:rX +uôp$v'K„t„¢#é˜ÝNiö}:Š®r,©¡A9ŠŽ³¸áuJœ¥è˜€~›/CGU0†Ž ¾É2tÀðNã¬3ð GÂáÞŽöBÐ1íuÄ•t¾ûnsŒhÛƒÑAÇüEš©´Ÿ‚ŽãÛd\â YAÇ&r¨¬0s – cî™×” GÐñ Ô¾\Oбx7!ÌVT?¯“ +…?AÇ,S\Çœ¸g:êy<™9îÁ3tÌ ¦Ä1t£n% 4h ËÐÛeë’*U7ÈtÄp †¼Ûi?bxð j3!Dzšñ´¡ ä:É™q;±‡ëSÏzæüE×I5—5-ÔRtLÂó€bÔ^º­.úÉ5Î|yœØÎŒIý3^Üœ›åHº.-PxÙeB&Á%²ŒDÆ×ì4>¹àH­ã:ŽÇ é}6¹y|‡DªP&“±óøx¨þ8l›ÇG JY•š›ÇG“¨ •Ÿ—y|Ä ëµêÃÍãÌôiÙy|Ä$§t¾Ðt‚å|¡éKLgîí¼Œ`c<ãÄvò…X;´ÉÏã;¤ÓFrU‚Ùy|‡ï¦qóø€•º¸ó5­ÏNäcú÷®³uÜD>`'Üœ—â'ò‹#…'˜ÈG¬ìÙGn"±H©œÛÁzƒÛ£S÷vV€Xû÷§È'bºã¥ËN :fÃÎ㬦¤l‚ÇǼ vl›sJÝ<>É©$9\°=Oø=8n1x]ÇÕ·ƒfrÏÚËeÇñuD/Mv‚¥U³ëÇñ ¶F³øq|‚•C Æì8>Ä#SúnG£ÄòÙf¢Îä,±C±Wƒ5››ÈG Nõ99p7O°ÒÏ¢<ÜŽ µ=¯Ó äl—X´yW­éØ?ØNø»|L‘IŸ­Ìn ±(ã·ÇMÙ|ÄòÐÀÛùˆA)ujçñI>®¯é nßÁ dr7?/óø˜«Ã~*Úšgçñ$Eúª‰qóøˆõ²ZéÝ<>a&H\¾2tÄ:¼ˆy„ŸÇwÐ7=äÝOlÏãcþz-Ã3póø˜ÿÃ;keÑwk 8"P]Yûèö<>`xÈ{š™ÇÇœlêí<>¦¬ŽáOlÏã;dŽå°{?=E'ü g™u nÂ*h­¨Žˆ›Çw25$õÍub{ßI} C¤mv “íq Ëqù˜ËÍìæ):toäc"?èT:;uëc>ãë@>f;³–Âûy|¬1Ïðøª¶Ãíq|A˜)æóãÄö8¾ ”ŒÕ·Çñ!ð„ÊDèÄö8>Ön#°Õ2#7ŽãCè(Ô5¥`B»ÅŽÃw·µ‹Â;¿þ]NÏb¯îë?þ"nþõSþ5îœèø×ÿùË¿½óóÿøßþÿ¿¡ zL×ù7=.Ò~ý¿V‡YõqŠå>ÚÓ¾%I<¦$øú-Ky=·4Ù®#Y5å°=•ã|û‰è[ùõ¦ž\7<».Ë M9zI°=‘$>“¤HB‘qJb?z"Iz& ËY±dVÈ”Ä~ôD’üPzZ9Ìv×<7X=‘¤<“$±ôÎ )˜)‰ýè‰$õ¡$2{dÔé¨$æ£'’´g’D¨ 2¥oJb?z"ÉûútH‚W1sKóÑIÒñL’³üf-U•Ä~ôD’‡•“¢°òwJb?z"É3Kš ºt”… IÜGO$y¦cÇ”š.IÌGO$y¦c…ÒM2@qIb?z"É3ËiSg”ÛëíØžHòLÇr’TÙÈ2«$æ£'’<Ó±,l`Ì#½xSûÑIžéXNAãG' ¬UóÑIžéX6«z"É3 [êÉ~w¹žHòLփ1]Üå>z"É3 [Jþ|Üå>z"É3 [Ø.‹ÿ“©*‰ùè‰$Ï4l‘£P]è>z"É3["/ë"@÷ÑIêXàë#@÷ÑIêXþ”ÝG$©uìÙö±¸SûÑIêXÖùûÐ}ôD’‡:öć>t=‘ä¡Ž%Ñå#@÷ÑIžéXØ–ÕÇ]î£'’<Ó±™G_ú¸Ë}ôD’g:6W6̸¸Ë}ôD’g:6öò¹¸Ë}ôD’g:6¶+»¸Ë}ôD’g:6sä…»ÜG$iÏtlæ ½>îr=‘䙎͙¯ÂÆ]ö“'r<Ó°y_ÿáuUŸþYžqäçYÑà¼3÷Ñ9Ò9Ø3¶RFòï'Wή\Xó]Ï}ôöéîÊáo\ùŽùþÔuÆÊÚ¼ú'®ó÷8kü™Ù]Þw[žˆ0îÙ”Y°ÐõhÀˆðw*xT©9þÿÍ‹ø¼×¢‰k;|œc´Çÿ›µð"Â?þëɶr¸FT÷׃L¼Êu²Çë °“øÖ]¼ÇqŒÿ‚\ÿôWÈÁ¿ü‡ÿßÞò|=v»ŽòÿþÇ×ÿþO<4å?ý_ýïù—¿Êm?½DÖ~½B°W˜w%}ï®x/ÏÖù:à gH¯o®Èºjˆ÷zE¶¢³µö ;Å GüÝÊò´—›díwË. 壸÷zÍôÏñK°©©Enþz‰ük.QêÄ¥ßÝEù5—Èñ»§ô_ÉØûy°¾òæ +ÿòK®Ð6ÅÊVš×+ü«¿Â§<LJ±ÂŸ¼Î®ýû¬çørðÆÒöÔ¾Ž¼!Â@̵E"o\ô%ö0×þ AÈMX™os"Ûoxô6ös×þ䣿 ûܵkü—SØ®ègÁ—’Z{åoÔÖ¾#µ–ÖŠð¢ÚwD¸ÑZ¾QMû–—êY'Âó2ÚwD¸–ÍZ¾Q?û–—zY'ÂóÂÙ· Ï¥PÖŠðŠÙ·D¸TÈ:ž—Ê~Çü:~‹ù}©Îµ"|£L÷®e¹V„oÔç¾ã„\ëqß)Ì}K„K!®áyEî;"\+p­ß(Å}K„Ké­áy î["\jnÏ‹oßáZlkEøFÕí["\ªlÏËmßáZ^kEøFí;"\ëj­ß(°}K„KA­áyeí;"\+i­ß(©}K„K ­áy-í;"\kg­ß(¢}K„KѬáyõì["øjY'Áã²ÙGù{éç ^jsíµ¿Q¤ûNÊâZ”kDøNuî;"\«q­ß(Ë}G„k®áõ¸o‰p©¿u"O÷Ý Ë¹ˆðqºïfJŽáótßÍxœ‹§ûnæâx>O÷Ý Ä¹ˆðqºï¶äÉð[J>.tŸáótßÍ/Âçé¾›ñ;N„ß@÷ÝÌݹˆðqºïfàŽáótßͤ‹§ûnFì\Dø8Ýw3[Ç‹ðyºïf¨ÎE„Ó}7Ót¼Ÿ§ûnÆèx>O÷ÝÌϹˆðqºïfpŽáótßÍÄœ‹§ûnFåx>O÷ÝÌȹˆðqºïu8ÎE‚OÓ}¾FÕ^úÃ5ªºÏ_ûótßÍ 'Âo ûn†ïx>O÷ÝLÝñ"|žî»·sáãtßÍœ‹§ûnìx>O÷ÝLÖ¹ˆðqºïf¤ÎE„Ó}7³t¼Ÿ§ûn†èx>O÷ÝLÏñ"|žî»›sáãtßͼ/Âçé¾›A9>N÷ÝLȹˆðqºïf4Žáótßm[á·t4]è>'Âo ûnæñx>O÷Ý â¹ˆðqºïfáótßÍ苧ûnfîx>O÷Ý Û¹ˆðqºïuÊÎE‚OÓ}{¼Ž¿pú³³x´|ˆå¬xZ_!Ô‚Gö73ðhæ–•³üÏ~xã +¸…–Ox6¯Wxýÿöè‡7.±FÆlÿi äþwõ÷ÆM¼qÍpü½‹=ÿmÓÃÿ«7—¸ŸñçÆÙéuâš<–íåšù”×VÏo,Œ?¾Blò–€üÂ…ñÇ— ™«=„øKÆ_ó^Þy<y¹Sþ­¿âåýá>óòþð’zyxÍ?zyw×¼Ž‘ù‡CÆÐp¶~Â|pž<èlÔ¾VLH)/‚´ +¼óHKÊ” ÖN]’„×wúË.LǧÄv¶» Ç^XΠ‹~rsáôòìËçž=ÒÑ:ÏÂ{•ÄOzQIðWŸ„G•øx+?8(‡ûùB^ŒÛçäó7ÏãŸ㛉r6š»äfÐ/{ˆMC;îöâÝp¡_uÙÉi†~{Ýþ§PáN¡üoù%ÓdtbòmåGo<Á1H ´²ûèç_r rm2~f‰ró“¤'šCî}ÜôÀx©œ Éüƒÿ¥q²$càrâEô3œž1lÃêÌSOëã#Øþ ?â‘Ú'– ú,õ“ï…Pµê¸`”ÜS‰‡œ¨œy2(±3@ U9)¶ð|Ñ-]åi¦rr£`uŸ;°vÌSKì^r`”殺N³œP ‡œ±XRžu9Ù•ŸÔ}ˆ¼@™³åØÏ’º¿ß3Ÿ!e9M¸äs_>°tžQN^-<ÍÓ>Œw0™’"Gh㳃l©É —%—˃*…ÃûÆo¶}póÀ¼bóãð$÷kÓ…;åÄ`¬ÕùyÚsmòÒ°ýÆoðØYÁÒ:¬–P9âY’ý£q´œÀÎÿŒGåqÙãk1–”kîµÄ’üÙøš—-gV –Îs^§ÔqOrTî8Ñk‡Ò†=EÈ;ÞYö}Boàú5Ëá¢Þ]ŽBœôäÑ–Í»®b–j‘ó~ù_)åMŒÇÔðÏ{¯¥V³ zþ•“J{¢¶}äšX°ŠýqÊñ¥Ç½;'ˇ‰­#ëéÀ掠sÁäœPý㲜¥›k5¡FQý[»ŠX )œ­1 '^Åvk`%%žZ+Ø a§È¢~d>´ ˜,òñ×moFrÁ’¨ŠqÎW ËD^gï{£¬Ê‘¹jáÄc ój…goË3¬Ç±÷°`X²A4¡Ö±txžÉ€Æë‚{{Œ1ÐY''AŽö¨! :$GÅ]»¶¾`bðŽsb˽êOæu¶så¹éªŠQÏ’&Öñ´ñ$5+ØJFaÃ3†ù•ÝF¬©P鸎‰ªQ°l”IàΧ)Lyb L `åaåÌ÷a|¯MC¦;:M kK w"ßj?ú9ĬF Á†À±j\ŸÃJ»;p{§€ãå…8¾×Œ‚â^:Ë<¡Œ/ñ\c@ØmPPJçĶîêtÙ¡CS¯j‚ɉîxræýº\7z­³b'A“‰û€[%”ãÉØð(Î2¡¥òðâ©Çdç vÂj0Zp‘ˆa™·i\ˆ-uˆKþ€v€k)gÞkø‰ sõ°n†«ï4ž^ã©1C-¶‰ÑþŸr&9ß2õ/gÁl©Ñ†g;G=#/~ÝXú¸ÛF®­“¹‰-‹§ó#ñ_5Œß„¦>awé€Á< RÇ;È=Ll©_\k: ŽHKmäNUeHP±m`y+æ&z¡ÿ(!–±p¿I0h¨£Z&¶”61l‡:•QeÖ£béShbøNœ˜*tb>Z\_ƒ©ð}&†Çuœi\®nm/œPÝ•'›§šÂú Cc¨çÄ–%hؕЧZ„Å·Ž¶rb'-L`Ÿ^/1h6dbû„úÀ©¦µAéŒïõm>ˆ‰LúÆ»œ4Ϩ‚åùô&¶O“gV®a õñV±ö‰ñ{Û!‹³Ll +H†ákÚG¿ô’§}§Ù^& ·òãÀÎj)+¶ÏpƓ졤‰-s%îüÈc9°Öì„Ô" +¶yÄr—вd‚5vœúµ}¤zw¼”mWÁË Éøúpìá T[P0l®sŸXž{^&Å:DKÛ4òóŒ[ +ú”ÿ Cr09¦*'ešMbð)qóé}ª8¨R„R¸Ó6DÞ•X(IìÅÄàÙ ƒAŒVò˜ +Ë]­-1¨V:k²t¸¤;q“/X<¥OlYbbØþùÐïüW.rw +¯Á‘›÷P¶™&Ósoã…1X‚K_©¸õx°Ç\;u›pbpNÕ%†/Aoãr0rø; Ž©uÇãøQè/Ÿm@x€@ÔkŒ|!°çÃBHÉ´üìÁˇäG\q>D©42å›;´í`ýþ`qþ{`°‡ÿ5/7Pc1bËeh0¸Ð"cA F”ó“Óh¢äVœ˜º ‚Ö0¶6žÃÉØ4yÐ!𗓨‰-OJþòp &V˜“+ü^†±Â­”Ñ@ly!Ä:Iý1×ÿóãÔKà&àµEøçÄ–‡Âæ/¬zY^Jä3ÈôZÎKËT¯xc¯F†øn(<@ðåÆ2ØòkˆAåô6"b¸Õ(A)±n|K`êóÀI³×Ö押×±+‰5&º5bqûCÄ° *]‹‰AeŽ ±ŠNâÇ2±å+ƒûÅ8ŤJN_‰Þ?<ÅùbÓö£ˆa¹Àæõ8±xbQ³¤HÇ2‘åba+bKâIÖ4¡:Tc» 6{è0`Ëû"†Û&’ˆ’OÔn@ Í`Ú‡‹yûeÄ°ýðZ‹~f%0E1°ÚÊHœZ.!X +¼Ç¦,”_*°r`¶¡ŠbÙîœ`•kx«‘‘Ê9.‡íÏÆfe5ûòõˆÁÄ¥6,*0ú>ØBU0üa¿YH,o_O²VTÐaÈÙé½Õùªñ Iˆ…-31ê|; Óp©c–ÿXXÓ–ŠŽðªÏHcT÷°fó9±í[ÃÇ}FyÄaâ–q=„O)æ{hÆï,l„iÊA³vUfØJÊÍ£ª=6ã“Kø‘4ÜÜ݇U-~!„óˆ±F¸»qWÙJ×®‡41è&<ù9¨¢œ¥výÍíÊ"9±l{N)„ò¢éµë¾Ë-@-o7—I0x'°µib­à†ƒ4ózĶ L ªP·$[¦³#˜u5€m™XÄBëÃw€@œèƒž'1lY˜²:±í<3Ðê™7N Jý0~³ÄÛŽ50è>ì ßƒ ‡•¡&.Ð$ +Pïý4Nw!m%å¬òŽØ{Ǿ6êM`X‹‘þàĶC^¨ðbËxïÀ”-ÌöøT/žè¡¿¹œu@…«wBmê1 Xk0-Up»ñ%³š)åž™@f=ô)XĆ GŸÐöðK– ~g±H|;Ì2eo/++¶½ÿ#ݸ¤’bT!s›Ôøcš 0±TæV3nmD daþ˜¶€Òàr¯3åLHƒ†Æ´yäK‘À]{ƒÍ¬eíe9:@#ŠÆôw^ÆÀÔi½l‘©lú¹’ 6­rî±u”$­•ä}4¦å°ê\Î,¶†KÝi±;,I:àu¤õdØOðA¾¨”±ÊþçŸ`N˜m:Iz*s2>Ò¨Ò3'‹3'ÔÉøºm$pu"ØY&§á˜àhÕÁi8æD08’‡XŽ¢¿wæÙ1'ÄT^©`r'Ð_Wê„Xƒ"œ©?G0¿‹Ã20K MtÌו:!õ†Ãå¨ÒøýIÈGk±zî„Ø4´_WîD0¬ÐZ^¹bxâð’äŽwBlž:éL®Ç ¯ÑQ'Ä¢QŠï©b& é¨b°ªÌ©]©bm(ܯ+uÒ™½šáÇ…:éBz`ïÂÍq'a+6F"Õq'À`š¥¯ wÂåÅ°Õž;鵘/¯Ré+Ü ó¬xRGÑq'j¤¼«åN˜E¸Š÷8~ÉP'Laò¹÷¹2,uÂ|cŽ›²Ü 3r'c¯‘mrÜ ÓYPZ¡ù•;9¡§àfÔ4òÚŽ;aÂo ‹–jGžð´xû­êÈFٷι&yˆ·~*™aÉƯˆI˜ÿz!Oà¦!Œn#Qu!O°‚°+ð.• 1ä V¬ëü–£N:«G œn¨¼Xèºà wÒ¥ü%ÏUî¹&ˆa¿«ø +î„Á2¿ nõ…;!–‡ƒóÂëš^õÜ “ ŒÔÏA«8î„¡cƒfåU wÂîcD"e¨6σ³Ã£k¾”;áGY’U/Ô !lÈþõÂãM”þõÂVÆ©iêD ÜÆqÃ[¥îD°Ž ˜!Oƒƒ‘OàÈb½Á‚*¶Éªš÷‘Bñä 1ø?3D÷ä °‚“Ë {Â{=H>(³²Ùž!FúóÊž@Glnôž0‚øm(IÏžÀàÒVŠ»úóÊžœ–W¼°'ŒZ×íا±W‰`~^ØF"ÐudP&¶ÙñÔO¼Ðy –=Öàý¥ÑfåéñâacgÂÑ'ÄôÑþ¼Ð'ÄyÄ‘{qô 1x¿±Í”¸¥Oà3Ç +·-}"P`æl„ð–> ^73ßÛ +Q‚5ö°ô‰'–j<•ÙÊ’Á~ °Ò²'„ð¿ØxA±­Géÿ’#,±ì }äÑÏ62 –=¡#ÓPf‚ö„â÷±¦-{BL´UiHËŸË…)iAËŸÆØ©.l…yX^?†˜ó7 "X9eÓüôô‰@¸Qæ¡'¶”:!8³_ÆÑ'Ä°ˆ*+y3ô‰`XnÐ,ub+€,“¿.J­lc@ j¼åIÑ-ú„HH©Ó½œÈ6Ä:~²ú­Ò›ÔʸqßK>ã9±ÅŸÖ¥¬¥Ol›`X`ŒbYúD ¸KaRX†>¨†é²9öD žF¾è§gOˆá½©ÓéØÁ°LqñöD0¨)ÍÚöD ,|}––=!ÆÐ9ÍçeÙÁ̶ ã*uÙ9Gž48è8±m‰Õéa8ê„lŸ†’Û:ƒšŠù([ô ±qxWRÚe[ÎT…$9&?m iJÿ¬éK ƒöFˆ³È•E C|±˜_K ?hpŽ@!úPv×(­9Ï¡M—Æ(ÄN¬Ûµ° BŒ¤Ëúž!PˆÍTÏ9±mÆa—/’Ó(œt’`IÏ¢”Ì2ðÊ}žÖ%áO*Où…—§÷Óó'X +òÀ4Õiù“š¹Ž™Ý™—3ü Ǿ0Ó8{'R%íŠÛ)CÁZþ„E P°¨æb1ü .Ë’½øéøø;,F:”ܵ +(ÿ ð&¶ÊLÇ1 ¢Ê(XZÌò¦‹:…³}òL +f”ÚÈÌožÖ(•)9©*C @;ÿ˜ycýÚö_0  âÈ(„°-‚“…s˜° +q…¬ß[ +VóÉë":K `)#PbžC‘ÅŸ°.$ª®úéùž‹»ÒÙ?=R9÷òÊþéùÖ“°÷¨œ§þæâOˆU¨á8AËŸTÄ°Tq–gþ„öêbß-B¬áU•£¿(R¾bê;,B,B¿õz(§±(bXǺ»lK[ðè|µÅ“, +…nwV´9 +…PýÏʼ, +…X©Ò[C‡¯µOËP(ÄhÓ õ²ý½.<\ËüÓS(‚A3ªy· +1üvƒV'¶(ÁÄŒ“à2 +±Ô¨ö‡· +1ègRqJ¯l²Ó˜IÚC©µæˆÁä¥Ñ¨ìðIšu–A!æÈPà°0 ?.ûdb‹A‘¢¥2ûÛ~ig•,”²Rq†B!†ÛÆ +9•&Ù>+CN©‹J“, +E°.;ªLlû³®Z z±ÅŸ€ç[Út,"Ö¯dpzþD°=–Ãñ'‚UaC•[Yü‰`;ÓéøÁúÞ&–?!ÖàŒyØËŸÖGò~b‹?!=ÛUÙZþ„•c–·ü 1øƒMy—ítK¶V‚´ñ=ßH5Z%Ol{äL4BíðÍNlñ'ÄàÖE lþ„ÐteôrMõ–îMZŸ~zþ„¥og9W½ŒåOˆÅ1B"OlûøL(™1cÃ(Ì$À§L³ Ï( û TO™„“%P8ûßê“tÊÁ B©‘érÊ)V30n(ˆñ°ãì‰ÿ–ïêø†xm®¨Ÿž?9éYÖµy2zñÂÌÑxþäd2nW<0nÜ…\tܱÉë©ßc\X=±ÌŽ‹"ŽD1Wäahq«JÊ`3ÁÂͪ«Yæ&f +ÀèøÁ•èƒ²•H® +oÏ¢x4P¡ó΋­ ƒ>ÀbâÄ`—s*¤P#£ kL¿¶ÊÆÄM"=‡D ƒ½iRŒZV&¾–”ƒÓxªg”Øk‚ï%JINÄ”èÒÁ_åft¡˜¿<âË$5\¬öæä ÄO_•hÄL虨+Œ + ,˜õ‘½9õT5UjÀèãâ}é÷à`ó°d€^YKÞÿ¥í +6º^p«JÉZ­c¤°eìдab»º-²¹À`/ +¡ #ÜhXÕ†ÿC÷~U¾qOÔ](–¤X4HJÿ`ª…;÷ý1tÀ¿˜0ÃE¦Úÿ…W˜ä J«ùI>Ò‚šK󱮥£ûI>.üëJáËR#ÙWßý$ïõо¤k÷íO!Šv?áEhqìK÷ô@Œ£ôü¥ýIj†¥yi‚hIù kûÍ…và\ÛŸzª46ƒ¼´?ÑÛ6 +.h ´·8Íl)eØœ&6#f¸­Ã·ÎPxe¶Sêwz6 ð½jÁ„að(+Êt² eîc+A³ žÈÎÜö•!ð±kÖÇNà‰,°$¶w8ÍŒ¡Èð#‡’t+×dR&²•ÀvzïUZ<ŠðZµ|ÝðwµoôÚüD  öDZþNFëKˆqáï$U1Ó¡†¿ Ì©â9†Y Ç4ÆôRÇ)£ßwãïðåQ"†ngø;V¡[UmcZ»Ÿ¤PHTû· ‡¦£xÐòwQ˜K6j‰Ìðwl¶BH]ó Ç€ÇiÛáïâZ€³ñw‘ñÚl”3üdøšO-ÿ¶üÝBCÆ*[<"GËŒ>¦…Àƒ¬r´]¸!ðð.ñOÃYe 'iHßcNKàñSgcBè²…Á‹ \$ÃñÛNàUÚk½–À“\–T©l!ð˜ëÁÃÚd¼BïÝQÜFà!æÀ3á®PÙBà1Õ=µMËxìP;aòZ€e <1Ò…±Ë°Â‡Î¹[2ßJT6<¶·„^ï°1xœÃâµãr#ð˜vjù*•->``Öº~Kà $§Í W˜§K +D6ÖÛmü¢!ð$Y5(iKà°¾CËß1]ÕRÖ*[ø;ºØÉ¡Z¯)½ÊÛxÌduĹxLdÍ"ZKà1Y…W®íOIbwåtÜxÕt§2S+‡G> ß6Q¨(Û< NO-j*ºO¼Wísß<¾ÙSöªÊ¯²l8sÊ€Ê2ѵót ‡'å•,Õì<ÝÂá‘ã‚Yж4CáU“"µ^¥ñ÷áTÒPxRê—t:óFáUbÇ‘ °^5ÕÔ–ÂÞ [k(Iut,ݘÆ'GÖS9ÓøD¾¯S‰UÓøD^úÑsókãe0’àÿmk|‚ ŸmŸNoŸ([*µLã““êžI‚¬OÀŸÀ`ønšE5OÄ´•}ð¾…³ñÉt–Ñ®lŸˆwuŒŠÈÖÆ'GúôdÛøä8Ž§µÂ¨l6>9¶ƒÀï×£ÿæh|‚¥Œ¤þl|"¦E@ÐK—Lãq«s£ÞÔ4>·Âê—¾v>e-%Ù ¸IÜeÖÀ²†kç± –è¿9‰;)«×ðv ã–wÙÂÛ aÄûÍðvÜQ'5é‚IÛIÝ«àÀðvÒ4ÝR3*¼]äa9nx ÃÛEé€9CïÛZy»úËømcíX}$ä{ p k—Ù-.=iAe“µËUÚú ÃÚq:8¶Ýq Ùdí˜×Íc–aí +›ñFç­!íJ¢KèÓŽ,iÉ÷#é6_X;øuŽ‘F–µƒ XyKÚ1LDíJgØ&iWŠöwºrva¿p&zPÙàìŠÅ•¤S: gGB/Ð3œ]©2HÎÅÐÿnrv…a)éÖÚ)ÂÉÙ1óÍy€NûDή°ûavέ”D£¤]e“²ã rødÎ:®”]å>ñQGàÄ6]s4¾×UG¶?~ðŠdçÙ¹?Âˉ3j­—“K,mœ“ååš êS ›;KŠ¡,/'2lqíq1¼el!nHÛòrExùþwúS}«î´!܈І–£e­’jôÚJË1b扭e£åœ™œei¹V=¦Å-G¼"ßWkˆ[i9 ¬¿Ñi¹ÄN€¢õâ-GËsÔÞ"gi9Ò ~\x9Vù^rµñrD0¥h‰ÀÆË1À‡ ååˆnÊ k,/G«{ýÆ˱òûàpIy–—cå·L;kgx9–”é£7¤KÆ`PÜMc]Æ%k+øFʱbñèÙNKÊј­M¿Ì$$+‡v¼)™ Mô¤›m&!?ó Å?RîXÓï)8»ë¨½4Ö‘†Ãð(7C _ú¸³r䆀ê:CiY9&áÞƒaåØöJæÇ…•“yµ½¼ûÂÊá'°tî“ +w¦AY\h9ñÈmÞÎFËÉËî0ok¬Ã'oLaì…–;Û1<­mk¬ܬœDòq¡åDi¯þc£åØýœ{Oªeå f$mu –•£ßŽU~Ù²r̾¶I>;+gë ,-'ŒVkw`i¹Ê.ÍOl¬\•áqCfX92ëu¸ +‡[u4 +m ¨aå8QRöwÓÒ°rŒÔÉO«–†•«ì?í_•%å˜hC´Õn#åxê9>yKËA†VûÄDCË1:“˜¶~\h¹Jç98kKÌllÊ©Æ1GÙyôVK̉lÌÚ±ÄÜɯ£­^´Äe-ÿ¤²I̱+3ôé·3wrÄÖ˜b™9½$š‰Ì0sLå÷¢GÃÌA$Çxµ0ÄœTâUú#•-Äœ¤2G•!æè™nõ²3CÌ1+¯Ä\d]7|º×¶sÕÌ•1Ä|]jQø•˜c7BšCý 1ÇSY4bVÙ$æ(«s…!æ’‹7óñÛFÌQÖÊ¢¯u”IQ[ÏVbŽ²1…Öòrá9h­¡¡å(ªçÀņ–ƒŒå„ldPÙ¤å(CðätŽ•¡å ט“f^ -ǬqJìzî”Ý´£‰ÆXúA³òrç”GÆÆÐrl aÎ[³¹†–KÌ0´³ÕT6í/d5”‘ð7´eZZ.嵨ÅÒr";¥ SeÓnðž7}u"‚ÔI5++G>%˜ƒ.š¬œÈB舡åDÜ9Ü•–£L’ä¡÷ÜMW ²QµÒr"6Ð CËQ&UÖõÚW'²8Q®¬œˆN6}V•MZNpäceh9‘Åpj¯¡åþdmMTÙp<"‚ãЖ\Ãˉ »¶“+/—¤ æ|¥åD”笷•–“yaø»ÒWZŽ¢ÂÁYc`áôe"Ë‚˜T6i9‘µ9]"ÓUªäVzóܤå(ƒ/EXÑ'N˜8À½ÕB«lÒr”ÁC÷>apúGÊ€œ’£ hg4ò­¼\âüÆ-^.É$õcáÞ¦_%—ttÏni9Š2|)ýϦËMd³cHýÖWZŽÓڀɘåUÙtÇIlËý¶ñr‰ÜmCv 1Ç3Âà¼Snôƒ!æ’ÔUÖÐγÄ\¢?‰Ã½bŽXˆd®ÿÙ$æÎuŒ¹%ær;6Σ}nzK~œÿjé9†™…ÌDè·Ðsbvú¬“ž«ôP½bÍÒs_`Žj/a°ôœ7ýɆ ‹ÌžÏñv† Ëfè­m­“ŠÔ^ +¶µÖñLÁ1ýÙvÖIr¢×âz®˜dãç¦ÒS‹·öÕ†·}uŽUX-]&R²L¾tâ„u}+ +Ûë8wq¶–›Æ:þw»hé¬cŽc¦çLg]åà1ü¡÷‚NÚÛgU¶LqœjGûDÃÙYW9@l6ñ˜Î:ÈÜB£/u…œZ£m;ë(«£¨ÓvÖqöþÒFm:ëª$¨‹­h;ë(Ëm(¶Ê&8“¦H‰€{ûÜ쬣윰¦µ®RéiPMke1Ý*kc%pWQM¦i¬£LÆÖkc#^éçöý7gcDÃ٘ƺ*ðrÎk_Eœt¥@ÞôÕQVå«ð*›}u¤¾Ý¬ª0}u”Eö øN‹Í¾:Êðí&¯ôäÚXG™1îÚXÇŠc|­@>ŠNdìÆë¤kce2%\(:iwŃíÆÏ4ÖQbît“i¬£,á‘UÕem¬£,‹iïÔÞ´”Õ¥\`í­ãܵcöEšÞºj'¥šÞ:ÊðºúàOÓ['29Íæ2›°É¤¡ÿæÉ”ÅYÏazë(kµyŠNd'+GOÞì­«Éæâ×Þ:ʘ„Éc¦áì­ã óËìÓ[GY‘1i—Ù„”½–U4Ay•îÛ¬¹KÛZǼQæqŹ÷Ï À^Ù` ¿¡ÃV–ֺʹÞs>ƒi­«‚At–œí¬«ÌO dzwºM”_Ãp'Žî¹Aб¥šV²ûó• cO5¾µQP°t¬)mx]ïä›Ñt2›ùƒ¡“Zü{ÐUÔ6¦âÆÞºµPtÒK¹á•¢“þÅtŽqó E'Cø3ÿ*uönRt‡û”šÐt3šð–éGoƒ›$ÝÁ眎>¹Ôt<EŒJ¸’tgñN&Þt<'J{7U6I:iEœcÁW’¢ÔF:gM–ÎIˆQ´ß²tNZÅ*Ôí7X:Fè„•GìÞdé‡1$áâT6i:&ZC¦Ñ?7i:–—ðùúbWžŽ‘}Œpܵ7 žŽ"–£nòt,KÁ/2qåé([Ü¡áé\:Ú^fx:&à¾Õ/¯4óG»™ß6šŽµ%itºYšŽaýÉj©ÎûM–NÚ>°s5¿aëŸÀ_÷ŠrÓX'þ;µâE +Ï}ü»œ#V‹ ØüÀ¾þãoíÛº”·ú?ýõ•þñ¿ýoxóÿ:h9û‘eî#L‚Ðoú~ü?Lþ%­,hŠ™Kéõ“„E“¢šàÏoyÊý\a¦A?³ž€2žÐzí©&õåg2ÞÌßÆëz²ðùpa„\-Ù'Ç,‹ë¥ªàž©ÂÁÍUÆ ä®Êzé‰*î¡*IÚ¸Ú™kªÊzé‰*þ©*Àl@‚$º*Ë¥'ª„‡ªÐõ‚=Ue½ôD•øT’‹šµèª,—ž¨’ªê×€Ì\z¢ÊC[˪¯`2sé‰*m-«ò¼ ÈÌ¥'ª<´µ,r,6 3—ž¨òÐÖ²¾ÓÛ€Ì\z¢ÊC[ËÓ°£ ÈÌ¥ªø‡¶V¦Ù€Ì\z¢ÊC[˪bo2sé‰*mmf;mnç1 U–KOTyhksLŸÉƆæÒUZÛLºÖƆæÒUžZ[©Ê0±¡¹ôD•§Ö–¿ecCsé‰*O­­ã#à É8žÊzé‰*O­-ûGmlh.=Q婵u<ÂÏĆæÒUÂSkKÌƆæÒUZ[ø™Ïb2sé‰*­mbi‘ ÈÌ¥'ª<´¶©´â¯% 3—ž¨òÐÚ&éï1™¹ôD•‡Ö6±$ÎdæÒUZÛÄ:A™KOTyhm+Ôm@f.=Q塵M‰oc ÈÖ+OyhkÓTàÙ±[Ö?ÎNJ.?ðø̯™KOqOa™õH*É??YÚ?Y:K“‡Iö™K/i–ö¿³ô-iþ®…ÚîZ(ùw,ô÷éîÊŠ¢ó8|~ÈþòWhÅ¥ºfœ¢Ã~õ*3´ˆû>VNóß ÙŸÿMø_þƒÃÿrÞ}æ4bÏôšÔ/þåoÿç¿à/Üýø¿ùïú׿È?]"õ[¾®à×ô®D£ïÝǬ—–fXVŽÃÍŠ<äê]WdîÆžIˆ_`ý(·°Àír“÷Tìñ„Ê  ¿¯¿xŽ/,QxNŸËróûég–ÈmÎÞywùg–`{îî¢üÌAºO]J7KÔŸY‚;;^êûYØr³Âù#+d9¨Ü½ˆú‘ØÑÆæ”p³ÂŸd©ŠåN7+üó¬¤Jù8ïžÒ¿üÈ +……ù¬9¾Yá_d…Ê ™ þ°ŃoÆ—·VÝÄkß N^PaD#ëÚÂ’Ýãuí_ÜѸÆAœ:&ò<| ÚÕßùøïâ@»ú/9ªi@Ò÷F†—ÊÜuåo”è¾¢Â^‘»ªðÒÜWTØ+qW¾Q’û’ +[®Qáy)î+*ì•·« +ß(Á}I…­âÖ¨ð¼ôö%÷³UÚ®*|£äö%¶ +[£ÂóRÛo8a«Â/q—âÞU…oTù¾¢Â^Ô»ªðêÞW È^Ì»¨ðªÞ—TØŠx +Ï«y_Qa/Þ]UøFïK*lE»F…çÕ»/©°ëžWí¾¢Â^¤»ªðjÝ—TØŠs +Ï«t_Qa/Ê]UøFuî+*쟫 +ߨÊ}I…­רð¼÷öâÛU…oTᾤÂVtkTx^}ûŠ +{±íªÂ7ªn_Ra+²5*<¯¶}I[\k4x\eû$k`–~sÖàRÉ»®ý’ÞW{ï¢ÂwJy_Qa¯Ü]UøF ï+*컫 +ß(Ý}I…­Rרð¼d÷%¶ +]£ÂóRÝWTØ+sW¾Q¢û’ +[E®QáyiîK*l•¸F…ç%¹¯¨°Wà®*|£÷öÊÛU…o”ྡྷÂ^q»ªðÒÛ—TØ*m +ÏKn_Qa¯°]UøF©íK*l•µF…ç%¶/©°UÔž—Ö¾Ä2l•´« +ß(©ýÑaUø%yöKï¢Âwªy_Qa/Þ]UøFïK*lE»F…çÕ»¯¨°ë®*|£j÷%¶"]£ÂójÝWTØ‹sW¾Q¥û’ +[Q®QáyuîK*Øb\£ÁãªÜ—Ë$í¿ˆT¼/ù3ýÞ8l.Wåt¾üÊÀ‰Vàù7Éù\W¸œH¿?pâ…%å콚RÂ?"*A¨þ;wõ÷†\¼°¦?þÞbÏÛÉQgTñºÄÝÐŽ?¶1ÜITŠ5}€Ý×Ä>çk+îãëxèÞ$?¸1¾^Ò'îvž&÷“ãë5¿xyîxþòªÿݱ?ñò¾\á=/ïË%ßôò¾\ó«—w·æ>¼æ~Éøúˆå£óÏ\ÏêÇ.‚Éù¢H-<ÍÑå(:%9qhâ¯ïôÇÎ¥SÎìîo\˜úÉY—w Ç˳Ïï{öYáð]8«–²ÂÊýÞg@å&Á]ú3µÇÎ’—!6„á3ó^»l|R: +ûƒ¯Nì9Y®<Ò/L¹=w„c9™.V\Ouá<Á˜e,؃>êÇœ|VØe­ ÖÁ|ÃéÏzžì¹ã ô<Úc£†.œgù&Z ³}»‡°œ½›OF<^ÍŠÎ:r{R¶¾þpNAÏ#?º‘ã‰òKÊ¡ +–õõóhxØœÏS„¾*ÅÎ+c  8<¬ÅaõnŒèå¼â0xFH|78 þ *Âu¨µâ0x)F;Þ]Q¼ +÷ruŠx +c$l­ÎÿÞPX DƒêÆÙ °À)øÿzÜ 0Ø[Oí£÷W“š—too(,Â@ÅrB±pAaÀI6 Šç+ ÃËÃKCÔržùÃxÜ=oª{½…±=ÖØáÒ‚Â`ÁÉ)WV$°$¶H¹ ° ±D6…•„7„…Kê`jAa¸ˆ7 ì[kÚQ3¬ã(\@XØhPª „6?¢l²têþ_Q¼ `P@½b0x,lí,-ŒC8ãtß++»Ÿ]1XÉ°…D>vV`Øae)¹~mB0 @‚_:X!”ƒþ,˜îâ‚1~Á®ìÞÍB0 |÷XV +6Æ)¥(eͯ¼Ðféˆà‚¸ùL¼;/¬€?íÁÄÁàY`ÃB¤oº`0¿ã•EŸK¾`08¥Ï@/]4>]1˜„ißq“+“Â~¼Äìʬ0ƒmYªš€‚•z|Òž¦XÊZ‚?üŒËòå^ ~î“ ÌÀ‚Qß…ÿ.ù ÃÝáááy¤Ž ™f$ÖƒÏCðö)[êÐÀ‡C¯±å 0õ¯ û¢ ÓbÍàšñ¡ÁCDß… ~Mªh)ÄÛ Í¥ aêœPÝ0t,ð»º"“,J­…&Ã^ä.œvPú[`,’ú‰H¿+«ð!œŒ»ß!dÔ'€ àé’ðFˆM W£ø¾†GD8 („„ ¥ Óx zïç˜èO°±žbQ‘ã[ÎóÁÜž²Û¼¶í¤BÚ^ þe¤9 A??˜â–ÀðŒóOxÁFҽdž]†Ÿ àHjw’öÄdŠ$"ÐmaN£ ãÈ  VH¹ÅÚ˜0 +ñùÃå%¿Xt¦àö‡0¼çÈ]{ïÀzuÐNs!à¡l¾&$'wç ‰‡pà‹j}!ùqX¼Ãеøöd±O?âIjø‡3£uò€m9R‰#ÞiÖ\KgàshÆV…3–àƒÙ†1ÖH® +t‹–~2ç½îú±èCˆoØ a‹–dŒ&ƒƒ$§ ó’` ܬpíBìïDŸÃÆ;8Ø“­$]63GyÊ",Lyñ°Mx?-ÑÙ…3}pÀêeœ˜†QZ’Ì'…%Ñlëó©Kjá`nnk,‰(ƒÇÉ]2Ý#ÏÒuáÌ;%F˜‘˜RÂ_;ú#Ñ(`õŽÒ…3)áœß|·]XZK$Û# óø æC®áßÃÈœ0ÎÆ •ð +Ÿǫ™Îp ŒpoGY»ÉªDy˜Aè–\P'}AÈ*Ä +ó°&ýÝ.œ‰@R— ˆÚeø°$·(ƒ]C@¨Ppd&IW’!ºô]ˆ·¶<Ãä³ï™AqŒcO¯ýƒ¸s€ ÑU|.ž¯n A9=»( kÑÃgÂFJÊ o6€›¸¿‰°d^È-âg‡õ`^•xÀKBˆ 04¼„3-C |*ÖW!¬Iv’”\_`¥[—”'à‚›Íš|æBdH‚…?Š›‚_ÔŒ„gB‡øX¿•!~&€§b^2ö”‚ +g²‡ý=ï¾ß$‰˜Wà&=§ g&ð/ãìÆ 2DºŽ^_dw\»3„pf‰X£›Ë©Ž„ûÉïÕ‹~ˆûÇuáL!Y‹ïé»n”äl†÷¡ö€`í™_bú•oùÔx"À!P(›ƒèÀ?/) +s¾Aq,„î{Ž§`ÅJ” +gfŠÁá‰oÃ+ ®WÄzlIùÂ¥1®í™¶ +²ñáâú«f4D´´öï 7Ö…3§˜j_?>˜7`GüP Áƒ/ «DH,ÝÑÓ̸’áík"R¬ÍÖ‘÷ r(ê+!P¬‚ã;` ]ÖŒXPŒÂá‚Oõ‡€è§!à†ÁqpêE ‡ÖÿX“‰' ÿØ$CÈób»BXœCƒ£ßÜÐ@þNG +óépM„လt •G© á<Â4âÛRóTüÂT-8b‹Oá‰×T\®"¬ðÖÝ­•0q#Søˆôa¬ÕH2‹¾‰†aycFKvPIY­&¾ê²Ê\0¿9&ÿC†Ú©èËqâe}2…räþ—L´Ñ²û&̉©¡¾IâB«ÔÂvÏ„£fQqpö9ŽW'V%§Å¼¤ +i”¸ii£ \õxžU K!>aøõRâÂäF8u’¯¤‰r±±å 1Ø*‡«þ±bÂg~Ì5¦°ÈDÝÒ™CeÃBUÄJߨH–-Î ×Äð¦L$ÂJÄä=¾S„K»†'·DØV[¦° O¨šÉaÛÿ’º Ë„Öd;ð1Tª×…°èØ©Gá ç{’ ÂIY +!°ÇîRèÈt)ÓÃLM‚gN‘–2A9Sý@bB{6¡$ØZÚ…©~X”„N& . nye•ý4%^ÇÏœi08_¥d¯å,ã/á×SüL £9ƒäA°Á &¦›ðä)¡ wÉ=àÙB4ˆF6–ã@tSâ?nd|¥<:(pD ’âˆ%õ»¤Mêv¯0º€+è±P9—‚²Yð¶÷*ÕTì_ÅZU’ŒC8ã šŽ#UÁ¶Q’zµ0ÔÆÿíÁs#ø`ƒ¨#CH˜ÖÀEÉrŠS9ƯÎÀ¤pw!¬ÍJ'W‚OÜŸŸãï¸ ÑŒY¨Z"Ϭîɇ³ Âx b¢Îð((ÁCÊÀqЬ¬”©‚‚H£ áŒujbúÞE½AOl—øC1MÔ`_Î0ˆA?|ÂìÒ…pšùíú +‰E¥x}Àø4·E’Z Ä»€ô®Je¢ñ¥îb%XÍ€]B„™ÇŒûüRwòÑíj“òwLß ÄNIe}möQÉ£–œ`òW8 +C1ô†gªbX wDúâþÂÜx¥…;"C/å]³V†;"Ïÿ;¸ª•;bs9¼vÕŒáŽÈBvÍQ®Ü¢ÙOf”Ï'wÇÁúÜèlÜQa>[³ñJ w$‰ù‘7Ô‘dÞñI8¡Ž˜ZçA|¬Äùب#™&‘‰=h¨£Ä–:‚óJ¹Œ*(C¥´6òYê( ‚üµaŽ}»DøZ³0GdšóÌTâ(î5Ø„+qO³Î+m”¹ÙÂ1ܺ¡`Ì5¹§dT•T4œ—»òØbÄ_!FS¾C£ ;=*E m$^ÍÏÊ CUù¾k6‚Ãûˆ¡7ÄQ•‘_#ð6¼Q-3e BS½S×­¼ñF’ž„7èñª­Þ!·dæÔÉÙ꺜DøsÃLLÁÀöÄáNÀ“õÞ5Yy£“8Sª‚”ÄYy#Z9/ýÖmM[¾ƒé^Ⱥ§LùÎøRüHPšòl°Â ´3k¦|ç €GîÑ‘)ß9ŒàåJÏä›òƒ ¥˜F`°–ï8zºî=MùŽ#Çs + Ö…Óµr;¯ ‡mêw°`‡ÝˆLý¶ÂáxMùŽ£§'*9nÊw$¯Óœt®å;ØNG ¶òl'üƒ;{¥–)ßÁŽÁÎKÖ„Q2/0ãZÔ°Uïxg¾¦zû;ÐM¦zdzªePšp­ÞÁV€é£ÿ¨]8sOÜ +Ej@U¡µzÇáã¦þ—kõs±%[šp­ÞñÕ&¶×ê¾mIछòrÒ­ðÖwáÌèÐ3áã9Gn-ßáíµ&*œ‰™@hƒ(~ÔÙ¬å;ù¶Øâ@Îô +Ó@¥)Öò¼>쯙e6å;!I…_í¯Ó”ïà%}–]¸¤:ØZ"<….qÍf”OùÏúmÆ5_Á\q!RÔ;IkJâä:Y§Ö…3ëI>F—z‰ÁJQx\k-‡¥Ž˜(ˆh»Ý^™#&âJØ®Ì3LkÌÚ§²ùêKÎ7]×8>2¶„MðƒZBõÄm +Ò«¸ê³d#LÒ~eŽ$ mŒ~C3¦¦æçB©¬ÌQËäJƒ"•:’ ¶þpz+uÔ2Ø^A½ðJI ¶î•-,>Í!uá Rñ/ìÿ®=û½2GVvÉ÷ÏoeŽ˜H¬ÖOŠ1Væˆ ˜€=ÍÊæÿ:ñÄʱü/Ç÷ÂÃ}Á$áùhÕ¥¡Ž„Ó‰’»è½%fçx n¿“•:båt§¡Ž“°N1ßPG€uØÎñü^ÎpŠ˜Ñvo sÄbGøæƒÌQb­0,7̃üÝ(ö6ÌТD-=µi˜#¶ucí˜Üàœ&sDz"43&²•9bÂÁÁÈ þpeŽH2àËŸdÕʱZ 1#«v›peŽ€QaE‚Wûcˆ#¦üž&ñ¸GLëcŸŒ-K☖_yí;ÃG™^ ëxUÃG’½È¬€»!Ž[%òÎ='¾G™`r!ž qÄ4wñŽA9MœYÕ¤õVe“8*¬>è.6¼Q¡=8a÷:ã´òF’6Æ3)úåÞBÂ^­)´¼Q!¬„cè1†á˜¤mÕT® oT€°<;“Îñ‡Óç3 +ß3Šá˜õx‡‡æD oT+÷¡¶~8+oÄüdXÁÊöAÀ˜š3¼34€1ÝñF¬3©íÂI1ƒW>*š qT$×Ð\¼Wâ¨H-á1úJ1Æûà qÄ|–¼«¾yV⨲‚Xƒá6bÆìÃÙh#æüRDah#æsgs¯wáÄ5,^AðÍÐFÔpŒRBNÐâÞ4ób†5ªLŒ/ùwÃqD)KЪ ÎdþE©1I]8ÑR3ëSOÎÖ¨ÒÒÛ÷RKÃ!rŒq) 4¬Q%ªÀ¿Z.oX#†•x0>7¬ÂJ­ò]8QXe›Y-½ç‡8y»ÍoeÎNöãa%þ1v3h wÆ‘M°pv®^³Œ¹^Ùÿ6wFÎAË‚L%u†ÝÙ¸Û–€2©3ö°AE…À&uÆz]¦\h=?¶ÔKkYþÄ. (–L‘xnŒÐ¥ûM&Fi¹t¿1;{/u×ì5âê)(“;#ÎR¢Øòck±mâŒðÄ{î Ö2·$ÎJ8µ®WgtØÔZ®eg¼ÖÐ5ükg4 Í]Š®YDØÓ°ðž:ãýÅ,.écO‰Õ÷üä7MêŒlU<Äö›kêŒIrX58¹kêL˜¸§è.½o,ô3=`&wF»ö¬©3’gš1µÉÑŠ®õ&wÆ,|8ΑÏY³gÌ|g7a¦ÉžÁÞFåùŽvö*aUèµÊ&{Ve;â£>o²g,A‹'IMH­Ù³S‚!ÚpÉž1Ń¿[ò\KöŒYœ37J¾ —ì5°âý›pIŸI¢&./kúŒeBYMR.é³*÷…w6’`KúLÒ8giQ„KúŒi¼h¹í.ÛMÒ8Ø6# 4ÍoT/ûì¹µµûM +i8nAà Óýæ™àðˆx“>cF,hºL…3}Æ + „(#Î0é³@˜‡_íȤςX †E£´zé~ãľ̂_×…K÷¾DͽÞpÍžv¢ù™x1Ù³À¾ºÔˆ›î·C(³Ýoþw1[‘l÷ 2Ÿ^§wm÷[d5¢|Ý&}&6_ÞìÈÍ@ƒ¹‚µ(Á¤Ï"«$ü¬Ú5é3 ë ~ 7ÕE ‰IßË M÷Û!5êöî7~„mV.Ýo°“g« hBÓýH±ŒÈÄ6¿ñ¹`“ôª{Ûü&\¿4XtáÒü–¤sßØæ7šUØñn^Ló[á÷:Kum÷È0š2Ù3†§K‚}ï}ku±½rxë}Èò²Dhzßد–®9ÓûÆtÞ@ï¨Ü{ßð â¨j²½oŒ4Ö^ç¼&Ï€Ö8ˆQ÷f’g„ò°x<ú³kò,³/y‰|Lö ÀßIg²¶ìYf»3BÒÏÃdψdá[f6oÍžF¥.E¸fÏŠ„þ¾çôMöŒ5ÿø°Ç1Ù3Vþà_b/ë_³gðôôe¾³Å&{†Ïô ˜ì<|Ü£°ËdÏà5"RŸìš=Jp-€t¾ gö¬p؇| +׺k +‹N!¡Éž1Š;ýøU“«¤ZÏ|vL`Òg•ÇÀÖ­6é³Ê&PòÈ­i¹ŒûV4æuqàˆƒqaÃOñb‹€ò*6UÞÅíÿãOíSUüÆq3U +<66ׇâ:Ø]D—ñ)ÇX’ìÆWó«¾½Ž”Y;¦X÷õ\úb +Ø_€ Àg_ˆ?²==¡§».dX{ǯ Ü z°‹`‘ÝÍ;ø™;`+³õìºÀÍ(¢ ÀéðòÍœ?²sK“¯ŸÅù¦aBÀËð×b’Ë;š~¦XX®Å†;›FÖÌwé’Ì•†!¬—9€7ý¿üáÇ÷Õ#®ã§pó~nƳ=X€Y㙯 Ü ž{°@’1ñ.èvꫲLñc‹åeú‘Š´ \øó,pÊ™DlÆ»ì¢ÛQxÄu|¹©¼L¹.žúª/.ÒAp}„ÿü3ßIaÚÒû›—tã~â¦aÁ›õ~f×9c€ñ»±ýÇŸZΗ†„XC*šš“Ý é*³3ŒÿÈSöˆ­RF 8ø£võ«þ»úÕ?bW¿ZàGìêW üˆ]ýj±«_-ð»úå¦z‡]ýrÁ±«_®ðGíê7¾Äß5¤×YÃ?ñ’Î"ëÝÙÕŸÙ×Õi¹ƒû9Ëýrm¾1Þ,CtU³†›ñ6²×w ÇG:á ?k¼¿úá1Þ_-ð#Æû«~ÄxµÀï¯øãýÕï0Þ_nªwï/üãýå +¿o¼ÝO}‰?o¼¿\ïGŒ÷W+¼Ãx¿^bÍ7sÙéô9¹x1ß«ì{G–P‰ãîÈ’ž)ýÛ’>)Õ‘gm«ÿÏ?ýZz\“ endstream endobj 345 0 obj -54207 +72009 endobj 346 0 obj [344 0 R] @@ -3391,55 +3401,55 @@ xref 0000018421 00000 n 0000018476 00000 n 0000018531 00000 n -0000072816 00000 n -0000072839 00000 n -0000072866 00000 n -0000090129 00000 n -0000089990 00000 n -0000073064 00000 n -0000073316 00000 n -0000075002 00000 n -0000074980 00000 n -0000075092 00000 n -0000075112 00000 n -0000075503 00000 n -0000075272 00000 n -0000075817 00000 n -0000075838 00000 n -0000076090 00000 n -0000077534 00000 n -0000077512 00000 n -0000077621 00000 n -0000077640 00000 n -0000078031 00000 n -0000077800 00000 n -0000078343 00000 n -0000078364 00000 n -0000078619 00000 n -0000083966 00000 n -0000083944 00000 n -0000084064 00000 n -0000084084 00000 n -0000084585 00000 n -0000084243 00000 n -0000085025 00000 n -0000085046 00000 n -0000085302 00000 n -0000089051 00000 n -0000089029 00000 n -0000089149 00000 n -0000089169 00000 n -0000089600 00000 n -0000089329 00000 n -0000089969 00000 n -0000090052 00000 n +0000090618 00000 n +0000090641 00000 n +0000090668 00000 n +0000107931 00000 n +0000107792 00000 n +0000090866 00000 n +0000091118 00000 n +0000092804 00000 n +0000092782 00000 n +0000092894 00000 n +0000092914 00000 n +0000093305 00000 n +0000093074 00000 n +0000093619 00000 n +0000093640 00000 n +0000093892 00000 n +0000095336 00000 n +0000095314 00000 n +0000095423 00000 n +0000095442 00000 n +0000095833 00000 n +0000095602 00000 n +0000096145 00000 n +0000096166 00000 n +0000096421 00000 n +0000101768 00000 n +0000101746 00000 n +0000101866 00000 n +0000101886 00000 n +0000102387 00000 n +0000102045 00000 n +0000102827 00000 n +0000102848 00000 n +0000103104 00000 n +0000106853 00000 n +0000106831 00000 n +0000106951 00000 n +0000106971 00000 n +0000107402 00000 n +0000107131 00000 n +0000107771 00000 n +0000107854 00000 n trailer << /Root 386 0 R /Info 1 0 R - /ID [<26225DFEC72B26415127EACB88B346B3> <26225DFEC72B26415127EACB88B346B3>] + /ID [<275D60480A591498073244D01329BEAF> <275D60480A591498073244D01329BEAF>] /Size 387 >> startxref -95893 +113695 %%EOF diff --git a/docs/figs/opt_stiff_hac_dvf_L_cas_disp_error.png b/docs/figs/opt_stiff_hac_dvf_L_cas_disp_error.png index 1f45253..67c180a 100644 Binary files a/docs/figs/opt_stiff_hac_dvf_L_cas_disp_error.png and b/docs/figs/opt_stiff_hac_dvf_L_cas_disp_error.png differ diff --git a/docs/figs/opt_stiff_hac_dvf_L_pos_error.pdf b/docs/figs/opt_stiff_hac_dvf_L_pos_error.pdf index e5301db..57ac42e 100644 Binary files a/docs/figs/opt_stiff_hac_dvf_L_pos_error.pdf and b/docs/figs/opt_stiff_hac_dvf_L_pos_error.pdf differ diff --git a/docs/figs/opt_stiff_hac_dvf_L_pos_error.png b/docs/figs/opt_stiff_hac_dvf_L_pos_error.png index 9ed43aa..58d14cd 100644 Binary files a/docs/figs/opt_stiff_hac_dvf_L_pos_error.png and b/docs/figs/opt_stiff_hac_dvf_L_pos_error.png differ diff --git a/docs/figs/opt_stiff_hac_dvf_L_psd_disp_error.pdf b/docs/figs/opt_stiff_hac_dvf_L_psd_disp_error.pdf index 494f350..cdff831 100644 Binary files a/docs/figs/opt_stiff_hac_dvf_L_psd_disp_error.pdf and b/docs/figs/opt_stiff_hac_dvf_L_psd_disp_error.pdf differ diff --git a/docs/figs/opt_stiff_hac_dvf_L_psd_disp_error.png b/docs/figs/opt_stiff_hac_dvf_L_psd_disp_error.png index 0db0650..db0eb6e 100644 Binary files a/docs/figs/opt_stiff_hac_dvf_L_psd_disp_error.png and b/docs/figs/opt_stiff_hac_dvf_L_psd_disp_error.png differ diff --git a/docs/functions.html b/docs/functions.html index 7e5847d..3fe9795 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -4,227 +4,17 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Matlab Functions used for the NASS Project - - - - - - - + + + + -
      -

      1 computeReferencePose

      +
      +

      1 describeNassSetup

      + +

      +
      + + +
      +

      Function description

      +
      +
      +
      function [] = describeNassSetup()
      +% describeNassSetup -
      +%
      +% Syntax: [] = describeNassSetup()
      +%
      +% Inputs:
      +%    -  -
      +%
      +% Outputs:
      +%    -  -
      +
      +
      +
      +
      + +
      +

      Simscape Configuration

      +
      +
      +
      load('./mat/conf_simscape.mat', 'conf_simscape');
      +
      +
      + +
      +
      fprintf('Simscape Configuration:\n');
      +
      +if conf_simscape.type == 1
      +    fprintf('- Gravity is included\n');
      +else
      +    fprintf('- Gravity is not included\n');
      +end
      +
      +fprintf('\n');
      +
      +
      +
      +
      + +
      +

      Disturbances

      +
      +
      +
      load('./mat/nass_disturbances.mat', 'args');
      +
      +
      + +
      +
      fprintf('Disturbances:\n');
      +if ~args.enable
      +    fprintf('- No disturbance is included\n');
      +else
      +    if args.Dwx && args.Dwy && args.Dwz
      +        fprintf('- Ground motion\n');
      +    end
      +    if args.Fty_x && args.Fty_z
      +        fprintf('- Vibrations of the Translation Stage\n');
      +    end
      +    if args.Frz_z
      +        fprintf('- Vibrations of the Spindle\n');
      +    end
      +end
      +fprintf('\n');
      +
      +
      +
      +
      + +
      +

      References

      +
      +
      +
      load('./mat/nass_references.mat', 'args');
      +
      +
      + +
      +
      fprintf('Reference Tracking:\n');
      +fprintf('- Translation Stage:\n');
      +switch args.Dy_type
      +  case 'constant'
      +    fprintf('  - Constant Position\n');
      +    fprintf('  - Dy = %.0f [mm]\n', args.Dy_amplitude*1e3);
      +  case 'triangular'
      +    fprintf('  - Triangular Path\n');
      +    fprintf('  - Amplitude = %.0f [mm]\n', args.Dy_amplitude*1e3);
      +    fprintf('  - Period = %.0f [s]\n', args.Dy_period);
      +  case 'sinusoidal'
      +    fprintf('  - Sinusoidal Path\n');
      +    fprintf('  - Amplitude = %.0f [mm]\n', args.Dy_amplitude*1e3);
      +    fprintf('  - Period = %.0f [s]\n', args.Dy_period);
      +end
      +
      +fprintf('- Tilt Stage:\n');
      +switch args.Ry_type
      +  case 'constant'
      +    fprintf('  - Constant Position\n');
      +    fprintf('  - Ry = %.0f [mm]\n', args.Ry_amplitude*1e3);
      +  case 'triangular'
      +    fprintf('  - Triangular Path\n');
      +    fprintf('  - Amplitude = %.0f [mm]\n', args.Ry_amplitude*1e3);
      +    fprintf('  - Period = %.0f [s]\n', args.Ry_period);
      +  case 'sinusoidal'
      +    fprintf('  - Sinusoidal Path\n');
      +    fprintf('  - Amplitude = %.0f [mm]\n', args.Ry_amplitude*1e3);
      +    fprintf('  - Period = %.0f [s]\n', args.Ry_period);
      +end
      +
      +fprintf('- Spindle:\n');
      +switch args.Rz_type
      +  case 'constant'
      +    fprintf('  - Constant Position\n');
      +    fprintf('  - Rz = %.0f [deg]\n', 180/pi*args.Rz_amplitude);
      +  case { 'rotating', 'rotating-not-filtered' }
      +    fprintf('  - Rotating\n');
      +    fprintf('  - Speed = %.0f [rpm]\n', 60/Rz_period);
      +end
      +
      +
      +fprintf('- Micro Hexapod:\n');
      +switch args.Dh_type
      +  case 'constant'
      +    fprintf('  - Constant Position\n');
      +    fprintf('  - Dh = %.0f, %.0f, %.0f [mm]\n',  args.Dh_pos(1), args.Dh_pos(2), args.Dh_pos(3));
      +    fprintf('  - Rh = %.0f, %.0f, %.0f [deg]\n', args.Dh_pos(4), args.Dh_pos(5), args.Dh_pos(6));
      +end
      +
      +fprintf('\n');
      +
      +
      +
      +
      + +
      +

      Controller

      +
      +
      +
      load('./mat/controller.mat', 'controller');
      +
      +
      + +
      +
      fprintf('Controller:\n');
      +fprintf('- %s\n', controller.name);
      +fprintf('\n');
      +
      +
      +
      +
      + +
      +

      Micro-Station

      +
      +
      +
      load('./mat/stages.mat', 'ground', 'granite', 'ty', 'ry', 'rz', 'micro_hexapod', 'axisc');
      +
      +
      + +
      +
      fprintf('Micro Station:\n');
      +
      +if granite.type == 1 && ...
      +        ty.type == 1 && ...
      +        ry.type == 1 && ...
      +        rz.type == 1 && ...
      +        micro_hexapod.type == 1;
      +    fprintf('- All stages are rigid\n');
      +elseif granite.type == 2 && ...
      +        ty.type == 2 && ...
      +        ry.type == 2 && ...
      +        rz.type == 2 && ...
      +        micro_hexapod.type == 2;
      +    fprintf('- All stages are flexible\n');
      +else
      +    if granite.type == 1 || granite.type == 4
      +        fprintf('- Granite is rigid\n');
      +    else
      +        fprintf('- Granite is flexible\n');
      +    end
      +    if ty.type == 1 || ty.type == 4
      +        fprintf('- Translation Stage is rigid\n');
      +    else
      +        fprintf('- Translation Stage is flexible\n');
      +    end
      +    if ry.type == 1 || ry.type == 4
      +        fprintf('- Tilt Stage is rigid\n');
      +    else
      +        fprintf('- Tilt Stage is flexible\n');
      +    end
      +    if rz.type == 1 || rz.type == 4
      +        fprintf('- Spindle is rigid\n');
      +    else
      +        fprintf('- Spindle is flexible\n');
      +    end
      +    if micro_hexapod.type == 1 || micro_hexapod.type == 4
      +        fprintf('- Micro Hexapod is rigid\n');
      +    else
      +        fprintf('- Micro Hexapod is flexible\n');
      +    end
      +
      +end
      +
      +fprintf('\n');
      +
      +
      +
      +
      + +
      +

      Metrology

      +
      +
      +
      load('./mat/stages.mat', 'mirror');
      +
      +
      + +
      +
      fprintf('Reference Mirror:\n');
      +
      +if mirror.type == 2;
      +    fprintf('- flexible fixation\n');
      +    fprintf('- w = %.0f [Hz]\n', mirror.freq(1));
      +else
      +    fprintf('- rigidly attached to the nano-hexapod\n');
      +end
      +fprintf('- m = %.0f [kg]\n', mirror.mass);
      +fprintf('\n');
      +
      +
      +
      +
      + +
      +

      Nano Hexapod

      +
      +
      +
      load('./mat/stages.mat', 'nano_hexapod');
      +
      +
      + +
      +
      fprintf('Nano Hexapod:\n');
      +
      +if nano_hexapod.type == 0;
      +    fprintf('- no included\n');
      +elseif nano_hexapod.type == 1 || nano_hexapod.type == 3;
      +    fprintf('- rigid\n');
      +elseif nano_hexapod.type == 2;
      +    fprintf('- flexible\n');
      +    fprintf('- Ki = %.0g [N/m]\n', nano_hexapod.Ki(1));
      +end
      +
      +fprintf('\n');
      +
      +
      +
      +
      + +
      +

      Sample

      +
      +
      +
      load('./mat/stages.mat', 'sample');
      +
      +
      + +
      +
      fprintf('Sample:\n');
      +
      +if sample.type == 0;
      +    fprintf('- no included\n');
      +elseif sample.type == 1 || sample.type == 3;
      +    fprintf('- rigid\n');
      +    fprintf('- mass = %.0f [kg]\n', sample.mass);
      +    fprintf('- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n', sample.inertia(1), sample.inertia(2), sample.inertia(3));
      +elseif sample.type == 2;
      +    fprintf('- flexible\n');
      +    fprintf('- mass = %.0f [kg]\n', sample.mass);
      +    fprintf('- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n', sample.inertia(1), sample.inertia(2), sample.inertia(3));
      +    % fprintf('- Kt = %.0g, %.0g, %.0g [N/m]\n', sample.K(1), sample.K(2), sample.K(3));
      +    % fprintf('- Kr = %.0g, %.0g, %.0g [Nm/rad]\n', sample.K(4), sample.K(5), sample.K(6));
      +    fprintf('- wt(x,y,z) = %.0f, %.0f, %.0f [Hz]\n', 1/2/pi*sqrt(sample.K(1)/sample.mass), 1/2/pi*sqrt(sample.K(1)/sample.mass), 1/2/pi*sqrt(sample.K(1)/sample.mass));
      +    fprintf('- wr(x,y,z) = %.0f, %.0f, %.0f [Hz]\n', 1/2/pi*sqrt(sample.K(4)/sample.inertia(1)), 1/2/pi*sqrt(sample.K(5)/sample.inertia(2)), 1/2/pi*sqrt(sample.K(6)/sample.inertia(3)));
      +end
      +fprintf('\n');
      +
      +
      +
      +
      +
      + +
      +

      2 computeReferencePose

      +
      +

      @@ -338,8 +444,8 @@ This Matlab function is accessible here
      -

      2 Compute the Sample Position Error w.r.t. the NASS

      -
      +

      3 Compute the Sample Position Error w.r.t. the NASS

      +

      @@ -376,7 +482,7 @@ MTr = [WTm(1:3,1:3)<

      Author: Dehaeze Thomas

      -

      Created: 2020-03-17 mar. 17:28

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/identification.html b/docs/identification.html index bfdf4e3..19eab99 100644 --- a/docs/identification.html +++ b/docs/identification.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Identification - - - - - - - - + + + + - +
      @@ -815,7 +603,7 @@ For such a complex system, we believe that the Simscape Model represents the dyn

      Author: Dehaeze Thomas

      -

      Created: 2020-04-01 mer. 16:14

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/index.html b/docs/index.html index 8a1b53b..341a661 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,233 +4,23 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Simscape Model of the Nano-Active-Stabilization-System - - - - - - - + + + +

      Simscape Model of the Nano-Active-Stabilization-System

      @@ -256,7 +46,6 @@
      -

      Here are links to the documents related to the Simscape model of the Nano-Active-Stabilization-System.

      @@ -444,7 +233,7 @@ These functions are all defined here.

      Author: Dehaeze Thomas

      -

      Created: 2020-04-07 mar. 14:55

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/kinematics.html b/docs/kinematics.html index 7282706..df67c88 100644 --- a/docs/kinematics.html +++ b/docs/kinematics.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Kinematics of the station - - - - - - - - + + + + - +
      @@ -572,7 +360,7 @@ And we verify that we indeed succeed to go to the wanted position.

      Author: Dehaeze Thomas

      -

      Created: 2020-03-06 ven. 15:09

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/metrology_frame.html b/docs/metrology_frame.html new file mode 100644 index 0000000..fa1168e --- /dev/null +++ b/docs/metrology_frame.html @@ -0,0 +1,164 @@ + + + + + + + +Study of the Metrology Frame + + + + + + + + + + + + +
      + UP + | + HOME +
      +

      Study of the Metrology Frame

      + + +
      +

      1 Flexibility of the reference mirror

      +
      +

      +In this section we wish to see how a flexibility between the nano-hexapod’s top platform and the reference mirror will change the plant dynamics and limits the performance. +

      + +

      +First, we identify the dynamics of the system for an infinitely rigid reference mirror, and then for a reference mirror with a limited resonance frequency. +

      + +

      +We will compare the two dynamics and conclude. +

      +
      + +
      +

      1.1 Initialization

      +
      +

      +We initialize all the stages with the default parameters. +

      +
      +
      initializeGround();
      +initializeGranite();
      +initializeTy();
      +initializeRy();
      +initializeRz();
      +initializeMicroHexapod();
      +initializeAxisc();
      +initializeNanoHexapod();
      +
      +
      + +

      +We first consider a rigid Sample to simplify the analysis. +

      +
      +
      initializeSample('type', 'rigid');
      +
      +
      +
      +
      + +
      +

      1.2 Rigid fixation between the metrology frame and the nano-hexapod

      +
      +

      +Let’s first consider a rigid reference mirror and we identify the dynamics of the system. +

      +
      +
      initializeMirror('type', 'rigid');
      +
      +
      +
      +
      + +
      +

      1.3 Flexible fixation between the metrology frame and the nano-hexapod

      +
      +

      +We now initialize a reference mirror with a main resonance frequency at \(200\ [Hz]\). +

      +
      +
      initializeMirror('type', 'flexible', 'freq', 200*ones(6,1));
      +
      +
      + +

      +And we re identify the plant dynamics. +

      +
      +
      +
      +

      1.4 Comparison

      +
      +

      +The obtained transfer functions from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) when considering a rigid reference mirror and a flexible one are shown in Figure 1. +

      + + +
      +

      effect_mirror_flexibility_fz_dz.png +

      +

      Figure 1: Effect of the mirror flexibility on the transfer function from \(\mathcal{F}_z\) to \(\mathcal{X}_z\)

      +
      +
      +
      + +
      +

      1.5 Conclusion

      +
      +
      +

      +A flexibility between the nano-hexapod top platform and the reference mirror will appear in the plant as two complex conjugate poles at the frequency of the resonance of the mirror on top of the nano-hexapod. +This induces 180 degrees of phase drop on the plant and will limit the attainable controller bandwidth. +

      + +

      +This phase drop appears whatever the nano-hexapod stiffness. +Thus, care should be taken when designing the fixation of the reference mirror on top of the nano-hexapod. +

      + +
      +
      +
      +
      +
      +
      +

      Author: Dehaeze Thomas

      +

      Created: 2020-04-17 ven. 09:35

      +
      + + diff --git a/docs/motion_force_requirements.html b/docs/motion_force_requirements.html index eae89ae..af3d598 100644 --- a/docs/motion_force_requirements.html +++ b/docs/motion_force_requirements.html @@ -4,236 +4,31 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Motion and Force Requirements for the Nano-Hexapod - - - + + + + - +

      Motion and Force Requirements for the Nano-Hexapod

      @@ -360,7 +155,7 @@ F = m*d*w

      Author: Dehaeze Thomas

      -

      Created: 2020-03-17 mar. 17:28

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/optimal_stiffness_control.html b/docs/optimal_stiffness_control.html index 0b31a6a..9d3fe4d 100644 --- a/docs/optimal_stiffness_control.html +++ b/docs/optimal_stiffness_control.html @@ -4,227 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Control of the NASS with optimal stiffness - - - - - - - + + + + + + -
      -

      1 Low Authority Control - Decentralized Integral Force Feedback

      +
      +

      1 Low Authority Control - Decentralized Direct Velocity Feedback

      +

      + +

      + +
      +

      control_architecture_dvf.png +

      +

      Figure 1: Low Authority Control: Decentralized Direct Velocity Feedback

      +

      1.1 Initialization

      -

      -We initialize all the stages with the default parameters. -

      initializeGround();
       initializeGranite();
      @@ -274,43 +96,45 @@ initializeRz();
       initializeMicroHexapod();
       initializeAxisc();
       initializeMirror();
      +
      +initializeSimscapeConfiguration();
      +initializeDisturbances('enable', false);
      +initializeLoggingConfiguration('log', 'none');
      +
      +initializeController('type', 'hac-dvf');
       

      -We set the references that corresponds to a tomography experiment. +We set the stiffness of the payload fixation:

      -
      initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', 1);
      -initializeSimscapeConfiguration();
      -initializeDisturbances('enable', false);
      -initializeLoggingConfiguration('log', 'none');
      -
      -
      - -
      -
      initializeController('type', 'hac-iff');
      +
      Kp = 1e8; % [N/m]
       
      -
      -

      1.2 Identification

      +
      +

      1.2 Identification

      -
      Kx = tf(zeros(6));
      -Kiff = tf(zeros(6));
      +
      K = tf(zeros(6));
      +Kdvf = tf(zeros(6));
       
      +

      +We identify the system for the following payload masses: +

      Ms = [1, 10, 50];
      -
      -Gm_iff = {zeros(length(Ms), 1)};
       
      +

      +The nano-hexapod has the following leg’s stiffness and damping. +

      initializeNanoHexapod('k', 1e5, 'c', 2e2);
       
      @@ -318,45 +142,494 @@ Gm_iff = {zeros(length(Ms), 1)};
      -
      -

      1.3 Controller Design

      +
      +

      1.3 Controller Design

      -Root Locus +The obtain dynamics from actuators forces \(\tau_i\) to the relative motion of the legs \(d\mathcal{L}_i\) is shown in Figure 2 for the three considered payload masses.

      -
      -

      opt_stiff_iff_root_locus.png +

      +The Root Locus is shown in Figure 3 and wee see that we have unconditional stability.

      -

      Figure 1: Root Locus for the

      + +

      +In order to choose the gain such that we obtain good damping for all the three payload masses, we plot the damping ration of the modes as a function of the gain for all three payload masses in Figure 4. +

      + + +
      +

      opt_stiff_dvf_plant.png +

      +

      Figure 2: Dynamics for the Direct Velocity Feedback active damping for three payload masses

      +
      + + +
      +

      opt_stiff_dvf_root_locus.png +

      +

      Figure 3: Root Locus for the DVF controll for three payload masses

      Damping as function of the gain

      + +
      +

      opt_stiff_dvf_damping_gain.png +

      +

      Figure 4: Damping ratio of the poles as a function of the DVF gain

      +
      + +

      +Finally, we use the following controller for the Decentralized Direct Velocity Feedback: +

      +
      +
      Kdvf = 5e3*s/(1+s/2/pi/1e3)*eye(6);
      +
      -
      -

      2 Primary Control

      + +
      +

      1.4 Effect of the Low Authority Control on the Primary Plant

      +
      +

      +Let’s identify the dynamics from actuator forces \(\bm{\tau}\) to displacement as measured by the metrology \(\bm{\mathcal{X}}\): +\[ \bm{G}(s) = \frac{\bm{\mathcal{X}}}{\bm{\tau}} \] +We do so both when the DVF is applied and when it is not applied. +

      + + +

      +Then, we compute the transfer function from forces applied by the actuators \(\bm{\mathcal{F}}\) to the measured position error in the frame of the nano-hexapod \(\bm{\epsilon}_{\mathcal{X}_n}\): +\[ \bm{G}_\mathcal{X}(s) = \frac{\bm{\epsilon}_{\mathcal{X}_n}}{\bm{\mathcal{F}}} = \bm{G}(s) \bm{J}^{-T} \] +The obtained dynamics is shown in Figure 5. +

      + + +

      +And we compute the transfer function from actuator forces \(\bm{\tau}\) to position error of each leg \(\bm{\epsilon}_\mathcal{L}\): +\[ \bm{G}_\mathcal{L} = \frac{\bm{\epsilon}_\mathcal{L}}{\bm{\tau}} = \bm{J} \bm{G}(s) \] +The obtained dynamics is shown in Figure 6. +

      + +
      +

      opt_stiff_primary_plant_damped_X.png +

      +

      Figure 5: Primary plant in the task space with (dashed) and without (solid) Direct Velocity Feedback

      +
      + + +
      +

      opt_stiff_primary_plant_damped_L.png +

      +

      Figure 6: Primary plant in the space of the legs with (dashed) and without (solid) Direct Velocity Feedback

      +
      +

      +The coupling (off diagonal elements) of \(\bm{G}_\mathcal{X}\) are shown in Figure 7 both when DVF is applied and when it is not. +

      + +

      +The coupling does not change a lot with DVF. +

      + + +

      +The coupling in the space of the legs \(\bm{G}_\mathcal{L}\) are shown in Figure 8. +The magnitude of the coupling around the resonance of the nano-hexapod (where the coupling is the highest) is considerably reduced when DVF is applied. +

      + + +
      +

      opt_stiff_primary_plant_damped_coupling_X.png +

      +

      Figure 7: Coupling in the primary plant in the task with (dashed) and without (solid) Direct Velocity Feedback

      +
      + + +
      +

      opt_stiff_primary_plant_damped_coupling_L.png +

      +

      Figure 8: Coupling in the primary plant in the space of the legs with (dashed) and without (solid) Direct Velocity Feedback

      +
      +
      +
      + +
      +

      1.5 Effect of the Low Authority Control on the Sensibility to Disturbances

      +
      +

      +We may now see how Decentralized Direct Velocity Feedback changes the sensibility to disturbances, namely: +

      +
        +
      • Ground motion
      • +
      • Spindle and Translation stage vibrations
      • +
      • Direct forces applied to the sample
      • +
      + +

      +To simplify the analysis, we here only consider the vertical direction, thus, we will look at the transfer functions: +

      +
        +
      • from vertical ground motion \(D_{w,z}\) to the vertical position error of the sample \(E_z\)
      • +
      • from vertical vibration forces of the spindle \(F_{R_z,z}\) to \(E_z\)
      • +
      • from vertical vibration forces of the translation stage \(F_{T_y,z}\) to \(E_z\)
      • +
      • from vertical direct forces (such as cable forces) \(F_{d,z}\) to \(E_z\)
      • +
      + +

      +The norm of these transfer functions are shown in Figure 9. +

      + +
      +

      opt_stiff_sensibility_dist_dvf.png +

      +

      Figure 9: Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Direct Velocity Feedback applied

      +
      +
      +
      + +
      +

      1.6 Conclusion

      +
      +
      +

      + +

      + +
      +
      +
      +
      + +
      +

      2 Primary Control in the leg space

      -
      -
      -

      2.1 Identification

      +

      + +

      +

      +In this section we implement the control architecture shown in Figure 10 consisting of: +

      +
        +
      • an inner loop with a decentralized direct velocity feedback control
      • +
      • an outer loop where the controller \(\bm{K}_\mathcal{L}\) is designed in the frame of the legs
      • +
      + + +
      +

      control_architecture_hac_dvf_pos_L.png +

      +

      Figure 10: Cascade Control Architecture. The inner loop consist of a decentralized Direct Velocity Feedback. The outer loop consist of position control in the leg’s space

      -
      -

      2.2 Controller Design

      +

      +The controller for decentralized direct velocity feedback is the one designed in Section 1. +

      +
      +
      +

      2.1 Plant in the leg space

      +
      +

      +We now loop at the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the design of \(\bm{K}_\mathcal{L}\). +

      + +

      +The diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses are shown in Figure 11. +

      + +

      +The plant dynamics below \(100\ [Hz]\) is only slightly dependent on the payload mass. +

      + + +
      +

      opt_stiff_primary_plant_L.png +

      +

      Figure 11: Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses

      +
      -
      -

      3 Simulations

      + +
      +

      2.2 Control in the leg space

      +
      +

      +We design a diagonal controller with all the same diagonal elements. +

      + +

      +The requirements for the controller are: +

      +
        +
      • Crossover frequency of around 100Hz
      • +
      • Stable for all the considered payload masses
      • +
      • Sufficient phase and gain margin
      • +
      • Integral action at low frequency
      • +
      + +

      +The design controller is as follows: +

      +
        +
      • Lead centered around the crossover
      • +
      • An integrator below 10Hz
      • +
      • A low pass filter at 250Hz
      • +
      + +

      +The loop gain is shown in Figure 12. +

      + +
      +
      h = 2.0;
      +Kl = 2e7 * eye(6) * ...
      +     1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
      +     1/h*(s/(2*pi*200/h) + 1)/(s/(2*pi*200*h) + 1) * ...
      +     (s/2/pi/10 + 1)/(s/2/pi/10) * ...
      +     1/(1 + s/2/pi/300);
      +
      +
      + + +
      +

      opt_stiff_primary_loop_gain_L.png +

      +

      Figure 12: Loop gain for the primary plant

      +
      + +
      +
      load('mat/stages.mat', 'nano_hexapod');
      +K = Kl*nano_hexapod.J*diag([1, 1, 1, 1, 1, 0]);
      +
      +
      + +

      +Check the MIMO stability +

      +
      +
      +
      +

      2.3 Sensibility to Disturbances and Noise Budget

      +
      +

      +We identify the transfer function from disturbances to the position error of the sample when the HAC-LAC control is applied. +

      +

      +We compare the norm of these transfer function for the vertical direction when no control is applied and when HAC-LAC control is applied: Figure 13. +

      + + +
      +

      opt_stiff_primary_control_L_senbility_dist.png +

      +

      Figure 13: Sensibility to disturbances when the HAC-LAC control is applied

      +
      +

      +Then, we load the Power Spectral Density of the perturbations and we look at the obtained PSD of the displacement error in the vertical direction due to the disturbances: +

      +
        +
      • Figure 14: Amplitude Spectral Density of the vertical position error due to both the vertical ground motion and the vertical vibrations of the spindle
      • +
      • Figure 15: Comparison of the Amplitude Spectral Density of the vertical position error in Open Loop and with the HAC-DVF Control
      • +
      • Figure 16: Comparison of the Cumulative Amplitude Spectrum of the vertical position error in Open Loop and with the HAC-DVF Control
      • +
      + + +
      +

      opt_stiff_primary_control_L_psd_dist.png +

      +

      Figure 14: Amplitude Spectral Density of the vertical position error of the sample when the HAC-DVF control is applied due to both the ground motion and spindle vibrations

      +
      + + +
      +

      opt_stiff_primary_control_L_psd_tot.png +

      +

      Figure 15: Amplitude Spectral Density of the vertical position error of the sample in Open-Loop and when the HAC-DVF control is applied

      +
      + + +
      +

      opt_stiff_primary_control_L_cas_tot.png +

      +

      Figure 16: Cumulative Amplitude Spectrum of the vertical position error of the sample in Open-Loop and when the HAC-DVF control is applied

      +
      +
      +
      + +
      +

      2.4 Simulations

      +
      +

      +Let’s now simulate a tomography experiment. +To do so, we include all disturbances except vibrations of the translation stage. +

      +
      +
      initializeDisturbances();
      +initializeSimscapeConfiguration('gravity', false);
      +initializeLoggingConfiguration('log', 'all');
      +
      +
      + +

      +And we run the simulation for all three payload Masses. +

      +
      +
      +
      +

      2.5 Results

      +
      +

      +Let’s now see how this controller performs. +

      + +

      +First, we compute the Power Spectral Density of the sample’s position error and we compare it with the open loop case in Figure 17. +

      + +

      +Similarly, the Cumulative Amplitude Spectrum is shown in Figure 18. +

      + +

      +Finally, the time domain position error signals are shown in Figure 19. +

      + +
      +

      opt_stiff_hac_dvf_L_psd_disp_error.png +

      +

      Figure 17: Amplitude Spectral Density of the position error in Open Loop and with the HAC-LAC controller

      +
      + + +
      +

      opt_stiff_hac_dvf_L_cas_disp_error.png +

      +

      Figure 18: Cumulative Amplitude Spectrum of the position error in Open Loop and with the HAC-LAC controller

      +
      + + +
      +

      opt_stiff_hac_dvf_L_pos_error.png +

      +

      Figure 19: Position Error of the sample during a tomography experiment when no control is applied and with the HAC-DVF control architecture

      +
      +
      +
      + +
      +

      2.6 Conclusion

      +
      +
      +

      + +

      + +
      +
      +
      +
      + +
      +

      3 Primary Control in the task space

      +
      +

      + +

      +

      +In this section, the control architecture shown in Figure 20 is applied and consists of: +

      +
        +
      • an inner Low Authority Control loop consisting of a decentralized direct velocity control controller
      • +
      • an outer loop with the primary controller \(\bm{K}_\mathcal{X}\) designed in the task space
      • +
      + + +
      +

      control_architecture_hac_dvf_pos_X.png +

      +

      Figure 20: HAC-LAC architecture

      +
      +
      +
      +

      3.1 Plant in the task space

      +
      +

      +Let’s look \(\bm{G}_\mathcal{X}(s)\). +

      +
      +
      + +
      +

      3.2 Control in the task space

      +
      +
      +
      Kx = tf(zeros(6));
      +
      +h = 2.5;
      +Kx(1,1) = 3e7 * ...
      +          1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
      +          (s/2/pi/1 + 1)/(s/2/pi/1);
      +
      +Kx(2,2) = Kx(1,1);
      +
      +h = 2.5;
      +Kx(3,3) = 3e7 * ...
      +          1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
      +          (s/2/pi/1 + 1)/(s/2/pi/1);
      +
      +
      + +
      +
      h = 1.5;
      +Kx(4,4) = 5e5 * ...
      +          1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
      +          (s/2/pi/1 + 1)/(s/2/pi/1);
      +
      +Kx(5,5) = Kx(4,4);
      +
      +h = 1.5;
      +Kx(6,6) = 5e4 * ...
      +          1/h*(s/(2*pi*30/h) + 1)/(s/(2*pi*30*h) + 1) * ...
      +          (s/2/pi/1 + 1)/(s/2/pi/1);
      +
      +
      +
      + +
      +

      3.2.1 Stability

      +
      +
      +
      for i = 1:length(Ms)
      +    isstable(feedback(Gm_x{i}*Kx, eye(6), -1))
      +end
      +
      +
      +
      +
      +
      + +
      +

      3.3 Simulation

      +
      +
      +

      3.4 Conclusion

      +
      +
      +

      + +

      + +
      +
      +

      Author: Dehaeze Thomas

      -

      Created: 2020-04-08 mer. 17:22

      +

      Created: 2020-04-17 ven. 10:25

      diff --git a/docs/optimal_stiffness_disturbances.html b/docs/optimal_stiffness_disturbances.html index f1f6b56..d3cdc59 100644 --- a/docs/optimal_stiffness_disturbances.html +++ b/docs/optimal_stiffness_disturbances.html @@ -4,245 +4,31 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Determination of the optimal nano-hexapod’s stiffness for reducing the effect of disturbances - - - - - - - - + + + + - + @@ -497,8 +283,8 @@ The effect of direct forces/torques applied on the sample (cable forces for inst
      -
      -

      2.6 Conclusion

      +
      +

      2.6 Conclusion

      @@ -678,8 +464,8 @@ From Figures 11 and 12, we s

      -
      -

      3.4 Conclusion

      +
      +

      3.4 Conclusion

      @@ -848,8 +634,8 @@ The black dashed line corresponds to the performance objective of a sample vibra

      -
      -

      4.4 Conclusion

      +
      +

      4.4 Conclusion

      @@ -975,13 +761,13 @@ The obtained required bandwidth (approximate upper and lower bounds) to obtained

      - - - - - - - + + + + + + + @@ -1012,8 +798,8 @@ The obtained required bandwidth (approximate upper and lower bounds) to obtained -
      -

      6 Conclusion

      +
      +

      6 Conclusion

      @@ -1031,7 +817,7 @@ From Figure 23 and Table 1,

      Author: Dehaeze Thomas

      -

      Created: 2020-04-08 mer. 17:20

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/positioning_error.html b/docs/positioning_error.html index 608ab94..dbc464b 100644 --- a/docs/positioning_error.html +++ b/docs/positioning_error.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Computation of the Positioning Error with respect to the nano-hexapod - - - - - - - - + + + + - + -
      -

      2.1 Prepare the Simulation

      +
      +

      2.1 Prepare the Simulation

      We set a small StopTime. @@ -519,8 +307,8 @@ ans =

      -
      -

      2.3 Conclusion

      +
      +

      2.3 Conclusion

      @@ -548,8 +336,8 @@ This will induce a global positioning error of the sample with respect to the de We want to verify that we are able to measure this positioning error and convert it in the frame attached to the Nano-hexapod.

      -
      -

      3.1 Prepare the Simulation

      +
      +

      3.1 Prepare the Simulation

      We set a small StopTime. @@ -873,8 +661,8 @@ Verify that the pose error is small.

      -
      -

      3.4 Conclusion

      +
      +

      3.4 Conclusion

      @@ -888,7 +676,7 @@ Indeed, we are able to convert the position error in the frame of the NASS and t

      Author: Dehaeze Thomas

      -

      Created: 2020-03-06 ven. 15:09

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/simscape.html b/docs/simscape.html index 28ebf54..9e1374f 100644 --- a/docs/simscape.html +++ b/docs/simscape.html @@ -4,227 +4,17 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Simscape Model - - - - - - - + + + +
      @@ -753,7 +543,7 @@ Internal force, acting reciprocally between base and following origins is implem

      Author: Dehaeze Thomas

      -

      Created: 2020-03-06 ven. 15:09

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/simscape_subsystems.html b/docs/simscape_subsystems.html index 1c138a6..aaed97d 100644 --- a/docs/simscape_subsystems.html +++ b/docs/simscape_subsystems.html @@ -4,227 +4,17 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Subsystems used for the Simscape Models - - - - - - - + + + +
      @@ -239,170 +29,173 @@
      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [] = initializeSimscapeConfiguration(args)
       
      @@ -472,9 +265,9 @@ These functions are defined below.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.gravity logical {mustBeNumericOrLogical} = true
      @@ -484,9 +277,9 @@ These functions are defined below.
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +
      conf_simscape = struct();
       
      @@ -494,9 +287,9 @@ These functions are defined below.
      -
      -

      Add Type

      -
      +
      +

      Add Type

      +
      if args.gravity
         conf_simscape.type = 1;
      @@ -508,9 +301,9 @@ These functions are defined below.
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +
      save('./mat/conf_simscape.mat', 'conf_simscape');
       
      @@ -527,9 +320,9 @@ These functions are defined below.

      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [] = initializeLoggingConfiguration(args)
       
      @@ -537,9 +330,9 @@ These functions are defined below.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.log      char   {mustBeMember(args.log,{'none', 'all', 'forces'})} = 'none'
      @@ -550,9 +343,9 @@ These functions are defined below.
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +
      conf_log = struct();
       
      @@ -560,9 +353,9 @@ These functions are defined below.
      -
      -

      Add Type

      -
      +
      +

      Add Type

      +
      switch args.log
         case 'none'
      @@ -587,9 +380,9 @@ These functions are defined below.
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +
      save('./mat/conf_log.mat', 'conf_log');
       
      @@ -606,9 +399,9 @@ These functions are defined below.

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      The model of the Ground is composed of:

      @@ -633,9 +426,9 @@ The model of the Ground is composed of:
      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [ground] = initializeGround(args)
       
      @@ -643,9 +436,9 @@ The model of the Ground is composed of:
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.type char {mustBeMember(args.type,{'none', 'rigid'})} = 'rigid'
      @@ -656,9 +449,9 @@ The model of the Ground is composed of:
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the granite structure.

      @@ -669,9 +462,9 @@ First, we initialize the granite structure.
      -
      -

      Add Type

      -
      +
      +

      Add Type

      +
      switch args.type
         case 'none'
      @@ -708,9 +501,9 @@ ground.density = 2800;        % [kg/m3]
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The ground structure is saved.

      @@ -730,9 +523,9 @@ The ground structure is saved.

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      The Simscape model of the granite is composed of:

      @@ -761,9 +554,9 @@ The output sample_pos corresponds to the impact point of the X-ray.
      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [granite] = initializeGranite(args)
       
      @@ -771,9 +564,9 @@ The output sample_pos corresponds to the impact point of the X-ray.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.type          char    {mustBeMember(args.type,{'rigid', 'flexible', 'none', 'modal-analysis', 'init'})} = 'flexible'
      @@ -790,9 +583,9 @@ The output sample_pos corresponds to the impact point of the X-ray.
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the granite structure.

      @@ -824,9 +617,9 @@ First, we initialize the granite structure.
      -
      -

      Material and Geometry

      -
      +
      +

      Material and Geometry

      +

      Properties of the Material and link to the geometry of the granite.

      @@ -846,9 +639,9 @@ Z-offset for the initial position of the sample with respect to the granite top
      -
      -

      Stiffness and Damping properties

      -
      +
      +

      Stiffness and Damping properties

      +
      granite.K = args.K; % [N/m]
       granite.C = args.C; % [N/(m/s)]
      @@ -857,9 +650,9 @@ granite.C = args.C; % [N/(m/s)]
       
      -
      -

      Equilibrium position of the each joint.

      -
      +
      +

      Equilibrium position of the each joint.

      +
      if args.Foffset && ~strcmp(args.type, 'none') && ~strcmp(args.type, 'rigid') && ~strcmp(args.type, 'init')
         load('mat/Foffset.mat', 'Fgm');
      @@ -872,9 +665,9 @@ granite.C = args.C; % [N/(m/s)]
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The granite structure is saved.

      @@ -886,17 +679,17 @@ The granite structure is saved.
      -
      -

      5 Translation Stage

      +
      +

      5 Translation Stage

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      The Simscape model of the Translation stage consist of:

      @@ -926,9 +719,9 @@ It is used to impose the motion in the Y direction
      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [ty] = initializeTy(args)
       
      @@ -936,9 +729,9 @@ It is used to impose the motion in the Y direction
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.type      char   {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'init'})} = 'flexible'
      @@ -949,9 +742,9 @@ It is used to impose the motion in the Y direction
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the ty structure.

      @@ -983,9 +776,9 @@ First, we initialize the ty structure.
      -
      -

      Material and Geometry

      -
      +
      +

      Material and Geometry

      +

      Define the density of the materials as well as the geometry (STEP files).

      @@ -1030,9 +823,9 @@ ty.rotor.STEP = './STEPS/ty/Ty_Motor_Rotor.S
      -
      -

      Stiffness and Damping properties

      -
      +
      +

      Stiffness and Damping properties

      +
      ty.K = [2e8; 1e8; 2e8; 6e7; 9e7; 6e7]; % [N/m, N*m/rad]
       ty.C = [8e4; 5e4; 8e4; 2e4; 3e4; 2e4]; % [N/(m/s), N*m/(rad/s)]
      @@ -1041,9 +834,9 @@ ty.C = [8e4; 5e4; 8e4; 2e4; 3e4; 2e4]; % [N/(m/s), N*m
       
      -
      -

      Equilibrium position of the each joint.

      -
      +
      +

      Equilibrium position of the each joint.

      +
      if args.Foffset && ~strcmp(args.type, 'none') && ~strcmp(args.type, 'rigid') && ~strcmp(args.type, 'init')
         load('mat/Foffset.mat', 'Ftym');
      @@ -1056,9 +849,9 @@ ty.C = [8e4; 5e4; 8e4; 2e4; 3e4; 2e4]; % [N/(m/s), N*m
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The ty structure is saved.

      @@ -1070,17 +863,17 @@ The ty structure is saved.
      -
      -

      6 Tilt Stage

      +
      +

      6 Tilt Stage

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      The Simscape model of the Tilt stage is composed of:

      @@ -1110,9 +903,9 @@ The Ry motion is imposed by the input.
      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [ry] = initializeRy(args)
       
      @@ -1120,9 +913,9 @@ The Ry motion is imposed by the input.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.type          char    {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'init'})} = 'flexible'
      @@ -1134,9 +927,9 @@ The Ry motion is imposed by the input.
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the ry structure.

      @@ -1169,9 +962,9 @@ First, we initialize the ry structure.
      -
      -

      Material and Geometry

      -
      +
      +

      Material and Geometry

      +

      Properties of the Material and link to the geometry of the Tilt stage.

      @@ -1209,9 +1002,9 @@ Z-Offset so that the center of rotation matches the sample center;
      -
      -

      Stiffness and Damping properties

      -
      +
      +

      Stiffness and Damping properties

      +
      ry.K = [3.8e8; 4e8; 3.8e8; 1.2e8; 6e4; 1.2e8];
       ry.C = [1e5;   1e5; 1e5;   3e4;   1e3; 3e4];
      @@ -1220,9 +1013,9 @@ ry.C = [1e5;   1e5; 1e5;   3e4;   1e3; 3e4];
       
      -
      -

      Equilibrium position of the each joint.

      -
      +
      +

      Equilibrium position of the each joint.

      +
      if args.Foffset && ~strcmp(args.type, 'none') && ~strcmp(args.type, 'rigid') && ~strcmp(args.type, 'init')
         load('mat/Foffset.mat', 'Fym');
      @@ -1235,9 +1028,9 @@ ry.C = [1e5;   1e5; 1e5;   3e4;   1e3; 3e4];
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The ry structure is saved.

      @@ -1249,17 +1042,17 @@ The ry structure is saved.
      -
      -

      7 Spindle

      +
      +

      7 Spindle

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      The Simscape model of the Spindle is composed of:

      @@ -1285,9 +1078,9 @@ The Simscape model of the Spindle is composed of:
      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [rz] = initializeRz(args)
       
      @@ -1295,9 +1088,9 @@ The Simscape model of the Spindle is composed of:
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.type    char    {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'init'})} = 'flexible'
      @@ -1308,9 +1101,9 @@ The Simscape model of the Spindle is composed of:
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the rz structure.

      @@ -1342,9 +1135,9 @@ First, we initialize the rz structure.
      -
      -

      Material and Geometry

      -
      +
      +

      Material and Geometry

      +

      Properties of the Material and link to the geometry of the spindle.

      @@ -1365,9 +1158,9 @@ rz.stator.STEP = './STEPS/rz/Spindle_Stator.STEP'<
      -
      -

      Stiffness and Damping properties

      -
      +
      +

      Stiffness and Damping properties

      +
      rz.K = [7e8; 7e8; 2e9; 1e7; 1e7; 1e7];
       rz.C = [4e4; 4e4; 7e4; 1e4; 1e4; 1e4];
      @@ -1376,9 +1169,9 @@ rz.C = [4e4; 4e4; 7e4; 1e4; 1e4; 1e4];
       
      -
      -

      Equilibrium position of the each joint.

      -
      +
      +

      Equilibrium position of the each joint.

      +
      if args.Foffset && ~strcmp(args.type, 'none') && ~strcmp(args.type, 'rigid') && ~strcmp(args.type, 'init')
         load('mat/Foffset.mat', 'Fzm');
      @@ -1391,9 +1184,9 @@ rz.C = [4e4; 4e4; 7e4; 1e4; 1e4; 1e4];
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The rz structure is saved.

      @@ -1405,17 +1198,17 @@ The rz structure is saved.
      -
      -

      8 Micro Hexapod

      +
      +

      8 Micro Hexapod

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      simscape_model_micro_hexapod.png @@ -1432,9 +1225,9 @@ The rz structure is saved.

      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [micro_hexapod] = initializeMicroHexapod(args)
       
      @@ -1442,9 +1235,9 @@ The rz structure is saved.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
           args.type      char   {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'modal-analysis', 'init', 'compliance'})} = 'flexible'
      @@ -1486,9 +1279,9 @@ The rz structure is saved.
       
      -
      -

      Function content

      -
      +
      +

      Function content

      +
      micro_hexapod = initializeFramesPositions('H', args.H, 'MO_B', args.MO_B);
       micro_hexapod = generateGeneralConfiguration(micro_hexapod, 'FH', args.FH, 'FR', args.FR, 'FTh', args.FTh, 'MH', args.MH, 'MR', args.MR, 'MTh', args.MTh);
      @@ -1518,9 +1311,9 @@ Equilibrium position of the each joint.
       
      -
      -

      Add Type

      -
      +
      +

      Add Type

      +
      switch args.type
         case 'none'
      @@ -1541,9 +1334,9 @@ Equilibrium position of the each joint.
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The micro_hexapod structure is saved.

      @@ -1563,9 +1356,9 @@ The micro_hexapod structure is saved.

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      The Simscape model of the Center of gravity compensator is composed of:

      @@ -1590,9 +1383,9 @@ The Simscape model of the Center of gravity compensator is composed of:
      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [axisc] = initializeAxisc(args)
       
      @@ -1600,9 +1393,9 @@ The Simscape model of the Center of gravity compensator is composed of:
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.type char {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'flexible'
      @@ -1612,9 +1405,9 @@ The Simscape model of the Center of gravity compensator is composed of:
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the axisc structure.

      @@ -1625,9 +1418,9 @@ First, we initialize the axisc structure.
      -
      -

      Add Type

      -
      +
      +

      Add Type

      +
      switch args.type
         case 'none'
      @@ -1642,9 +1435,9 @@ First, we initialize the axisc structure.
       
      -
      -

      Material and Geometry

      -
      +
      +

      Material and Geometry

      +

      Properties of the Material and link to the geometry files.

      @@ -1669,9 +1462,9 @@ axisc.gear.STEP = './STEPS/axisc/axisc_gear.STE
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The axisc structure is saved.

      @@ -1691,9 +1484,9 @@ The axisc structure is saved.

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      The Simscape Model of the mirror is just a solid body. The output mirror_center corresponds to the center of the Sphere and is the point of measurement for the metrology @@ -1715,9 +1508,9 @@ The output mirror_center corresponds to the center of the Sphere an

      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [] = initializeMirror(args)
       
      @@ -1725,23 +1518,25 @@ The output mirror_center corresponds to the center of the Sphere an
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
      -  args.type        char   {mustBeMember(args.type,{'none', 'rigid'})} = 'rigid'
      -  args.shape       char   {mustBeMember(args.shape,{'spherical', 'conical'})} = 'spherical'
      -  args.angle (1,1) double {mustBeNumeric, mustBePositive} = 45 % [deg]
      +    args.type        char   {mustBeMember(args.type,{'none', 'rigid', 'flexible'})} = 'rigid'
      +    args.shape       char   {mustBeMember(args.shape,{'spherical', 'conical'})} = 'spherical'
      +    args.angle (1,1) double {mustBeNumeric, mustBePositive} = 45 % [deg]
      +    args.mass  (1,1) double {mustBeNumeric, mustBePositive} = 10 % [kg]
      +    args.freq  (6,1) double {mustBeNumeric, mustBeNonnegative} = 200*ones(6,1) % [Hz]
       end
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the mirror structure.

      @@ -1761,15 +1556,52 @@ First, we initialize the mirror structure. mirror.type = 0; case 'rigid' mirror.type = 1; + case 'flexible' + mirror.type = 2; end
      -
      -

      Material and Geometry

      -
      +
      +

      Mass and Inertia

      +
      +
      +
      mirror.mass = args.mass;
      +mirror.freq = args.freq;
      +
      +
      +
      +
      + +
      +

      Stiffness and Damping properties

      +
      +
      +
      mirror.K = zeros(6,1);
      +mirror.K(1:3) = mirror.mass * (2*pi*mirror.freq(1:3)).^2;
      +
      +mirror.C = zeros(6,1);
      +mirror.C(1:3) = 0.2 * sqrt(mirror.K(1:3).*mirror.mass);
      +
      +
      +
      +
      + +
      +

      Equilibrium position of the each joint.

      +
      +
      +
      mirror.Deq = zeros(6,1);
      +
      +
      +
      +
      + +
      +

      Geometry

      +

      We define the geometrical values.

      @@ -1778,7 +1610,7 @@ We define the geometrical values. mirror.thickness = 0.025; % Thickness of the plate supporting the sample [m] -mirror.hole_rad = 0.120; % radius of the hole in the mirror [m] +mirror.hole_rad = 0.125; % radius of the hole in the mirror [m] mirror.support_rad = 0.1; % radius of the support plate [m] @@ -1788,17 +1620,14 @@ mirror.support_rad = 0.1; % radius of the support plat mirror.jacobian = 0.20; case 'rigid' mirror.jacobian = 0.20 - mirror.h; + case 'flexible' + mirror.jacobian = 0.20 - mirror.h; end mirror.rad = 0.180; % radius of the mirror (at the bottom surface) [m]
      -
      -
      mirror.density = 2400; % Density of the material [kg/m3]
      -
      -
      -
      mirror.cone_length = mirror.rad*tand(args.angle)+mirror.h+mirror.jacobian; % Distance from Apex point of the cone to jacobian point
       
      @@ -1810,7 +1639,7 @@ We first start with the internal part.

      mirror.shape = [...
      -    0 mirror.h-mirror.thickness
      +    mirror.support_rad+5e-3 mirror.h-mirror.thickness
           mirror.hole_rad mirror.h-mirror.thickness; ...
           mirror.hole_rad 0; ...
           mirror.rad 0 ...
      @@ -1840,15 +1669,15 @@ Then, we define the reflective used part of the mirror.
       Finally, we close the shape.
       

      -
      mirror.shape = [mirror.shape; 0 mirror.h];
      +
      mirror.shape = [mirror.shape; mirror.support_rad+5e-3 mirror.h];
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The mirror structure is saved.

      @@ -1860,17 +1689,17 @@ The mirror structure is saved.
      -
      -

      11 Nano Hexapod

      +
      +

      11 Nano Hexapod

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      simscape_model_nano_hexapod.png @@ -1887,9 +1716,9 @@ The mirror structure is saved.

      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [nano_hexapod] = initializeNanoHexapod(args)
       
      @@ -1897,9 +1726,9 @@ The mirror structure is saved.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
           args.type      char   {mustBeMember(args.type,{'none', 'rigid', 'flexible', 'init'})} = 'flexible'
      @@ -1923,7 +1752,7 @@ The mirror structure is saved.
           args.Fpr (1,1) double {mustBeNumeric, mustBePositive} = 150e-3
           args.Mpm (1,1) double {mustBeNumeric, mustBePositive} = 1
           args.Mph (1,1) double {mustBeNumeric, mustBePositive} = 10e-3
      -    args.Mpr (1,1) double {mustBeNumeric, mustBePositive} = 100e-3
      +    args.Mpr (1,1) double {mustBeNumeric, mustBePositive} = 120e-3
           % initializeCylindricalStruts
           args.Fsm (1,1) double {mustBeNumeric, mustBePositive} = 0.1
           args.Fsh (1,1) double {mustBeNumeric, mustBePositive} = 50e-3
      @@ -1944,9 +1773,9 @@ The mirror structure is saved.
       
      -
      -

      Function content

      -
      +
      +

      Function content

      +
      nano_hexapod = initializeFramesPositions('H', args.H, 'MO_B', args.MO_B);
       nano_hexapod = generateGeneralConfiguration(nano_hexapod, 'FH', args.FH, 'FR', args.FR, 'FTh', args.FTh, 'MH', args.MH, 'MR', args.MR, 'MTh', args.MTh);
      @@ -1995,9 +1824,9 @@ Equilibrium position of the each joint.
       
      -
      -

      Add Type

      -
      +
      +

      Add Type

      +
      switch args.type
         case 'none'
      @@ -2014,9 +1843,9 @@ Equilibrium position of the each joint.
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +
      save('./mat/stages.mat', 'nano_hexapod', '-append');
       
      @@ -2033,9 +1862,9 @@ Equilibrium position of the each joint.

      -
      -

      Simscape Model

      -
      +
      +

      Simscape Model

      +

      The Simscape model of the sample environment is composed of:

      @@ -2063,9 +1892,9 @@ This could be the case for cable forces for instance.
      -
      -

      Function description

      -
      +
      +

      Function description

      +
      function [sample] = initializeSample(args)
       
      @@ -2073,9 +1902,9 @@ This could be the case for cable forces for instance.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.type         char    {mustBeMember(args.type,{'rigid', 'flexible', 'none', 'init'})} = 'flexible'
      @@ -2091,9 +1920,9 @@ This could be the case for cable forces for instance.
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the sample structure.

      @@ -2123,9 +1952,9 @@ First, we initialize the sample structure.
      -
      -

      Material and Geometry

      -
      +
      +

      Material and Geometry

      +

      We define the geometrical parameters of the sample as well as its mass and position.

      @@ -2151,9 +1980,9 @@ sample.offset = args.offset; % [m]
      -
      -

      Stiffness and Damping properties

      -
      +
      +

      Stiffness and Damping properties

      +
      sample.K = zeros(6, 1);
       sample.C = zeros(6, 1);
      @@ -2180,9 +2009,9 @@ sample.C(4:6) = 0.1 *
       
      -
      -

      Equilibrium position of the each joint.

      -
      +
      +

      Equilibrium position of the each joint.

      +
      if args.Foffset && ~strcmp(args.type, 'none') && ~strcmp(args.type, 'rigid') && ~strcmp(args.type, 'init')
         load('mat/Foffset.mat', 'Fsm');
      @@ -2195,9 +2024,9 @@ sample.C(4:6) = 0.1 *
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The sample structure is saved.

      @@ -2217,9 +2046,9 @@ The sample structure is saved.

      -
      -

      Function Declaration and Documentation

      -
      +
      +

      Function Declaration and Documentation

      +
      function [] = initializeController(args)
       
      @@ -2227,9 +2056,9 @@ The sample structure is saved.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
         args.type char {mustBeMember(args.type,{'open-loop', 'iff', 'dvf', 'hac-dvf', 'ref-track-L', 'ref-track-iff-L', 'cascade-hac-lac', 'hac-iff', 'stabilizing'})} = 'open-loop'
      @@ -2239,9 +2068,9 @@ The sample structure is saved.
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the controller structure.

      @@ -2259,31 +2088,40 @@ First, we initialize the controller structure.
      switch args.type
         case 'open-loop'
           controller.type = 1;
      +    controller.name = 'Open-Loop';
         case 'dvf'
           controller.type = 2;
      +    controller.name = 'Decentralized Direct Velocity Feedback';
         case 'iff'
           controller.type = 3;
      +    controller.name = 'Decentralized Integral Force Feedback';
         case 'hac-dvf'
           controller.type = 4;
      +    controller.name = 'HAC-DVF';
         case 'ref-track-L'
           controller.type = 5;
      +    controller.name = 'Reference Tracking in the frame of the legs';
         case 'ref-track-iff-L'
           controller.type = 6;
      +    controller.name = 'Reference Tracking in the frame of the legs + IFF';
         case 'cascade-hac-lac'
           controller.type = 7;
      +    controller.name = 'Cascade Control + HAC-LAC';
         case 'hac-iff'
           controller.type = 8;
      +    controller.name = 'HAC-IFF';
         case 'stabilizing'
           controller.type = 9;
      +    controller.name = 'Stabilizing Controller';
       end
       
      -
      -

      Save the Structure

      -
      +
      +

      Save the Structure

      +

      The controller structure is saved.

      @@ -2303,9 +2141,9 @@ The controller structure is saved.

      -
      -

      Function Declaration and Documentation

      -
      +
      +

      Function Declaration and Documentation

      +
      function [ref] = initializeReferences(args)
       
      @@ -2313,9 +2151,9 @@ The controller structure is saved.
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
           % Sampling Frequency [s]
      @@ -2377,9 +2215,9 @@ H_lpf = 1/(1 + 2
       
      -
      -

      Translation Stage

      -
      +
      +

      Translation Stage

      +
      %% Translation stage - Dy
       t = 0:Ts:Tmax; % Time Vector [s]
      @@ -2416,9 +2254,9 @@ Dy = struct('time', t, 
       
      -
      -

      Tilt Stage

      -
      +
      +

      Tilt Stage

      +
      %% Tilt Stage - Ry
       t = 0:Ts:Tmax; % Time Vector [s]
      @@ -2456,9 +2294,9 @@ Ry = struct('time', t, 
       
      -
      -

      Spindle

      -
      +
      +

      Spindle

      +
      %% Spindle - Rz
       t = 0:Ts:Tmax; % Time Vector [s]
      @@ -2502,9 +2340,9 @@ Rz = struct('time', t, 
       
      -
      -

      Micro Hexapod

      -
      +
      +

      Micro Hexapod

      +
      %% Micro-Hexapod
       t = [0, Ts];
      @@ -2560,9 +2398,9 @@ Rm = struct('time', t, 
       
      -
      -

      Nano Hexapod

      -
      +
      +

      Nano Hexapod

      +
      %% Nano-Hexapod
       t = [0, Ts];
      @@ -2603,12 +2441,12 @@ Dnl = struct('time', t, 
       
      -
      -

      Save

      -
      +
      +

      Save

      +
          %% Save
      -    save('./mat/nass_references.mat', 'Dy', 'Ry', 'Rz', 'Dh', 'Dhl', 'Rm', 'Dn', 'Dnl', 'Ts');
      +    save('./mat/nass_references.mat', 'Dy', 'Ry', 'Rz', 'Dh', 'Dhl', 'Rm', 'Dn', 'Dnl', 'args', 'Ts');
       end
       
      @@ -2624,9 +2462,9 @@ Dnl = struct('time', t,
      -
      -

      Function Declaration and Documentation

      -
      +
      +

      Function Declaration and Documentation

      +
      function [] = initializeDisturbances(args)
       % initializeDisturbances - Initialize the disturbances
      @@ -2641,9 +2479,9 @@ Dnl = struct('time', t, 
       
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
           % Global parameter to enable or disable the disturbances
      @@ -2850,11 +2688,11 @@ Frz_z  = Frz_z - Frz_z(1);
       
      -
      -

      Save

      -
      +
      +

      Save

      +
      -
      save('./mat/nass_disturbances.mat', 'Dwx', 'Dwy', 'Dwz', 'Fty_x', 'Fty_z', 'Frz_z', 'Fd', 'Ts', 't');
      +
      save('./mat/nass_disturbances.mat', 'Dwx', 'Dwy', 'Dwz', 'Fty_x', 'Fty_z', 'Frz_z', 'Fd', 'Ts', 't', 'args');
       
      @@ -2869,9 +2707,9 @@ Frz_z = Frz_z - Frz_z(1);

      -
      -

      Function Declaration and Documentation

      -
      +
      +

      Function Declaration and Documentation

      +
      function [] = initializePosError(args)
       % initializePosError - Initialize the position errors
      @@ -2886,9 +2724,9 @@ Frz_z  = Frz_z - Frz_z(1);
       
      -
      -

      Optional Parameters

      -
      +
      +

      Optional Parameters

      +
      arguments
           args.error    logical {mustBeNumericOrLogical} = false
      @@ -2901,9 +2739,9 @@ Frz_z  = Frz_z - Frz_z(1);
       
      -
      -

      Structure initialization

      -
      +
      +

      Structure initialization

      +

      First, we initialize the pos_error structure.

      @@ -2940,9 +2778,9 @@ pos_error.Rz = args.Rz;
      -
      -

      Save

      -
      +
      +

      Save

      +
      save('./mat/pos_error.mat', 'pos_error');
       
      @@ -3018,7 +2856,7 @@ pos_error.Rz = args.Rz;

      Author: Dehaeze Thomas

      -

      Created: 2020-04-07 mar. 14:55

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/simulink_project.html b/docs/simulink_project.html index 88ed97b..7d38d87 100644 --- a/docs/simulink_project.html +++ b/docs/simulink_project.html @@ -4,227 +4,17 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Simulink Project for the NASS - - - - - - - + + + +
      @@ -233,7 +23,6 @@ HOME

      Simulink Project for the NASS

      -

      Simulink Project is used for the study of the NASS using Simscape.

      @@ -300,7 +89,7 @@ The project also permits to automatically add defined folder to the path when th

      Author: Dehaeze Thomas

      -

      Created: 2020-03-06 ven. 15:10

      +

      Created: 2020-04-17 ven. 09:36

      diff --git a/docs/stewart_platform.html b/docs/stewart_platform.html index edba4a2..a7fa6eb 100644 --- a/docs/stewart_platform.html +++ b/docs/stewart_platform.html @@ -1,262 +1,28 @@ - - + - Stewart Platform - Simscape Model - - - - +
      @@ -271,9 +37,9 @@ for the JavaScript code in this tag.
      -
      -

      1.1 Function description

      +
      +

      1.1 Function description

      -
      -

      1.2 Documentation

      +
      +

      1.2 Documentation

      -
      -

      1.3 Optional Parameters

      +
      +

      1.3 Optional Parameters

      -
      -

      2.1.1 Function description

      +
      +

      2.1.1 Function description

      -
      -

      2.1.2 Documentation

      +
      +

      2.1.2 Documentation

      -
      -

      2.1.3 Optional Parameters

      +
      +

      2.1.3 Optional Parameters

      arguments
      @@ -618,8 +384,8 @@ CCm = [Cc(:,2), Cc(:
       
      -
      -

      2.1.5 Compute the pose

      +
      +

      2.1.5 Compute the pose

      -
      -

      2.2.1 Function description

      +
      +

      2.2.1 Function description

      -
      -

      2.2.2 Documentation

      +
      +

      2.2.2 Documentation

      Joints are positions on a circle centered with the Z axis of {F} and {M} and at a chosen distance from {F} and {M}. @@ -690,8 +456,8 @@ The radius of the circles can be chosen as well as the angles where the joints a

      -
      -

      2.2.3 Optional Parameters

      +
      +

      2.2.3 Optional Parameters

      arguments
      @@ -708,8 +474,8 @@ The radius of the circles can be chosen as well as the angles where the joints a
       
      -
      -

      2.2.4 Compute the pose

      +
      +

      2.2.4 Compute the pose

      -
      -

      3.1 Function description

      +
      +

      3.1 Function description

      -
      -

      3.2 Documentation

      +
      +

      3.2 Documentation

      @@ -849,8 +615,8 @@ This Matlab function is accessible here<

      -
      -

      4.1 Function description

      +
      +

      4.1 Function description

      -
      -

      4.2 Optional Parameters

      +
      +

      4.2 Optional Parameters

      -
      -

      5.1 Function description

      +
      +

      5.1 Function description

      function [stewart] = computeJacobian(stewart)
      @@ -981,8 +747,8 @@ This Matlab function is accessible 
      -

      6.1.1 Function description

      +
      +

      6.1.1 Function description

      function [stewart] = initializeCylindricalPlatforms(stewart, args)
      @@ -1015,8 +781,8 @@ This Matlab function is accessible 
      -

      6.1.2 Optional Parameters

      +
      +

      6.1.2 Optional Parameters

      -
      -

      6.2.1 Function description

      +
      +

      6.2.1 Function description

      -
      -

      6.2.2 Optional Parameters

      +
      +

      6.2.2 Optional Parameters

      -
      -

      7.1.1 Function description

      +
      +

      7.1.1 Function description

      function [Li, dLi] = inverseKinematics(stewart, args)
      @@ -1209,8 +975,8 @@ This Matlab function is accessible here.
       
      -
      -

      7.1.2 Optional Parameters

      +
      +

      7.1.2 Optional Parameters

      arguments
      @@ -1287,8 +1053,8 @@ This Matlab function is accessible here<
       

      -
      -

      7.2.1 Function description

      +
      +

      7.2.1 Function description

      -
      -

      7.2.2 Optional Parameters

      +
      +

      7.2.2 Optional Parameters

      arguments
      @@ -1371,7 +1137,7 @@ We then compute the corresponding rotation matrix.
       

      Author: Dehaeze Thomas

      -

      Created: 2020-02-25 mar. 18:08

      +

      Created: 2020-04-17 ven. 09:36

      diff --git a/docs/uncertainty_experiment.html b/docs/uncertainty_experiment.html index 03e74e5..fa7db16 100644 --- a/docs/uncertainty_experiment.html +++ b/docs/uncertainty_experiment.html @@ -1,241 +1,28 @@ - - + - Evaluating the Plant Uncertainty in various experimental conditions - - - - - - - - + + + + - +
      -
      -

      3.1 Identification

      +
      +

      3.1 Identification

      We identify the dynamics for the following Tilt stage angles. @@ -592,8 +379,8 @@ Finally, we simulate the system and same the forces/torques applied in each join

      -
      -

      4.2 Identification

      +
      +

      4.2 Identification

      We initialize the stages with forces/torques compensating the gravity forces. @@ -816,7 +603,7 @@ From all the experimental condition studied, the only ones that have significant

      Author: Dehaeze Thomas

      -

      Created: 2020-04-01 mer. 16:16

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/uncertainty_optimal_stiffness.html b/docs/uncertainty_optimal_stiffness.html index 0f74acf..b67eaf0 100644 --- a/docs/uncertainty_optimal_stiffness.html +++ b/docs/uncertainty_optimal_stiffness.html @@ -4,245 +4,31 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Determination of the optimal nano-hexapod’s stiffness - - - - - - - - + + + + - +

      Determination of the optimal nano-hexapod’s stiffness

      -
      -

      1.1 Initialization

      +
      +

      1.1 Initialization

      We initialize all the stages with the default parameters. @@ -600,8 +386,8 @@ When the nano-hexapod is stiff (\(k>10^7\ [N/m]\)), the compliance of the micro-

      -
      -

      3.1 Initialization

      +
      +

      3.1 Initialization

      We initialize all the stages with the default parameters. @@ -843,7 +629,7 @@ And finally, in Figures 21 and 2

      Author: Dehaeze Thomas

      -

      Created: 2020-04-08 mer. 12:12

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/uncertainty_payload.html b/docs/uncertainty_payload.html index 996eb62..666a3f1 100644 --- a/docs/uncertainty_payload.html +++ b/docs/uncertainty_payload.html @@ -4,239 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Effect of Uncertainty on the payload’s dynamics on the isolation platform dynamics - - - - - - - - + + + + - +
      -
      -

      1.1 Equations of motion

      +
      +

      1.1 Equations of motion

      If we write the equation of motion of the system in Figure 1, we obtain: @@ -436,8 +222,8 @@ The obtained dynamics from \(F\) to \(x\) for the three isolation platform are s

      -
      -

      1.5 Conclusion

      +
      +

      1.5 Conclusion

      @@ -489,8 +275,8 @@ Now let’s consider the system consisting of a mass-spring-system (the isol

      -
      -

      2.2 Equations of motion

      +
      +

      2.2 Equations of motion

      We have to following equations of motion: @@ -946,8 +732,8 @@ Let’s fix \(k = 10^7\ [N/m]\), \(\xi = \frac{c}{2\sqrt{km}} = 0.1\) and se

      -
      -

      2.9 Conclusion

      +
      +

      2.9 Conclusion

      @@ -971,7 +757,7 @@ In that case, maximizing the stiffness of the payload is a good idea.

      Author: Dehaeze Thomas

      -

      Created: 2020-04-07 mar. 16:17

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/uncertainty_support.html b/docs/uncertainty_support.html index 257ded6..41434cf 100644 --- a/docs/uncertainty_support.html +++ b/docs/uncertainty_support.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Effect of Uncertainty on the support’s dynamics on the isolation platform dynamics - - - - - - - - + + + + - +
      -
      -

      1.1 Equations of motion

      +
      +

      1.1 Equations of motion

      If we write the equation of motion of the system in Figure 1, we obtain: @@ -429,8 +217,8 @@ The obtained dynamics from \(F\) to \(x\) for the three isolation platform are s

      -
      -

      1.5 Conclusion

      +
      +

      1.5 Conclusion

      @@ -475,8 +263,8 @@ Now let’s consider the system consisting of a mass-spring-system (the isol

      -
      -

      2.2 Equations of motion

      +
      +

      2.2 Equations of motion

      We have to following equations of motion: @@ -812,8 +600,8 @@ Let’s fix \(k = 10^7\ [N/m]\), \(\xi = \frac{c}{2\sqrt{km}} = 0.1\) and se

      -
      -

      2.7 Conclusion

      +
      +

      2.7 Conclusion

      @@ -841,7 +629,7 @@ Thus, if a stiff isolation platform is used, the recommendation is to have the l

      Author: Dehaeze Thomas

      -

      Created: 2020-04-01 mer. 16:14

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/docs/uniaxial.html b/docs/uniaxial.html index 6559920..d6d0252 100644 --- a/docs/uniaxial.html +++ b/docs/uniaxial.html @@ -4,237 +4,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Simscape Uniaxial Model - - - - - - - - + + + + - +
      @@ -250,69 +38,69 @@
    • 1. Simscape Model
    • 2. Undamped System
    • -
    • 3. Integral Force Feedback +
    • 3. Integral Force Feedback
    • 4. Relative Motion Control
    • 5. Direct Velocity Feedback
    • 6. With Cedrat Piezo-electric Actuators
    • 7. Comparison of Active Damping Techniques
    • 8. Voice Coil
    • @@ -410,8 +198,8 @@ Schematics of the active damping techniques are displayed in figure -

      2.1 Init

      +
      +

      2.1 Init

      We initialize all the stages with the default parameters. @@ -423,8 +211,8 @@ All the controllers are set to 0 (Open Loop).

      -
      -

      2.2 Identification

      +
      +

      2.2 Identification

      We identify the dynamics of the system. @@ -487,8 +275,8 @@ Finally, we save the identified system dynamics for further analysis.

      -
      -

      2.3 Sensitivity to Disturbances

      +
      +

      2.3 Sensitivity to Disturbances

      We show several plots representing the sensitivity to disturbances: @@ -515,8 +303,8 @@ We show several plots representing the sensitivity to disturbances:

      -
      -

      2.4 Noise Budget

      +
      +

      2.4 Noise Budget

      We first load the measured PSD of the disturbance. @@ -575,8 +363,8 @@ It corresponds to the plant to control.

      -
      -

      3 Integral Force Feedback

      +
      +

      3 Integral Force Feedback

      @@ -588,8 +376,8 @@ It corresponds to the plant to control.

      Figure 8: Uniaxial IFF Control Schematic

      -
      -

      3.1 Control Design

      +
      +

      3.1 Control Design

      load('./mat/uniaxial_plants.mat', 'G');
      @@ -624,8 +412,8 @@ The controller for each pair of actuator/sensor is:
       
      -
      -

      3.2 Identification

      +
      +

      3.2 Identification

      Let’s initialize the system prior to identification. @@ -708,8 +496,8 @@ G_iff.OutputName = {'D', ... -

      3.3 Sensitivity to Disturbance

      +
      +

      3.3 Sensitivity to Disturbance

      @@ -727,8 +515,8 @@ G_iff.OutputName = {'D', ... -

      3.4 Damped Plant

      +
      +

      3.4 Damped Plant

      @@ -739,8 +527,8 @@ G_iff.OutputName = {'D', ... -

      3.5 Conclusion

      +
      +

      3.5 Conclusion

      @@ -769,8 +557,8 @@ In the Relative Motion Control (RMC), a derivative feedback is applied between t

      Figure 14: Uniaxial RMC Control Schematic

      -
      -

      4.1 Control Design

      +
      +

      4.1 Control Design

      load('./mat/uniaxial_plants.mat', 'G');
      @@ -806,8 +594,8 @@ A Low pass Filter is added to make the controller transfer function proper.
       
      -
      -

      4.2 Identification

      +
      +

      4.2 Identification

      Let’s initialize the system prior to identification. @@ -891,8 +679,8 @@ G_rmc.OutputName = {'D', ... -

      4.3 Sensitivity to Disturbance

      +
      +

      4.3 Sensitivity to Disturbance

      @@ -910,8 +698,8 @@ G_rmc.OutputName = {'D', ... -

      4.4 Damped Plant

      +
      +

      4.4 Damped Plant

      @@ -922,8 +710,8 @@ G_rmc.OutputName = {'D', ... -

      4.5 Conclusion

      +
      +

      4.5 Conclusion

      @@ -952,8 +740,8 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured

      Figure 20: Uniaxial DVF Control Schematic

      -
      -

      5.1 Control Design

      +
      +

      5.1 Control Design

      load('./mat/uniaxial_plants.mat', 'G');
      @@ -981,8 +769,8 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured
       
      -
      -

      5.2 Identification

      +
      +

      5.2 Identification

      Let’s initialize the system prior to identification. @@ -1065,8 +853,8 @@ G_dvf.OutputName = {'D', ... -

      5.3 Sensitivity to Disturbance

      +
      +

      5.3 Sensitivity to Disturbance

      @@ -1084,8 +872,8 @@ G_dvf.OutputName = {'D', ... -

      5.4 Damped Plant

      +
      +

      5.4 Damped Plant

      @@ -1096,8 +884,8 @@ G_dvf.OutputName = {'D', ... -

      5.5 Conclusion

      +
      +

      5.5 Conclusion

      @@ -1125,8 +913,8 @@ The model used for the Cedrat actuator is shown in figure

      Figure 26: Schematic of the model used for the Cedrat Actuator

      -
      -

      6.1 Identification

      +
      +

      6.1 Identification

      Let’s initialize the system prior to identification. @@ -1214,8 +1002,8 @@ G.OutputName = {'D', ... -

      6.2 Control Design

      +
      +

      6.2 Control Design

      Let’s look at the transfer function from actuator forces in the nano-hexapod to the force sensor in the nano-hexapod legs for all 6 pairs of actuator/sensor. @@ -1245,8 +1033,8 @@ The controller for each pair of actuator/sensor is:

      -
      -

      6.3 Identification

      +
      +

      6.3 Identification

      Let’s initialize the system prior to identification. @@ -1330,8 +1118,8 @@ G_cedrat.OutputName = {'D', ... -

      6.4 Sensitivity to Disturbance

      +
      +

      6.4 Sensitivity to Disturbance

      @@ -1349,8 +1137,8 @@ G_cedrat.OutputName = {'D', ... -

      6.5 Damped Plant

      +
      +

      6.5 Damped Plant

      @@ -1361,8 +1149,8 @@ G_cedrat.OutputName = {'D', ... -

      6.6 Conclusion

      +
      +

      6.6 Conclusion

      @@ -1391,8 +1179,8 @@ This gives similar results than with a classical force sensor.

      -
      -

      7.2 Sensitivity to Disturbance

      +
      +

      7.2 Sensitivity to Disturbance

      @@ -1425,8 +1213,8 @@ This gives similar results than with a classical force sensor.
      -
      -

      7.3 Noise Budget

      +
      +

      7.3 Noise Budget

      We first load the measured PSD of the disturbance. @@ -1493,8 +1281,8 @@ It is important to note that the effect of direct forces applied to the sample a

      -
      -

      7.4 Damped Plant

      +
      +

      7.4 Damped Plant

      @@ -1505,8 +1293,8 @@ It is important to note that the effect of direct forces applied to the sample a
      -
      -

      7.5 Conclusion

      +
      +

      7.5 Conclusion

      Table 1: Conclusion on the variability of the system dynamics for active damping
      Nano-Hexapod stiffness [N/m]10310410510610710810910^310^410^510^610^710^810^9
      @@ -1582,8 +1370,8 @@ It is important to note that the effect of direct forces applied to the sample a

      -
      -

      8.1 Init

      +
      +

      8.1 Init

      We initialize all the stages with the default parameters. @@ -1595,8 +1383,8 @@ All the controllers are set to 0 (Open Loop).

      -
      -

      8.2 Identification

      +
      +

      8.2 Identification

      We identify the dynamics of the system. @@ -1659,8 +1447,8 @@ Finally, we save the identified system dynamics for further analysis.

      -
      -

      8.3 Sensitivity to Disturbances

      +
      +

      8.3 Sensitivity to Disturbances

      We load the dynamics when using a piezo-electric nano hexapod to compare the results. @@ -1694,8 +1482,8 @@ We show several plots representing the sensitivity to disturbances:

      -
      -

      8.4 Noise Budget

      +
      +

      8.4 Noise Budget

      We first load the measured PSD of the disturbance. @@ -1744,8 +1532,8 @@ Thus, it may be desirable to use voice coil actuators.

      -
      -

      8.5 Integral Force Feedback

      +
      +

      8.5 Integral Force Feedback

      K_iff = -20/s;
      @@ -1840,8 +1628,8 @@ G_vc_iff.OutputName = {'D',    ...
      -

      8.7 Noise Budget

      +
      +

      8.7 Noise Budget

      We compute the obtain PSD of the displacement \(D\) when using IFF. @@ -1855,8 +1643,8 @@ We compute the obtain PSD of the displacement \(D\) when using IFF.

      -
      -

      8.8 Conclusion

      +
      +

      8.8 Conclusion

      @@ -1874,7 +1662,7 @@ Similarly, it would require much lower bandwidth to attain the same level of dis

      Author: Dehaeze Thomas

      -

      Created: 2020-03-13 ven. 17:39

      +

      Created: 2020-04-17 ven. 09:35

      diff --git a/mat/conf_log.mat b/mat/conf_log.mat index b4f9813..5a954b6 100644 Binary files a/mat/conf_log.mat and b/mat/conf_log.mat differ diff --git a/mat/conf_simscape.mat b/mat/conf_simscape.mat index 0130b00..d399893 100644 Binary files a/mat/conf_simscape.mat and b/mat/conf_simscape.mat differ diff --git a/mat/controller.mat b/mat/controller.mat index 7dd3674..5469a50 100644 Binary files a/mat/controller.mat and b/mat/controller.mat differ diff --git a/mat/experiment_tomography.mat b/mat/experiment_tomography.mat index 9d44508..3624c8f 100644 Binary files a/mat/experiment_tomography.mat and b/mat/experiment_tomography.mat differ diff --git a/mat/nass_disturbances.mat b/mat/nass_disturbances.mat index 70efa6e..c3b7655 100644 Binary files a/mat/nass_disturbances.mat and b/mat/nass_disturbances.mat differ diff --git a/mat/nass_references.mat b/mat/nass_references.mat index 382aa3e..73adec0 100644 Binary files a/mat/nass_references.mat and b/mat/nass_references.mat differ diff --git a/mat/tomo_exp_hac_dvf.mat b/mat/tomo_exp_hac_dvf.mat index ac06611..75f366f 100644 Binary files a/mat/tomo_exp_hac_dvf.mat and b/mat/tomo_exp_hac_dvf.mat differ diff --git a/org/active_damping_uniaxial.org b/org/active_damping_uniaxial.org index 5abc549..ece4972 100644 --- a/org/active_damping_uniaxial.org +++ b/org/active_damping_uniaxial.org @@ -1,28 +1,5 @@ #+TITLE: Active Damping with an uni-axial model -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: First, in section [[sec:undamped_system]], we will looked at the undamped system. diff --git a/org/compensation_gravity_forces.org b/org/compensation_gravity_forces.org index 8cf7555..5bff598 100644 --- a/org/compensation_gravity_forces.org +++ b/org/compensation_gravity_forces.org @@ -1,28 +1,5 @@ #+TITLE: Compensating the gravity forces to start at steady state -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: In this file is shown a technique used to compensate the gravity forces at t=0. diff --git a/org/control.org b/org/control.org index 82c900c..1b3db8c 100644 --- a/org/control.org +++ b/org/control.org @@ -1,28 +1,5 @@ #+TITLE: Control of the Nano-Active-Stabilization-System -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The system consist of the following inputs and outputs (Figure [[fig:control_architecture_plant]]): diff --git a/org/control_active_damping.org b/org/control_active_damping.org index 86e3ddc..a2fd58c 100644 --- a/org/control_active_damping.org +++ b/org/control_active_damping.org @@ -1,28 +1,5 @@ #+TITLE: Active Damping applied on the Simscape Model -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The goal of this file is to study the use of active damping for the control of the NASS. diff --git a/org/control_cascade.org b/org/control_cascade.org index 1dce68d..054a3d9 100644 --- a/org/control_cascade.org +++ b/org/control_cascade.org @@ -1,30 +1,5 @@ #+TITLE: Cascade Control applied on the Simscape Model -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The control architecture we wish here to study is shown in Figure [[fig:cascade_control_architecture]]. diff --git a/org/control_decentralized.org b/org/control_decentralized.org index 01eda94..b0ebc08 100644 --- a/org/control_decentralized.org +++ b/org/control_decentralized.org @@ -1,28 +1,5 @@ #+TITLE: Control in the Frame of the Legs applied on the Simscape Model -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: In this document, we apply some decentralized control to the NASS and see what level of performance can be obtained. diff --git a/org/control_force.org b/org/control_force.org index 0dc2bc0..4b98720 100644 --- a/org/control_force.org +++ b/org/control_force.org @@ -1,30 +1,5 @@ #+TITLE: Force Control applied on the Simscape Model -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org Cascade Control where the inner loop goal is to control the total wrench (forces and torques) applied to the upper part of the nano-hexapod. diff --git a/org/control_hac_lac.org b/org/control_hac_lac.org index 703d5fe..55aee84 100644 --- a/org/control_hac_lac.org +++ b/org/control_hac_lac.org @@ -1,32 +1,5 @@ #+TITLE: HAC-LAC applied on the Simscape Model -:DRAWER: -#+STARTUP: overview - -#+HTML_MATHJAX: align: center tagside: right font: TeX - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The position $\bm{\mathcal{X}}$ of the Sample with respect to the granite is measured. diff --git a/org/control_requirements.org b/org/control_requirements.org index cd719b6..458a651 100644 --- a/org/control_requirements.org +++ b/org/control_requirements.org @@ -1,32 +1,5 @@ #+TITLE: Control Requirements -:DRAWER: -#+STARTUP: overview - -#+HTML_MATHJAX: align: center tagside: right font: TeX - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The goal here is to write clear specifications for the NASS. diff --git a/org/control_voice_coil.org b/org/control_voice_coil.org index 5109d5e..a49cd91 100644 --- a/org/control_voice_coil.org +++ b/org/control_voice_coil.org @@ -1,30 +1,5 @@ #+TITLE: Control of the NASS with Voice coil actuators -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: * HAC-LAC + Cascade Control Topology diff --git a/org/disturbances.org b/org/disturbances.org index 2fe6ebf..deb9379 100644 --- a/org/disturbances.org +++ b/org/disturbances.org @@ -1,28 +1,5 @@ #+TITLE: Identification of the disturbances -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: :PROPERTIES: diff --git a/org/experiments.org b/org/experiments.org index aa8d73e..4245b76 100644 --- a/org/experiments.org +++ b/org/experiments.org @@ -1,28 +1,5 @@ #+TITLE: Simulation of Scientific Experiments -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The goal here is to simulate some scientific experiments with the Simscape model when no control is applied to the nano-hexapod. @@ -299,7 +276,7 @@ And we save the obtained data. ** Conclusion #+begin_important - Error motion is what expected from the disturbance measurements. + Here, no vibration is included in the X and Y directions. #+end_important * Tomography Experiment with Ty raster scans @@ -320,11 +297,12 @@ We now activate the disturbances. 'Frz_z', true ... % Spindle - Z direction ); #+end_src + We initialize the reference path for all the stages. -The Spindle which is rotating at 60rpm and the translation stage is following a triangular path. +The Spindle which is rotating at 60rpm and the translation stage not moving as it would take a long time to simulate. +However, vibrations of the Ty stage are included. #+begin_src matlab - initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ... - 'Dy_type', 'triangular', 'Dy_amplitude', 5e-3, 'Dy_period', 10); + initializeReferences('Rz_type', 'rotating', 'Rz_period', 1); #+end_src We simulate the model. @@ -387,13 +365,13 @@ And we save the obtained data. xlim([0.5, inf]); #+end_src -#+HEADER: :tangle no :exports results :results none :noweb yes -#+begin_src matlab :var filepath="figs/exp_scans_rz_dist.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png") - <> +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/exp_scans_rz_dist.pdf', 'width', 'full', 'height', 'full') #+end_src -#+NAME: fig:exp_scans_rz_dist -#+CAPTION: X-Y-Z translations and rotations of the sample w.r.t. the granite when performing tomography experiment and scans with the translation stage at the same time ([[./figs/exp_scans_rz_dist.png][png]], [[./figs/exp_scans_rz_dist.pdf][pdf]]) +#+name: fig:exp_scans_rz_dist +#+CAPTION: X-Y-Z translations and rotations of the sample w.r.t. the granite when performing tomography experiment and scans with the translation stage at the same time +#+RESULTS: [[file:figs/exp_scans_rz_dist.png]] ** Conclusion diff --git a/org/functions.org b/org/functions.org index def5740..8cbeaba 100644 --- a/org/functions.org +++ b/org/functions.org @@ -1,28 +1,5 @@ #+TITLE: Matlab Functions used for the NASS Project -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * describeNassSetup :PROPERTIES: diff --git a/org/identification.org b/org/identification.org index 1349ed7..e18c65e 100644 --- a/org/identification.org +++ b/org/identification.org @@ -1,28 +1,5 @@ #+TITLE: Identification -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle ../matlab/identification.m -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The goal here is to tune the Simscape model of the station in order to have a good dynamical representation of the real system. diff --git a/org/index.org b/org/index.org index 9011a9e..fd66199 100644 --- a/org/index.org +++ b/org/index.org @@ -1,28 +1,5 @@ #+TITLE: Simscape Model of the Nano-Active-Stabilization-System -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org Here are links to the documents related to the Simscape model of the Nano-Active-Stabilization-System. diff --git a/org/kinematics.org b/org/kinematics.org index 00d4683..712fcd4 100644 --- a/org/kinematics.org +++ b/org/kinematics.org @@ -1,28 +1,5 @@ #+TITLE: Kinematics of the station -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: In this document, we discuss the way the motion of each stage is defined. diff --git a/org/metrology_frame.org b/org/metrology_frame.org index a6adcc1..603e733 100644 --- a/org/metrology_frame.org +++ b/org/metrology_frame.org @@ -1,30 +1,5 @@ #+TITLE: Study of the Metrology Frame -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Flexibility of the reference mirror ** Introduction :ignore: diff --git a/org/motion_force_requirements.org b/org/motion_force_requirements.org index 5895be8..733cff2 100644 --- a/org/motion_force_requirements.org +++ b/org/motion_force_requirements.org @@ -1,4 +1,5 @@ #+TITLE: Motion and Force Requirements for the Nano-Hexapod +#+SETUPFILE: ./setup/org-setup-file.org * Soft Hexapod As the nano-hexapod is in series with the other stages, it must apply all the force required to move the sample. diff --git a/org/optimal_stiffness_control.org b/org/optimal_stiffness_control.org index 49071e6..893271e 100644 --- a/org/optimal_stiffness_control.org +++ b/org/optimal_stiffness_control.org @@ -1,30 +1,5 @@ #+TITLE: Control of the NASS with optimal stiffness -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: @@ -1055,7 +1030,7 @@ exportFig('figs/opt_stiff_primary_control_L_cas_tot.pdf', 'width', 'full', 'heig Let's now simulate a tomography experiment. To do so, we include all disturbances except vibrations of the translation stage. #+begin_src matlab - initializeDisturbances('Fty_x', false, 'Fty_z', false); + initializeDisturbances(); initializeSimscapeConfiguration('gravity', false); initializeLoggingConfiguration('log', 'all'); #+end_src @@ -1079,13 +1054,13 @@ And we run the simulation for all three payload Masses. #+end_src #+begin_src matlab :exports none - save('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L'); + save('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L', 'Ms'); #+end_src ** Results #+begin_src matlab :exports none - load('./mat/experiment_tomography.mat', 'tomo_align_dist'); - load('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L'); + load('./mat/experiment_tomography.mat', 'scans_rz_align_dist'); + load('./mat/tomo_exp_hac_dvf.mat', 'hac_dvf_L', 'Ms'); #+end_src Let's now see how this controller performs. @@ -1097,12 +1072,12 @@ Similarly, the Cumulative Amplitude Spectrum is shown in Figure [[fig:opt_stiff_ Finally, the time domain position error signals are shown in Figure [[fig:opt_stiff_hac_dvf_L_pos_error]]. #+begin_src matlab :exports none n_av = 4; - han_win = hanning(ceil(length(simout.Em.En.Data(:,1))/n_av)); + han_win = hanning(ceil(length(hac_dvf_L{1}.Em.En.Data(:,1))/n_av)); - t = simout.Em.En.Time; + t = hac_dvf_L{1}.Em.En.Time; Ts = t(2)-t(1); - [pxx_ol, f] = pwelch(tomo_align_dist.Em.En.Data, han_win, [], [], 1/Ts); + [pxx_ol, f] = pwelch(scans_rz_align_dist.Em.En.Data, han_win, [], [], 1/Ts); pxx_dvf_L = zeros(length(f), 6, length(Ms)); for i = 1:length(Ms) @@ -1299,7 +1274,7 @@ exportFig('figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf', 'width', 'full', 'heigh figure; ax1 = subplot(2, 3, 1); hold on; - plot(tomo_align_dist.Em.En.Time, tomo_align_dist.Em.En.Data(:, 1), 'k-') + plot(scans_rz_align_dist.Em.En.Time, scans_rz_align_dist.Em.En.Data(:, 1), 'k-') for i = 1:length(Ms) set(gca,'ColorOrderIndex',i); plot(hac_dvf_L{i}.Em.En.Time, hac_dvf_L{i}.Em.En.Data(:, 1)); @@ -1310,7 +1285,7 @@ exportFig('figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf', 'width', 'full', 'heigh ax2 = subplot(2, 3, 2); hold on; - plot(tomo_align_dist.Em.En.Time, tomo_align_dist.Em.En.Data(:, 2), 'k-') + plot(scans_rz_align_dist.Em.En.Time, scans_rz_align_dist.Em.En.Data(:, 2), 'k-') for i = 1:length(Ms) set(gca,'ColorOrderIndex',i); plot(hac_dvf_L{i}.Em.En.Time, hac_dvf_L{i}.Em.En.Data(:, 2)); @@ -1321,7 +1296,7 @@ exportFig('figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf', 'width', 'full', 'heigh ax3 = subplot(2, 3, 3); hold on; - plot(tomo_align_dist.Em.En.Time, tomo_align_dist.Em.En.Data(:, 3), 'k-') + plot(scans_rz_align_dist.Em.En.Time, scans_rz_align_dist.Em.En.Data(:, 3), 'k-') for i = 1:length(Ms) set(gca,'ColorOrderIndex',i); plot(hac_dvf_L{i}.Em.En.Time, hac_dvf_L{i}.Em.En.Data(:, 3)); @@ -1332,7 +1307,7 @@ exportFig('figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf', 'width', 'full', 'heigh ax4 = subplot(2, 3, 4); hold on; - plot(tomo_align_dist.Em.En.Time, tomo_align_dist.Em.En.Data(:, 4), 'k-') + plot(scans_rz_align_dist.Em.En.Time, scans_rz_align_dist.Em.En.Data(:, 4), 'k-') for i = 1:length(Ms) set(gca,'ColorOrderIndex',i); plot(hac_dvf_L{i}.Em.En.Time, hac_dvf_L{i}.Em.En.Data(:, 4)); @@ -1343,7 +1318,7 @@ exportFig('figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf', 'width', 'full', 'heigh ax5 = subplot(2, 3, 5); hold on; - plot(tomo_align_dist.Em.En.Time, tomo_align_dist.Em.En.Data(:, 5), 'k-') + plot(scans_rz_align_dist.Em.En.Time, scans_rz_align_dist.Em.En.Data(:, 5), 'k-') for i = 1:length(Ms) set(gca,'ColorOrderIndex',i); plot(hac_dvf_L{i}.Em.En.Time, hac_dvf_L{i}.Em.En.Data(:, 5)); @@ -1354,7 +1329,7 @@ exportFig('figs/opt_stiff_hac_dvf_L_cas_disp_error.pdf', 'width', 'full', 'heigh ax6 = subplot(2, 3, 6); hold on; - plot(tomo_align_dist.Em.En.Time, tomo_align_dist.Em.En.Data(:, 6), 'k-', ... + plot(scans_rz_align_dist.Em.En.Time, scans_rz_align_dist.Em.En.Data(:, 6), 'k-', ... 'DisplayName', '$\mu$-Station'); for i = 1:length(Ms) set(gca,'ColorOrderIndex',i); diff --git a/org/optimal_stiffness_disturbances.org b/org/optimal_stiffness_disturbances.org index 2e68081..f1f2632 100644 --- a/org/optimal_stiffness_disturbances.org +++ b/org/optimal_stiffness_disturbances.org @@ -1,30 +1,5 @@ #+TITLE: Determination of the optimal nano-hexapod's stiffness for reducing the effect of disturbances -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle ../matlab/optimal_stiffness.m -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: In this document is studied how the stiffness of the nano-hexapod will impact the effect of disturbances on the position error of the sample. diff --git a/org/positioning_error.org b/org/positioning_error.org index 99b1fd1..7a1b663 100644 --- a/org/positioning_error.org +++ b/org/positioning_error.org @@ -1,28 +1,5 @@ #+TITLE: Computation of the Positioning Error with respect to the nano-hexapod -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The global measurement and control schematic is shown in figure [[fig:control-schematic-nass]]. diff --git a/org/setup/org-setup-file.org b/org/setup/org-setup-file.org new file mode 100644 index 0000000..fc0fa45 --- /dev/null +++ b/org/setup/org-setup-file.org @@ -0,0 +1,36 @@ +#+STARTUP: overview + +#+LANGUAGE: en +#+EMAIL: dehaeze.thomas@gmail.com +#+AUTHOR: Dehaeze Thomas + +#+HTML_LINK_HOME: ./index.html +#+HTML_LINK_UP: ./index.html + +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: + +#+PROPERTY: header-args:matlab :session *MATLAB* +#+PROPERTY: header-args:matlab+ :comments org +#+PROPERTY: header-args:matlab+ :results none +#+PROPERTY: header-args:matlab+ :exports both +#+PROPERTY: header-args:matlab+ :eval no-export +#+PROPERTY: header-args:matlab+ :output-dir figs +#+PROPERTY: header-args:matlab+ :tangle no +#+PROPERTY: header-args:matlab+ :mkdirp yes + +#+PROPERTY: header-args:shell :eval no-export + +#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") +#+PROPERTY: header-args:latex+ :imagemagick t :fit yes +#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 +#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 +#+PROPERTY: header-args:latex+ :results raw replace :buffer no +#+PROPERTY: header-args:latex+ :eval no-export +#+PROPERTY: header-args:latex+ :exports results +#+PROPERTY: header-args:latex+ :mkdirp yes +#+PROPERTY: header-args:latex+ :output-dir figs diff --git a/org/simscape.org b/org/simscape.org index f34a14c..de739fd 100644 --- a/org/simscape.org +++ b/org/simscape.org @@ -1,28 +1,5 @@ #+TITLE: Simscape Model -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: A [[https://.mathworks.com/products/simscape.html][simscape]] model permits to model multi-physics systems. diff --git a/org/simscape_subsystems.org b/org/simscape_subsystems.org index c8a9eeb..dce5b01 100644 --- a/org/simscape_subsystems.org +++ b/org/simscape_subsystems.org @@ -1,28 +1,5 @@ #+TITLE: Subsystems used for the Simscape Models -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The full Simscape Model is represented in Figure [[fig:simscape_picture]]. diff --git a/org/simulink_project.org b/org/simulink_project.org index 1103e37..cb7b3fd 100644 --- a/org/simulink_project.org +++ b/org/simulink_project.org @@ -1,28 +1,5 @@ #+TITLE: Simulink Project for the NASS -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org Simulink Project is used for the study of the NASS using Simscape. diff --git a/org/stewart_platform.org b/org/stewart_platform.org index 1cbb655..cf29ecd 100644 --- a/org/stewart_platform.org +++ b/org/stewart_platform.org @@ -1,14 +1,5 @@ #+TITLE: Stewart Platform - Simscape Model -:DRAWER: -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :noweb yes -#+PROPERTY: header-args:matlab+ :mkdirp yes -#+PROPERTY: header-args:matlab+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: Stewart platforms are generated in multiple steps. diff --git a/org/uncertainty_experiment.org b/org/uncertainty_experiment.org index 2dbaaf5..6bc8d90 100644 --- a/org/uncertainty_experiment.org +++ b/org/uncertainty_experiment.org @@ -1,28 +1,5 @@ #+TITLE: Evaluating the Plant Uncertainty in various experimental conditions -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The goal of this document is to study how the dynamics of the system is changing with the experimental conditions. diff --git a/org/uncertainty_optimal_stiffness.org b/org/uncertainty_optimal_stiffness.org index dc3e8a7..dc8962b 100644 --- a/org/uncertainty_optimal_stiffness.org +++ b/org/uncertainty_optimal_stiffness.org @@ -1,28 +1,5 @@ #+TITLE: Determination of the optimal nano-hexapod's stiffness -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle ../matlab/optimal_stiffness.m -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: As shown before, many parameters other than the nano-hexapod itself do influence the plant dynamics: diff --git a/org/uncertainty_payload.org b/org/uncertainty_payload.org index 2cee5a4..eafc5b3 100644 --- a/org/uncertainty_payload.org +++ b/org/uncertainty_payload.org @@ -1,30 +1,5 @@ #+TITLE: Effect of Uncertainty on the payload's dynamics on the isolation platform dynamics -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: In this document we will consider an *isolation platform* (e.g. the nano-hexapod) with a *payload* on top (e.g. the the sample to be positioned). diff --git a/org/uncertainty_support.org b/org/uncertainty_support.org index d172112..3f1da9e 100644 --- a/org/uncertainty_support.org +++ b/org/uncertainty_support.org @@ -1,30 +1,5 @@ #+TITLE: Effect of Uncertainty on the support's dynamics on the isolation platform dynamics -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results file raw replace -#+PROPERTY: header-args:latex+ :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports results -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: In this document we will consider an *isolation platform* (e.g. the nano-hexapod) on top of a *flexible support* (e.g. the micro-station). diff --git a/org/uniaxial.org b/org/uniaxial.org index 707dac9..358ce92 100644 --- a/org/uniaxial.org +++ b/org/uniaxial.org @@ -1,28 +1,5 @@ #+TITLE: Simscape Uniaxial Model -:DRAWER: -#+STARTUP: overview - -#+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org -#+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both -#+PROPERTY: header-args:matlab+ :eval no-export -#+PROPERTY: header-args:matlab+ :output-dir figs -#+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export - -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/org/}{config.tex}") -#+PROPERTY: header-args:latex+ :imagemagick t :fit yes -#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 -#+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no -#+PROPERTY: header-args:latex+ :eval no-export -#+PROPERTY: header-args:latex+ :exports both -#+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :output-dir figs -:END: +#+SETUPFILE: ./setup/org-setup-file.org * Introduction :ignore: The idea is to use the same model as the full Simscape Model but to restrict the motion only in the vertical direction. diff --git a/readme.org b/readme.org index 2eefd7d..4a06be3 100644 --- a/readme.org +++ b/readme.org @@ -4,3 +4,21 @@ #+OPTIONS: num:nil toc:nil todo:nil The goal of this project is to study the Nano-Active-Stabilization-System concept using Matlab/Simscape. + +#+begin_src emacs-lisp :tangle no + (setq org-publish-project-alist + '(("nass-simscape" + :base-directory "~/Cloud/thesis/matlab/nass-simscape/org/" + :base-extension "org" + :publishing-directory "~/Cloud/thesis/matlab/nass-simscape/docs/" + :author "Dehaeze Thomas" + :email "dehaeze.thomas@gmail.com/" + :recursive nil + :publishing-function org-html-publish-to-html + :auto-preamble t + :auto-sitemap nil + :with-todo-keywords nil + :html-wrap-src-lines nil + :table-of-contents nil) + )) +#+end_src
      Table 2: Comparison of proposed active damping techniques