Salome HOME
Merge from V6_main (04/10/2012)
authorvsr <vsr@opencascade.com>
Mon, 8 Oct 2012 11:13:10 +0000 (11:13 +0000)
committervsr <vsr@opencascade.com>
Mon, 8 Oct 2012 11:13:10 +0000 (11:13 +0000)
712 files changed:
CMakeLists.txt
adm_local/unix/make_common_starter.am
adm_local_without_kernel/CMakeLists.txt [new file with mode: 0755]
adm_local_without_kernel/Makefile.am
adm_local_without_kernel/SALOMEconfig.h.in [new file with mode: 0755]
adm_local_without_kernel/cmake_files/FindBOOST.cmake [new file with mode: 0755]
adm_local_without_kernel/cmake_files/FindCPPUNIT.cmake [new file with mode: 0755]
adm_local_without_kernel/cmake_files/FindHDF5.cmake [new file with mode: 0755]
adm_local_without_kernel/cmake_files/FindLIBXML2.cmake [new file with mode: 0755]
adm_local_without_kernel/cmake_files/FindMPI.cmake
adm_local_without_kernel/cmake_files/FindPLATFORM.cmake
adm_local_without_kernel/cmake_files/FindPTHREADS.cmake [new file with mode: 0755]
adm_local_without_kernel/cmake_files/FindPYTHON.cmake [new file with mode: 0755]
adm_local_without_kernel/cmake_files/FindSWIG.cmake [new file with mode: 0755]
adm_local_without_kernel/cmake_files/InstallAndCompilePythonFile.cmake [new file with mode: 0755]
adm_local_without_kernel/unix/Makefile.am
adm_local_without_kernel/unix/SALOMEconfig.h.in [deleted file]
adm_local_without_kernel/unix/config_files/check_sphinx.m4 [new file with mode: 0644]
configure.ac
doc/doxygen/figures/medlayers.png [new file with mode: 0644]
doc/doxygen/figures/medlayers_70pc.png [new file with mode: 0644]
doc/doxygen/main.dox
idl/CMakeLists.txt
idl/MEDCalculator.idl [new file with mode: 0644]
idl/MEDCouplingCorbaServant.idl
idl/MEDCouplingCorbaServantTest.idl
idl/MEDDataManager.idl [new file with mode: 0644]
idl/MEDEventListener.idl [new file with mode: 0644]
idl/MEDOPFactory.idl [new file with mode: 0644]
idl/Makefile.am
resources/MEDCatalog.xml.in
resources/SalomeApp.xml.in
src/CMakeLists.txt
src/INTERP_KERNEL/Bases/InterpKernelAutoPtr.hxx
src/INTERP_KERNEL/Bases/InterpKernelException.cxx
src/INTERP_KERNEL/Bases/InterpKernelException.hxx
src/INTERP_KERNEL/Bases/NormalizedUnstructuredMesh.hxx
src/INTERP_KERNEL/CMakeLists.txt
src/INTERP_KERNEL/CellModel.cxx
src/INTERP_KERNEL/CellModel.hxx
src/INTERP_KERNEL/ConvexIntersector.hxx
src/INTERP_KERNEL/ConvexIntersector.txx
src/INTERP_KERNEL/CurveIntersector.hxx
src/INTERP_KERNEL/CurveIntersector.txx
src/INTERP_KERNEL/CurveIntersectorP0P0.hxx
src/INTERP_KERNEL/CurveIntersectorP0P0.txx
src/INTERP_KERNEL/CurveIntersectorP0P1.hxx
src/INTERP_KERNEL/CurveIntersectorP0P1.txx
src/INTERP_KERNEL/CurveIntersectorP1P0.hxx
src/INTERP_KERNEL/CurveIntersectorP1P0.txx
src/INTERP_KERNEL/CurveIntersectorP1P1.hxx
src/INTERP_KERNEL/CurveIntersectorP1P1.txx
src/INTERP_KERNEL/ExprEval/InterpKernelAsmX86.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelAsmX86.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelFunction.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelFunction.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelUnit.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelUnit.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelValue.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelValue.hxx
src/INTERP_KERNEL/GenMathFormulae.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DAbstractEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DAbstractEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.txx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeInfLin.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeInfLin.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DElementaryEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DElementaryEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.hxx
src/INTERP_KERNEL/Geometric2DIntersector.hxx
src/INTERP_KERNEL/Geometric2DIntersector.txx
src/INTERP_KERNEL/IntegralUniformIntersector.hxx
src/INTERP_KERNEL/IntegralUniformIntersector.txx
src/INTERP_KERNEL/InterpKernelCellSimplify.cxx
src/INTERP_KERNEL/InterpKernelCellSimplify.hxx
src/INTERP_KERNEL/InterpKernelMatrixTools.cxx
src/INTERP_KERNEL/InterpKernelMatrixTools.hxx
src/INTERP_KERNEL/InterpKernelMeshQuality.cxx
src/INTERP_KERNEL/InterpKernelMeshQuality.hxx
src/INTERP_KERNEL/Interpolation.hxx
src/INTERP_KERNEL/Interpolation.txx
src/INTERP_KERNEL/Interpolation1D.hxx
src/INTERP_KERNEL/Interpolation1D.txx
src/INTERP_KERNEL/Interpolation2D.hxx
src/INTERP_KERNEL/Interpolation2D.txx
src/INTERP_KERNEL/Interpolation2D1D.hxx
src/INTERP_KERNEL/Interpolation2D1D.txx
src/INTERP_KERNEL/Interpolation2DCurve.cxx
src/INTERP_KERNEL/Interpolation2DCurve.hxx
src/INTERP_KERNEL/Interpolation3D.cxx
src/INTERP_KERNEL/Interpolation3D.hxx
src/INTERP_KERNEL/Interpolation3D.txx
src/INTERP_KERNEL/Interpolation3DSurf.cxx
src/INTERP_KERNEL/Interpolation3DSurf.hxx
src/INTERP_KERNEL/InterpolationCurve.hxx
src/INTERP_KERNEL/InterpolationCurve.txx
src/INTERP_KERNEL/InterpolationOptions.cxx
src/INTERP_KERNEL/InterpolationOptions.hxx
src/INTERP_KERNEL/InterpolationPlanar.hxx
src/INTERP_KERNEL/InterpolationPlanar.txx
src/INTERP_KERNEL/InterpolationUtils.hxx
src/INTERP_KERNEL/Intersector3D.hxx
src/INTERP_KERNEL/Intersector3D.txx
src/INTERP_KERNEL/Intersector3DP0P0.hxx
src/INTERP_KERNEL/Intersector3DP0P0.txx
src/INTERP_KERNEL/Intersector3DP0P1.hxx
src/INTERP_KERNEL/Intersector3DP0P1.txx
src/INTERP_KERNEL/Intersector3DP1P0.hxx
src/INTERP_KERNEL/Intersector3DP1P0.txx
src/INTERP_KERNEL/Intersector3DP1P0Bary.hxx
src/INTERP_KERNEL/Intersector3DP1P0Bary.txx
src/INTERP_KERNEL/Intersector3DP1P1.hxx
src/INTERP_KERNEL/Intersector3DP1P1.txx
src/INTERP_KERNEL/Planar2D1DIntersectorP0P0.hxx
src/INTERP_KERNEL/Planar2D1DIntersectorP0P0.txx
src/INTERP_KERNEL/PlanarIntersector.hxx
src/INTERP_KERNEL/PlanarIntersector.txx
src/INTERP_KERNEL/PlanarIntersectorP0P0.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P0.txx
src/INTERP_KERNEL/PlanarIntersectorP0P1.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P1.txx
src/INTERP_KERNEL/PlanarIntersectorP0P1PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P1PL.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0Bary.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0Bary.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0PL.txx
src/INTERP_KERNEL/PlanarIntersectorP1P1.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P1.txx
src/INTERP_KERNEL/PlanarIntersectorP1P1PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P1PL.txx
src/INTERP_KERNEL/PointLocator2DIntersector.hxx
src/INTERP_KERNEL/PointLocator2DIntersector.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P0.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P0.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P1.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P1.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P0.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P0.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P1.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P1.txx
src/INTERP_KERNEL/PointLocatorAlgos.txx
src/INTERP_KERNEL/PolyhedronIntersectorP0P0.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP0P0.txx
src/INTERP_KERNEL/PolyhedronIntersectorP0P1.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP0P1.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0Bary.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0Bary.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P1.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P1.txx
src/INTERP_KERNEL/TargetIntersector.hxx
src/INTERP_KERNEL/TransformedTriangle.hxx
src/INTERP_KERNEL/TriangulationIntersector.hxx
src/INTERP_KERNEL/TriangulationIntersector.txx
src/INTERP_KERNEL/VTKNormalizedUnstructuredMesh.hxx
src/INTERP_KERNEL/VTKNormalizedUnstructuredMesh.txx
src/INTERP_KERNEL/VolSurfFormulae.hxx
src/INTERP_KERNEL/VolSurfUser.hxx
src/INTERP_KERNEL/VolSurfUser.txx
src/INTERP_KERNELTest/CMakeLists.txt
src/INTERP_KERNELTest/ExprEvalInterpTest.cxx
src/INTERP_KERNELTest/ExprEvalInterpTest.hxx
src/INTERP_KERNELTest/InterpKernelTestExport.hxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest.hxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest2.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest3.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest4.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest5.cxx
src/MED/CMakeLists.txt
src/MED/Med_Gen_i.hxx
src/MEDCalculator/CMakeLists.txt
src/MEDCalculator/MEDCalculatorBrowserField.cxx
src/MEDCalculator/MEDCalculatorBrowserField.hxx
src/MEDCalculator/MEDCalculatorBrowserLiteStruct.cxx
src/MEDCalculator/MEDCalculatorBrowserLiteStruct.hxx
src/MEDCalculator/MEDCalculatorBrowserMesh.cxx
src/MEDCalculator/MEDCalculatorBrowserMesh.hxx
src/MEDCalculator/MEDCalculatorBrowserStep.cxx
src/MEDCalculator/MEDCalculatorBrowserStep.hxx
src/MEDCalculator/MEDCalculatorDBField.cxx
src/MEDCalculator/MEDCalculatorDBField.hxx
src/MEDCalculator/MEDCalculatorDBRangeSelection.cxx
src/MEDCalculator/MEDCalculatorDBRangeSelection.hxx
src/MEDCalculator/MEDCalculatorDBSliceField.cxx
src/MEDCalculator/MEDCalculatorDBSliceField.hxx
src/MEDCalculator/Makefile.am
src/MEDCalculator/MedCalculatorDefines.hxx
src/MEDCalculator/Swig/CMakeLists.txt
src/MEDCalculator/Swig/MEDCalculator.i
src/MEDCalculator/Swig/MEDCalculatorBasicsTest.py
src/MEDCalculator/Swig/MEDCalculatorTypemaps.i
src/MEDCalculator/Swig/Makefile.am
src/MEDCalculator/Swig/MedCalculatorSPythonDefines.hxx
src/MEDCalculator/Swig/SPythonInterpreter.cxx
src/MEDCalculator/Swig/SPythonInterpreter.hxx
src/MEDCalculator/Swig/SPythonParser.cxx
src/MEDCalculator/Swig/SPythonParser.hxx
src/MEDCalculator/Swig/spython.cxx
src/MEDCalculator/Swig/test.spy
src/MEDCalculator/Swig/test2.spy
src/MEDCalculator/Test/CMakeLists.txt
src/MEDCalculator/Test/MEDCalculatorBasicsTest.cxx
src/MEDCalculator/Test/MEDCalculatorBasicsTest.hxx
src/MEDCalculator/Test/Makefile.am
src/MEDCalculator/Test/TestMEDCalculator.cxx
src/MEDCoupling/CMakeLists.txt
src/MEDCoupling/MEDCoupling.hxx
src/MEDCoupling/MEDCouplingAutoRefCountObjectPtr.hxx
src/MEDCoupling/MEDCouplingCMesh.cxx
src/MEDCoupling/MEDCouplingCMesh.hxx
src/MEDCoupling/MEDCouplingDefinitionTime.cxx
src/MEDCoupling/MEDCouplingDefinitionTime.hxx
src/MEDCoupling/MEDCouplingExtrudedMesh.cxx
src/MEDCoupling/MEDCouplingExtrudedMesh.hxx
src/MEDCoupling/MEDCouplingField.cxx
src/MEDCoupling/MEDCouplingField.hxx
src/MEDCoupling/MEDCouplingFieldDiscretization.cxx
src/MEDCoupling/MEDCouplingFieldDiscretization.hxx
src/MEDCoupling/MEDCouplingFieldDouble.cxx
src/MEDCoupling/MEDCouplingFieldDouble.hxx
src/MEDCoupling/MEDCouplingFieldOverTime.cxx
src/MEDCoupling/MEDCouplingFieldOverTime.hxx
src/MEDCoupling/MEDCouplingFieldTemplate.cxx
src/MEDCoupling/MEDCouplingFieldTemplate.hxx
src/MEDCoupling/MEDCouplingGaussLocalization.cxx
src/MEDCoupling/MEDCouplingGaussLocalization.hxx
src/MEDCoupling/MEDCouplingMemArray.cxx
src/MEDCoupling/MEDCouplingMemArray.hxx
src/MEDCoupling/MEDCouplingMemArray.txx
src/MEDCoupling/MEDCouplingMesh.cxx
src/MEDCoupling/MEDCouplingMesh.hxx
src/MEDCoupling/MEDCouplingMultiFields.cxx
src/MEDCoupling/MEDCouplingMultiFields.hxx
src/MEDCoupling/MEDCouplingNatureOfField.cxx
src/MEDCoupling/MEDCouplingNatureOfField.hxx
src/MEDCoupling/MEDCouplingNormalizedCartesianMesh.hxx
src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.hxx
src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.txx
src/MEDCoupling/MEDCouplingPointSet.cxx
src/MEDCoupling/MEDCouplingPointSet.hxx
src/MEDCoupling/MEDCouplingRefCountObject.cxx
src/MEDCoupling/MEDCouplingRefCountObject.hxx
src/MEDCoupling/MEDCouplingRemapper.cxx
src/MEDCoupling/MEDCouplingRemapper.hxx
src/MEDCoupling/MEDCouplingTimeDiscretization.cxx
src/MEDCoupling/MEDCouplingTimeDiscretization.hxx
src/MEDCoupling/MEDCouplingTimeLabel.cxx
src/MEDCoupling/MEDCouplingTimeLabel.hxx
src/MEDCoupling/MEDCouplingUMesh.cxx
src/MEDCoupling/MEDCouplingUMesh.hxx
src/MEDCoupling/MEDCouplingUMeshDesc.cxx
src/MEDCoupling/MEDCouplingUMeshDesc.hxx
src/MEDCoupling/Makefile.am
src/MEDCoupling/Test/CMakeLists.txt
src/MEDCoupling/Test/MEDCouplingBasicsTest.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest0.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest1.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest1.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest2.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest2.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest3.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest3.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest4.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest4.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest5.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest5.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTestData1.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.hxx
src/MEDCoupling/Test/MEDCouplingExamplesTest.cxx
src/MEDCoupling/Test/MEDCouplingRemapperTest.cxx
src/MEDCoupling/Test/MEDCouplingRemapperTest.hxx
src/MEDCoupling/Test/Makefile.am
src/MEDCoupling/Test/TestMEDCoupling.cxx
src/MEDCoupling/Test/TestMEDCouplingRemapper.cxx
src/MEDCouplingCorba/CMakeLists.txt
src/MEDCouplingCorba/Client/CMakeLists.txt
src/MEDCouplingCorba/Client/DataArrayDoubleClient.cxx
src/MEDCouplingCorba/Client/DataArrayDoubleClient.hxx
src/MEDCouplingCorba/Client/DataArrayIntClient.cxx
src/MEDCouplingCorba/Client/DataArrayIntClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingCMeshClient.cxx
src/MEDCouplingCorba/Client/MEDCouplingCMeshClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingExtrudedMeshClient.cxx
src/MEDCouplingCorba/Client/MEDCouplingExtrudedMeshClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingFieldDoubleClient.cxx
src/MEDCouplingCorba/Client/MEDCouplingFieldDoubleClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingFieldOverTimeClient.cxx
src/MEDCouplingCorba/Client/MEDCouplingFieldOverTimeClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingFieldTemplateClient.cxx
src/MEDCouplingCorba/Client/MEDCouplingFieldTemplateClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingMeshClient.cxx
src/MEDCouplingCorba/Client/MEDCouplingMeshClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingMultiFieldsClient.cxx
src/MEDCouplingCorba/Client/MEDCouplingMultiFieldsClient.hxx
src/MEDCouplingCorba/Client/MEDCouplingUMeshClient.cxx
src/MEDCouplingCorba/Client/MEDCouplingUMeshClient.hxx
src/MEDCouplingCorba/Client/Makefile.am
src/MEDCouplingCorba/DataArrayDoubleServant.cxx
src/MEDCouplingCorba/DataArrayDoubleServant.hxx
src/MEDCouplingCorba/DataArrayIntServant.cxx
src/MEDCouplingCorba/DataArrayIntServant.hxx
src/MEDCouplingCorba/DataArrayServant.cxx
src/MEDCouplingCorba/DataArrayServant.hxx
src/MEDCouplingCorba/MEDCouplingCMeshServant.cxx
src/MEDCouplingCorba/MEDCouplingCMeshServant.hxx
src/MEDCouplingCorba/MEDCouplingCorba.hxx
src/MEDCouplingCorba/MEDCouplingExtrudedMeshServant.cxx
src/MEDCouplingCorba/MEDCouplingExtrudedMeshServant.hxx
src/MEDCouplingCorba/MEDCouplingFieldDoubleServant.cxx
src/MEDCouplingCorba/MEDCouplingFieldDoubleServant.hxx
src/MEDCouplingCorba/MEDCouplingFieldOverTimeServant.cxx
src/MEDCouplingCorba/MEDCouplingFieldOverTimeServant.hxx
src/MEDCouplingCorba/MEDCouplingFieldServant.cxx
src/MEDCouplingCorba/MEDCouplingFieldServant.hxx
src/MEDCouplingCorba/MEDCouplingFieldTemplateServant.cxx
src/MEDCouplingCorba/MEDCouplingFieldTemplateServant.hxx
src/MEDCouplingCorba/MEDCouplingMeshServant.cxx
src/MEDCouplingCorba/MEDCouplingMeshServant.hxx
src/MEDCouplingCorba/MEDCouplingMultiFieldsServant.cxx
src/MEDCouplingCorba/MEDCouplingMultiFieldsServant.hxx
src/MEDCouplingCorba/MEDCouplingPointSetServant.cxx
src/MEDCouplingCorba/MEDCouplingPointSetServant.hxx
src/MEDCouplingCorba/MEDCouplingRefCountServant.cxx
src/MEDCouplingCorba/MEDCouplingRefCountServant.hxx
src/MEDCouplingCorba/MEDCouplingUMeshServant.cxx
src/MEDCouplingCorba/MEDCouplingUMeshServant.hxx
src/MEDCouplingCorba/Makefile.am
src/MEDCouplingCorba/Test/CMakeLists.txt
src/MEDCouplingCorba/Test/MEDCouplingMeshFieldFactoryComponent.cxx
src/MEDCouplingCorba/Test/MEDCouplingMeshFieldFactoryComponent.hxx
src/MEDCouplingCorba/Test/MEDCouplingMeshFieldFactoryComponentClt.cxx
src/MEDCouplingCorba/Test/MEDCouplingMeshFieldFactoryComponentClt.hxx
src/MEDCouplingCorba/Test/MEDCouplingMeshFieldFactoryComponentServ.cxx
src/MEDCouplingCorba/Test/MEDCouplingMeshFieldFactoryComponentServ.hxx
src/MEDCouplingCorba/Test/Makefile.am
src/MEDCouplingCorba/Test/TestMEDCouplingCorbaClt.cxx
src/MEDCouplingCorba/Test/TestMEDCouplingCorbaServ.cxx
src/MEDCouplingCorba_Swig/CMakeLists.txt
src/MEDCouplingCorba_Swig/Client/CMakeLists.txt
src/MEDCouplingCorba_Swig/Client/MEDCouplingClient.i
src/MEDCouplingCorba_Swig/Client/Makefile.am
src/MEDCouplingCorba_Swig/MEDCouplingCorba.i
src/MEDCouplingCorba_Swig/MEDCouplingCorbaSwigTest.py
src/MEDCouplingCorba_Swig/MEDCouplingCorbaSwigTestClt.py
src/MEDCouplingCorba_Swig/MEDCouplingCorbaSwigTestServ.py
src/MEDCouplingCorba_Swig/MEDCouplingCorbaTypemaps.i
src/MEDCouplingCorba_Swig/Makefile.am
src/MEDCouplingCorba_Swig/TestMEDCouplingCorbaClt.py
src/MEDCouplingCorba_Swig/TestMEDCouplingCorbaServ.py
src/MEDCoupling_Swig/CMakeLists.txt
src/MEDCoupling_Swig/MEDCoupling.i
src/MEDCoupling_Swig/MEDCouplingBasicsTest.py
src/MEDCoupling_Swig/MEDCouplingCommon.i
src/MEDCoupling_Swig/MEDCouplingFinalize.i
src/MEDCoupling_Swig/MEDCouplingRemapper.i
src/MEDGUI/CMakeLists.txt
src/MEDGUI/Makefile.am
src/MEDLoader/CMakeLists.txt
src/MEDLoader/MEDFileBasis.cxx
src/MEDLoader/MEDFileBasis.hxx
src/MEDLoader/MEDFileData.cxx
src/MEDLoader/MEDFileData.hxx
src/MEDLoader/MEDFileField.cxx
src/MEDLoader/MEDFileField.hxx
src/MEDLoader/MEDFileMesh.cxx
src/MEDLoader/MEDFileMesh.hxx
src/MEDLoader/MEDFileMeshElt.cxx
src/MEDLoader/MEDFileMeshElt.hxx
src/MEDLoader/MEDFileMeshLL.cxx
src/MEDLoader/MEDFileMeshLL.hxx
src/MEDLoader/MEDFileUtilities.cxx
src/MEDLoader/MEDFileUtilities.hxx
src/MEDLoader/MEDLoader.cxx
src/MEDLoader/MEDLoader.hxx
src/MEDLoader/MEDLoaderBase.cxx
src/MEDLoader/MEDLoaderBase.hxx
src/MEDLoader/MEDLoaderDefines.hxx
src/MEDLoader/Makefile.am
src/MEDLoader/SauvMedConvertor.cxx
src/MEDLoader/SauvWriter.cxx
src/MEDLoader/Swig/CMakeLists.txt
src/MEDLoader/Swig/MEDLoader.i
src/MEDLoader/Swig/MEDLoaderCommon.i
src/MEDLoader/Swig/MEDLoaderDataForTest.py
src/MEDLoader/Swig/MEDLoaderExamplesTest.py
src/MEDLoader/Swig/MEDLoaderTest.py
src/MEDLoader/Swig/MEDLoaderTest2.py
src/MEDLoader/Swig/MEDLoaderTest3.py
src/MEDLoader/Swig/MEDLoaderTypemaps.i
src/MEDLoader/Swig/Makefile.am
src/MEDLoader/Swig/SauvLoaderTest.py
src/MEDLoader/Swig/libMEDLoader_Swig.py
src/MEDLoader/Test/CMakeLists.txt
src/MEDLoader/Test/MEDLoaderTest.cxx
src/MEDLoader/Test/MEDLoaderTest.hxx
src/MEDLoader/Test/Makefile.am
src/MEDLoader/Test/SauvLoaderTest.cxx
src/MEDLoader/Test/TestMEDLoader.cxx
src/MEDMEM/CMakeLists.txt
src/MEDMEM/MEDMEM.hxx
src/MEDMEM/MEDMEM_Connectivity.hxx
src/MEDMEM/MEDMEM_DriverTools.hxx
src/MEDMEM/MEDMEM_EnsightFieldDriver.cxx
src/MEDMEM/MEDMEM_EnsightUtils.cxx
src/MEDMEM/MEDMEM_EnsightUtils.hxx
src/MEDMEM/MEDMEM_GibiMeshDriver.cxx
src/MEDMEM/MEDMEM_GibiMeshDriver.hxx
src/MEDMEM/MEDMEM_Init.cxx
src/MEDMEM/MEDMEM_PorflowMeshDriver.cxx
src/MEDMEM/MEDMEM_VtkFieldDriver.hxx
src/MEDMEM/MEDMEM_VtkMeshDriver.cxx
src/MEDMEM/MEDMEM_VtkMeshDriver.hxx
src/MEDMEMBinTest/CMakeLists.txt
src/MEDMEMBinTest/testConvertPolygon.cxx
src/MEDMEMBinTest/test_MEDMEM_Meshing.cxx
src/MEDMEMBinTest/test_MEDMEM_MeshingFlica.cxx
src/MEDMEMBinTest/test_MEDMEM_Meshing_poly.cxx
src/MEDMEMCppTest/CMakeLists.txt
src/MEDMEMCppTest/MEDMEMCppTestExport.hxx
src/MEDMEMCppTest/MEDMEMTest.cxx
src/MEDMEMCppTest/MEDMEMTest_DesactivateFacesComputation.cxx
src/MEDMEMCppTest/MEDMEMTest_MedFileBrowser.cxx
src/MEDMEMCppTest/MEDMEMTest_Utils.cxx
src/MEDMEM_I/CMakeLists.txt
src/MEDMEM_I/MEDMEM_I.hxx
src/MEDMEM_SWIG/CMakeLists.txt
src/MEDOP/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/Makefile.am [new file with mode: 0644]
src/MEDOP/README.txt [new file with mode: 0644]
src/MEDOP/cmp/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/cmp/MEDCalculator_i.cxx [new file with mode: 0644]
src/MEDOP/cmp/MEDCalculator_i.hxx [new file with mode: 0644]
src/MEDOP/cmp/MEDDataManager_i.cxx [new file with mode: 0644]
src/MEDOP/cmp/MEDDataManager_i.hxx [new file with mode: 0644]
src/MEDOP/cmp/MEDOP.hxx [new file with mode: 0644]
src/MEDOP/cmp/MEDOPFactory_i.cxx [new file with mode: 0644]
src/MEDOP/cmp/MEDOPFactory_i.hxx [new file with mode: 0644]
src/MEDOP/cmp/Makefile.am [new file with mode: 0644]
src/MEDOP/cmp/test_medop_components.py [new file with mode: 0644]
src/MEDOP/doc/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/doc/models/medop.xmi [new file with mode: 0644]
src/MEDOP/doc/sphinx/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/doc/sphinx/Makefile.am [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20091211_CEA_AGEAY_09-017-RT-A_Normalisation_des_champs_et_des_maillages_pour_le_couplage_de_codes.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20101027_MAN_revueEDF-CEA.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_notes.pdf [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/xmed.css [new file with mode: 0644]
src/MEDOP/doc/sphinx/conf.py.in [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/champ_altitude_MAP.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/convert.sh [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/ico_datasource_add.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_datasource_changeUnderlyingMesh.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_datasource_expandfield.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_datasource_use.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_datasource_view.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_imagesource.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_workspace_save.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_xmed.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/med-uml-main.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/med-uml-main_60pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medlayers.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medmem-corba-layers.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medmem-layers.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop-gui-aliasfield.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medop-gui-aliasfield_scale.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop-gui-result.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medop-gui-result_scale.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop-gui-selectfield.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medop-gui-selectfield_scale.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop-gui-visufield.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medop-gui-visufield_scale.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop_exportparavis.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop_exportparavis_result.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop_image2med_dialog.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop_image2med_tomographie.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-architecture.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/xmed-exploremed.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-functions.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_60pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_80pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-expand-zoom.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore-zoom.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-menucontextuel-zoom.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-selectfile.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-alias.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_50pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-zoom.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_50pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-start.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-withframe.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-workspace-view.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-workspace.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-implantation.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-irm-diff.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-irm-field.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-irm.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-userguide-example2-datasource.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace-save.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-visu-importtimestamps.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-visu-scalarmaptimestamps.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/index.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/salomedoc.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-definitions.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-develguide.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-prototype-develguide.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-prototype-medmem.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-prototype-overview.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-references.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-specifications.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-userguide.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-workingnotes-2010.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-workingnotes-2011.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-workingnotes-2012.rst [new file with mode: 0644]
src/MEDOP/exe/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/exe/Makefile.am [new file with mode: 0644]
src/MEDOP/exe/appligen/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/exe/appligen/Makefile.am [new file with mode: 0644]
src/MEDOP/exe/appligen/README.txt [new file with mode: 0644]
src/MEDOP/exe/appligen/SalomeApp.xml [new file with mode: 0644]
src/MEDOP/exe/appligen/appli-splashscreen.jpg [new file with mode: 0644]
src/MEDOP/exe/appligen/appligen.sh.in [new file with mode: 0755]
src/MEDOP/exe/appligen/config_appli_model.xml.in [new file with mode: 0644]
src/MEDOP/exe/appligen/genenv.sh [new file with mode: 0755]
src/MEDOP/exe/image2med/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/exe/image2med/Makefile.am [new file with mode: 0644]
src/MEDOP/exe/image2med/image2med.py [new file with mode: 0755]
src/MEDOP/exe/image2med/xmedimages.py [new file with mode: 0644]
src/MEDOP/gui/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/gui/DatasourceConstants.hxx [new file with mode: 0644]
src/MEDOP/gui/DatasourceController.cxx [new file with mode: 0644]
src/MEDOP/gui/DatasourceController.hxx [new file with mode: 0644]
src/MEDOP/gui/MEDEventListener_i.cxx [new file with mode: 0644]
src/MEDOP/gui/MEDEventListener_i.hxx [new file with mode: 0644]
src/MEDOP/gui/MEDOPFactoryClient.cxx [new file with mode: 0644]
src/MEDOP/gui/MEDOPFactoryClient.hxx [new file with mode: 0644]
src/MEDOP/gui/MEDOPGUI.hxx [new file with mode: 0755]
src/MEDOP/gui/MEDOPModule.cxx [new file with mode: 0644]
src/MEDOP/gui/MEDOPModule.hxx [new file with mode: 0644]
src/MEDOP/gui/MEDOP_msg_en.ts [new file with mode: 0644]
src/MEDOP/gui/MEDOP_msg_fr.ts [new file with mode: 0644]
src/MEDOP/gui/Makefile.am [new file with mode: 0644]
src/MEDOP/gui/WorkspaceController.cxx [new file with mode: 0644]
src/MEDOP/gui/WorkspaceController.hxx [new file with mode: 0644]
src/MEDOP/gui/XmedConsoleDriver.cxx [new file with mode: 0644]
src/MEDOP/gui/XmedConsoleDriver.hxx [new file with mode: 0644]
src/MEDOP/gui/XmedDataModel.cxx [new file with mode: 0644]
src/MEDOP/gui/XmedDataModel.hxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgAlias.cxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgAlias.hxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgAlias.ui [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.cxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.hxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.ui [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgImageToMed.cxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgImageToMed.hxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgImageToMed.ui [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgUseInWorkspace.cxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgUseInWorkspace.hxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/DlgUseInWorkspace.ui [new file with mode: 0644]
src/MEDOP/gui/dialogs/GenericDialog.cxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/GenericDialog.hxx [new file with mode: 0644]
src/MEDOP/gui/dialogs/GenericDialog.ui [new file with mode: 0644]
src/MEDOP/gui/dialogs/MEDOPGUIdialogs.hxx [new file with mode: 0755]
src/MEDOP/gui/dialogs/Makefile.am [new file with mode: 0644]
src/MEDOP/gui/dialogs/dlgTester.cxx [new file with mode: 0644]
src/MEDOP/gui/factory.cxx [new file with mode: 0644]
src/MEDOP/gui/test/README.txt [new file with mode: 0644]
src/MEDOP/gui/test/guiTester.pro [new file with mode: 0644]
src/MEDOP/res/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/res/MEDOP.png [new file with mode: 0644]
src/MEDOP/res/MEDOP_small.png [new file with mode: 0644]
src/MEDOP/res/Makefile.am [new file with mode: 0644]
src/MEDOP/res/datasource.png [new file with mode: 0644]
src/MEDOP/res/datasource_add.png [new file with mode: 0644]
src/MEDOP/res/datasource_changeUnderlyingMesh.png [new file with mode: 0644]
src/MEDOP/res/datasource_expandfield.png [new file with mode: 0644]
src/MEDOP/res/datasource_field.png [new file with mode: 0644]
src/MEDOP/res/datasource_mesh.png [new file with mode: 0644]
src/MEDOP/res/datasource_use.png [new file with mode: 0644]
src/MEDOP/res/datasource_view.png [new file with mode: 0644]
src/MEDOP/res/folder.png [new file with mode: 0644]
src/MEDOP/res/image_add.png [new file with mode: 0644]
src/MEDOP/res/testfiles/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/res/testfiles/Makefile.am [new file with mode: 0644]
src/MEDOP/res/testfiles/README.txt [new file with mode: 0644]
src/MEDOP/res/testfiles/bigmesh.med [new file with mode: 0644]
src/MEDOP/res/testfiles/champ_altitude_MAP.pgm [new file with mode: 0644]
src/MEDOP/res/testfiles/enceinte-axis-E500000.med [new file with mode: 0644]
src/MEDOP/res/testfiles/enceinte-axis-E600000.med [new file with mode: 0644]
src/MEDOP/res/testfiles/entaille.med [new file with mode: 0644]
src/MEDOP/res/testfiles/fieldlena.med [new file with mode: 0644]
src/MEDOP/res/testfiles/irm_test1.png [new file with mode: 0644]
src/MEDOP/res/testfiles/irm_test2.png [new file with mode: 0644]
src/MEDOP/res/testfiles/padderoutput.med [new file with mode: 0644]
src/MEDOP/res/testfiles/parametric_01.med [new file with mode: 0644]
src/MEDOP/res/testfiles/parametric_02.med [new file with mode: 0644]
src/MEDOP/res/testfiles/smallmesh_constfield.med [new file with mode: 0644]
src/MEDOP/res/testfiles/smallmesh_varfield.med [new file with mode: 0644]
src/MEDOP/res/testfiles/testfield.med [new file with mode: 0644]
src/MEDOP/res/testfiles/timeseries.med [new file with mode: 0644]
src/MEDOP/res/workspace_clean.png [new file with mode: 0644]
src/MEDOP/res/workspace_save.png [new file with mode: 0644]
src/MEDOP/tui/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/tui/Makefile.am [new file with mode: 0644]
src/MEDOP/tui/xmedpy/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/tui/xmedpy/Makefile.am [new file with mode: 0644]
src/MEDOP/tui/xmedpy/__init__.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/cmdtools.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/driver_pvis.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/driver_visu.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/fieldguide.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/fieldproxy.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/fieldtools.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/medop.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/properties.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/tests/test_xmed_fieldOperations.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/tests/test_xmed_uiEventListener.py [new file with mode: 0644]
src/MEDOP/tui/xmedpy/tests/test_xmed_visualisation.py [new file with mode: 0644]
src/MEDPartitioner/CMakeLists.txt
src/MEDPartitioner/MEDPARTITIONER.hxx
src/MEDPartitioner/Test/CMakeLists.txt
src/MEDSPLITTER/CMakeLists.txt
src/MEDSPLITTER/MEDSPLITTER.hxx
src/MEDSPLITTER/Test/CMakeLists.txt
src/MEDSPLITTER/Test/Makefile.am
src/MEDSPLITTER_Swig/CMakeLists.txt
src/MEDWrapper/Base/CMakeLists.txt
src/MEDWrapper/Base/MED_Common.hxx
src/MEDWrapper/Base/MED_SliceArray.hxx
src/MEDWrapper/Base/MED_Structures.hxx
src/MEDWrapper/Base/MED_TStructures.hxx
src/MEDWrapper/Base/MED_WrapperBase.hxx
src/MEDWrapper/Factory/CMakeLists.txt
src/MEDWrapper/Factory/MED_Test.cxx
src/MEDWrapper/Factory/MED_WrapperFactory.hxx
src/MEDWrapper/Makefile.am
src/MEDWrapper/V2_2/CMakeLists.txt
src/MEDWrapper/V2_2/MED_V2_2_Wrapper.hxx
src/MED_SWIG/CMakeLists.txt
src/Makefile.am
src/MedClient/src/CMakeLists.txt
src/MedClient/src/MEDClient.hxx
src/MedClient/test/environ/CMakeLists.txt
src/MedClient/test/test2/CMakeLists.txt
src/MedCorba_Swig/CMakeLists.txt
src/ParaMEDLoader/CMakeLists.txt
src/ParaMEDLoader/Makefile.am
src/ParaMEDLoader/ParaMEDLoader.cxx
src/ParaMEDLoader/ParaMEDLoader.hxx
src/ParaMEDMEM/CMakeLists.txt
src/ParaMEDMEM/OverlapDEC.cxx
src/ParaMEDMEM/OverlapDEC.hxx
src/ParaMEDMEM/OverlapElementLocator.cxx
src/ParaMEDMEM/OverlapElementLocator.hxx
src/ParaMEDMEM/OverlapInterpolationMatrix.cxx
src/ParaMEDMEM/OverlapInterpolationMatrix.hxx
src/ParaMEDMEM/OverlapMapping.cxx
src/ParaMEDMEM/OverlapMapping.hxx
src/ParaMEDMEMTest/CMakeLists.txt
src/ParaMEDMEM_Swig/CMakeLists.txt
src/RENUMBER/CMakeLists.txt
src/RENUMBER/RENUMBERDefines.hxx

index b8fbd59c381cdf5e0c3b4c8af80bef2e9082cb97..a431ab0ba0b748d496427fa7bb3f5baa48317dea 100644 (file)
@@ -26,12 +26,15 @@ ENDIF(COMMAND cmake_policy)
 ENABLE_TESTING()
 SET(VERSION "6.5.0")
 SET(VERSION_DEV "1")
+SET(WITH_MEDMEMGUI "0")
 
 SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR})
-FILE(TO_CMAKE_PATH $ENV{KERNEL_ROOT_DIR} KERNEL_ROOT_DIR)
-
 IF(KERNEL_ROOT_DIR)
+  FILE(TO_CMAKE_PATH $ENV{KERNEL_ROOT_DIR} KERNEL_ROOT_DIR)
   SET(MED_ENABLE_KERNEL ON)
+  
+  SET(SALOME_MACROS_DIR ${KERNEL_ROOT_DIR}/salome_adm/cmake_files)
+  
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPYTHON.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindMPI.cmake)
@@ -43,17 +46,13 @@ IF(KERNEL_ROOT_DIR)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSWIG.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindDOXYGEN.cmake)
+  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSPHINX.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindLIBBATCH.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindKERNEL.cmake)
-ELSE(KERNEL_ROOT_DIR)
-  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPLATFORM.cmake)
-  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindMPI.cmake)
-ENDIF(KERNEL_ROOT_DIR)
-
-SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR})
-FILE(TO_CMAKE_PATH $ENV{GUI_ROOT_DIR} GUI_ROOT_DIR)
 
-IF(GUI_ROOT_DIR)
+  SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR})
+  FILE(TO_CMAKE_PATH $ENV{GUI_ROOT_DIR} GUI_ROOT_DIR)
+  IF(GUI_ROOT_DIR)
   SET(MED_ENABLE_GUI ON)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindCAS.cmake)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindQT4.cmake)
@@ -62,7 +61,21 @@ IF(GUI_ROOT_DIR)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindQWT.cmake)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindSIPPYQT.cmake)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindGUI.cmake)
-ENDIF(GUI_ROOT_DIR)
+  ENDIF(GUI_ROOT_DIR)
+ELSE(KERNEL_ROOT_DIR)
+  SET(SALOME_MACROS_DIR ${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files)
+  
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPLATFORM.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindMPI.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindBOOST.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindCPPUNIT.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindHDF5.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPYTHON.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindLIBXML2.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPTHREADS.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindSWIG.cmake)
+
+ENDIF(KERNEL_ROOT_DIR)
 
 INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindPARMETIS.cmake)
 INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindMETIS.cmake)
@@ -112,6 +125,8 @@ SET(MED_admlocalcmake adm_local/cmake_files)
 
 IF(MED_ENABLE_KERNEL)
   ADD_SUBDIRECTORY(idl)
+ELSE(MED_ENABLE_KERNEL)
+  ADD_SUBDIRECTORY(adm_local_without_kernel)
 ENDIF(MED_ENABLE_KERNEL)
 ADD_SUBDIRECTORY(adm_local)
 ADD_SUBDIRECTORY(src)
index 2a414b3aef3c226aca4a84c348517f0e932e4763..6d704892baceb1760489003a3826aeb2e99cf1e3 100644 (file)
@@ -26,8 +26,8 @@ if MED_ENABLE_KERNEL
   AM_CXXFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h
   AM_CPPFLAGS = @KERNEL_CXXFLAGS@ -include SALOMEconfig.h
 else !MED_ENABLE_KERNEL
-  AM_CXXFLAGS = -I$(top_builddir)/adm_local_without_kernel/unix -include SALOMEconfig.h
-  AM_CPPFLAGS = -I$(top_builddir)/adm_local_without_kernel/unix -include SALOMEconfig.h
+  AM_CXXFLAGS = -I$(top_builddir)/adm_local_without_kernel -include SALOMEconfig.h
+  AM_CPPFLAGS = -I$(top_builddir)/adm_local_without_kernel -include SALOMEconfig.h
 endif
 
 # ============================================================
@@ -66,22 +66,7 @@ sharedpkgpythondir = $(salomepythondir)/shared_modules
 # Documentation directory
 docdir             = $(datadir)/doc/salome
 
-# common rules
-
-# meta object implementation files generation (moc)
-%_moc.cxx: %.h
-       $(MOC) $< -o $@
-
-# translation (*.qm) files generation (lrelease)
-%.qm: %.ts
-       $(LRELEASE) $< -qm $@
-
-EXTRA_DIST = $(MOC_FILES:%_moc.cxx=%.h) $(nodist_salomeres_DATA:%.qm=%.ts)
-
-# customize clean operation
-mostlyclean-local:
-       rm -f @builddir@/*_moc.cxx
-       rm -f @builddir@/*.qm
+EXTRA_DIST =
 
 # tests
 tests: unittest
diff --git a/adm_local_without_kernel/CMakeLists.txt b/adm_local_without_kernel/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..1575c37
--- /dev/null
@@ -0,0 +1,24 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(input ${CMAKE_CURRENT_SOURCE_DIR}/SALOMEconfig.h.in)
+SET(output ${CMAKE_CURRENT_BINARY_DIR}/SALOMEconfig.h)
+MESSAGE(STATUS "Creation of ${output}")
+CONFIGURE_FILE(${input} ${output})
+INSTALL(FILES ${output} DESTINATION ${MED_salomeinclude_HEADERS})
index aa96c87aedbfc664d85ed1d18ced581c3913f685..eb57b16866ddf5f7fff5e8649aee817a5fecb859 100644 (file)
@@ -21,4 +21,10 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
 SUBDIRS = unix
 
-EXTRA_DIST += cmake_files
\ No newline at end of file
+EXTRA_DIST += cmake_files
+
+EXTRA_DIST += SALOMEconfig.h.in
+
+if !MED_ENABLE_KERNEL
+  nodist_salomeinclude_HEADERS = SALOMEconfig.h
+endif
diff --git a/adm_local_without_kernel/SALOMEconfig.h.in b/adm_local_without_kernel/SALOMEconfig.h.in
new file mode 100755 (executable)
index 0000000..8db6100
--- /dev/null
@@ -0,0 +1,65 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+/* Debug mode ??? */
+#ifndef DEBUG
+# define DEBUG
+#endif
+
+/* CORBA headers include rules */
+#ifndef CORBA_CLIENT_HEADER
+# define QUOTE(x)  #x
+# define CORBA_CLIENT_HEADER(x)  QUOTE(x@IDL_CLN_H@)
+# define CORBA_SERVER_HEADER(x)  QUOTE(x@IDL_SRV_H@)
+#endif
+
+/* Platform definition */
+#ifndef @MACHINE@
+  #define @MACHINE@
+#endif
+
+// This is only to suppress warning messages with defines redefined (cause of omniORB that exports these names)
+#ifdef PACKAGE
+#undef PACKAGE
+#endif
+#ifdef PACKAGE_BUGREPORT
+#undef PACKAGE_BUGREPORT
+#endif
+#ifdef PACKAGE_NAME
+#undef PACKAGE_NAME
+#endif
+#ifdef PACKAGE_STRING
+#undef PACKAGE_STRING
+#endif
+#ifdef PACKAGE_TARNAME
+#undef PACKAGE_TARNAME
+#endif
+#ifdef PACKAGE_VERSION
+#undef PACKAGE_VERSION
+#endif
+#ifdef VERSION
+#undef VERSION
+#endif
+
+#ifdef _POSIX_C_SOURCE
+#undef _POSIX_C_SOURCE
+#endif
diff --git a/adm_local_without_kernel/cmake_files/FindBOOST.cmake b/adm_local_without_kernel/cmake_files/FindBOOST.cmake
new file mode 100755 (executable)
index 0000000..bd9ec07
--- /dev/null
@@ -0,0 +1,170 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for boost ...")
+
+# ------
+
+IF(BOOST_IS_MANDATORY STREQUAL 0)
+  SET(BOOST_IS_MANDATORY 0)
+  SET(BOOST_IS_OPTIONAL 1)
+ENDIF(BOOST_IS_MANDATORY STREQUAL 0)
+IF(BOOST_IS_OPTIONAL STREQUAL 0)
+  SET(BOOST_IS_MANDATORY 1)
+  SET(BOOST_IS_OPTIONAL 0)
+ENDIF(BOOST_IS_OPTIONAL STREQUAL 0)
+IF(NOT BOOST_IS_MANDATORY AND NOT BOOST_IS_OPTIONAL)
+  SET(BOOST_IS_MANDATORY 1)
+  SET(BOOST_IS_OPTIONAL 0)
+ENDIF(NOT BOOST_IS_MANDATORY AND NOT BOOST_IS_OPTIONAL)
+
+# ------
+
+SET(BOOST_STATUS 1)
+IF(WITHOUT_BOOST OR WITH_BOOST STREQUAL 0)
+  SET(BOOST_STATUS 0)
+  MESSAGE(STATUS "boost disabled from command line.")
+ENDIF(WITHOUT_BOOST OR WITH_BOOST STREQUAL 0)
+
+# ------
+
+IF(BOOST_STATUS)
+  IF(WITH_BOOST)
+    SET(BOOST_ROOT_USER ${WITH_BOOST})
+  ELSE(WITH_BOOST)
+    SET(BOOST_ROOT_USER $ENV{BOOST_ROOT})
+    IF(NOT BOOST_ROOT_USER)
+      SET(BOOST_ROOT_USER $ENV{BOOSTDIR})
+    ENDIF(NOT BOOST_ROOT_USER)
+  ENDIF(WITH_BOOST)
+ENDIF(BOOST_STATUS)
+
+# -----
+
+IF(BOOST_STATUS)
+  IF(BOOST_ROOT_USER)
+    SET(BOOST_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+  ELSE(BOOST_ROOT_USER)
+    SET(BOOST_FIND_PATHS_OPTION)
+  ENDIF(BOOST_ROOT_USER)
+ENDIF(BOOST_STATUS)
+
+# -----
+
+IF(BOOST_STATUS)
+  IF(BOOST_ROOT_USER)
+    SET(BOOST_INCLUDE_PATHS ${BOOST_ROOT_USER} ${BOOST_ROOT_USER}/include)
+  ELSE(BOOST_ROOT_USER)
+    SET(BOOST_INCLUDE_PATHS)
+  ENDIF(BOOST_ROOT_USER)
+  SET(BOOST_INCLUDE_TO_FIND boost/shared_ptr.hpp)
+  FIND_PATH(BOOST_INCLUDE_DIR ${BOOST_INCLUDE_TO_FIND} PATHS ${BOOST_INCLUDE_PATHS} ${BOOST_FIND_PATHS_OPTION})
+  IF(BOOST_INCLUDE_DIR)
+    IF(BOOST_ROOT_USER)
+      SET(BOOST_CPPFLAGS -I${BOOST_INCLUDE_DIR})# to be removed
+      SET(BOOST_INCLUDE_DIRS ${BOOST_INCLUDE_DIR})
+    ENDIF(BOOST_ROOT_USER)
+    MESSAGE(STATUS "${BOOST_INCLUDE_TO_FIND} found in ${BOOST_INCLUDE_DIR}")
+  ELSE(BOOST_INCLUDE_DIR)
+    SET(BOOST_STATUS 0)
+    IF(BOOST_ROOT_USER)
+      MESSAGE(STATUS "${BOOST_INCLUDE_TO_FIND} not found in ${BOOST_INCLUDE_PATHS}, check your BOOST installation.")
+    ELSE(BOOST_ROOT_USER)
+      MESSAGE(STATUS "${BOOST_INCLUDE_TO_FIND} not found on system, try to use WITH_BOOST option or BOOST_ROOT environment variable.")
+    ENDIF(BOOST_ROOT_USER)
+  ENDIF(BOOST_INCLUDE_DIR)
+ENDIF(BOOST_STATUS)
+
+# ----
+
+IF(BOOST_STATUS)
+  IF(BOOST_ROOT_USER)
+    SET(BOOST_LIB_PATHS ${BOOST_ROOT_USER}/lib)
+  ELSE(BOOST_ROOT_USER)
+    SET(BOOST_LIB_PATHS)
+  ENDIF(BOOST_ROOT_USER)
+ENDIF(BOOST_STATUS)
+
+IF(WINDOWS)
+  SET(BOOST_ENABLE_DLL 1)
+ELSE(WINDOWS)  
+  SET(BOOST_ENABLE_DLL 0)
+ENDIF(WINDOWS)
+  
+IF(BOOST_STATUS)
+  SET(BOOST_LIBS)
+  FOREACH(name thread date_time signals filesystem system regex)
+    IF(WINDOWS)
+      IF(CMAKE_BUILD_TYPE STREQUAL Debug)
+        SET(EXTENSION -gd)
+      ELSE(CMAKE_BUILD_TYPE STREQUAL Debug)
+        SET(EXTENSION)
+      ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
+      SET(LIB_NAMES)
+      SET(STATIC_LIB_NAMES)      
+      FOREACH(version 1_35 1_38 1_42 1_46_1 1_49)
+        SET(LIB_NAMES ${LIB_NAMES} boost_${name}-vc90-mt${EXTENSION}-${version})
+        SET(STATIC_LIB_NAMES ${STATIC_LIB_NAMES} libboost_${name}-vc90-mt${EXTENSION}-${version})
+      ENDFOREACH(version 1_35 1_38 1_42 1_46_1 1_49)
+      FIND_LIBRARY(BOOST_LIB_${name} NAMES ${LIB_NAMES} PATHS ${BOOST_LIB_PATHS} ${BOOST_FIND_PATHS_OPTION})
+      SET(BOOST_LIB_${name}_FOUNDED ${BOOST_LIB_${name}})
+      IF(NOT BOOST_LIB_${name})
+        FIND_LIBRARY(STATIC_BOOST_LIB_${name} NAMES ${STATIC_LIB_NAMES} PATHS ${BOOST_LIB_PATHS} ${BOOST_FIND_PATHS_OPTION})
+       SET(BOOST_LIB_${name}_FOUNDED ${STATIC_BOOST_LIB_${name}})
+        SET(BOOST_ENABLE_DLL 0)
+      ENDIF(NOT BOOST_LIB_${name})
+    ELSE(WINDOWS)
+      FIND_LIBRARY(BOOST_LIB_${name} NAMES boost_${name} boost_${name}-mt PATHS ${BOOST_LIB_PATHS} ${BOOST_FIND_PATHS_OPTION})
+      SET(BOOST_LIB_${name}_FOUNDED ${BOOST_LIB_${name}})
+    ENDIF(WINDOWS)
+    IF(NOT BOOST_LIB_${name}_FOUNDED)
+      MESSAGE(STATUS "boost lib ${name} not found")
+      SET(BOOST_STATUS 0)
+    ENDIF(NOT BOOST_LIB_${name}_FOUNDED)
+    STRING(TOUPPER ${name} upname)
+    SET(BOOST_LIB_${upname} ${BOOST_LIB_${name}_FOUNDED})
+    SET(BOOST_LIBS ${BOOST_LIBS} ${BOOST_LIB_${name}_FOUNDED})
+  ENDFOREACH(name thread date_time signals filesystem system)
+ENDIF(BOOST_STATUS)
+
+# ------
+
+IF(BOOST_STATUS)
+  IF(WINDOWS)
+    SET(BOOST_CPPFLAGS ${BOOST_CPPFLAGS} -DBOOST_DISABLE_ASSERTS)# to be removed
+    SET(BOOST_DEFINITIONS -DBOOST_DISABLE_ASSERTS)
+    IF(BOOST_ENABLE_DLL)
+      SET(BOOST_CPPFLAGS ${BOOST_CPPFLAGS} -DBOOST_ALL_DYN_LINK)# to be removed
+      SET(BOOST_DEFINITIONS "${BOOST_DEFINITIONS} -DBOOST_ALL_DYN_LINK")
+    ENDIF(BOOST_ENABLE_DLL)  
+  ENDIF(WINDOWS)
+ELSE(BOOST_STATUS)
+  IF(BOOST_IS_MANDATORY)
+    MESSAGE(FATAL_ERROR "boost not found ... mandatory ... abort")
+  ELSE(BOOST_IS_MANDATORY)
+    MESSAGE(STATUS "boost not found ... optional ... disabled")
+  ENDIF(BOOST_IS_MANDATORY)
+ENDIF(BOOST_STATUS)
+
+# ------
diff --git a/adm_local_without_kernel/cmake_files/FindCPPUNIT.cmake b/adm_local_without_kernel/cmake_files/FindCPPUNIT.cmake
new file mode 100755 (executable)
index 0000000..4193644
--- /dev/null
@@ -0,0 +1,151 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for cppunit ...")
+
+# ------
+
+IF(CPPUNIT_IS_MANDATORY STREQUAL 0)
+  SET(CPPUNIT_IS_MANDATORY 0)
+  SET(CPPUNIT_IS_OPTIONAL 1)
+ENDIF(CPPUNIT_IS_MANDATORY STREQUAL 0)
+IF(CPPUNIT_IS_OPTIONAL STREQUAL 0)
+  SET(CPPUNIT_IS_MANDATORY 1)
+  SET(CPPUNIT_IS_OPTIONAL 0)
+ENDIF(CPPUNIT_IS_OPTIONAL STREQUAL 0)
+IF(NOT CPPUNIT_IS_MANDATORY AND NOT CPPUNIT_IS_OPTIONAL)
+  SET(CPPUNIT_IS_MANDATORY 0)
+  SET(CPPUNIT_IS_OPTIONAL 1)
+ENDIF(NOT CPPUNIT_IS_MANDATORY AND NOT CPPUNIT_IS_OPTIONAL)
+
+# ------
+
+SET(CPPUNIT_STATUS 1)
+IF(WITHOUT_CPPUNIT OR WITH_CPPUNIT STREQUAL 0)
+  SET(CPPUNIT_STATUS 0)
+  MESSAGE(STATUS "cppunit disabled from command line.")
+ENDIF(WITHOUT_CPPUNIT OR WITH_CPPUNIT STREQUAL 0)
+
+# ------
+
+IF(CPPUNIT_STATUS)
+  IF(WITH_CPPUNIT)
+    SET(CPPUNIT_ROOT_USER ${WITH_CPPUNIT})
+  ELSE(WITH_CPPUNIT)
+    SET(CPPUNIT_ROOT_USER $ENV{CPPUNIT_ROOT})
+  ENDIF(WITH_CPPUNIT)
+ENDIF(CPPUNIT_STATUS)
+
+# -----
+
+IF(CPPUNIT_STATUS)
+  IF(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+  ELSE(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_FIND_PATHS_OPTION)
+  ENDIF(CPPUNIT_ROOT_USER)
+ENDIF(CPPUNIT_STATUS)
+
+# -----
+
+IF(CPPUNIT_STATUS)
+  IF(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_INCLUDE_PATHS ${CPPUNIT_ROOT_USER} ${CPPUNIT_ROOT_USER}/include)
+  ELSE(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_INCLUDE_PATHS)
+  ENDIF(CPPUNIT_ROOT_USER)
+  SET(CPPUNIT_INCLUDE_TO_FIND cppunit/extensions/HelperMacros.h)
+  FIND_PATH(CPPUNIT_INCLUDE_DIR ${CPPUNIT_INCLUDE_TO_FIND} PATHS ${CPPUNIT_INCLUDE_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+  IF(CPPUNIT_INCLUDE_DIR)
+    IF(CPPUNIT_ROOT_USER)
+      SET(CPPUNIT_INCLUDES -I${CPPUNIT_INCLUDE_DIR})# to be removed
+      IF(${CPPUNIT_INCLUDE_DIR} STREQUAL /usr/include)
+       SET(CPPUNIT_INCLUDE_DIRS)
+      ELSE(${CPPUNIT_INCLUDE_DIR} STREQUAL /usr/include)
+       SET(CPPUNIT_INCLUDE_DIRS ${CPPUNIT_INCLUDE_DIR})
+      ENDIF(${CPPUNIT_INCLUDE_DIR} STREQUAL /usr/include)
+    ENDIF(CPPUNIT_ROOT_USER)
+    MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} found in ${CPPUNIT_INCLUDE_DIR}")
+  ELSE(CPPUNIT_INCLUDE_DIR)
+    SET(CPPUNIT_STATUS 0)
+    IF(CPPUNIT_ROOT_USER)
+      MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} not found in ${CPPUNIT_INCLUDE_PATHS}, check your CPPUNIT installation.")
+    ELSE(CPPUNIT_ROOT_USER)
+      MESSAGE(STATUS "${CPPUNIT_INCLUDE_TO_FIND} not found on system, try to use WITH_CPPUNIT option or CPPUNIT_ROOT environment variable.")
+    ENDIF(CPPUNIT_ROOT_USER)
+  ENDIF(CPPUNIT_INCLUDE_DIR)
+ENDIF(CPPUNIT_STATUS)
+
+# ----
+
+IF(CPPUNIT_STATUS)
+  IF(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_LIB_PATHS ${CPPUNIT_ROOT_USER}/lib)
+  ELSE(CPPUNIT_ROOT_USER)
+    SET(CPPUNIT_LIB_PATHS)
+  ENDIF(CPPUNIT_ROOT_USER)
+ENDIF(CPPUNIT_STATUS)
+
+IF(CPPUNIT_STATUS)
+  IF(WINDOWS)
+    IF(CMAKE_BUILD_TYPE STREQUAL Debug)
+      FIND_LIBRARY(CPPUNIT_LIB cppunitd_dll PATHS ${CPPUNIT_LIB_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+    ELSE(CMAKE_BUILD_TYPE STREQUAL Debug)
+      FIND_LIBRARY(CPPUNIT_LIB cppunit_dll PATHS ${CPPUNIT_LIB_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+    ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
+  ELSE(WINDOWS)
+    FIND_LIBRARY(CPPUNIT_LIB cppunit PATHS ${CPPUNIT_LIB_PATHS} ${CPPUNIT_FIND_PATHS_OPTION})
+  ENDIF(WINDOWS)
+  SET(CPPUNIT_LIBS)
+  IF(CPPUNIT_LIB)
+    SET(CPPUNIT_LIBS ${CPPUNIT_LIBS} ${CPPUNIT_LIB})
+    MESSAGE(STATUS "cppunit lib found: ${CPPUNIT_LIB}")
+  ELSE(CPPUNIT_LIB)
+    SET(CPPUNIT_STATUS 0)
+    IF(CPPUNIT_ROOT_USER)
+      MESSAGE(STATUS "cppunit lib not found in ${CPPUNIT_LIB_PATHS}, check your CPPUNIT installation.")
+    ELSE(CPPUNIT_ROOT_USER)
+      MESSAGE(STATUS "cppunit lib not found on system, try to use WITH_CPPUNIT option or CPPUNIT_ROOT environment variable.")
+    ENDIF(CPPUNIT_ROOT_USER)
+  ENDIF(CPPUNIT_LIB)
+ENDIF(CPPUNIT_STATUS)
+
+# ----
+
+IF(CPPUNIT_STATUS)
+  SET(CPPUNIT_IS_OK 1)
+  SET(CPPUNIT_DEFINITIONS)
+  IF(WINDOWS)
+    SET(CPPUNIT_INCLUDES ${CPPUNIT_INCLUDES} -DCPPUNIT_DLL)
+    SET(CPPUNIT_DEFINITIONS "-DCPPUNIT_DLL")
+  ENDIF(WINDOWS)
+ELSE(CPPUNIT_STATUS)
+  IF(CPPUNIT_IS_MANDATORY)
+    MESSAGE(FATAL_ERROR "cppunit not found ... mandatory ... abort")
+  ELSE(CPPUNIT_IS_MANDATORY)
+    MESSAGE(STATUS "cppunit not found ... optional ... disabled")
+  ENDIF(CPPUNIT_IS_MANDATORY)
+ENDIF(CPPUNIT_STATUS)
+
+# ------
diff --git a/adm_local_without_kernel/cmake_files/FindHDF5.cmake b/adm_local_without_kernel/cmake_files/FindHDF5.cmake
new file mode 100755 (executable)
index 0000000..1ecd8a4
--- /dev/null
@@ -0,0 +1,211 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for hdf5 ...")
+
+# ------
+
+IF(HDF5_IS_MANDATORY STREQUAL 0)
+  SET(HDF5_IS_MANDATORY 0)
+  SET(HDF5_IS_OPTIONAL 1)
+ENDIF(HDF5_IS_MANDATORY STREQUAL 0)
+IF(HDF5_IS_OPTIONAL STREQUAL 0)
+  SET(HDF5_IS_MANDATORY 1)
+  SET(HDF5_IS_OPTIONAL 0)
+ENDIF(HDF5_IS_OPTIONAL STREQUAL 0)
+IF(NOT HDF5_IS_MANDATORY AND NOT HDF5_IS_OPTIONAL)
+  SET(HDF5_IS_MANDATORY 1)
+  SET(HDF5_IS_OPTIONAL 0)
+ENDIF(NOT HDF5_IS_MANDATORY AND NOT HDF5_IS_OPTIONAL)
+
+# ------
+
+SET(HDF5_STATUS 1)
+IF(WITHOUT_HDF5 OR WITH_HDF5 STREQUAL 0)
+  SET(HDF5_STATUS 0)
+  MESSAGE(STATUS "hdf5 disabled from command line.")
+ENDIF(WITHOUT_HDF5 OR WITH_HDF5 STREQUAL 0)
+
+# ------
+
+IF(HDF5_STATUS)
+  IF(WITH_HDF5)
+    SET(HDF5_ROOT_USER ${WITH_HDF5})
+  ENDIF(WITH_HDF5)
+  IF(NOT HDF5_ROOT_USER)
+    SET(HDF5_ROOT_USER $ENV{HDF5_ROOT})
+  ENDIF(NOT HDF5_ROOT_USER)
+  IF(NOT HDF5_ROOT_USER)
+    SET(HDF5_ROOT_USER $ENV{HDF5HOME})
+  ENDIF(NOT HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+  IF(NOT HDF5_ROOT_USER)
+    FIND_PROGRAM(HDF5_DUMP h5dump)
+    IF(HDF5_DUMP)
+      MESSAGE(STATUS "h5dump found: ${HDF5_DUMP}")
+      IF(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+      ELSE(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+       SET(HDF5_ROOT_USER ${HDF5_DUMP})
+       GET_FILENAME_COMPONENT(HDF5_ROOT_USER ${HDF5_ROOT_USER} PATH)
+       GET_FILENAME_COMPONENT(HDF5_ROOT_USER ${HDF5_ROOT_USER} PATH)
+      ENDIF(HDF5_DUMP STREQUAL /usr/bin/h5dump)
+    ELSE(HDF5_DUMP)
+      MESSAGE(STATUS "h5dump not found, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable")
+      SET(HDF5_STATUS 0)
+    ENDIF(HDF5_DUMP)
+  ENDIF(NOT HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+  IF(HDF5_ROOT_USER)
+    SET(HDF5_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+  ELSE(HDF5_ROOT_USER)
+    SET(HDF5_FIND_PATHS_OPTION)
+  ENDIF(HDF5_ROOT_USER)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+IF(HDF5_STATUS)
+  IF(HDF5_ROOT_USER)
+    SET(HDF5_INCLUDE_PATHS ${HDF5_ROOT_USER}/include)
+  ELSE(HDF5_ROOT_USER)
+    SET(HDF5_INCLUDE_PATHS)
+  ENDIF(HDF5_ROOT_USER)
+  SET(HDF5_INCLUDE_TO_FIND H5public.h)
+  FIND_PATH(HDF5_INCLUDE_DIR ${HDF5_INCLUDE_TO_FIND} PATHS ${HDF5_INCLUDE_PATHS} ${HDF5_FIND_PATHS_OPTION})
+  IF(HDF5_INCLUDE_DIR)
+    IF(HDF5_ROOT_USER)
+      SET(HDF5_INCLUDES -I${HDF5_INCLUDE_DIR})# to be removed
+      IF(${HDF5_INCLUDE_DIR} STREQUAL /usr/include)
+       SET(HDF5_INCLUDE_DIRS)
+      ELSE(${HDF5_INCLUDE_DIR} STREQUAL /usr/include)
+       SET(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR})
+      ENDIF(${HDF5_INCLUDE_DIR} STREQUAL /usr/include)
+    ENDIF(HDF5_ROOT_USER)
+    SET(HDF5_DEFINITIONS "-DH5_USE_16_API -D_HDF5USEDLL_")
+    SET(HDF5_INCLUDES -DH5_USE_16_API -D_HDF5USEDLL_ ${HDF5_INCLUDES})# to be removed
+    MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} found in ${HDF5_INCLUDE_DIR}")
+  ELSE(HDF5_INCLUDE_DIR)
+    SET(HDF5_STATUS 0)
+    IF(HDF5_ROOT_USER)
+      MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} not found in ${HDF5_INCLUDE_PATHS}, check your HDF5 installation.")
+    ELSE(HDF5_ROOT_USER)
+      MESSAGE(STATUS "${HDF5_INCLUDE_TO_FIND} not found on system, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable.")
+    ENDIF(HDF5_ROOT_USER)
+  ENDIF(HDF5_INCLUDE_DIR)
+ENDIF(HDF5_STATUS)
+
+# ----
+
+IF(HDF5_STATUS)
+  IF(HDF5_ROOT_USER)
+    IF(WINDOWS)
+      SET(HDF5_LIB_PATHS ${HDF5_ROOT_USER}/dll ${HDF5_ROOT_USER}/lib)
+    ELSE(WINDOWS)
+      SET(HDF5_LIB_PATHS ${HDF5_ROOT_USER}/lib)
+    ENDIF(WINDOWS)
+  ELSE(HDF5_ROOT_USER)
+    SET(HDF5_LIB_PATHS)
+  ENDIF(HDF5_ROOT_USER)
+  IF(WINDOWS)
+    IF(CMAKE_BUILD_TYPE STREQUAL Release)
+      FIND_LIBRARY(HDF5_LIB hdf5dll PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+    ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+      FIND_LIBRARY(HDF5_LIB hdf5ddll PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+    ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+  ELSE(WINDOWS)
+    FIND_LIBRARY(HDF5_LIB hdf5 PATHS ${HDF5_LIB_PATHS} ${HDF5_FIND_PATHS_OPTION})
+  ENDIF(WINDOWS)
+  SET(HDF5_LIBS)
+  IF(HDF5_LIB)
+    SET(HDF5_LIBS ${HDF5_LIBS} ${HDF5_LIB})
+    MESSAGE(STATUS "hdf5 lib found: ${HDF5_LIB}")
+  ELSE(HDF5_LIB)
+    SET(HDF5_STATUS 0)
+    IF(HDF5_ROOT_USER)
+      MESSAGE(STATUS "hdf5 lib not found in ${HDF5_LIB_PATHS}, check your HDF5 installation.")
+    ELSE(HDF5_ROOT_USER)
+      MESSAGE(STATUS "hdf5 lib not found on system, try to use WITH_HDF5 option or HDF5_ROOT (or HDF5HOME) environment variable.")
+    ENDIF(HDF5_ROOT_USER)
+  ENDIF(HDF5_LIB)
+ENDIF(HDF5_STATUS)
+
+IF(HDF5_STATUS)
+  FILE(TO_NATIVE_PATH "${HDF5_INCLUDE_DIR}/H5public.h" HDF5_H5PUBLIC_FILE)
+  EXECUTE_PROCESS(
+    COMMAND ${PYTHON_EXECUTABLE} -c "import re,sys ; f=file(sys.argv[1]) ; s=f.read() ; c=re.compile('^#[\\s]*include[\\s]*\\\"(?P<nm>[A-Za-z0-9\\-]+\\.h)\\\"',re.M) ; sys.stdout.write(c.search(s).group('nm'))"
+            ${HDF5_H5PUBLIC_FILE}
+    OUTPUT_VARIABLE HDF5_H5PUBLIC_DEFS_FILE
+    )
+  FILE(TO_NATIVE_PATH "${HDF5_INCLUDE_DIR}/${HDF5_H5PUBLIC_DEFS_FILE}" HDF5_H5PUBLIC_DEFS_FILE)
+  EXECUTE_PROCESS(
+    COMMAND ${PYTHON_EXECUTABLE} -c "import re,sys ; f=file(sys.argv[1]) ; s=f.read() ; c=re.compile('^#[\\s]*define[\\s]+H5_HAVE_PARALLEL[\\s]+(?P<nm>[\\d]+)',re.M) ; m=c.search(s); exec('if m: sys.stdout.write(m.group(\\'nm\\'))') ; exec('if not m: sys.stdout.write(\\'0\\')')"
+            ${HDF5_H5PUBLIC_DEFS_FILE}
+    OUTPUT_VARIABLE HDF5_HAVE_PARALLEL
+    )
+  IF(HDF5_HAVE_PARALLEL)
+    MESSAGE(STATUS "hdf5 is parallel")
+    SET(HDF5_INCLUDES ${HDF5_INCLUDES} -I${MPI_INCLUDE_DIRS})       # to remove after "cmakeization"
+    SET(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS} ${MPI_INCLUDE_DIRS})
+    SET(HDF5_DEFINITIONS "${HDF5_DEFINITIONS} ${MPI_DEFINITIONS}")
+    SET(HDF5_LIBS ${HDF5_LIBS} ${MPI_LIBS})
+  ENDIF(HDF5_HAVE_PARALLEL)
+ENDIF(HDF5_STATUS)
+
+# ----
+
+IF(HDF5_STATUS)
+  SET(HDF5_CPPFLAGS ${HDF5_INCLUDES})# to be removed
+ELSE(HDF5_STATUS)
+  IF(HDF5_IS_MANDATORY)
+    MESSAGE(FATAL_ERROR "hdf5 not found ... mandatory ... abort")
+  ELSE(HDF5_IS_MANDATORY)
+    MESSAGE(STATUS "hdf5 not found ... optional ... disabled")
+  ENDIF(HDF5_IS_MANDATORY)
+ENDIF(HDF5_STATUS)
+
+# ------
+
+#SET(ZLIB_ROOT $ENV{ZLIB_ROOT})
+#STRING(LENGTH "${ZLIB_ROOT}" NB)
+#IF(${NB} GREATER 0)
+#  FIND_LIBRARY(ZLIB_LIBS zlib ${ZLIB_ROOT}/lib)
+#  SET(HDF5_LIBS ${HDF5_LIBS} ${ZLIB_LIBS})
+#ENDIF(${NB} GREATER 0)
+
+#SET(SZIP_ROOT $ENV{SZIP_ROOT})
+#STRING(LENGTH "${SZIP_ROOT}" NB)
+#IF(${NB} GREATER 0)
+#  FIND_LIBRARY(SZIP_LIBS szlib ${SZIP_ROOT}/lib)
+#  SET(HDF5_LIBS ${HDF5_LIBS} ${SZIP_LIBS})
+#ENDIF(${NB} GREATER 0)
+
+# ------
diff --git a/adm_local_without_kernel/cmake_files/FindLIBXML2.cmake b/adm_local_without_kernel/cmake_files/FindLIBXML2.cmake
new file mode 100755 (executable)
index 0000000..5eafb93
--- /dev/null
@@ -0,0 +1,158 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for libxml2 ...")
+
+# ------
+
+IF(LIBXML2_IS_MANDATORY STREQUAL 0)
+  SET(LIBXML2_IS_MANDATORY 0)
+  SET(LIBXML2_IS_OPTIONAL 1)
+ENDIF(LIBXML2_IS_MANDATORY STREQUAL 0)
+IF(LIBXML2_IS_OPTIONAL STREQUAL 0)
+  SET(LIBXML2_IS_MANDATORY 1)
+  SET(LIBXML2_IS_OPTIONAL 0)
+ENDIF(LIBXML2_IS_OPTIONAL STREQUAL 0)
+IF(NOT LIBXML2_IS_MANDATORY AND NOT LIBXML2_IS_OPTIONAL)
+  SET(LIBXML2_IS_MANDATORY 1)
+  SET(LIBXML2_IS_OPTIONAL 0)
+ENDIF(NOT LIBXML2_IS_MANDATORY AND NOT LIBXML2_IS_OPTIONAL)
+
+# ------
+
+SET(LIBXML2_STATUS 1)
+IF(WITHOUT_LIBXML2 OR WITH_LIBXML2 STREQUAL 0)
+  SET(LIBXML2_STATUS 0)
+  MESSAGE(STATUS "libxml2 disabled from command line.")
+ENDIF(WITHOUT_LIBXML2 OR WITH_LIBXML2 STREQUAL 0)
+
+# ------
+
+IF(LIBXML2_STATUS)
+  IF(WITH_LIBXML2)
+    SET(LIBXML2_ROOT_USER ${WITH_LIBXML2})
+  ELSE(WITH_LIBXML2)
+    SET(LIBXML2_ROOT_USER $ENV{LIBXML2_ROOT})
+    IF(NOT LIBXML2_ROOT_USER)
+      SET(LIBXML2_ROOT_USER $ENV{LIBXML_DIR})
+    ENDIF(NOT LIBXML2_ROOT_USER)
+  ENDIF(WITH_LIBXML2)
+ENDIF(LIBXML2_STATUS)
+
+# -----
+
+IF(LIBXML2_STATUS)
+  IF(LIBXML2_ROOT_USER)
+    SET(LIBXML2_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+  ELSE(LIBXML2_ROOT_USER)
+    SET(LIBXML2_FIND_PATHS_OPTION)
+  ENDIF(LIBXML2_ROOT_USER)
+ENDIF(LIBXML2_STATUS)
+
+# -----
+
+IF(LIBXML2_STATUS)
+  IF(LIBXML2_ROOT_USER)
+    IF(WINDOWS)
+      SET(LIBXML2_INCLUDE_PATHS ${LIBXML2_ROOT_USER}/include)
+    ELSE(WINDOWS)
+      SET(LIBXML2_INCLUDE_PATHS ${LIBXML2_ROOT_USER}/include/libxml2)
+    ENDIF(WINDOWS)
+  ELSE(LIBXML2_ROOT_USER)
+    SET(LIBXML2_INCLUDE_PATHS /usr/include/libxml2)
+  ENDIF(LIBXML2_ROOT_USER)
+  SET(LIBXML2_INCLUDE_TO_FIND libxml/parser.h)
+  FIND_PATH(LIBXML2_INCLUDE_DIR ${LIBXML2_INCLUDE_TO_FIND} PATHS ${LIBXML2_INCLUDE_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+  IF(LIBXML2_INCLUDE_DIR)
+    SET(LIBXML2_INCLUDES -I${LIBXML2_INCLUDE_DIR})# to remove
+    SET(LIBXML_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
+    MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} found in ${LIBXML2_INCLUDE_DIR}")
+  ELSE(LIBXML2_INCLUDE_DIR)
+    SET(LIBXML2_STATUS 0)
+    IF(LIBXML2_ROOT_USER)
+      MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} not found in ${LIBXML2_INCLUDE_PATHS}, check your LIBXML2 installation.")
+    ELSE(LIBXML2_ROOT_USER)
+      MESSAGE(STATUS "${LIBXML2_INCLUDE_TO_FIND} not found on system, try to use WITH_LIBXML2 option or LIBXML2_ROOT environment variable.")
+    ENDIF(LIBXML2_ROOT_USER)
+  ENDIF(LIBXML2_INCLUDE_DIR)
+ENDIF(LIBXML2_STATUS)
+
+# ----
+
+IF(LIBXML2_STATUS)
+  IF(LIBXML2_ROOT_USER)
+    SET(LIBXML2_LIB_PATHS ${LIBXML2_ROOT_USER}/lib)
+  ELSE(LIBXML2_ROOT_USER)
+    SET(LIBXML2_LIB_PATHS)
+  ENDIF(LIBXML2_ROOT_USER)
+ENDIF(LIBXML2_STATUS)
+
+IF(LIBXML2_STATUS)
+  IF(WINDOWS)
+    FIND_LIBRARY(LIBXML2_LIB libxml2 PATHS ${LIBXML2_LIB_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+  ELSE(WINDOWS)
+    FIND_LIBRARY(LIBXML2_LIB xml2 PATHS ${LIBXML2_LIB_PATHS} ${LIBXML2_FIND_PATHS_OPTION})
+  ENDIF(WINDOWS)
+  SET(LIBXML2_LIBS)
+  IF(LIBXML2_LIB)
+    SET(LIBXML2_LIBS ${LIBXML2_LIBS} ${LIBXML2_LIB})
+    MESSAGE(STATUS "libxml2 lib found: ${LIBXML2_LIB}")
+  ELSE(LIBXML2_LIB)
+    SET(LIBXML2_STATUS 0)
+    IF(LIBXML2_ROOT_USER)
+      MESSAGE(STATUS "libxml2 lib not found in ${LIBXML2_LIB_PATHS}, check your LIBXML2 installation.")
+    ELSE(LIBXML2_ROOT_USER)
+      MESSAGE(STATUS "libxml2 lib not found on system, try to use WITH_LIBXML2 option or LIBXML2_ROOT environment variable.")
+    ENDIF(LIBXML2_ROOT_USER)
+  ENDIF(LIBXML2_LIB)
+ENDIF(LIBXML2_STATUS)
+
+# ----
+
+IF(WINDOWS)
+  SET(ICONV_ROOT $ENV{ICONV_ROOT})
+  IF(ICONV_ROOT)
+    FIND_PATH(ICONV_INCLUDE_DIR iconv.h ${ICONV_ROOT}/include)
+    FIND_LIBRARY(ICONV_LIBS iconv ${ICONV_ROOT}/lib)
+    SET(LIBXML2_INCLUDES ${LIBXML2_INCLUDES} -I${ICONV_INCLUDE_DIR})# to remove
+    SET(LIBXML_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIRS} ${ICONV_INCLUDE_DIR})
+    SET(LIBXML2_LIBS ${LIBXML2_LIBS} ${ICONV_LIBS})
+  ENDIF(ICONV_ROOT)
+ENDIF(WINDOWS)
+
+# ------
+IF(LIBXML2_STATUS)
+  SET(LIBXML_INCLUDES ${LIBXML2_INCLUDES})# to remove
+  SET(LIBXML_CPPFLAGS ${LIBXML2_INCLUDES})
+  SET(LIBXML_DEFINITIONS)
+  SET(LIBXML_LIBS ${LIBXML2_LIBS})
+ELSE(LIBXML2_STATUS)
+  IF(LIBXML2_IS_MANDATORY)
+    MESSAGE(FATAL_ERROR "libxml2 not found ... mandatory ... abort")
+  ELSE(LIBXML2_IS_MANDATORY)
+    MESSAGE(STATUS "libxml2 not found ... optional ... disabled")
+  ENDIF(LIBXML2_IS_MANDATORY)
+ENDIF(LIBXML2_STATUS)
+
+# ------
index 27aabea54b0195af19f62f90c521774a7e6112a3..8818c5fac4c118208eae8f68ae5c96fc86351fc4 100644 (file)
@@ -85,7 +85,8 @@ IF(MPI_STATUS)
   MESSAGE(STATUS "MPI include ${MPI_INCLUDE_TO_FIND} found in ${MPI_INCLUDES}")
 
   SET(MPI_INCLUDE_DIR ${MPI_INCLUDES})
-  SET(MPI_INCLUDES -I${MPI_INCLUDES})
+  SET(MPI_INCLUDE_DIRS ${MPI_INCLUDES})
+  SET(MPI_INCLUDES -I${MPI_INCLUDES})# to remove
   
   # ------
   
@@ -93,27 +94,36 @@ IF(MPI_STATUS)
     FIND_LIBRARY(MPI_LIB_THREAD libboost_thread-vc90-mt-gd-1_35 ${MPI_ROOT}/lib)
     FIND_LIBRARY(MPI_LIB_DATE_TIME libboost_date_time-vc90-mt-gd-1_35 ${MPI_ROOT}/lib)
   ELSE(WINDOWS)
+    SET(MPI_LIB_FOUND 0)
     FOREACH(lib mpi_cxx mpi mpich)
-      FIND_LIBRARY(MPI_LIB ${lib} ${MPI_ROOT}/lib)
-      IF(MPI_LIB)
-       IF(lib STREQUAL mpi_cxx)
-         SET(MPI_INCLUDES ${MPI_INCLUDES} -DOMPI_IGNORE_CXX_SEEK)
-       ENDIF(lib STREQUAL mpi_cxx)
-       IF(lib STREQUAL mpich)
-         SET(MPI_INCLUDES ${MPI_INCLUDES} -DMPICH_IGNORE_CXX_SEEK)
-       ENDIF(lib STREQUAL mpich)
-       BREAK()
-      ENDIF(MPI_LIB)
+      FIND_LIBRARY(MPI_LIB_${lib} ${lib} ${MPI_ROOT}/lib)
+      IF(MPI_LIB_${lib})
+        SET(MPI_LIB_FOUND 1)
+      ENDIF(MPI_LIB_${lib})
     ENDFOREACH(lib mpi_cxx mpi mpich)
-    IF(NOT MPI_LIB)
+    IF(MPI_LIB_FOUND)
+      IF(MPI_LIB_mpi_cxx AND MPI_LIB_mpi)
+        SET(MPI_LIBS ${MPI_LIB_mpi_cxx} ${MPI_LIB_mpi})
+        SET(MPI_INCLUDES ${MPI_INCLUDES} -DOMPI_IGNORE_CXX_SEEK)# to remove
+       SET(MPI_DEFINITIONS -DOMPI_IGNORE_CXX_SEEK)
+      ELSEIF(MPI_LIB_mpi_cxx)
+        SET(MPI_LIBS ${MPI_LIB_mpi_cxx})
+        SET(MPI_INCLUDES ${MPI_INCLUDES} -DOMPI_IGNORE_CXX_SEEK)# to remove
+       SET(MPI_DEFINITIONS -DOMPI_IGNORE_CXX_SEEK)
+      ELSEIF(MPI_LIB_mpi)
+        SET(MPI_LIBS ${MPI_LIB_mpi})
+        SET(MPI_INCLUDES ${MPI_INCLUDES} -DOMPI_IGNORE_CXX_SEEK)# to remove
+       SET(MPI_DEFINITIONS -DOMPI_IGNORE_CXX_SEEK)
+      ELSEIF(MPI_LIB_mpich)
+        SET(MPI_LIBS ${MPI_LIB_mpich})
+        SET(MPI_INCLUDES ${MPI_INCLUDES} -DMPICH_IGNORE_CXX_SEEK)# to remove
+       SET(MPI_DEFINITIONS -DMPICH_IGNORE_CXX_SEEK)
+      ENDIF()
+    ELSE(MPI_LIB_FOUND)
       MESSAGE(STATUS "MPI lib not found, check your MPI installation.")
       SET(MPI_STATUS 0)
-    ENDIF(NOT MPI_LIB)
-    MESSAGE(STATUS "MPI lib : ${MPI_LIB}")
+    ENDIF(MPI_LIB_FOUND)
   ENDIF(WINDOWS)
-  
-  SET(MPI_LIBS ${MPI_LIB})
-  
   MESSAGE(STATUS "MPI libs: ${MPI_LIBS}")
 ENDIF(MPI_STATUS)
   
@@ -125,7 +135,8 @@ IF(MPI_STATUS)
   CHECK_SYMBOL_EXISTS(MPI_Publish_name ${MPI_INCLUDE_DIR}/mpi.h MPI2_IS_OK)
   IF(MPI2_IS_OK)
     MESSAGE(STATUS "Your mpi implemtentation is compatible with mpi2 ... adding -DHAVE_MPI2")
-    SET(MPI_INCLUDES ${MPI_INCLUDES} -DHAVE_MPI2)
+    SET(MPI_INCLUDES ${MPI_INCLUDES} -DHAVE_MPI2)# to remove
+    SET(MPI_DEFINITIONS "${MPI_DEFINITIONS} -DHAVE_MPI2")
   ENDIF(MPI2_IS_OK)
 ENDIF(MPI_STATUS)
 
index b6a36caca27d8c313f214e38f108eaa3a41165c3..636ad92f14137a80f15248efce1f4ffca2409f91 100644 (file)
@@ -79,29 +79,47 @@ IF(CMAKE_BUILD_TYPE)
   ENDIF(WINDOWS)
 ENDIF(CMAKE_BUILD_TYPE)
 
-SET(PLATFORM_CPPFLAGS)
-SET(PLATFORM_LDFLAGS)
-SET(PLATFORM_LIBADD)
+SET(PLATFORM_CPPFLAGS) # to be removed
+SET(PLATFORM_LDFLAGS) # to be removed
+SET(PLATFORM_LIBADD) # to be removed
+
+SET(PLATFORM_LIBS)
+SET(PLATFORM_DEFINITIONS)
+
 IF(WINDOWS)
-  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} /W0)
-  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_CRT_SECURE_NO_WARNINGS)  # To disable windows warnings for strcpy, fopen, ...
-  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_SCL_SECURE_NO_WARNINGS)  # To disable windows warnings std::copy, std::transform, ...
-  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DWNT)
-  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DPPRO_NT) # For medfile
-  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_USE_MATH_DEFINES) # At least for MEDMEM
-  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_WIN32_WINNT=0x0500) # Windows 2000 or later API is required
-  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Ws2_32.lib)
-  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Userenv.lib) # At least for GEOM suit
+  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} /W0) # to be removed
+  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_CRT_SECURE_NO_WARNINGS)  # To disable windows warnings for strcpy, fopen, ... # to be removed
+  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_SCL_SECURE_NO_WARNINGS)  # To disable windows warnings std::copy, std::transform, ... # to be removed
+  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DWNT) # to be removed
+  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DPPRO_NT) # For medfile # to be removed
+  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_USE_MATH_DEFINES) # At least for MEDMEM # to be removed
+  SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -D_WIN32_WINNT=0x0500) # Windows 2000 or later API is required # to be removed
+  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Ws2_32.lib) # to be removed
+  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Userenv.lib) # At least for GEOM suit # to be removed
+
+  SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} /W0")
+  SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -D_CRT_SECURE_NO_WARNINGS")  # To disable windows warnings for strcpy, fopen, ...
+  SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -D_SCL_SECURE_NO_WARNINGS")  # To disable windows warnings std::copy, std::transform, ...
+  SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -DWNT")
+  SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -DPPRO_NT") # For medfile 
+  SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -D_USE_MATH_DEFINES") # At least for MEDMEM
+  SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -D_WIN32_WINNT=0x0500") # Windows 2000 or later API is required
+
+  SET(PLATFORM_LIBS ${PLATFORM_LIBS} Ws2_32.lib)
+  SET(PLATFORM_LIBS ${PLATFORM_LIBS} Userenv.lib) # At least for GEOM suit
+
 ELSE(WINDOWS)
   # SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wparentheses)
   # SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wreturn-type)
   # SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wmissing-declarations)
   # SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wunused)
   # SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -Wall)
-  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} -ldl)
+  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} -ldl) # to be removed
+  SET(PLATFORM_LIBS ${PLATFORM_LIBS} -ldl)
 ENDIF(WINDOWS)
 
-SET(PLATFORM_CPPFLAGS ${PLATFORM_CPPFLAGS} -DSIZEOF_FORTRAN_INTEGER=4 -DSIZEOF_LONG=${CMAKE_SIZEOF_VOID_P} -DSIZEOF_INT=4)
+SET(PLATFORM_CPPFLAGS "${PLATFORM_CPPFLAGS} -DSIZEOF_FORTRAN_INTEGER=4 -DSIZEOF_LONG=${CMAKE_SIZEOF_VOID_P} -DSIZEOF_INT=4") # to be removed
+SET(PLATFORM_DEFINITIONS "${PLATFORM_DEFINITIONS} -DSIZEOF_FORTRAN_INTEGER=4 -DSIZEOF_LONG=${CMAKE_SIZEOF_VOID_P} -DSIZEOF_INT=4")
 
 SET(COMPILATION_WITH_CMAKE ON)
 
diff --git a/adm_local_without_kernel/cmake_files/FindPTHREADS.cmake b/adm_local_without_kernel/cmake_files/FindPTHREADS.cmake
new file mode 100755 (executable)
index 0000000..ce8231e
--- /dev/null
@@ -0,0 +1,139 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for pthreads ...")
+
+# ------
+
+IF(PTHREADS_IS_MANDATORY STREQUAL 0)
+  SET(PTHREADS_IS_MANDATORY 0)
+  SET(PTHREADS_IS_OPTIONAL 1)
+ENDIF(PTHREADS_IS_MANDATORY STREQUAL 0)
+IF(PTHREADS_IS_OPTIONAL STREQUAL 0)
+  SET(PTHREADS_IS_MANDATORY 1)
+  SET(PTHREADS_IS_OPTIONAL 0)
+ENDIF(PTHREADS_IS_OPTIONAL STREQUAL 0)
+IF(NOT PTHREADS_IS_MANDATORY AND NOT PTHREADS_IS_OPTIONAL)
+  SET(PTHREADS_IS_MANDATORY 1)
+  SET(PTHREADS_IS_OPTIONAL 0)
+ENDIF(NOT PTHREADS_IS_MANDATORY AND NOT PTHREADS_IS_OPTIONAL)
+
+# ------
+
+SET(PTHREADS_STATUS 1)
+IF(WITHOUT_PTHREADS OR WITH_PTHREADS STREQUAL 0)
+  SET(PTHREADS_STATUS 0)
+  MESSAGE(STATUS "pthreads disabled from command line.")
+ENDIF(WITHOUT_PTHREADS OR WITH_PTHREADS STREQUAL 0)
+
+# ------
+
+IF(PTHREADS_STATUS)
+  IF(WITH_PTHREADS)
+    SET(PTHREADS_ROOT_USER ${WITH_PTHREADS})
+  ELSE(WITH_PTHREADS)
+    SET(PTHREADS_ROOT_USER $ENV{PTHREADS_ROOT})
+  ENDIF(WITH_PTHREADS)
+ENDIF(PTHREADS_STATUS)
+
+# -----
+
+IF(PTHREADS_STATUS)
+  IF(PTHREADS_ROOT_USER)
+    SET(PTHREADS_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+  ELSE(PTHREADS_ROOT_USER)
+    SET(PTHREADS_FIND_PATHS_OPTION)
+  ENDIF(PTHREADS_ROOT_USER)
+ENDIF(PTHREADS_STATUS)
+
+# -----
+
+IF(PTHREADS_STATUS)
+  IF(PTHREADS_ROOT_USER)
+    SET(PTHREADS_INCLUDE_PATHS ${PTHREADS_ROOT_USER}/include)
+  ELSE(PTHREADS_ROOT_USER)
+    SET(PTHREADS_INCLUDE_PATHS)
+  ENDIF(PTHREADS_ROOT_USER)
+  SET(PTHREADS_INCLUDE_TO_FIND pthread.h)
+  FIND_PATH(PTHREADS_INCLUDE_DIR ${PTHREADS_INCLUDE_TO_FIND} PATHS ${PTHREADS_INCLUDE_PATHS} ${PTHREADS_FIND_PATHS_OPTION})
+  IF(PTHREADS_INCLUDE_DIR)
+    IF(PTHREADS_ROOT_USER)
+      SET(PTHREAD_CFLAGS -I${PTHREADS_INCLUDE_DIR}) # to remove
+      SET(PTHREAD_INCLUDE_DIRS ${PTHREADS_INCLUDE_DIR})
+    ENDIF(PTHREADS_ROOT_USER)
+    MESSAGE(STATUS "${PTHREADS_INCLUDE_TO_FIND} found in ${PTHREADS_INCLUDE_DIR}")
+  ELSE(PTHREADS_INCLUDE_DIR)
+    SET(PTHREADS_STATUS 0)
+    IF(PTHREADS_ROOT_USER)
+      MESSAGE(STATUS "${PTHREADS_INCLUDE_TO_FIND} not found in ${PTHREADS_INCLUDE_PATHS}, check your PTHREADS installation.")
+    ELSE(PTHREADS_ROOT_USER)
+      MESSAGE(STATUS "${PTHREADS_INCLUDE_TO_FIND} not found on system, try to use WITH_PTHREADS option or PTHREADS_ROOT environment variable.")
+    ENDIF(PTHREADS_ROOT_USER)
+  ENDIF(PTHREADS_INCLUDE_DIR)
+ENDIF(PTHREADS_STATUS)
+
+# ----
+
+IF(PTHREADS_STATUS)
+  IF(PTHREADS_ROOT_USER)
+    SET(PTHREADS_LIB_PATHS ${PTHREADS_ROOT_USER}/lib)
+  ELSE(PTHREADS_ROOT_USER)
+    SET(PTHREADS_LIB_PATHS)
+  ENDIF(PTHREADS_ROOT_USER)
+ENDIF(PTHREADS_STATUS)
+
+IF(PTHREADS_STATUS)
+  IF(WINDOWS)
+    IF(CMAKE_BUILD_TYPE STREQUAL Release)
+      FIND_LIBRARY(PTHREAD_LIB pthreadVSE2 pthreadVC2 PATHS ${PTHREADS_LIB_PATHS} ${PTHREADS_FIND_PATHS_OPTION})
+    ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+      FIND_LIBRARY(PTHREAD_LIB pthreadVSE2d pthreadVC2d PATHS ${PTHREADS_LIB_PATHS} ${PTHREADS_FIND_PATHS_OPTION})
+    ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+  ELSE(WINDOWS)
+    FIND_LIBRARY(PTHREAD_LIB pthread PATHS ${PTHREADS_LIB_PATHS} ${PTHREADS_FIND_PATHS_OPTION})
+  ENDIF(WINDOWS)
+  SET(PTHREAD_LIBS)
+  IF(PTHREAD_LIB)
+    SET(PTHREAD_LIBS ${PTHREAD_LIBS} ${PTHREAD_LIB})
+    MESSAGE(STATUS "pthread lib found: ${PTHREAD_LIB}")
+  ELSE(PTHREAD_LIB)
+    SET(PTHREADS_STATUS 0)
+    IF(PTHREADS_ROOT_USER)
+      MESSAGE(STATUS "pthread lib not found in ${PTHREADS_LIB_PATHS}, check your PTHREADS installation.")
+    ELSE(PTHREADS_ROOT_USER)
+      MESSAGE(STATUS "pthread lib not found on system, try to use WITH_PTHREADS option or PTHREADS_ROOT environment variable.")
+    ENDIF(PTHREADS_ROOT_USER)
+  ENDIF(PTHREAD_LIB)
+ENDIF(PTHREADS_STATUS)
+
+# ----
+
+IF(PTHREADS_STATUS)
+ELSE(PTHREADS_STATUS)
+  IF(PTHREADS_IS_MANDATORY)
+    MESSAGE(FATAL_ERROR "pthreads not found ... mandatory ... abort")
+  ELSE(PTHREADS_IS_MANDATORY)
+    MESSAGE(STATUS "pthreads not found ... optional ... disabled")
+  ENDIF(PTHREADS_IS_MANDATORY)
+ENDIF(PTHREADS_STATUS)
diff --git a/adm_local_without_kernel/cmake_files/FindPYTHON.cmake b/adm_local_without_kernel/cmake_files/FindPYTHON.cmake
new file mode 100755 (executable)
index 0000000..df658fb
--- /dev/null
@@ -0,0 +1,236 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for python ...")
+
+# ------
+
+IF(PYTHON_IS_MANDATORY STREQUAL 0)
+  SET(PYTHON_IS_MANDATORY 0)
+  SET(PYTHON_IS_OPTIONAL 1)
+ENDIF(PYTHON_IS_MANDATORY STREQUAL 0)
+IF(PYTHON_IS_OPTIONAL STREQUAL 0)
+  SET(PYTHON_IS_MANDATORY 1)
+  SET(PYTHON_IS_OPTIONAL 0)
+ENDIF(PYTHON_IS_OPTIONAL STREQUAL 0)
+IF(NOT PYTHON_IS_MANDATORY AND NOT PYTHON_IS_OPTIONAL)
+  SET(PYTHON_IS_MANDATORY 1)
+  SET(PYTHON_IS_OPTIONAL 0)
+ENDIF(NOT PYTHON_IS_MANDATORY AND NOT PYTHON_IS_OPTIONAL)
+
+# ------
+
+SET(PYTHON_STATUS 1)
+IF(WITHOUT_PYTHON OR WITH_PYTHON STREQUAL 0)
+  SET(PYTHON_STATUS 0)
+  MESSAGE(STATUS "python disabled from command line.")
+ENDIF(WITHOUT_PYTHON OR WITH_PYTHON STREQUAL 0)
+
+# ------
+
+IF(PYTHON_STATUS)
+  IF(WITH_PYTHON)
+    SET(PYTHON_ROOT_USER ${WITH_PYTHON})
+  ENDIF(WITH_PYTHON)
+  IF(NOT PYTHON_ROOT_USER)
+    SET(PYTHON_ROOT_USER $ENV{PYTHON_ROOT})
+  ENDIF(NOT PYTHON_ROOT_USER)
+  IF(NOT PYTHON_ROOT_USER)
+    SET(PYTHON_ROOT_USER $ENV{PYTHONHOME})
+  ENDIF(NOT PYTHON_ROOT_USER)
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+  IF(PYTHON_ROOT_USER)
+    SET(PYTHON_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+  ELSE(PYTHON_ROOT_USER)
+    SET(PYTHON_FIND_PATHS_OPTION)
+  ENDIF(PYTHON_ROOT_USER)
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+  IF(WINDOWS)
+    IF(CMAKE_BUILD_TYPE STREQUAL Release)
+      SET(PYTHON_EXECUTABLE_TO_FIND python)
+    ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+      SET(PYTHON_EXECUTABLE_TO_FIND python_d)
+    ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+  ELSE(WINDOWS)
+    SET(PYTHON_EXECUTABLE_TO_FIND python)
+  ENDIF(WINDOWS)
+  IF(NOT PYTHON_ROOT_USER)
+    SET(PYTHON_EXECUTABLE_PATHS)
+  ELSE(NOT PYTHON_ROOT_USER)
+    IF(WINDOWS)
+      SET(PYTHON_EXECUTABLE_PATHS ${PYTHON_ROOT_USER})
+    ELSE(WINDOWS)
+      SET(PYTHON_EXECUTABLE_PATHS ${PYTHON_ROOT_USER}/bin)
+    ENDIF(WINDOWS)
+  ENDIF(NOT PYTHON_ROOT_USER)
+  FIND_PROGRAM(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE_TO_FIND} PATHS ${PYTHON_EXECUTABLE_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+  IF(PYTHON_EXECUTABLE)
+    MESSAGE(STATUS "python found: ${PYTHON_EXECUTABLE}")
+    IF(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
+    ELSE(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
+      SET(PYTHON_ROOT_USER ${PYTHON_EXECUTABLE})
+      GET_FILENAME_COMPONENT(PYTHON_ROOT_USER ${PYTHON_ROOT_USER} PATH)
+      IF(NOT WINDOWS)
+       GET_FILENAME_COMPONENT(PYTHON_ROOT_USER ${PYTHON_ROOT_USER} PATH)
+      ENDIF(NOT WINDOWS)
+    ENDIF(PYTHON_EXECUTABLE STREQUAL /usr/bin/python)
+  ELSE(PYTHON_EXECUTABLE)
+    IF(PYTHON_ROOT_USER)
+      MESSAGE(STATUS "${PYTHON_EXECUTABLE_TO_FIND} not found in ${PYTHON_EXECUTABLE_PATHS}, check your PYTHON installation.")
+    ELSE(PYTHON_ROOT_USER)
+      MESSAGE(STATUS "${PYTHON_EXECUTABLE_TO_FIND} not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
+    ENDIF(PYTHON_ROOT_USER)
+    SET(PYTHON_STATUS 0)
+  ENDIF(PYTHON_EXECUTABLE)
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+  EXECUTE_PROCESS(
+    COMMAND ${PYTHON_EXECUTABLE} -c "import sys; sys.stdout.write(sys.version[:3])"
+    OUTPUT_VARIABLE PYTHON_VERSION
+    )
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+  IF(PYTHON_ROOT_USER)
+    SET(PYTHON_FIND_PATHS_OPTION NO_DEFAULT_PATH)
+  ELSE(PYTHON_ROOT_USER)
+    SET(PYTHON_FIND_PATHS_OPTION)
+  ENDIF(PYTHON_ROOT_USER)
+ENDIF(PYTHON_STATUS)
+
+# ------
+
+IF(PYTHON_STATUS)
+  IF(PYTHON_ROOT_USER)
+    SET(PYTHON_INCLUDE_PATHS ${PYTHON_ROOT_USER}/include ${PYTHON_ROOT_USER}/include/python${PYTHON_VERSION})
+  ELSE(PYTHON_ROOT_USER)
+    SET(PYTHON_INCLUDE_PATHS /usr/include/python${PYTHON_VERSION})
+  ENDIF(PYTHON_ROOT_USER)
+  SET(PYTHON_INCLUDE_TO_FIND Python.h)
+  FIND_PATH(PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_TO_FIND} PATHS ${PYTHON_INCLUDE_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+  SET(PYTHON_DEFINITIONS)
+  IF(PYTHON_INCLUDE_DIR)
+    SET(PYTHON_INCLUDES -I${PYTHON_INCLUDE_DIR})# to remove
+    SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIR})
+    IF(WINDOWS)
+      IF(CMAKE_BUILD_TYPE STREQUAL Release)
+      ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+       SET(PYTHON_INCLUDES ${PYTHON_INCLUDES} -DHAVE_DEBUG_PYTHON)# to remove
+       SET(PYTHON_DEFINITIONS "-DHAVE_DEBUG_PYTHON")
+      ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+    ENDIF(WINDOWS)
+    MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} found in ${PYTHON_INCLUDE_DIR}")
+  ELSE(PYTHON_INCLUDE_DIR)
+    SET(PYTHON_STATUS 0)
+    IF(PYTHON_ROOT_USER)
+      MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} not found in ${PYTHON_INCLUDE_PATHS}, check your PYTHON installation.")
+    ELSE(PYTHON_ROOT_USER)
+      MESSAGE(STATUS "${PYTHON_INCLUDE_TO_FIND} not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
+    ENDIF(PYTHON_ROOT_USER)
+  ENDIF(PYTHON_INCLUDE_DIR)
+ENDIF(PYTHON_STATUS)
+
+# ----
+
+IF(PYTHON_STATUS)
+  IF(PYTHON_ROOT_USER)
+    IF(WINDOWS)
+      SET(PYTHON_LIB_PATHS ${PYTHON_ROOT_USER}/libs)
+    ELSE(WINDOWS)
+      SET(PYTHON_LIB_PATHS ${PYTHON_ROOT_USER}/lib ${PYTHON_ROOT_USER}/lib/python${PYTHON_VERSION}/config)
+    ENDIF(WINDOWS)
+  ELSE(PYTHON_ROOT_USER)
+    SET(PYTHON_LIB_PATHS)
+  ENDIF(PYTHON_ROOT_USER)
+  IF(WINDOWS)
+    STRING(REPLACE "." "" PYTHON_VERSION_WITHOUT_DOT ${PYTHON_VERSION})
+    IF(CMAKE_BUILD_TYPE STREQUAL Release)
+      FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION_WITHOUT_DOT} PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+    ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
+      FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION_WITHOUT_DOT}_d PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+    ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
+  ELSE(WINDOWS)
+    FIND_LIBRARY(PYTHON_LIB python${PYTHON_VERSION} PATHS ${PYTHON_LIB_PATHS} ${PYTHON_FIND_PATHS_OPTION})
+  ENDIF(WINDOWS)
+  SET(PYTHON_LIBS)
+  IF(PYTHON_LIB)
+    SET(PYTHON_LIBS ${PYTHON_LIBS} ${PYTHON_LIB})
+    MESSAGE(STATUS "python lib found: ${PYTHON_LIB}")
+  ELSE(PYTHON_LIB)
+    SET(PYTHON_STATUS 0)
+    IF(PYTHON_ROOT_USER)
+      MESSAGE(STATUS "python lib not found in ${PYTHON_LIB_PATHS}, check your PYTHON installation.")
+    ELSE(PYTHON_ROOT_USER)
+      MESSAGE(STATUS "python lib not found on system, try to use WITH_PYTHON option or PYTHON_ROOT environment variable.")
+    ENDIF(PYTHON_ROOT_USER)
+  ENDIF(PYTHON_LIB)
+ENDIF(PYTHON_STATUS)
+
+# ----
+
+SET(NUMPY_STATUS 0)
+IF(PYTHON_STATUS)
+  EXECUTE_PROCESS(
+    COMMAND ${PYTHON_EXECUTABLE} -c "import numpy ; import sys ; sys.stdout.write(numpy.get_include())"
+    OUTPUT_VARIABLE NUMPY_INCLUDE_DIR
+    ERROR_QUIET
+    )
+  IF(NUMPY_INCLUDE_DIR)
+    SET(NUMPY_STATUS 1)
+  ENDIF(NUMPY_INCLUDE_DIR)
+  IF(NUMPY_STATUS)
+    SET(PYTHON_INCLUDES ${PYTHON_INCLUDES} -DWITH_NUMPY -I${NUMPY_INCLUDE_DIR})# to remove
+    SET(PYTHON_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS} ${NUMPY_INCLUDE_DIR})
+    SET(PYTHON_DEFINITIONS "${PYTHON_DEFINITIONS} -DWITH_NUMPY")
+    MESSAGE(STATUS "numpy found : ${NUMPY_INCLUDE_DIR}")
+  ELSE(NUMPY_STATUS)
+    MESSAGE(STATUS "numpy not found")
+  ENDIF(NUMPY_STATUS)
+ENDIF(PYTHON_STATUS)
+
+# ----
+
+IF(PYTHON_STATUS)
+  SET(PYTHON_CPPFLAGS ${PYTHON_INCLUDES})# to remove
+  SET(PYLOGLEVEL WARNING)
+ELSE(PYTHON_STATUS)
+  IF(PYTHON_IS_MANDATORY)
+    MESSAGE(FATAL_ERROR "python not found ... mandatory ... abort")
+  ELSE(PYTHON_IS_MANDATORY)
+    MESSAGE(STATUS "python not found ... optional ... disabled")
+  ENDIF(PYTHON_IS_MANDATORY)
+ENDIF(PYTHON_STATUS)
diff --git a/adm_local_without_kernel/cmake_files/FindSWIG.cmake b/adm_local_without_kernel/cmake_files/FindSWIG.cmake
new file mode 100755 (executable)
index 0000000..ca6aa1f
--- /dev/null
@@ -0,0 +1,99 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# ------
+
+MESSAGE(STATUS "Check for swig ...")
+
+# ------
+
+IF(SWIG_IS_MANDATORY STREQUAL 0)
+  SET(SWIG_IS_MANDATORY 0)
+  SET(SWIG_IS_OPTIONAL 1)
+ENDIF(SWIG_IS_MANDATORY STREQUAL 0)
+IF(SWIG_IS_OPTIONAL STREQUAL 0)
+  SET(SWIG_IS_MANDATORY 1)
+  SET(SWIG_IS_OPTIONAL 0)
+ENDIF(SWIG_IS_OPTIONAL STREQUAL 0)
+IF(NOT SWIG_IS_MANDATORY AND NOT SWIG_IS_OPTIONAL)
+  SET(SWIG_IS_MANDATORY 1)
+  SET(SWIG_IS_OPTIONAL 0)
+ENDIF(NOT SWIG_IS_MANDATORY AND NOT SWIG_IS_OPTIONAL)
+
+# ------
+
+SET(SWIG_STATUS 1)
+IF(WITHOUT_SWIG OR WITH_SWIG STREQUAL 0)
+  SET(SWIG_STATUS 0)
+  MESSAGE(STATUS "swig disabled from command line.")
+ENDIF(WITHOUT_SWIG OR WITH_SWIG STREQUAL 0)
+
+# ------
+
+IF(SWIG_STATUS)
+  IF(WITH_SWIG)
+    SET(SWIG_ROOT_USER ${WITH_SWIG})
+  ENDIF(WITH_SWIG)
+  IF(NOT SWIG_ROOT_USER)
+    SET(SWIG_ROOT_USER $ENV{SWIG_ROOT})
+  ENDIF(NOT SWIG_ROOT_USER)
+  IF(NOT SWIG_ROOT_USER)
+    SET(SWIG_ROOT_USER $ENV{SWIGHOME})
+  ENDIF(NOT SWIG_ROOT_USER)
+ENDIF(SWIG_STATUS)
+
+# ------
+
+IF(SWIG_STATUS)
+  SET(SWIG_EXECUTABLE_TO_FIND swig)
+  IF(SWIG_ROOT_USER)
+    FIND_PROGRAM(SWIG_EXECUTABLE ${SWIG_EXECUTABLE_TO_FIND} PATHS ${SWIG_ROOT_USER}/bin NO_DEFAULT_PATH)
+  ELSE(SWIG_ROOT_USER)
+    FIND_PROGRAM(SWIG_EXECUTABLE ${SWIG_EXECUTABLE_TO_FIND})
+  ENDIF(SWIG_ROOT_USER)
+  IF(SWIG_EXECUTABLE)
+    MESSAGE(STATUS "${SWIG_EXECUTABLE_TO_FIND} found: ${SWIG_EXECUTABLE}")
+  ELSE(SWIG_EXECUTABLE)
+    MESSAGE(STATUS "${SWIG_EXECUTABLE_TO_FIND} not found, try to use WITH_SWIG option or SWIG_ROOT (or SWIGHOME) environment variable")
+    SET(SWIG_STATUS 0)
+  ENDIF(SWIG_EXECUTABLE)
+ENDIF(SWIG_STATUS)
+
+# ----
+
+IF(SWIG_STATUS)
+  SET(SWIG_FLAGS -c++ -python -shadow)
+ELSE(SWIG_STATUS)
+  IF(SWIG_IS_MANDATORY)
+    MESSAGE(FATAL_ERROR "swig not found ... mandatory ... abort")
+  ELSE(SWIG_IS_MANDATORY)
+    MESSAGE(STATUS "swig not found ... optional ... disabled")
+  ENDIF(SWIG_IS_MANDATORY)
+ENDIF(SWIG_STATUS)
+
+# ----
+
+IF(NUMPY_STATUS)
+  SET(SWIG_FLAGS ${SWIG_FLAGS} -DWITH_NUMPY=WITH_NUMPY)
+ENDIF(NUMPY_STATUS)
+
+# ----
diff --git a/adm_local_without_kernel/cmake_files/InstallAndCompilePythonFile.cmake b/adm_local_without_kernel/cmake_files/InstallAndCompilePythonFile.cmake
new file mode 100755 (executable)
index 0000000..8836d00
--- /dev/null
@@ -0,0 +1,33 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+MACRO(INSTALL_AND_COMPILE_PYTHON_FILE PYFILE2COMPINST PYFILELOC)
+  INSTALL(CODE "SET(PYTHON_FILE ${f})")
+  FOREACH(input ${PYFILE2COMPINST})
+    GET_FILENAME_COMPONENT(inputname ${input} NAME)
+    INSTALL(FILES ${input} DESTINATION ${CMAKE_INSTALL_PREFIX}/${PYFILELOC})
+    INSTALL(CODE "MESSAGE(STATUS \"py compiling ${CMAKE_INSTALL_PREFIX}/${PYFILELOC}/${inputname}\")")
+    INSTALL(CODE "SET(CMD \"import py_compile ; py_compile.compile('${CMAKE_INSTALL_PREFIX}/${PYFILELOC}/${inputname}')\")")
+    INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c \"\${CMD}\")")
+    INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -O -c \"\${CMD}\")")
+  ENDFOREACH(input ${PYFILE2COMPINST})
+ENDMACRO(INSTALL_AND_COMPILE_PYTHON_FILE PYFILE2COMPINST PYFILELOC)
index efa32d7fc0eb08215025e49d8de2a7c11879a3be..0d5ee76b8ee459c88d1404514f27bade7d926b59 100644 (file)
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
 SUBDIRS = config_files
-
-EXTRA_DIST += SALOMEconfig.h.in
-
-if !MED_ENABLE_KERNEL
-  nodist_salomeinclude_HEADERS = SALOMEconfig.h
-endif
-
-##################################
-# not-used (obsolete?) files
-##################################
-# depend.in make_module.in sstream.in
\ No newline at end of file
diff --git a/adm_local_without_kernel/unix/SALOMEconfig.h.in b/adm_local_without_kernel/unix/SALOMEconfig.h.in
deleted file mode 100644 (file)
index 8db6100..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-/* Debug mode ??? */
-#ifndef DEBUG
-# define DEBUG
-#endif
-
-/* CORBA headers include rules */
-#ifndef CORBA_CLIENT_HEADER
-# define QUOTE(x)  #x
-# define CORBA_CLIENT_HEADER(x)  QUOTE(x@IDL_CLN_H@)
-# define CORBA_SERVER_HEADER(x)  QUOTE(x@IDL_SRV_H@)
-#endif
-
-/* Platform definition */
-#ifndef @MACHINE@
-  #define @MACHINE@
-#endif
-
-// This is only to suppress warning messages with defines redefined (cause of omniORB that exports these names)
-#ifdef PACKAGE
-#undef PACKAGE
-#endif
-#ifdef PACKAGE_BUGREPORT
-#undef PACKAGE_BUGREPORT
-#endif
-#ifdef PACKAGE_NAME
-#undef PACKAGE_NAME
-#endif
-#ifdef PACKAGE_STRING
-#undef PACKAGE_STRING
-#endif
-#ifdef PACKAGE_TARNAME
-#undef PACKAGE_TARNAME
-#endif
-#ifdef PACKAGE_VERSION
-#undef PACKAGE_VERSION
-#endif
-#ifdef VERSION
-#undef VERSION
-#endif
-
-#ifdef _POSIX_C_SOURCE
-#undef _POSIX_C_SOURCE
-#endif
diff --git a/adm_local_without_kernel/unix/config_files/check_sphinx.m4 b/adm_local_without_kernel/unix/config_files/check_sphinx.m4
new file mode 100644 (file)
index 0000000..4210243
--- /dev/null
@@ -0,0 +1,35 @@
+dnl Copyright (C) 2006-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+dnl
+dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+dnl
+AC_DEFUN([CHECK_SPHINX],[
+
+AC_CHECKING(for sphinx doc generator)
+
+sphinx_ok=yes
+dnl where is sphinx ?
+AC_PATH_PROG(SPHINX,sphinx-build) 
+if test "x$SPHINX" = "x"
+then
+  AC_MSG_WARN(sphinx not found)
+  sphinx_ok=no
+fi
+
+AM_CONDITIONAL(SPHINX_IS_OK, [test x"$sphinx_ok" = xyes])
+
+])dnl
+dnl
index 1f76990b760262149e9516f87a70e9e1b7e75b65..842ab03bcb44af1d1cbd92708d1334501c2c4e68 100644 (file)
@@ -270,6 +270,7 @@ echo testing html generators
 echo ---------------------------------------------
 echo
 
+CHECK_SPHINX
 CHECK_HTML_GENERATORS
 
 ###
@@ -281,6 +282,15 @@ gui_ok=no
 
 WITHIHM="no"
 
+# This flags should be used to switch between the MEDMEM GUI (defined
+# in the MEDGUI package) and the MEDOP GUI (defined in the MEDOP
+# package). In any case the module factory function is provided by the
+# MEDOP GUI library (package MEDOP/gui) and this factory function
+# creates weither a MedGUI instance or a MEDOPModule instance,
+# depending on the value of this flags. The default is to use the new
+# MEDOP GUI. 
+AM_CONDITIONAL(WITH_MEDMEMGUI,test "1" = "0")
+
 ###
 # Other tests should be performed only in --with-interp-kernel-only=no mode
 ###
@@ -564,6 +574,7 @@ else
     else
         # --with-interp-kernel-only=no mode
         obligatory_vars="$obligatory_vars python_ok boost_ok swig_ok hdf5_ok med3_ok $splitter_obligatory_vars"
+        optional_vars="$optional_vars $splitter_optional_vars $renumber_optional_vars"
     fi
 fi
 
@@ -663,7 +674,7 @@ sed -i "s%\(\s*\)\(for searchdir in \$searchdirs; do\)%\1for sss in \$searchdirs
 ],[])
 
 AC_OUTPUT([ \
-        adm_local_without_kernel/unix/SALOMEconfig.h \
+        adm_local_without_kernel/SALOMEconfig.h \
         Makefile \
         MED_version.h \
         adm_local/unix/config_files/Makefile \
@@ -740,6 +751,21 @@ AC_OUTPUT([ \
         src/MedClient/test/test1/Makefile \
         src/MedClient/test/test2/Makefile \
         src/MEDGUI/Makefile \
+       src/MEDOP/Makefile \
+       src/MEDOP/cmp/Makefile \
+       src/MEDOP/tui/Makefile \
+       src/MEDOP/tui/xmedpy/Makefile \
+       src/MEDOP/res/Makefile \
+       src/MEDOP/res/testfiles/Makefile \
+       src/MEDOP/gui/dialogs/Makefile \
+       src/MEDOP/gui/Makefile \
+       src/MEDOP/exe/Makefile \
+       src/MEDOP/exe/appligen/Makefile \
+       src/MEDOP/exe/appligen/config_appli_model.xml \
+       src/MEDOP/exe/appligen/appligen.sh \
+       src/MEDOP/exe/image2med/Makefile \
+       src/MEDOP/doc/sphinx/conf.py \
+       src/MEDOP/doc/sphinx/Makefile \
         doc/Makefile \
         doc/MEDMEM/Makefile \
         doc/MEDMEM/MEDMEM_Content.tex \
diff --git a/doc/doxygen/figures/medlayers.png b/doc/doxygen/figures/medlayers.png
new file mode 100644 (file)
index 0000000..179ae0b
Binary files /dev/null and b/doc/doxygen/figures/medlayers.png differ
diff --git a/doc/doxygen/figures/medlayers_70pc.png b/doc/doxygen/figures/medlayers_70pc.png
new file mode 100644 (file)
index 0000000..f319976
Binary files /dev/null and b/doc/doxygen/figures/medlayers_70pc.png differ
index a3d73913cf3b99942d9d72694265f4c484fdb31a..a8e64c5b079991f64fbc90186580d2e28d68f6be 100644 (file)
@@ -1,25 +1,65 @@
 /*!\mainpage MEDMEM user's guide
 
-\image html MED_small.png
-\image latex MED_small.eps
-\anchor fig_MED_small
-
 \section intro Introduction
-This document constitutes the user guide of the %MEDMEM library and of its related tools.
+This document is the user guide of the %MED SALOME module. The MED
+module consists in:
+
+- \ref S1 to manipulate meshes and fields that conform
+  to the MED data model. This library can be used in C++ programs as
+  in python script for data processing on meshes and fields.
+- \ref S2 that exhibits some useful functions of the
+  library for a graphical manipulation of data in standard use cases.
+- \ref S3 that can be used to process MED data files
+
+\section S1 A library of functions for data processing
+
+The figure below represents the layer structure of the packages of the
+library:
+
+\image html medlayers_70pc.png
+
+The fondamentals consists in three atomic libraries: 
+
+- \ref medcoupling that describes DataStructures used for cross process exchange of meshes and fields. 
+- \ref medloader that provides I/O functions to the MED file format
+- \ref interptools (INTERP_KERNEL + REMAPPER) that provides
+  mathematical structures and algorithms for interpolation and
+  localization.
+
+You should be warned that the MEDMEM library still exists in the MED
+module but is considered as deprecated:
+
+- \ref medmem covers the %MEDMEM core library, i.e. the implementation
+  of meshes, supports and fields and the associated drivers (for
+  MED-file, VTK, GIBI).
+
+\section S2 A graphical interface for standard use cases
+
+The MED module in SALOME comes with a graphical interface that helps
+you to deal with most standard use case of fields manipulation. The
+user guide can be found here:
+
+- <a class="el" target="_new"
+  href="../../dev/MED/xmed-userguide.html">User guide of the MED Graphical Interface</a>
+
+You could also be interested to read the software specifications and
+requirements for this graphical module, and even the technical
+considerations for development:
+
+- <a class="el" target="_new"
+  href="../../dev/MED/xmed-specifications.html">Software
+  specifications and requirements of the MED Graphical Interface</a>
+- <a class="el" target="_new"
+  href="../../dev/MED/xmed-develguide.html">Developer guide of the MED Graphical Interface</a>
+
+\section S3 A set of tools for file manipulation
 
-\section install Installation 
-The install procedure of the %MEDMEM library can handle a variety of configurations 
-to suit the needs of its user. Instructions for configuring and installing the library can be found in \ref medmem_install.
-
-\section outline Outline
-This user guide contains five different chapters that cover the core %MEDMEM and MEDCoupling libraries, the interpolation library and the associated tools: 
-- Chapter \ref medcoupling describes DataStructures used for cross
-process exchange of meshes and fields.
-- Chapter \ref medloader describes API for I/O from or to a MED file
-coming from a \ref medcoupling data structure.
-- Chapter \ref interptools describes the interpolation and localization library.
-- Chapter \ref medmem covers the %MEDMEM core library, i.e. the implementation of meshes, supports and fields and the associated drivers (for MED-file, VTK, GIBI).
 - Chapter \ref tools describes various tools based on MEDMEM  that can
 be helpful for handling MED files (conversion tools and splitting tools). 
 
+\section install Installation 
+The install procedure of the %MED SALOME module can handle a variety of configurations 
+to suit the needs of its user. Instructions for configuring and
+installing the module an be found in \ref medmem_install.
+
 */
index 21696efb5665264537bba230b06b0199d8ad208e..3556b4e15378e97dcdba34486fd4296284b10786 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/UseOMNIORB.cmake)
 
@@ -23,7 +24,7 @@ INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}
-  )
+)
 
 SET(SalomeIDLMED_IDLSOURCES
   MED.idl
@@ -31,7 +32,11 @@ SET(SalomeIDLMED_IDLSOURCES
   Compo1Py.idl
   MEDCouplingCorbaServant.idl
   ParaMEDCouplingCorbaServant.idl
-  )
+  MEDDataManager.idl
+  MEDCalculator.idl
+  MEDEventListener.idl
+  MEDOPFactory.idl
+)
 
 IF(MPI_IS_OK)
   SET(SalomeIDLMED_IDLSOURCES ${SalomeIDLMED_IDLSOURCES} ParaMEDMEMComponent.idl)
@@ -39,19 +44,26 @@ ENDIF(MPI_IS_OK)
 
 SET(SalomeIDLMEDTests_IDLSOURCES
   MEDCouplingCorbaServantTest.idl
-  )
+)
 
 SET(IDL_INCLUDE_DIRS
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${KERNEL_ROOT_DIR}/idl/salome
-  )
+)
 
-OMNIORB_ADD_MODULE(SalomeIDLMED "${SalomeIDLMED_IDLSOURCES}" "${IDL_INCLUDE_DIRS}")
+SET(TYPE)
+IF(WINDOWS)
+  SET(TYPE STATIC)
+ELSE(WINDOWS)
+  SET(TYPE SHARED)
+ENDIF(WINDOWS
+)
+OMNIORB_ADD_MODULE(SalomeIDLMED "${SalomeIDLMED_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" ${TYPE})
 TARGET_LINK_LIBRARIES(SalomeIDLMED ${CORBA_LIBS} ${KERNEL_LDFLAGS} ${SalomeIDLKernel})
-SET_TARGET_PROPERTIES(SalomeIDLMED PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SET_TARGET_PROPERTIES(SalomeIDLMED PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
-OMNIORB_ADD_MODULE(SalomeIDLMEDTests "${SalomeIDLMEDTests_IDLSOURCES}" "${IDL_INCLUDE_DIRS}")
-TARGET_LINK_LIBRARIES(SalomeIDLMEDTests ${CORBA_LIBS} ${KERNEL_LDFLAGS} ${SalomeIDLKernel})
-SET_TARGET_PROPERTIES(SalomeIDLMEDTests PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+OMNIORB_ADD_MODULE(SalomeIDLMEDTests "${SalomeIDLMEDTests_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" ${TYPE})
+TARGET_LINK_LIBRARIES(SalomeIDLMEDTests SalomeIDLMED)
+SET_TARGET_PROPERTIES(SalomeIDLMEDTests PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
 INSTALL(TARGETS SalomeIDLMED SalomeIDLMEDTests DESTINATION ${MED_salomelib_LIBS})
diff --git a/idl/MEDCalculator.idl b/idl/MEDCalculator.idl
new file mode 100644 (file)
index 0000000..28dbcd7
--- /dev/null
@@ -0,0 +1,72 @@
+//  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_CALCULATOR_IDL_
+#define _MED_CALCULATOR_IDL_
+
+#include "SALOME_GenericObj.idl"
+#include "MEDDataManager.idl"
+
+module MEDOP
+{
+  
+  /*!
+   * This constants may be used for the value of an argument of a
+   * function of the interface to specify that the function must
+   * consider a default value.
+   */
+  typedef long medopNumber;
+  const medopNumber NBCOMP_DEFAULT=-1;
+
+  interface MEDCalculator: SALOME::GenericObj
+  {
+    /*! Addition of the fields f1 and f2 ( f1+f2) */
+    FieldHandler add(in FieldHandler f1, in FieldHandler f2)
+      raises (SALOME::SALOME_Exception);
+    /*! Substraction of the fields f1 and f2 (f1-f2) */
+    FieldHandler sub(in FieldHandler f1, in FieldHandler f2)
+      raises (SALOME::SALOME_Exception);
+    /*! Multiplication of the fields f1 by f2 (f1*f2) */
+    FieldHandler mul(in FieldHandler f1, in FieldHandler f2)
+      raises (SALOME::SALOME_Exception);
+    /*! Division of the fields f1 by f2 (f1/f2) */
+    FieldHandler div(in FieldHandler f1, in FieldHandler f2)
+      raises (SALOME::SALOME_Exception);
+    /*! Power of the field f (f^power) */
+    FieldHandler pow(in FieldHandler f, in long power)
+      raises (SALOME::SALOME_Exception);
+    /*! Linear transformation of the field f (factor*f+offset) */
+    FieldHandler lin(in FieldHandler f, in double factor, in double offset)
+      raises (SALOME::SALOME_Exception);
+    /*! Dublication of the field f */
+    FieldHandler dup(in FieldHandler f)
+      raises (SALOME::SALOME_Exception);
+
+    /*! Creation of a field whose values are initialized with the specified double */
+    /* FieldHandler ini(in double value) raises (SALOME::SALOME_Exception); */
+
+    /*! Transformation of the field f using a custom function */
+    FieldHandler fct(in FieldHandler f, in string function, in medopNumber nbResComponents)
+      raises (SALOME::SALOME_Exception);
+
+  };
+};
+
+#endif // _MED_CALCULATOR_IDL_
index 807c8aecab3fe407680e6e3b7006d620ebb4b4c2..e5ba3374d3969cc0e30b21a937bf9411d47d9261 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCORBASERVANT_IDL__
 #define __MEDCOUPLINGCORBASERVANT_IDL__
index 678d727cd15da50dae68efdabb32d341523d84ca..dbff5009adb6239be45ea7698cbdb9cef8b6956e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCORBASERVANTTEST_IDL__
 #define __MEDCOUPLINGCORBASERVANTTEST_IDL__
diff --git a/idl/MEDDataManager.idl b/idl/MEDDataManager.idl
new file mode 100644 (file)
index 0000000..0eb0aa7
--- /dev/null
@@ -0,0 +1,160 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_DATAMANAGER_IDL_
+#define _MED_DATAMANAGER_IDL_
+
+#include "SALOME_GenericObj.idl"
+#include "SALOME_Exception.idl"
+
+module MEDOP
+{
+  struct DatasourceHandler {
+    long id;
+    string name;
+    string uri;
+    // The source could be a filepath or the ior of a field servant
+  };
+
+  struct MeshHandler {
+    long id;
+    string name;
+    long sourceid;
+  };
+  typedef sequence<MeshHandler> MeshHandlerList;
+
+  /**
+   * The Fieldseries is a virtal object that does not exist in the MED
+   * data model (at least in the MEDCoupling data model). It is just a
+   * point that aggregate a list of fields that relie on the same mesh
+   * with the same type (the fields in a timeseries differ by their
+   * time step).
+   * 
+   * Then you could have a field with no fieldseries associated but
+   * directly associated to a mesh. That is typically the case of
+   * fields created by MED operations: if you operate tow fields
+   * coming from 2 different timeseries (and relying on the same
+   * mesh), you obtain a field that can not be associate to the
+   * original timeseries. Then this new created field must be directly
+   * associated to its underlying mesh (as defined in the MEDCoupling
+   * data model).
+   *
+   * In conclusion, the fieldseries is a facilities for data
+   * management but must not be a structuration of the data model. The
+   * association is not:
+   *
+   *   field->fieldseries->mesh
+   *
+   * but:
+   *
+   *   field->fieldseries (optional)
+   *        ->mesh        (mandatory)
+   *
+   * and:
+   *
+   *   fieldseries->mesh  (mandatory)
+   */
+  struct FieldseriesHandler {
+    long id;
+    string name;
+    long   type;
+    long   meshid;
+    long   nbIter;
+  };
+  typedef sequence<FieldseriesHandler> FieldseriesHandlerList;
+
+  // The FieldHandler structure is a lightweigth data structure that
+  // represents a single field (as understood in MEDCoupling model).
+  struct FieldHandler {
+    long   id;
+    long   fieldseriesId;
+    string fieldname; // @warn : if fieldseriesId then get from fieldseries->name
+    string meshname;  // @deprecated: replace by meshid and get from mesh->name
+    long   meshid;
+    long   type;      // @warn : if fieldseriesId then get from fieldseries->type
+    long   iteration;
+    long   order;
+    string source;    // @deprecated : get from mesh->datasource->uri
+  };
+
+  typedef sequence<FieldHandler> FieldHandlerList;
+  typedef sequence<long> FieldIdList;
+
+  interface MEDDataManager: SALOME::GenericObj
+  {
+    
+    //==========================================================
+    // Datasource management
+    //==========================================================
+    DatasourceHandler addDatasource(in string filepath);
+
+    //==========================================================
+    // Mesh data management
+    //==========================================================
+    
+    MeshHandler     getMesh(in long meshId) raises (SALOME::SALOME_Exception);
+    MeshHandlerList getMeshList(in long datasourceId);
+
+    //==========================================================
+    // Field data management
+    //==========================================================
+    FieldseriesHandlerList getFieldseriesListOnMesh(in long meshId);
+    FieldHandlerList getFieldListInFieldseries(in long fieldseriesId);
+
+    FieldHandler     getFieldHandler(in long fieldHandlerId);
+    FieldHandlerList getFieldHandlerList();
+    // __GBO__ Maybe it could be usefull to define a getFieldHandlerList with a datasourceId in argument
+    string           getFieldRepresentation(in long fieldHandlerId);
+
+    // Persistency management
+    void             saveFields(in string filepath, in FieldIdList list)
+      raises (SALOME::SALOME_Exception);
+    void             markAsPersistent(in long fieldHandlerId, in boolean persistent);
+    void             savePersistentFields(in string filepath)
+      raises (SALOME::SALOME_Exception);
+
+
+    void updateFieldMetadata(in long   fieldHandlerId,
+                            in string fieldname,
+                            in long   iteration,
+                            in long   order,
+                            in string source);
+
+    //void saveFields(in FieldHandlerList fieldHandlerList, in string filepath);
+
+    void changeUnderlyingMesh(in long fieldHandlerId, in long meshHandlerId)
+      raises (SALOME::SALOME_Exception);
+    
+    //==========================================================
+    // General purpose data management
+    //==========================================================
+    void   setEventListenerIOR(in string ior);
+    string getEventListenerIOR() raises (SALOME::SALOME_Exception);
+
+    // Print out server data
+    void serverlog();
+  };
+};
+
+#endif // _MED_DATAMANAGER_IDL_
diff --git a/idl/MEDEventListener.idl b/idl/MEDEventListener.idl
new file mode 100644 (file)
index 0000000..76ec949
--- /dev/null
@@ -0,0 +1,47 @@
+//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _MED_EVENTLISTENER_IDL_
+#define _MED_EVENTLISTENER_IDL_
+
+#include "SALOME_GenericObj.idl"
+
+module MEDOP
+{
+  enum MedEventType {
+    EVENT_ADDNEW_FIELD,
+    EVENT_DELETE_FIELD,
+    EVENT_UPDATE_FIELD,
+    EVENT_UNKNOWN
+  };
+
+  struct MedEvent {
+    MedEventType  type;
+    long          fieldid;
+  };
+
+  interface MEDEventListener: SALOME::GenericObj {
+    void processMedEvent(in MedEvent event);
+  };
+};
+
+#endif
diff --git a/idl/MEDOPFactory.idl b/idl/MEDOPFactory.idl
new file mode 100644 (file)
index 0000000..9d7fa14
--- /dev/null
@@ -0,0 +1,49 @@
+// Copyright (C) 2005  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+
+#ifndef __MEDOPFactory_IDL_
+#define __MEDOPFactory_IDL_
+
+#include "SALOME_Component.idl"
+#include "SALOME_Exception.idl"
+#include "MEDDataManager.idl"
+#include "MEDCalculator.idl"
+
+/*!
+ * This module contains the interface required for starting with MED
+ * operations. It defines the factory methods to get the main SALOME
+ * MED components for MED field operations.
+ *
+ * WRN: This interface is an EngineComponent so that it could be retrieve
+ * in the CORBA context using the LifeCycleCorba registry.
+*/
+module MEDOP
+{
+  interface MEDOPFactory : Engines::EngineComponent
+  {
+
+    MEDOP::MEDDataManager getDataManager();
+    MEDOP::MEDCalculator getCalculator();
+
+  };
+};
+
+#endif
+
index 499091bf75619e2da9f2e8ef4e3655eed16ba02f..06c8e5725dea4bfca8928d4a4b5ae2e93e52a3eb 100644 (file)
@@ -26,7 +26,17 @@ include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
 EXTRA_DIST += CMakeLists.txt
 
-BASEIDL_FILES = MED.idl MED_Gen.idl Compo1Py.idl MEDCouplingCorbaServant.idl MEDCouplingCorbaServantTest.idl ParaMEDCouplingCorbaServant.idl
+BASEIDL_FILES = \
+       MED.idl MED_Gen.idl Compo1Py.idl \
+       MEDCouplingCorbaServant.idl      \
+       MEDCouplingCorbaServantTest.idl  \
+       ParaMEDCouplingCorbaServant.idl
+
+MEDOPIDL_FILES =             \
+       MEDDataManager.idl   \
+       MEDCalculator.idl    \
+       MEDEventListener.idl \
+       MEDOPFactory.idl
 
 MPIIDL_FILES = ParaMEDMEMComponent.idl
 
@@ -34,6 +44,7 @@ IDL_FILES = $(BASEIDL_FILES)
 if MPI_IS_OK
 IDL_FILES += $(MPIIDL_FILES)
 endif
+IDL_FILES += $(MEDOPIDL_FILES)
 
 IDL_FILES_PY=$(IDL_FILES:%.idl=%_idl.py)
 
@@ -44,7 +55,16 @@ dist_salomeidl_DATA = $(IDL_FILES)
 lib_LTLIBRARIES = libSalomeIDLMED.la libSalomeIDLMEDTests.la
 
 # Sources built from idl files
-BASEIDL_SOURCES = MEDSK.cc MED_GenSK.cc MEDCouplingCorbaServantSK.cc Compo1PySK.cc ParaMEDCouplingCorbaServantSK.cc
+BASEIDL_SOURCES = \
+       MEDSK.cc MED_GenSK.cc Compo1PySK.cc \
+       MEDCouplingCorbaServantSK.cc        \
+       ParaMEDCouplingCorbaServantSK.cc
+
+MEDOPIDL_SOURCES =            \
+       MEDDataManagerSK.cc   \
+       MEDCalculatorSK.cc    \
+       MEDEventListenerSK.cc \
+       MEDOPFactorySK.cc
 
 MPIIDL_SOURCES = ParaMEDMEMComponentSK.cc
 
@@ -52,15 +72,27 @@ IDL_SOURCES = $(BASEIDL_SOURCES)
 if MPI_IS_OK
   IDL_SOURCES += $(MPIIDL_SOURCES)
 endif
+IDL_SOURCES += $(MEDOPIDL_SOURCES)
 
 nodist_libSalomeIDLMED_la_SOURCES = $(IDL_SOURCES)
 
 # header files must be exported: other modules have to use this library
-nodist_salomeinclude_HEADERS = MED.hh MED_Gen.hh MEDCouplingCorbaServant.hh Compo1Py.hh MEDCouplingCorbaServantTest.hh ParaMEDCouplingCorbaServant.hh
+nodist_salomeinclude_HEADERS =         \
+       MED.hh MED_Gen.hh Compo1Py.hh  \
+       MEDCouplingCorbaServant.hh     \
+       MEDCouplingCorbaServantTest.hh \
+       ParaMEDCouplingCorbaServant.hh
+
 if MPI_IS_OK
   nodist_salomeinclude_HEADERS += ParaMEDMEMComponent.hh
 endif
 
+nodist_salomeinclude_HEADERS += \
+       MEDDataManager.hh       \
+       MEDCalculator.hh        \
+       MEDEventListener.hh     \
+       MEDOPFactory.hh
+
 libSalomeIDLMED_la_CPPFLAGS =                  \
        -I$(top_builddir)/idl                   \
        @CORBA_CXXFLAGS@ @CORBA_INCLUDES@ @KERNEL_CXXFLAGS@
@@ -78,33 +110,14 @@ OMNIORB_IDLPYFLAGS  = @OMNIORB_IDLPYFLAGS@ -I$(top_builddir)/idl/salome -I$(KERN
 IDLCXXFLAGS = -bcxx @IDLCXXFLAGS@ -I$(top_builddir)/idl/salome -I$(KERNEL_ROOT_DIR)/idl/salome
 IDLPYFLAGS  = @IDLPYFLAGS@ -I$(KERNEL_ROOT_DIR)/idl/salome
 
-MEDSK.cc : MED.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-MED.hh : MEDSK.cc
+SUFFIXES = .idl .hh SK.cc
 
-MED_GenSK.cc : MED_Gen.idl
+%SK.cc %.hh : %.idl
        $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-MED_Gen.hh : MED_GenSK.cc
 
-ParaMEDMEMComponentSK.cc : ParaMEDMEMComponent.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-ParaMEDMEMComponent.hh : ParaMEDMEMComponentSK.cc
-
-MEDCouplingCorbaServantSK.cc : MEDCouplingCorbaServant.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-MEDCouplingCorbaServant.hh : MEDCouplingCorbaServantSK.cc
-
-ParaMEDCouplingCorbaServantSK.cc : ParaMEDCouplingCorbaServant.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-ParaMEDCouplingCorbaServant.hh : ParaMEDCouplingCorbaServantSK.cc
-
-Compo1PySK.cc : Compo1Py.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-Compo1Py.hh : Compo1PySK.cc
-
-MEDCouplingCorbaServantTestSK.cc : MEDCouplingCorbaServantTest.idl
-       $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
-MEDCouplingCorbaServantTest.hh : MEDCouplingCorbaServantTestSK.cc
+# MEDSK.cc : MED.idl
+#      $(OMNIORB_IDL) $(IDLCXXFLAGS) $(OMNIORB_IDLCXXFLAGS) $<
+# MED.hh : MEDSK.cc
 
 install-exec-local: $(IDL_FILES:%=$(top_srcdir)/idl/%)
        $(INSTALL) -d  $(DESTDIR)$(salomepythondir)
@@ -114,7 +127,7 @@ install-exec-local: $(IDL_FILES:%=$(top_srcdir)/idl/%)
 
 # we want to remove only staff generated for IDL files and nothing more
 uninstall-local:
-       @for modulen in SALOME_MED SALOME_TEST Compo1Py_ORB ; do \
+       @for modulen in SALOME_MED SALOME_TEST Compo1Py_ORB MEDOP ; do \
          test -d $(DESTDIR)$(salomepythondir)/$${modulen} && echo "Removing $(DESTDIR)$(salomepythondir)/$${modulen}" && rm -rf $(DESTDIR)$(salomepythondir)/$${modulen} ; \
          test -d $(DESTDIR)$(salomepythondir)/$${modulen}__POA && echo "Removing $(DESTDIR)$(salomepythondir)/$${modulen}__POA" && rm -rf $(DESTDIR)$(salomepythondir)/$${modulen}__POA ; \
        done ; \
index 7549a07dd9792d904a253bdd013e3f406c3e9b14..c4a8495685a4f326d1d0ccb8a5dd2c0b56452024 100644 (file)
 
 <!-- Component list -->
 <component-list>
+
+       <component>
+                <component-name>MEDOPFactory</component-name>
+               <component-username>MEDOP Factory</component-username>
+               <component-type>MED</component-type>
+               <component-author>Guillaume Boulant</component-author>
+               <component-version>@VERSION@</component-version>
+               <component-comment>Factory of SALOME components for MED Field operations</component-comment>
+               <component-multistudy>0</component-multistudy>
+        </component>
+
        <component>
                <!-- Component identification -->
                <component-name>MED</component-name>
index 747a70aa6bd8c5ee152054698c301a12a4eb8345..f737b85238585960770559ea4418c13911328d64 100644 (file)
 <document>
   <section name="MED">
     <!-- Major module parameters -->
-    <parameter name="name" value="Med"/>
-    <parameter name="icon" value="ModuleMed.png"/>
+    <parameter name="name" value="MED"/>
+    <parameter name="icon" value="MEDOP.png"/>
     <parameter name="documentation" value="med_help"/>
-    <parameter name="library"       value="MEDGUI"/>
+    <parameter name="library"       value="MEDOPGUI"/>
     <parameter name="version"       value="@VERSION@"/>
   </section>
   <section name="med_help" >
index a041dbf109455de494342cb61530139f7a1310cd..d9ebfc85145f9e0a637cc4647e57fc93ea668739 100644 (file)
@@ -74,7 +74,7 @@ IF(MED_ENABLE_KERNEL)
     SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} ParaMEDCouplingCorba ParaMEDMEMComponent)
   ENDIF(MPI_IS_OK)
   IF(MED_ENABLE_MED3)
-    SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} MEDCalculator)
+    SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} MEDCalculator MEDOP)
     SET(OLD_COMMON_SUBDIRS ${OLD_COMMON_SUBDIRS} MEDMEM_I)
   ENDIF(MED_ENABLE_MED3)
   IF(MED_ENABLE_GUI)
index 4100a4d05b92705fb2c761eb3ea56ff2bb69201a..27eeb5e37684fb6a11befc6b90622607309a6d44 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELAUTOPTR_HXX__
 #define __INTERPKERNELAUTOPTR_HXX__
index 35483a8ccc75470c7dcc2bf6bd6be6ba16617707..9f777b61f123d952664247412ae8940784777cdf 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelException.hxx"
 
index c2aa9e32f39f6c08075112cc61f291df6e90fe58..3b573c0240935a013fa51a7bd8de4cf0d8957903 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELEXCEPTION_HXX__
 #define __INTERPKERNELEXCEPTION_HXX__
index 30c429ed763d3f44aab73666f62d14d2227337e7..3d43cb6d5c2242e29a57429e4596e9d0be8420b8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __NORMALIZEDUNSTRUCTUREDMESH_HXX__
 #define __NORMALIZEDUNSTRUCTUREDMESH_HXX__
index b0b85bdc6f4414cecf4d7cc4ae639fe47ead6360..8d9d2463a16270b3eb8a63cee32611a4c5186322 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 SET(interpkernel_SOURCES
   TransformedTriangle.cxx
@@ -65,7 +66,8 @@ INCLUDE_DIRECTORIES(
   )
 
 ADD_LIBRARY(interpkernel SHARED ${interpkernel_SOURCES})
-
+SET_TARGET_PROPERTIES(interpkernel PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(interpkernel ${PLATFORM_LIBS})
 INSTALL(TARGETS interpkernel DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB_RECURSE interpkernel_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index 626fef91680796bfe0c58bf36bf2e119bb984dea..13781012362e08ae725a3a00227935775738a433 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "CellModel.hxx"
 
index f9d19c981015a55abc3f01dd606f5507761a6321..27ec69f056128202b6c7583b282dce033f31b000 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CELLMODEL_INTERP_KERNEL_HXX__
 #define __CELLMODEL_INTERP_KERNEL_HXX__
index 10755efa2cb0c13c8cf348b615e8bffce708e43d..12fe453b9635faff4f3d9e248886c514596a07d7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CONVEXINTERSECTOR_HXX__
 #define __CONVEXINTERSECTOR_HXX__
index 44836c63910dec29d0136fdc15b9cd5ea8b64b36..a30c6a932d9e73bac361f78aaaf6e832a27cc2fd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CONVEXINTERSECTOR_TXX__
 #define __CONVEXINTERSECTOR_TXX__
 
index 14035f13a36a0bbf952188d5b76f4be756929069..6a9ee27d5491d94c0ea7b442624923f34450a899 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTOR_HXX__
 #define __CURVEINTERSECTOR_HXX__
index 38dfa9920730d74fc6ef911153ba2010a9aea0e6..3281d99291b6bff76fd8706ad79cd9a7aef3dcb9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CURVEINTERSECTOR_TXX__
 #define __CURVEINTERSECTOR_TXX__
 
index 761dc2dc3202949a1eeaaaa573da952f6882dfab..26c58420c6277bb16a74e9dd24b51405c2cec53c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTORP0P0_HXX__
 #define __CURVEINTERSECTORP0P0_HXX__
index 3981d1218f2b1bd311b2708a4c775d159a50892e..d82f4eb589561df482f90f198a45e201f2b41cde 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CURVEINTERSECTORP0P0_TXX__
 #define __CURVEINTERSECTORP0P0_TXX__
 
index 42dbd758bb7c18e01d227edb994f602e76f9d6e3..fb42bf140325a7aaf7921df4fed3391cdd6cc38e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTORP0P1_HXX__
 #define __CURVEINTERSECTORP0P1_HXX__
index 91bb236d498c301acd9484f4eb6b54784069952e..ff43da455501196f9453dafe953258bb701117bf 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CurveIntersectorP0P1_TXX__
 #define __CurveIntersectorP0P1_TXX__
 
index 7a5d3d6cfae183e46e516880ac1fc21e629b2cba..ba548b9e37af8f300f61f096a2af98bc59d00068 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTORP1P0_HXX__
 #define __CURVEINTERSECTORP1P0_HXX__
index 2a41ee145b4d67558a7f33362e81e3aa0a9e724f..45c1eeb87dc33e75e63e1bf5843a2ef63e458f1d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CurveIntersectorP1P0_TXX__
 #define __CurveIntersectorP1P0_TXX__
 
index f09e5143ff78a1c048091af308aad450b9ae557b..537fe9714b8f3d109345fc29be4624ef426502f9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTORP1P1_HXX__
 #define __CURVEINTERSECTORP1P1_HXX__
index efd1f855a1a047c3df08cfba56e502b0ae45087c..1d3b93d73c5b97c53f3f829c12465f7f47bee116 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CurveIntersectorP1P1_TXX__
 #define __CurveIntersectorP1P1_TXX__
 
index db4496f72f19a67b6799864b5eaf98cb416b1128..695bbc160e08e5d43a369f67db8228c26cfe72ed 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelAsmX86.hxx"
 
@@ -26,7 +27,7 @@
 #ifdef _POSIX_MAPPED_FILES
 #include <sys/mman.h>
 #else
-#ifdef WNT
+#ifdef WIN32
 #include <windows.h>
 #endif
 #endif
@@ -48,7 +49,7 @@ char *INTERP_KERNEL::AsmX86::copyToExecMemZone(const std::vector<char>& ml, unsi
 #ifdef _POSIX_MAPPED_FILES
   ret=(char *)mmap(0,lgth,PROT_EXEC | PROT_WRITE,MAP_ANONYMOUS | MAP_PRIVATE,-1,0);
 #else
-#ifdef WNT
+#ifdef WIN32
   HANDLE h=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_EXECUTE_READWRITE,0,lgth,NULL);
   ret=(char *)MapViewOfFile(h,FILE_MAP_EXECUTE | FILE_MAP_READ | FILE_MAP_WRITE,0,0,lgth);
 #endif
index d305da4b8fa6d29bbb6f4c18b5a3e32897d76ebc..3fa6f73e77fd5a8ee9752eea55e0993c30a894fd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELASMX86_HXX__
 #define __INTERPKERNELASMX86_HXX__
index 69dabca7a6b747c4409751f5b1571303feb84358..e75a2e5f47c6adc2f02db8b3ec8be2fdd0589d55 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelExprParser.hxx"
 #include "InterpKernelValue.hxx"
index a87f335a7337ae403685ff2643a6ba9c5df60d20..29c8c0d9cd0a0d8e6ee36757779279ed53941491 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELEXPRPARSER_HXX__
 #define __INTERPKERNELEXPRPARSER_HXX__
index 4979adc058beda2963ace8dd2ba1d9fc5cee44a8..c8e4d5b8dc19b752b0648d6321efe2244f5f1071 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelFunction.hxx"
 #include "InterpKernelValue.hxx"
index cfd4bf692a1be1ccae5c98c82c3c776db84b2533..f49c7594303c42938b811afe329a78610ecfe7f7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELFUNCTION_HXX__
 #define __INTERPKERNELFUNCTION_HXX__
index c719b5e739cabfa0994a87bf5bf145b93bbf9811..e7e737cf46578b59abee643e0516e6705bcd5cac 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelUnit.hxx"
 #include "InterpKernelExprParser.hxx"
index a3f33b76a624dc952299aecccdc5d3fb49d0fb55..688917adfb8d10c9a43e59e5c79165db4b852af2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELUNIT_HXX__
 #define __INTERPKERNELUNIT_HXX__
index 5a97db3ddb95c4365d9f2070bf4e8bec0ea0184a..6564cfd252f78c6ae4207949cd156471016f3413 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelValue.hxx"
 #include "InterpKernelFunction.hxx"
index 01581024db67327c2963c54f9ab7200ee409bcdb..71d5bf0f07727efab5a87609bd740d11d3e1de03 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELVALUE_HXX__
 #define __INTERPKERNELVALUE_HXX__
index 95c78f3d50d77abd73f5c29742cd798e7551a111..9b003ce1dbc7b8be52e366bd532b03cab28d7332 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __GENMATHFORMULAE_HXX__
 #define __GENMATHFORMULAE_HXX__
index 694ebd113ab5fe7c04958a8f214070d025dcc919..c30b1f698971f1cbc72b9b6c62741a51840378bb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DAbstractEdge.hxx"
 #include "InterpKernelGeo2DComposedEdge.hxx"
index 37a3fb51df8cfdfc4f4361f80e08c691ecef106d..b0c5b4e2bda615394c794089aec684fe20049c3d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DABSTRACTEDGE_HXX__
 #define __INTERPKERNELGEO2DABSTRACTEDGE_HXX__
index e4c5f9187984eb3a9787fd54d13f54a3f3d943c7..8a9902f08a2c6bcbb89b2d800414011a77015d0c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DBounds.hxx"
 #include "InterpKernelException.hxx"
index 77e0095433809db53f191384de2155eec5b61b63..8780aae35d47126ad512a3a50b1258d1892666da 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DBOUNDS_HXX__
 #define __INTERPKERNELGEO2DBOUNDS_HXX__
index c57210de9e049d6b22169eaa9c78f5d4d0c7cb98..ed800c1b89e217706e60e87e4c20405eeeb53cf2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DComposedEdge.hxx"
 #include "InterpKernelGeo2DElementaryEdge.hxx"
index 62b56d7fb1d2aafd62d0fba5ba33264868351548..8fbf7bd2e8932a7091b6eac2dd782c5085d3f762 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DCOMPOSEDNODE_HXX__
 #define __INTERPKERNELGEO2DCOMPOSEDNODE_HXX__
index 257667df8cc4258254c2e6436ddcc41a9000317d..182fb25801041efb00b7b98af573aab9e5dcc508 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DEdge.hxx"
 #include "InterpKernelGeo2DEdgeLin.hxx"
index bc8a1dcb70e4329ca7d24ede751fec2dd7ef5ea7..36526ab17240277e62d56b72179632db02c7ff53 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DEDGE_HXX__
 #define __INTERPKERNELGEO2DEDGE_HXX__
index ed9dc5298f7348e01bfb504b0ba7e2ed035773d7..18502eb6a8b8f4bd90be6b6b82017f8dadbee3c6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPKERNELGEO2DEDGE_TXX__
 #define __INTERPKERNELGEO2DEDGE_TXX__
 
index 551056cecc4d05c83ee251d6d92cc37b7048c2b8..5c079b185cc1738784e0439b7369d05e0679da2c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DEdgeArcCircle.hxx"
 #include "InterpKernelGeo2DEdgeLin.hxx"
index 921723688bd75ca982c3fb4305d759d4b98c8c2c..4faf2d5e4b8c9ea883eff931e093c7a5da9005fa 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DEDGEARCCIRCLE_HXX__
 #define __INTERPKERNELGEO2DEDGEARCCIRCLE_HXX__
index dceb2addc3d1430d24eff8170a0609b9653c3c95..a1150cb968351147fb11dc78c5b54a5963f35a62 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DEdgeInfLin.hxx"
 
index dffd43d4c5281b6d9facf0f32c507279b89384a4..9159140979d49c6b2efb39f93df839703b1f9575 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DEDGEINFLIN_HXX__
 #define __INTERPKERNELGEO2DEDGEINFLIN_HXX__
index 1a7b3cc3b40d3dbec346292fe21860d66dcc5bb2..dfe1f81d5c8bd6468e54c966af12531a2756417e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DEdgeLin.hxx"
 #include "InterpKernelGeo2DNode.hxx"
index d5b212bcf2b7e2678d928a39158e6c58c2ce0c29..d8332e7d03b2741e3ba6b94c6a4eb5568d8ba102 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DEDGELIN_HXX__
 #define __INTERPKERNELGEO2DEDGELIN_HXX__
index a2a222f70b26a0f0677272baefc403df8fb7c17c..dd1e0ab02e077e751930204795229de620510f3a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DElementaryEdge.hxx"
 #include "InterpKernelException.hxx"
index 8611fe1730d785f5527ec9260f72297e8bb748c9..17b2459e9cf12e236fb40922cccbdf10de04313a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DELEMENTARYEDGE_HXX__
 #define __INTERPKERNELGEO2DELEMENTARYEDGE_HXX__
index 03c3445f9a02190db137e3c1d2f0f891b416cee6..e345cccf70b37c8e3a8f207705b4babd6a896a75 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DNode.hxx"
 #include "InterpKernelGeo2DEdgeArcCircle.hxx"
index 2d1a9d5e386bd44d66b693436dc14f1caa1ab46a..48ebe58e1928dc0a93b8199fbf15954e55a8ded7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DNODE_HXX__
 #define __INTERPKERNELGEO2DNODE_HXX__
index e5e453f7f6911456549aa8978e49f0ca36855ee7..c3edf2dc405cd7af49f3b10cc19dd05c4b9ff4b9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DPrecision.hxx"
 
index 83504ea8b9525502c6e9312cf984b15260b729c1..a8313481fbdc5974e67ce15ab7ff2fb600f1ef50 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DPRECISION_HXX__
 #define __INTERPKERNELGEO2DPRECISION_HXX__
index c85d413c56a2da71472a951384097816392d022c..66e3a9b500825da1c5ae4623120714184a03f6c1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
 #include "InterpKernelGeo2DElementaryEdge.hxx"
index a7beda997e8009cba1a0bc16e776c48bd676ad94..d98b20dcdc68d8e7844941d1668777fd97092cb5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DQUADRATICPOLYGON_HXX__
 #define __INTERPKERNELGEO2DQUADRATICPOLYGON_HXX__
index 69879f51b2a0c97b11d2f4d4b9862dec3544bafa..4f408f705201db6da306f6e16da97e541255ae02 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __GEOMETRIC2DINTERSECTOR_HXX__
 #define __GEOMETRIC2DINTERSECTOR_HXX__
index a78d233dd145dbc2e88c072bb7041ead5e1195cb..6895011619b2d552c2c4606820dea4484aa94edd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __GEOMETRIC2DINTERSECTOR_TXX__
 #define __GEOMETRIC2DINTERSECTOR_TXX__
 
index 71cfebb7de3907e708fed0b48aa17d3fb482d410..c6701a78b7648915c8e65f56b2384240ee0dcf06 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTEGRALUNIFORMINTERSECTOR_HXX__
 #define __INTEGRALUNIFORMINTERSECTOR_HXX__
index 0d46d983e0309f97223b9ae3292316c5eeb44f33..efd74e62c7e203cc9f59475e46a0481e60088e61 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTEGRALUNIFORMINTERSECTOR_TXX__
 #define __INTEGRALUNIFORMINTERSECTOR_TXX__
 
index 1200fcf85185e9d7e649e7841b51167b3b50ad83..5ed816146d6b2e1d8c43168be2f30f91e77f119e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelCellSimplify.hxx"
 #include "CellModel.hxx"
index 34585260ede2dc24d526c4d02c5803ac6fad935e..0b8b2afa7b7b6e62b5be4cbca19712efae6e7601 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELCELLSIMPLIFY_HXX__
 #define __INTERPKERNELCELLSIMPLIFY_HXX__
index 97ba6bff8968f0339993400e82617f9c5ae2bb2e..988f343cefbe6cc9752aef7e775ead027b4f7c76 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelMatrixTools.hxx"
 #include "InterpKernelAutoPtr.hxx"
index 7f59ee9936a8f91a09242cd19d448756988412f0..68863a22474e41eaf3c5635f880da80965cc9c22 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELMATRIXTOOLS_HXX__
 #define __INTERPKERNELMATRIXTOOLS_HXX__
index c3f27f1aba950a1991a87fcf134bbcbf963f7ef9..06f6d325d545c2902c9fea55c8481e754b74504e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelMeshQuality.hxx"
 
index 95e30f5c27c76d06725e0c61cff9eea87d87b523..158d8519378f303916ad5cfb9c81d370e67d2ecb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELMESHQUALITY_HXX_
 #define __INTERPKERNELMESHQUALITY_HXX__
index 38951463cb199bf7d55051f55574b50bcb2f254b..3c5eab1316e210bd112256f59b61b3e7aeec435f 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION_HXX__
 #define __INTERPOLATION_HXX__
index 3ac70163fd6182d0c2a3f21e5a1b0665dbae14ac..201b4467151a798485760407c4cb8cd89592386d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION_TXX__
 #define __INTERPOLATION_TXX__
 
index 37e36de45167f0e5e3c000626b3d113f175e0c81..cbb72ba25ab34a358dacc1925fdedb8ab625b3c3 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION1D_HXX__
 #define __INTERPOLATION1D_HXX__
index 174c18291d28e2bc6da38b5ebff8990b0f3acbd4..b7e40eff0f6fa8c69b7016d01add7824e7ea5ae3 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION1D_TXX__
 #define __INTERPOLATION1D_TXX__
 
index 6551ebda4ec8dcc4490318769c128b7552654276..849f3af9e020661f3996980dccf33c664f5e4be2 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION2D_HXX__
 #define __INTERPOLATION2D_HXX__
index aa44100963158c7805b7789089406e6129da8b61..2555f4ada2b130d1d90745652cc6524f650c089e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION2D_TXX__
 #define __INTERPOLATION2D_TXX__
 
index f1a0b76f4bfd632df8f93515e71f68b1157331a2..64f0db9edd7ed4e41eddca42607de0dead452cb5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION2D1D_HXX__
 #define __INTERPOLATION2D1D_HXX__
index e84d07dec7238add8ee7636a470c526231371b4e..862c120775106d18db456c678de8f0edbb6d6e2e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION2D1D_TXX__
 #define __INTERPOLATION2D1D_TXX__
 
index c1cfa381c2b94ff054df81a742ea8cc32599b19b..779b9bafe028426cd3f4e54737b11553be7a8b71 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "Interpolation2DCurve.hxx"
 #include "InterpolationCurve.txx"
index d1c2f76533ec524b5de90a690dae7cf69b7c66fc..1ddf9ed7c4ec6b1dd70d625855500363da5225b8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION2DCURVE_HXX__
 #define __INTERPOLATION2DCURVE_HXX__
index d2401e3d1d8eecaec02e6c3ee8ecf012c1e5d7d0..edaad1408a0c4a7ae7af9a028455b6a6834a3c4b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "Interpolation3D.hxx"
 #include "Interpolation3D.txx"
index 247ca14a202102fb786d98d387cd3b1e702a355f..128eedcfbfead98a5eaf3a524ff530c718fc90db 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION3D_HXX__
 #define __INTERPOLATION3D_HXX__
index 248207e02e07b8e0f457a0e1a5208967990dd59b..c293c745fb46191446a377e10efbeaf0c3f6a98b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION3D_TXX__
 #define __INTERPOLATION3D_TXX__
 
index 488ca2b857548f202efbcc517de5793919209b13..8126ae823aaef2e19400af864868ed663fe7b8eb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "Interpolation3DSurf.hxx"
 #include "InterpolationPlanar.txx"
index ede723162bd3f2a737b2c476e404b6c33bf2be2a..68a05d12db587016482ac8c7a97b5d93ed06093e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION3DSURF_HXX__
 #define __INTERPOLATION3DSURF_HXX__
index 35dbd6799f3654138ce76c392f3b8abcd475e5ff..a88801482c4e08d6c07831cd4e539d013554ca20 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATIONCURVE_HXX__
 #define __INTERPOLATIONCURVE_HXX__
index 86ec617440b4e54b9c519f0d1fd85dc579cbc3df..dc45b61ae0b2cc3bf93e18a90fbdc99b3303e399 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATIONCURVE_TXX__
 #define __INTERPOLATIONCURVE_TXX__
 
index 2e2e7def7193764f69bdde32a9ff52399fafbe4b..94ab498ff92e732e03a5fc6b590dbc8de8758831 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpolationOptions.hxx"
 
index d9c51d70af1883a1716c823a516a920ef3211f38..6ba269bb7427b11c515bd71688baf11a786f217e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATIONOPTIONS_HXX__
 #define __INTERPOLATIONOPTIONS_HXX__
index c30cd81f44002fafae6db004726d68c102a9b2e8..6d9cdd17190030b457f6b35f1d13e3bbfacdce0a 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATIONPLANAR_HXX__
 #define __INTERPOLATIONPLANAR_HXX__
index 2ba5aafe895925c0ada0894dbae513575392c8a1..07fd4d5e9562d813f37fc738122d27e8fb090a30 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATIONPLANAR_TXX__
 #define __INTERPOLATIONPLANAR_TXX__
 
index af7fdfcc93aad5cd681a39820d0be5e55e0f89e2..80cdb8d72986e63f90463af5cbcdfa656f9284f2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATIONUTILS_HXX__
 #define __INTERPOLATIONUTILS_HXX__
@@ -437,7 +438,7 @@ namespace INTERP_KERNEL
             T21 = n[0][_Y]-n[2][_Y], T22 = n[1][_Y]-n[2][_Y];
           // matrix determinant
           double Tdet = T11*T22 - T12*T21;
-          if ( std::fabs( Tdet ) < std::numeric_limits<double>::min() )
+          if ( (std::fabs( Tdet) ) < (std::numeric_limits<double>::min()) )
             {
               bc[0]=1; bc[1]=bc[2]=0; // no solution
               return;
index 9ab3f7b7836d3601a53261029643f41328d48647..47e39122e90f33ea7f7582c354d43c8706e041ae 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERSECTOR3D_HXX__
 #define __INTERSECTOR3D_HXX__
index 05b5c94094ff4bb571bf1c56833f3fa6fe292eeb..67ce5941b5a788a7bdece6574ea666dcc31a5c82 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERSECTOR3D_TXX__
 #define __INTERSECTOR3D_TXX__
 
index 243ce6ff4d19207451f83c6573ff3e3ff3a904be..7355f6eb103643b73cefcccba8f2e42c99f5befe 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERSECTOR3DP0P0_HXX__
 #define __INTERSECTOR3DP0P0_HXX__
index 1ab4b5a44055a01923258a10c46bc8602f3e0e8d..5ad2fee71064249bb2354256f6144b57d677c5d3 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERSECTOR3DP0P0_TXX__
 #define __INTERSECTOR3DP0P0_TXX__
 
index 98a2476148fc0994d5eda30cc3a4443487c6c5fd..4b1dafab03498825a2961cf929d56fb1de587816 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERSECTOR3DP0P1_HXX__
 #define __INTERSECTOR3DP0P1_HXX__
index 50dc45eac35c47d54a62ef8b99e1206f59cfcd74..6abdb882899650b2e8b8e456a89d361a28030db1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERSECTOR3DP0P1_TXX__
 #define __INTERSECTOR3DP0P1_TXX__
 
index cc7f494c87f6874a76a6009e21f9cd0c4a8a5809..923b0145d172ee5b7b821a5c1edb759a2e35ace5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERSECTOR3DP1P0_HXX__
 #define __INTERSECTOR3DP1P0_HXX__
index e302323f55d2e79801f0dd42afc1cd18f78ee54e..bda1c1931123ee22aba0b29bd62ab539013d51ff 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERSECTOR3DP1P0_TXX__
 #define __INTERSECTOR3DP1P0_TXX__
 
index a08948afe27f1b6340fccc93ad7d1958c8f0a92a..5adbc1fe0c648a0648e01227588633a493ff6fdc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __Intersector3DP1P0Bary_HXX__
 #define __Intersector3DP1P0Bary_HXX__
index de36ddd78ecc1d6bc657704be38195fcefd4a797..0328a0927ad0afd9e5663287cefd3a16d1afbb5c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __Intersector3DP1P0Bary_TXX__
 #define __Intersector3DP1P0Bary_TXX__
 
index 13c495aefddcc0ca63c288045323bdeffaf595d5..a636a63929ed7237806cc7db318d7f22638ce3e7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __Intersector3DP1P1_HXX__
 #define __Intersector3DP1P1_HXX__
index 03698f4d62c0d9ccda8909fbfbe0bc95d5d4c2eb..f620322675c2b6f56ac8f2cf233757582c1e9b0c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __Intersector3DP1P1_TXX__
 #define __Intersector3DP1P1_TXX__
 
index b159689f27424d8dfa1dce9c66488efd50cb0f8b..9b89117b2eda941b3c4510d8f0c5d10621379da4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANAR2D1DINTERSECTORP0P0_HXX__
 #define __PLANAR2D1DINTERSECTORP0P0_HXX__
index 758df4d5595785a763e0ef6f1cd4c32703bb14a5..0d4a9eb85a751d45f7289b054228eeb317415486 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANAR2D1DINTERSECTORP0P0_TXX__
 #define __PLANAR2D1DINTERSECTORP0P0_TXX__
 
index d25b81d4f71a9ddb41b94f66be0ce5bd5a7ccdbe..e1552c5cf00983e782ce1a4ef983d45df0dda89e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTOR_HXX__
 #define __PLANARINTERSECTOR_HXX__
index 5323eda430d69f5ae6361779d1e9a9f63a0f4edb..ff351fb899c7a26d68c04c2856eca58e5281f9a0 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTOR_TXX__
 #define __PLANARINTERSECTOR_TXX__
 
index 9e5249d629499f6d35b6f7ee1c0ee7b933337562..f0e96825c69fb1f055e41627f348787301fb04df 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP0P0_HXX__
 #define __PLANARINTERSECTORP0P0_HXX__
index f698b984dd78dcc4fe956497eed5e5c8b0fc4479..c62357b1a48a238d44b7a3d36c409e127cd014ae 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP0P0_TXX__
 #define __PLANARINTERSECTORP0P0_TXX__
 
index c6083a228f2e37385c4b5d88cf720a78bd682ff8..5f1107b115812eedd2b79f3eee9552edc93c3f8e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP0P1_HXX__
 #define __PLANARINTERSECTORP0P1_HXX__
index 48343d92af343c47d43cda83ff8de72ad55154d5..090929db69e865a35f5c1e8fbbfb8a48b7e8783b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP0P1_TXX__
 #define __PLANARINTERSECTORP0P1_TXX__
 
index 10b47cfc85bdf56054c7c18129b13368312c663d..c5f22d409898d759b51a27749dbe986868adeee1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP0P1PL_HXX__
 #define __PLANARINTERSECTORP0P1PL_HXX__
index 6537c7bf4bd9a1a72c9d8135a5223729adbd6fb7..902c86a22311447507219ceb20c1d52e67013315 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP0P1PL_TXX__
 #define __PLANARINTERSECTORP0P1PL_TXX__
 
index 29459a510b858b53803fcd5de9d6c109955cd248..50dc049870707b38bb35c1127360be26406f4c8c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP1P0_HXX__
 #define __PLANARINTERSECTORP1P0_HXX__
index 27f598702ae6c0181253b1f1c55bd75c20369746..22ebb93a9f933aa2989a50f51e91de0d1b32a661 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP1P0_TXX__
 #define __PLANARINTERSECTORP1P0_TXX__
 
index 1ea4f480f82f3788d8fcbbda3f44bb04c14e9acf..2d3260316395bf69ce74ddd31dd5321a7444c35b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PlanarIntersectorP1P0Bary_HXX__
 #define __PlanarIntersectorP1P0Bary_HXX__
index a9079580b440c2a9934b59a04e71ca99b8f9d6e2..a8bd8bc8e8a1925330ac5c11aec87d754504f17c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PlanarIntersectorP1P0Bary_TXX__
 #define __PlanarIntersectorP1P0Bary_TXX__
 
index fe82a84e771f8010d33b02eef5d0fe3a0c9d0df4..47def33d0def9d68313aefa2d3a2adc46290e80a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP1P0PL_HXX__
 #define __PLANARINTERSECTORP1P0PL_HXX__
index 311c724de94616284a594eb886f1da3d27c1689d..0f0ab958267ca744951d442d36c9064b2dc8dff5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP1P0PL_TXX__
 #define __PLANARINTERSECTORP1P0PL_TXX__
 
index 1168345d847357a538cd62e7d6a87727da7ceec3..26f77918a990119b267d56898884cbc69f13cc03 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP1P1_HXX__
 #define __PLANARINTERSECTORP1P1_HXX__
index 707cafeb2ab210866ccf44fc2a29d1d9e92b8fd2..9507a63b43ca999171e5ed9f05658ecf58e03167 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP1P1_TXX__
 #define __PLANARINTERSECTORP1P1_TXX__
 
index f2e9c6190c297f1363fa3f1ee9588f7e12ef5dd2..d43edaa58456d9445d4ff66c93c164c631c1178d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP1P1PL_HXX__
 #define __PLANARINTERSECTORP1P1PL_HXX__
index 353240def9a1b2fa6cf06594fc6594443c1fb33f..61bdd13f1d2133f682da00c4060324089614ecbb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP1P1PL_TXX__
 #define __PLANARINTERSECTORP1P1PL_TXX__
 
index a45ee36853d475079445e6a0ed72432541349104..8971dc9e771f4e1e939c732fb2ec4bdfe41be1c4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATORINTERSECTOR_HXX__
 #define __POINTLOCATORINTERSECTOR_HXX__
index 080dc9c4e0bedef46e4f871bd922c68174493bee..14429bb5ecc0410fdd281d959438d024baa2fd6d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATORINTERSECTOR_TXX__
 #define __POINTLOCATORINTERSECTOR_TXX__
 
index 1831ff9088a99d5b3eb4e6346327d748ce8b4990..3b4081ec2f4f653517851afda96fe77e17658b67 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATOR3DINTERSECTORP0P0_HXX__
 #define __POINTLOCATOR3DINTERSECTORP0P0_HXX__
index 043df337e97a433844ca0a290e7be196df876705..5cfa1321cfd3fa0f77011a6f5e42a11bc365619b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATOR3DINTERSECTORP0P0_TXX__
 #define __POINTLOCATOR3DINTERSECTORP0P0_TXX__
 
index 13bc98cac733d6d508369784df91d6ed04ae6e6f..345bac94482ef8a1694875230e49dd4276911de5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATOR3DINTERSECTORP0P1_HXX__
 #define __POINTLOCATOR3DINTERSECTORP0P1_HXX__
index 0ea7ddc804c66adeb772ff7a1d30f9f273708601..33d9d6883bdc653d31a0690c44d1946cc1217135 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATOR3DINTERSECTORP0P1_TXX__
 #define __POINTLOCATOR3DINTERSECTORP0P1_TXX__
 
index 4dd3f26ca25ed971e08e9b849038518b3827b27e..dab5aa63c2726449bc3e88da83add1b711eec920 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATOR3DINTERSECTORP1P0_HXX__
 #define __POINTLOCATOR3DINTERSECTORP1P0_HXX__
index 3a941337d517d00a370afc71d4a410deb3631979..bad0d01cba2522e0e4544582905cee66bbaeb727 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATOR3DINTERSECTORP1P0_TXX__
 #define __POINTLOCATOR3DINTERSECTORP1P0_TXX__
 
index 9951eea526339ded0ef0ac281e8765323496c09f..ec88c82740ef542b8e21dad6d5193c99c39a56da 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATOR3DINTERSECTORP1P1_HXX__
 #define __POINTLOCATOR3DINTERSECTORP1P1_HXX__
index 1cffba133b94f52ce6b4096df72c9531000eb6f4..d6baf689fc274e7b52a40f82dc1a9a3e4f4db5c8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATOR3DINTERSECTORP1P1_TXX__
 #define __POINTLOCATOR3DINTERSECTORP1P1_TXX__
 
index db6972d2a65fffc2c077e44636c8184780c038c8..0ac908044e838c53d5e3311f33629c3b44959d87 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATORALGOS_TXX__
 #define __POINTLOCATORALGOS_TXX__
 
index 6e746ef055c1fc17bad4adecfc3e18fcf9294978..fd039593c8fddad134341d36a10706c5b5622623 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POLYHEDRONINTERSECTORP0P0_HXX__
 #define __POLYHEDRONINTERSECTORP0P0_HXX__
index 61011e735222e1511c115b864c2d22c0e093f389..ba5ea83b8fac3613406424bae70799ed8f2a6702 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POLYHEDRONINTERSECTORP0P0_TXX__
 #define __POLYHEDRONINTERSECTORP0P0_TXX__
 
index 024ce9b68dc1b5fbbe44b3dfbcd31d8d3dd72200..75ef149baf59137a4c7c775cdcc35098a114432e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POLYHEDRONINTERSECTORP0P1_HXX__
 #define __POLYHEDRONINTERSECTORP0P1_HXX__
index 8786b3f769f4890574de1003b35b8f2aa86f90e6..f41bca07d58fb3a38077b8a8309873d37d473431 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POLYHEDRONINTERSECTORP0P1_TXX__
 #define __POLYHEDRONINTERSECTORP0P1_TXX__
 
index c3e257d22cb13f47456a251bc0e102304c2a5684..486f35394689dab748ef8fa7cdcd00892d457c7d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POLYHEDRONINTERSECTORP1P0_HXX__
 #define __POLYHEDRONINTERSECTORP1P0_HXX__
index 962fd76e5cdd017d631a25699166bf6114167439..7e56de719bdd66874dbde9c3f235da787c1a6496 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POLYHEDRONINTERSECTORP1P0_TXX__
 #define __POLYHEDRONINTERSECTORP1P0_TXX__
 
index b6d6f7c15566287fddccd5d86ff8530dc32f1f89..982586ecb0a7584dbab948129211e3e98dc98cc8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PolyhedronIntersectorP1P0Bary_HXX__
 #define __PolyhedronIntersectorP1P0Bary_HXX__
index 884adf1fd93f129eb4d5b67ace41484cd0ddc7b2..044e68acb208e441f6a4006527177509911e9e62 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PolyhedronIntersectorP1P0Bary_TXX__
 #define __PolyhedronIntersectorP1P0Bary_TXX__
 
index fc65a7f10b7443bf1073800941cafb6fde682457..346a14e3398d1a2c210256ff7fe0d2c50caa4d36 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PolyhedronIntersectorP1P1_HXX__
 #define __PolyhedronIntersectorP1P1_HXX__
index 31a26e7df5413c062199bb10f6270a71502b1061..3d3cfb88d97412e8ab6be6e4b32b2c5885985b5a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PolyhedronIntersectorP1P1_TXX__
 #define __PolyhedronIntersectorP1P1_TXX__
 
index 1023394af8683ae09dbbb2e8464a2349b135b7f2..c1a898a9917db478330320de17aad5697f1aa221 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __TARGETINTERSECTOR__HXX__
 #define __TARGETINTERSECTOR__HXX__
index d7f7a4e32def8b7281ca27744fce273a379192d6..8372c4a386f1593db7141627671276684715e223 100644 (file)
@@ -33,7 +33,7 @@
 
 #include "Log.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning(disable:4251)
 #endif
 
index 99959cd2cc22eeb31b8ea6399f75b7490bbed257..170a8f12099b6e74e531c8a9dbdb3e6db050d369 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __TRIANGULATIONINTERSECTOR_HXX__
 #define __TRIANGULATIONINTERSECTOR_HXX__
index 3cc53f66eca0394769a936e026ddd286c7a2b11b..53363c96b712f105cbe2d258c39e46c36726a1f2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __TRIANGULATIONINTERSECTOR_TXX__
 #define __TRIANGULATIONINTERSECTOR_TXX__
 
index 49bf127f9600f84dd682cc8ee20324d86de18a67..f533492df0078366c43481fb84357991c71892fa 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __VTKNORMALIZEDUNSTRUCTUREDMESH_HXX__
 #define __VTKNORMALIZEDUNSTRUCTUREDMESH_HXX__
index 3baae70f2591da16c7881d0a5a2953e50bbebcd9..e326ec4aeba15192f1dceaa8e1955a9194536558 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __VTKNORMALIZEDUNSTRUCTUREDMESH_TXX__
 #define __VTKNORMALIZEDUNSTRUCTUREDMESH_TXX__
 
index b1e815effbc233790c0069e2d884d0ea89f8672a..b7ad4fdb568ed4a8afaa7859d4391dbde09daee9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __VOLSURFFORMULAE_HXX__
 #define __VOLSURFFORMULAE_HXX__
index 09fe9967afbe1ed1bd4d7c2eb6cca0020a6c4632..e6f877bf48cbe1a17a93e431e1179c0d220389fd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __VOLSURFUSER_HXX__
 #define __VOLSURFUSER_HXX__
index 31988e3e0789833975299db2fd75be962261693d..5e4f6129dc9015b689620ac97e65dcf6dd623855 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __VOLSURFUSER_TXX__
 #define __VOLSURFUSER_TXX__
 
index b8cf746fb5d042d381a6e5511e91ad52c51fa681..658a3cee1e2b609c3d0c9d9b2c89eb4390628a49 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${CPPUNIT_INCLUDE_DIRS}
@@ -67,17 +68,18 @@ IF(NOT MED_ENABLE_MICROMED)
     PerfTest.cxx
     )
   ADD_EXECUTABLE(PerfTest ${PerfTest_SOURCES})
-  SET_TARGET_PROPERTIES(PerfTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(PerfTest InterpKernelTest ${CPPUNIT_LIBS})
+  SET_TARGET_PROPERTIES(PerfTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+  TARGET_LINK_LIBRARIES(PerfTest InterpKernelTest ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
+  INSTALL(TARGETS PerfTest DESTINATION ${MED_salomebin_BINS})
 ENDIF(NOT MED_ENABLE_MICROMED)
 
 ADD_LIBRARY(InterpKernelTest SHARED ${InterpKernelTest_SOURCES})
-SET_TARGET_PROPERTIES(InterpKernelTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(InterpKernelTest medmem ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(InterpKernelTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(InterpKernelTest medmem interpkernel ${CPPUNIT_LIBS})
 
 ADD_EXECUTABLE(TestINTERP_KERNEL ${TestINTERP_KERNEL_SOURCES})
-SET_TARGET_PROPERTIES(TestINTERP_KERNEL PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestINTERP_KERNEL InterpKernelTest ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestINTERP_KERNEL PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestINTERP_KERNEL InterpKernelTest ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestINTERP_KERNEL TestINTERP_KERNEL)
 
 INSTALL(TARGETS TestINTERP_KERNEL DESTINATION ${MED_salomebin_BINS})
index 9178175fe1520ad7c20dd4d350c351ab08589b6c..85192e313a7854b034447b128a854e49d81b29b1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "ExprEvalInterpTest.hxx"
 #include "InterpKernelExprParser.hxx"
index f631cb25095b4b42857b4b19c374c433d21dff55..88b7662b7a03aca84b8ec2169cf588c070e5cfe4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef _EXPREVALINTERPTEST_HXX_
 #define _EXPREVALINTERPTEST_HXX_
index 93e49afbde4078468ca5a80a00b99e5842c16336..c936b224a370d2ea4e52f99f8949b87ed5edd9ee 100644 (file)
@@ -20,7 +20,7 @@
 #ifndef _INTERPKERNELTESTEXPORT_HXX_
 #define _INTERPKERNELTESTEXPORT_HXX_
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined InterpKernelTest_EXPORTS
 #    define INTERPKERNELTEST_EXPORT __declspec( dllexport )
 #  else
index a58f32b14c79987178708e6a9b68097019c86e6b..577887c6e028a137a8d862019ee26e3eb7a20938 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index 8024a21ac68cd9a901cd7c14e6ffa8026a594d7e..b9d39e01507d4487dedef77c983ba51593fb8481 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef _QUADRATICPLANARINTERPTEST_HXX_
 #define _QUADRATICPLANARINTERPTEST_HXX_
index 8eae1b8a8fd62c9bbeba9b45f900e9a1f0ef77ab..2781d503fb164a6c08e23b81334629c6fd2afcf1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index a249d3a1360ad7519333739fd4d2ad897badd796..7b22ab2ae99d61ffafc6eb6b4d34c4b94fa7db44 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index 9210694b4a8e56f1b73de12ad9109f712a2ea6cd..5ab41b33e10b7efcd163ddb3d68fc2b149d52c46 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index 329ce0f84397abb06e69e39ed37a00d364abc756..111b61aa389e352dc35af151182f703c0e263571 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index a6362e34c59b57a4f538e5789a0ce21482d72f03..0fdffb561acf0eb2921055175bff28a92459066a 100644 (file)
@@ -21,6 +21,7 @@ INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${XDR_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}/../../idl
@@ -29,16 +30,23 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Bases
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/GaussPoints
-  )
+)
 
 SET(MEDEngine_SOURCES
   Med_Gen_i.cxx
   Med_Gen_Driver_i.cxx
-  )
+)
+
+SET(COMMON_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(WINDOWS)
+  SET(COMMON_FLAGS "${COMMON_FLAGS} -DNOGDI")
+ENDIF(WINDOWS
+)
 
 ADD_LIBRARY(MEDEngine SHARED ${MEDEngine_SOURCES})
-SET_TARGET_PROPERTIES(MEDEngine PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDEngine MEDMEMImpl SalomeIDLMED ${TOOLSDS} ${SalomeHDFPersist} ${SalomeContainer} ${SalomeCommunication} ${SalomeLifeCycleCORBA})
+SET_TARGET_PROPERTIES(MEDEngine PROPERTIES COMPILE_FLAGS "${COMMON_FLAGS}")
+TARGET_LINK_LIBRARIES(MEDEngine MEDMEMImpl SalomeIDLMED ${TOOLSDS} ${SalomeHDFPersist} 
+  ${SalomeContainer} ${SalomeCommunication} ${SalomeLifeCycleCORBA} ${PLATFORM_LIBS})
 INSTALL(TARGETS MEDEngine DESTINATION ${MED_salomelib_LIBS})
 
 SET(MED_MED_salomescript_DATA
index aaf2101a03acec6d54bb27cdcbb2abe0091c0560..270863b81cebdf78d81b2b89f613907eb36ddaef 100644 (file)
@@ -45,7 +45,7 @@ namespace MEDMEM {
   class MED_i;
 }
 
-#ifdef WNT
+#ifdef WIN32
  #if defined MED_EXPORTS || defined MEDEngine_EXPORTS
   #if defined WIN32
    #define MED_EXPORT __declspec( dllexport )
index 9c9046e7740ec47e2039726c68583528032f5804..8b29aca918e0410bbc159bf8f72ca59ae97472a0 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Swig)
 ADD_SUBDIRECTORY(Test)
@@ -24,6 +25,7 @@ INCLUDE_DIRECTORIES(
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
   ${OMNIORB_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}/../../idl
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCouplingCorba
@@ -47,8 +49,8 @@ SET(medcalculator_SOURCES
 )
 
 ADD_LIBRARY(medcalculator SHARED ${medcalculator_SOURCES})
-SET_TARGET_PROPERTIES(medcalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcalculator medloader medcouplingcorba ${KERNEL_LDFLAGS} ${SALOMELocalTrace} ${SalomeNS} ${OpUtil})
+SET_TARGET_PROPERTIES(medcalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcalculator medloader medcouplingcorba ${KERNEL_LDFLAGS} ${SALOMELocalTrace} ${SalomeNS} ${OpUtil} ${OMNIORB_LIBS} ${PLATFORM_LIBS})
 INSTALL(TARGETS medcalculator DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medcalculator_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index 27eebc4f718e75d5553a4052360473f90ffcfe21..a11b7b488e8ceecbb0cc2669173a809b53b7875a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCalculatorBrowserStep.hxx"
 #include "MEDCalculatorBrowserField.hxx"
index 819497b32485251d6a5a815cd8dc2dac58097dfb..60b2c0cb0d06e876ca34c2de2337c5403a1badc8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORBROWSERFIELD_HXX__
 #define __MEDCALCULATORBROWSERFIELD_HXX__
index c792e4dc3d86ddd93a1be216caf7c88afd504aa2..c44ffc66fd05dc345e6491131089d93972c0c8a4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #include "MEDCalculatorBrowserLiteStruct.hxx"
 #include "MEDCalculatorBrowserStep.hxx"
 
index 6d14c2f6d3f8835f9bee7b39e189fb4538f425b3..a72f08a5d8d14b6f61d1db971774a49c035686a5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORBROWSERLITESTRUCT_HXX__
 #define __MEDCALCULATORBROWSERLITESTRUCT_HXX__
index e7a5f573dc49ae005d311544c01922959706d2b3..6cc2ac8d733e173e53bf320773815504efeaf936 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #include "MEDCalculatorBrowserMesh.hxx"
 
 #include <sstream>
index 0872df21431aff2a901c520a746155ebd4490509..97306ff1aea3619f4e6fe137db98c9f85b7b8a46 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __MEDCALCULATORBROWSERMESH_HXX__
 #define __MEDCALCULATORBROWSERMESH_HXX__
 
index 7f02dcfa0474be90b5ada514e143391980a5a40c..14da25390f3e51719ba185c71bf30c50ca2a55b2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCalculatorBrowserStep.hxx"
 
index 10512cf025f8c102994b1403954308a3124b9122..029ce6ae5cc47bde9679bd87abe443577d69504e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORBROWSERSTEP_HXX__
 #define __MEDCALCULATORBROWSERSTEP_HXX__
index 5293642e1216ece7c3eda6ed1b6ca85dd82b71f1..015603b853d60dca9ff485e6aa0243aeb1b9ce22 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCalculatorDBField.hxx"
 #include "MEDCalculatorBrowserField.hxx"
index bf02bd98399564a4cd3105e27b4098dbc3f4cb9c..a8eb1dc8d895c205748620d8c535b08c6f92991d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORDBFIELD_HXX__
 #define __MEDCALCULATORDBFIELD_HXX__
index 06bdcd46ba38fa9fa4fd1fffe532475057fbabb4..799777dbb38e00fae8678b47f137f320194511dd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCalculatorDBRangeSelection.hxx"
 
index 2b0f0f823ef0fee5f8f2c70d8199d2e6f321aee8..889641b99d6399d826337eee56e94eb3efa66b99 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORDBRANGESELECTION_HXX__
 #define __MEDCALCULATORDBRANGESELECTION_HXX__
index aa1f11b662421f14a023041cc575506f62c3043d..e2d4abfe32e5fa34b9908d7fdbbc93de09ed5b6d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCalculatorDBSliceField.hxx"
 #include "MEDCalculatorDBRangeSelection.hxx"
index 26cca6842f0a1adb842b15d2c8dbafea86a1559c..d4697b8c9a0d2fd9da6e769cb41bd3fb0697e40c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORDBSLICEFIELD_HXX__
 #define __MEDCALCULATORDBSLICEFIELD_HXX__
index 3ec811520c6f95f19079c657cf05286bf6ed09c2..ccd04d166c8544ff85f6a2d8a7ec6155cd8c558d 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 7a7f6d892f7a0bd13e8f874c47c241f0e1e80c2c..0f7fcd22351c1147f6a50dab7664a208dd3085a5 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORDEFINES_HXX__
 #define __MEDCALCULATORDEFINES_HXX__
index eb2593a92584a2f6f050f9850bed69ab94fd0b5f..0ea866771b236e07b9411140ecbd9b472506bdb4 100644 (file)
@@ -16,8 +16,9 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -46,9 +47,13 @@ INSTALL(TARGETS medcalculatorspython DESTINATION ${MED_salomelib_LIBS})
 
 SET_SOURCE_FILES_PROPERTIES(MEDCalculator.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(MEDCalculator.i PROPERTIES SWIG_DEFINITIONS "-shadow")
-
 SWIG_ADD_MODULE(MEDCalculator python MEDCalculator.i)
-SWIG_LINK_LIBRARIES(MEDCalculator ${PYTHON_LIBRARIES} medcalculator)
+SWIG_LINK_LIBRARIES(MEDCalculator ${PYTHON_LIBS} medcalculator)
+SET_TARGET_PROPERTIES(_MEDCalculator PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDCalculator PROPERTIES DEBUG_OUTPUT_NAME _MEDCalculator_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 
 FILE(GLOB medcalculatorspython_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
 INSTALL(FILES ${medcalculatorspython_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
index 4061b59ef963c5474a247b33f9a8f811b7536323..63e7b7416e3c625f5ca52b47d672e46a336af6bc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 %module MEDCalculator
 
index 74b5c6166e6e469ab88405a7bdd68261adf530e7..70a2b5ac85df262f5f5a6004df4df0d2ba5e5257 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDCalculator import *
 import unittest
index 5a952f7483dba934168285fceedb604bdecad57d..a527be4cd349b15457021627c4647eb51f140bca 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include <limits>
 
index 9416cec2f64e6509f7e21b3f1a9c859939e78175..a935106c3fe27d79b8e30e3e579cc9162a7ac3a1 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 #  MED MEDMEM_SWIG : binding of C++ implementation and Python
 #
index 13bbafce7804dbb44b37990fd453ae7742ccd835..aa5178c9b7eaf8442bec8c62754467da9674aa1d 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORSPYTHONDEFINES_HXX__
 #define __MEDCALCULATORSPYTHONDEFINES_HXX__
index ed7642abc1d8595850d8f78f7ee96cd047624c95..f80e6fb893d88e1a4b927956c28dc37288f86801 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "SPythonInterpreter.hxx"
 #include "SPythonParser.hxx"
index 27abd06a002435753343046b955a8abeaef99869..463576278364c685bf0b0e4eadfd79b9a91fbc97 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __SPYTHONINTERPRETER_HXX__
 #define __SPYTHONINTERPRETER_HXX__
index 6eb82a7c689b6e7986366226f51121c4e18fb8e6..4320c6b4df5af1c699c61c86d2ca4ff29b2def3c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "SPythonParser.hxx"
 
index b11c4e08e89f52af2e14d32f0f34a7bc80a402bf..854a0d32b21f23d1e97e09b101edcf577fad9e4d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __SPYTHONPARSER_HXX__
 #define __SPYTHONPARSER_HXX__
index 87c64487e7d3eb97441c7f2bd95c31fe4e13b3b8..d6e3e9d2bdf0d44ed29649a2813b93ddf8cd5690 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "SPythonInterpreter.hxx"
 
index a5dd9bef77ca0dc78d9c4295e3bd7eae3edac8ae..970b6f24bb3fe65207ecb1d090b80d3009d0ea93 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 def f(i):
 
index 6f90103f12a976817e270f96172ecc008a3ee39b..44b4f7c4a6a5d0512a1abda07e91f1734a8a2ab4 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 e=MEDCalculatorBrowserLiteStruct("hfile1.med")
 f=e.getField(0)
index 5d320587b8a442d4c571516e5d01393fe08cfbd4..7f28318b22ed6bf2f21f0f5a6b081047501701f4 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
@@ -37,8 +38,8 @@ SET(TestMEDCalculator_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDCalculator ${TestMEDCalculator_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCalculator medcalculatorspython medcalculator ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCalculator medcalculatorspython medcalculator ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDCalculator TestMEDCalculator)
 
 INSTALL(TARGETS TestMEDCalculator DESTINATION ${MED_salomebin_BINS})
index 64824c699817d6fd464f5ca71ef05b4b6edd1a4c..a6f2c5fbc06034ae87312ca34c7190048e7ecfc5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCalculatorBasicsTest.hxx"
 #include "MEDCalculatorBrowserLiteStruct.hxx"
index 24ac743d02602750963366c6d98b61091afd30e0..2d5c9fab1bdf1571cc73417ea6bdfa8329f75278 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCALCULATORBASICSTEST_HXX__
 #define __MEDCALCULATORBASICSTEST_HXX__
index fcfb31b93c14bda8c27d777c325d69ff7cfd5434..05159ce24383bc872fe6d9b0116390c138b6d7ae 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 3e53d15b3fab2a4bf10ae6d12425d3079d5eecf7..0f283f4241a4c15a1f90dd43111cc1a9fa4fc913 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "CppUnitTest.hxx"
 #include "MEDCalculatorBasicsTest.hxx"
index 047589fa89695702b9f107bb6eb2da3b40c03a55..e2513eb99bb2fe38d6d47f377ebe1f4549d99af3 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Test)
 
@@ -54,11 +55,13 @@ SET(medcouplingremapper_SOURCES
   )
 
 ADD_LIBRARY(medcoupling SHARED ${medcoupling_SOURCES})
+SET_TARGET_PROPERTIES(medcoupling PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(medcoupling interpkernel)
 INSTALL(TARGETS medcoupling DESTINATION ${MED_salomelib_LIBS})
 
 ADD_LIBRARY(medcouplingremapper SHARED ${medcouplingremapper_SOURCES})
 TARGET_LINK_LIBRARIES(medcouplingremapper medcoupling)
+SET_TARGET_PROPERTIES(medcouplingremapper PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
 INSTALL(TARGETS medcouplingremapper DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medcoupling_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index d732798dedba48184141616b869c400d292b6e3e..0ca61624bf2c54eea439741c5671bc4df83cbc13 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef _MEDCOUPLING_HXX_
 #define _MEDCOUPLING_HXX_
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined medcoupling_EXPORTS
 #    define MEDCOUPLING_EXPORT __declspec( dllexport )
 #  else
@@ -30,7 +31,7 @@
 #  define MEDCOUPLING_EXPORT
 #endif
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined medcouplingremapper_EXPORTS
 #    define MEDCOUPLINGREMAPPER_EXPORT __declspec( dllexport )
 #  else
@@ -40,7 +41,7 @@
 #  define MEDCOUPLINGREMAPPER_EXPORT
 #endif
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning( disable : 4290 )
 #endif
 
index f9dc0efe3978676f3b9f5d80185a2171d6231c1b..fc0c0f4e9a5de28061d285c7dea7c935cbdb0895 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGAUTOREFCOUNTOBJECTPTR_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGAUTOREFCOUNTOBJECTPTR_HXX__
index 883b4c9ca767517c7b6eb3801a539f8987802605..bd6233b93535f961bc25e89d36b22004632c7673 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingCMesh.hxx"
 #include "MEDCouplingUMesh.hxx"
index d80a3e2a33b2db6d64582d2ebc871741168ea650..39407ebb61b38ad370837674e2035cd18a8ee09e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGCMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGCMESH_HXX__
index a43312d902d3ac47378101ff1c328776dd325a21..0d703ce733d547a18796208ac96780a986519c2a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingDefinitionTime.hxx"
 #include "MEDCouplingFieldDouble.hxx"
index 26ef19667d8286f6f2a2b022d7db1a7405e89500..2ef0464ebdfadc3d4042cbcda1c1fc18fd5a6a3b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGDEFINITIONTIME_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGDEFINITIONTIME_HXX__
index 71a7e65c8f244bed9270e3fd55c253d6c24b2bc0..663737af5d8b3b9e62070b86f2a9e1efd441d6a7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingExtrudedMesh.hxx"
 #include "MEDCouplingUMesh.hxx"
index fa3a3e1d90b5ca36b9e68b674ff533c88bb7105d..9dc8122edd43453ac3b90d391ca1e1f220f2eb62 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGEXTRUDEDMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGEXTRUDEDMESH_HXX__
index 6c598c084b1565f566765fd14506207ecc3ee266..08eb6970b29e1744561a2adbefcf106d4d5c117a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingField.hxx"
 #include "MEDCouplingMesh.hxx"
index 162a17834324c7ef0da5e79dd0177e9acaa6c15b..439743ad56539c7b5265c3a6d946b30b33608686 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELD_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELD_HXX__
index 54b2ad6751e132c71b5198b0da195d95c61eaf70..2739ca421baee04a9a10e8fda3d0d6a09ed36dd7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldDiscretization.hxx"
 #include "MEDCouplingCMesh.hxx"
index 0bd0034616d45333825eca05e2c21c0dfe242d89..df43d95277b35b88f76c16117cd50c163994f8c5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDDISCRETIZATION_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDDISCRETIZATION_HXX__
index 5f208b5c6d66ebf40d0b4668b19aa1ee8aa802b4..170cf2ecbbaf6b7ab4bbeb5ddb5c6d05a02e13b2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldDouble.hxx"
 #include "MEDCouplingFieldTemplate.hxx"
index 4d86fd3f8f19636eb896cb25ea19693ed7608c8d..3eac19dceb18b4e19d43a1960bc1eecc4dba57cc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDDOUBLE_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDDOUBLE_HXX__
index eed9db85b54872ce5ae1db1a358c63b98a57681c..280c69a2dfc1f4129c48f0df6e1fa4e7f9fa0704 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldOverTime.hxx"
 #include "MEDCouplingMesh.hxx"
index 4c353c8e68ce1fd8d4a6b6ab7fb98a9aa87575d7..f1daea33c0350f59cfd12d99dd55bc2faa0741cb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDOVERTIME_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDOVERTIME_HXX__
index 2a77f785fb571e9bbdaac526be79d35e46191cae..628ee6b7290715451833c32d6525def90b2f456b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldTemplate.hxx"
 #include "MEDCouplingMesh.hxx"
index 7c731463e1770ab061489f4d7523af19b4ccb42d..d93411ecb0bff8a53a3c26fd7873ac7ad5bfdc5b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDTEMPLATE_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDTEMPLATE_HXX__
index eae9beab48a823397d28176d7da4836808c06668..1b5df9b077c53ebc7f57aa6d5fd3ae2f0c70b168 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingGaussLocalization.hxx"
 #include "CellModel.hxx"
index 2660f946e67599de9222480025f1a15efe69ac93..49f843e7e0757cea57664152a369ffcc51505930 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGGAUSSLOCALIZATION_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGGAUSSLOCALIZATION_HXX__
index 2dabb36d33c8ccfc693bb8dcbd4077f5b963b23c..a112e3edad4a4cce8654e2b2eb4a0e05711931ef 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMemArray.txx"
 #include "MEDCouplingAutoRefCountObjectPtr.hxx"
@@ -686,7 +687,7 @@ std::string DataArrayDouble::reprZip() const
 void DataArrayDouble::writeVTK(std::ostream& ofs, int indent, const char *nameInFile) const throw(INTERP_KERNEL::Exception)
 {
   std::string idt(indent,' ');
-  ofs.precision(15);
+  ofs.precision(17);
   ofs << idt << "<DataArray type=\"Float32\" Name=\"" << nameInFile << "\" NumberOfComponents=\"" << getNumberOfComponents() << "\"";
   ofs << " format=\"ascii\" RangeMin=\"" << getMinValueInArray() << "\" RangeMax=\"" << getMaxValueInArray() << "\">\n" << idt;
   std::copy(begin(),end(),std::ostream_iterator<double>(ofs," "));
@@ -708,14 +709,14 @@ void DataArrayDouble::reprZipStream(std::ostream& stream) const
 void DataArrayDouble::reprWithoutNameStream(std::ostream& stream) const
 {
   DataArray::reprWithoutNameStream(stream);
-  stream.precision(15);
+  stream.precision(17);
   _mem.repr(getNumberOfComponents(),stream);
 }
 
 void DataArrayDouble::reprZipWithoutNameStream(std::ostream& stream) const
 {
   DataArray::reprWithoutNameStream(stream);
-  stream.precision(15);
+  stream.precision(17);
   _mem.reprZip(getNumberOfComponents(),stream);
 }
 
@@ -1611,7 +1612,7 @@ void DataArrayDouble::SetArrayIn(DataArrayDouble *newArray, DataArrayDouble* &ar
     }
 }
 
-void DataArrayDouble::useArray(const double *array, bool ownership,  DeallocType type, int nbOfTuple, int nbOfCompo)
+void DataArrayDouble::useArray(const double *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo)
 {
   _nb_of_tuples=nbOfTuple;
   _info_on_compo.resize(nbOfCompo);
@@ -1619,6 +1620,14 @@ void DataArrayDouble::useArray(const double *array, bool ownership,  DeallocType
   declareAsNew();
 }
 
+void DataArrayDouble::useExternalArrayWithRWAccess(const double *array, int nbOfTuple, int nbOfCompo)
+{
+  _nb_of_tuples=nbOfTuple;
+  _info_on_compo.resize(nbOfCompo);
+  _mem.useExternalArrayWithRWAccess(array,nbOfTuple*nbOfCompo);
+  declareAsNew();
+}
+
 void DataArrayDouble::checkNoNullValues() const throw(INTERP_KERNEL::Exception)
 {
   const double *tmp=getConstPointer();
@@ -3299,7 +3308,7 @@ DataArrayDoubleTuple::DataArrayDoubleTuple(double *pt, int nbOfComp):_pt(pt),_nb
 
 std::string DataArrayDoubleTuple::repr() const
 {
-  std::ostringstream oss; oss.precision(15); oss << "(";
+  std::ostringstream oss; oss.precision(17); oss << "(";
   for(int i=0;i<_nb_of_compo-1;i++)
     oss << _pt[i] << ", ";
   oss << _pt[_nb_of_compo-1] << ")";
@@ -3324,7 +3333,7 @@ DataArrayDouble *DataArrayDoubleTuple::buildDADouble(int nbOfTuples, int nbOfCom
   if((_nb_of_compo==nbOfCompo && nbOfTuples==1) || (_nb_of_compo==nbOfTuples && nbOfCompo==1))
     {
       DataArrayDouble *ret=DataArrayDouble::New();
-      ret->useArray(_pt,false,CPP_DEALLOC,nbOfTuples,nbOfCompo);
+      ret->useExternalArrayWithRWAccess(_pt,nbOfTuples,nbOfCompo);
       return ret;
     }
   else
@@ -3792,6 +3801,14 @@ void DataArrayInt::useArray(const int *array, bool ownership,  DeallocType type,
   declareAsNew();
 }
 
+void DataArrayInt::useExternalArrayWithRWAccess(const int *array, int nbOfTuple, int nbOfCompo)
+{
+  _nb_of_tuples=nbOfTuple;
+  _info_on_compo.resize(nbOfCompo);
+  _mem.useExternalArrayWithRWAccess(array,nbOfTuple*nbOfCompo);
+  declareAsNew();
+}
+
 DataArrayInt *DataArrayInt::fromNoInterlace() const throw(INTERP_KERNEL::Exception)
 {
   if(_mem.isNull())
@@ -6418,7 +6435,7 @@ DataArrayInt *DataArrayIntTuple::buildDAInt(int nbOfTuples, int nbOfCompo) const
   if((_nb_of_compo==nbOfCompo && nbOfTuples==1) || (_nb_of_compo==nbOfTuples && nbOfCompo==1))
     {
       DataArrayInt *ret=DataArrayInt::New();
-      ret->useArray(_pt,false,CPP_DEALLOC,nbOfTuples,nbOfCompo);
+      ret->useExternalArrayWithRWAccess(_pt,nbOfTuples,nbOfCompo);
       return ret;
     }
   else
index 2fccfc1b6417a2e871001176d869be8562435e36..675a563ec7afd27401713c0a79b56d0ad0b67f24 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGMEMARRAY_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGMEMARRAY_HXX__
@@ -74,6 +75,7 @@ namespace ParaMEDMEM
     void alloc(int nbOfElements) throw(INTERP_KERNEL::Exception);
     void reAlloc(int newNbOfElements) throw(INTERP_KERNEL::Exception);
     void useArray(const T *array, bool ownership, DeallocType type, int nbOfElem);
+    void useExternalArrayWithRWAccess(const T *array, int nbOfElem);
     void writeOnPlace(int id, T element0, const T *others, int sizeOfOthers);
     ~MemArray() { destroy(); }
   private:
@@ -217,6 +219,7 @@ namespace ParaMEDMEM
     MEDCOUPLING_EXPORT const double *begin() const { return getConstPointer(); }
     MEDCOUPLING_EXPORT const double *end() const { return getConstPointer()+getNbOfElems(); }
     MEDCOUPLING_EXPORT void useArray(const double *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo);
+    MEDCOUPLING_EXPORT void useExternalArrayWithRWAccess(const double *array, int nbOfTuple, int nbOfCompo);
     MEDCOUPLING_EXPORT void writeOnPlace(int id, double element0, const double *others, int sizeOfOthers) { _mem.writeOnPlace(id,element0,others,sizeOfOthers); }
     MEDCOUPLING_EXPORT void checkNoNullValues() const throw(INTERP_KERNEL::Exception);
     MEDCOUPLING_EXPORT void getMinMaxPerComponent(double *bounds) const throw(INTERP_KERNEL::Exception);
@@ -461,6 +464,7 @@ namespace ParaMEDMEM
     MEDCOUPLING_EXPORT DataArrayInt *duplicateEachTupleNTimes(int nbTimes) const throw(INTERP_KERNEL::Exception);
     MEDCOUPLING_EXPORT std::set<int> getDifferentValues() const throw(INTERP_KERNEL::Exception);
     MEDCOUPLING_EXPORT void useArray(const int *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo);
+    MEDCOUPLING_EXPORT void useExternalArrayWithRWAccess(const int *array, int nbOfTuple, int nbOfCompo);
     MEDCOUPLING_EXPORT void writeOnPlace(int id, int element0, const int *others, int sizeOfOthers) { _mem.writeOnPlace(id,element0,others,sizeOfOthers); }
     MEDCOUPLING_EXPORT static DataArrayInt *Add(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
     MEDCOUPLING_EXPORT void addEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
index 4c5339a8b6671a5e34484af5c29501115aa647cd..e569249d8dfddf3bdbbce777a9ca2d119c86e449 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PARAMEDMEM_MEDCOUPLINGMEMARRAY_TXX__
 #define __PARAMEDMEM_MEDCOUPLINGMEMARRAY_TXX__
 
@@ -67,6 +68,16 @@ namespace ParaMEDMEM
     _dealloc=type;
   }
 
+  template<class T>
+  void MemArray<T>::useExternalArrayWithRWAccess(const T *array, int nbOfElem)
+  {
+    _nb_of_elem=nbOfElem;
+    destroy();
+    _pointer.setInternal(const_cast<T *>(array));
+    _ownership=false;
+    _dealloc=CPP_DEALLOC;
+  }
+  
   template<class T>
   void MemArray<T>::writeOnPlace(int id, T element0, const T *others, int sizeOfOthers)
   {
index be03bdd7d1bca6bdde3b65a0a1830eb9ceea0cdd..d226fd90dbba65c58f64984a755f0f9463937791 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMesh.hxx"
 #include "MEDCouplingUMesh.hxx"
index 4d8d69c14672893f965a55ea64777e808912926f..988ab77e9b12b717b2e25fa62669d5b080193211 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGMESH_HXX__
index 3586308b75a63752920aea2597379b9bcbcc10a9..94856e43d37ae78583cc142d0242f9f9d0545fb0 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMultiFields.hxx"
 #include "MEDCouplingFieldTemplate.hxx"
index 69445a724b76379db93ff5ada59685da48b962d3..16e25852c7e81d3a83a799db840b6046b5935458 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGMULTIFIELDS_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGMULTIFIELDS_HXX__
index 8344d7588bb6c3f81311695901d3b6eb20db35f8..818614ba0961dd6275e24fe345b0f1efd1c1332b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingNatureOfField.hxx"
 
index 314c62131822437a134165f3cd36eba9bec8334c..6bcf75abed116d4899c9ab8690c3f575422fb517 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGNATUREOFFIELD_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGNATUREOFFIELD_HXX__
index 60cbfdb34d7b1246dc22c698ae2940767a776021..a0ef2a55050827ada2d6d75d89e5e149ce69e112 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGNORMALIZEDCARTESIANMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGNORMALIZEDCARTESIANMESH_HXX__
index cffd88a3ab5ee2e4135d53825e507339a25ab481..4a2466b33c0828491df33db87084be3885d0d6d2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_HXX__
index 4ad2677b6e1a4e5c7c85c537f368f4c7159d2f05..8a9da83cf99fe14e898f6e01c711b45be9bfb8bf 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_TXX__
 #define __MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_TXX__
 
index f4aedb6a591d0bb7a8c462e21282e2c316d6b786..f2acae753adb5d922c755edfe9f4067e4736a9ee 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingPointSet.hxx"
 #include "MEDCouplingAutoRefCountObjectPtr.hxx"
index 88a0f3ecd1f0c23072cee360eab5f28461176da8..4e00e4770c1bde6f3bdce9a9fdd1ff5d7bb99432 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGPOINTSET_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGPOINTSET_HXX__
index ab245084ef27624e3b15d4a6b72bcbf05f640412..af387699bd6034d2fe42dc97a37f4501ce36e58e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRefCountObject.hxx"
 
index c466315b385c8be839985c9763fcb16a32de7b27..f9084503e7618159511a81609646d2ba786613e5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGREFCOUNTOBJECT_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGREFCOUNTOBJECT_HXX__
index 3c5fa11f23cffa0d2084fc7ab4d3506ab56a16c9..0ef48eec7fb1ef0154f0dd4df3ca82f1068e1f08 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRemapper.hxx"
 #include "MEDCouplingMemArray.hxx"
@@ -705,3 +706,74 @@ const std::vector<std::map<int,double> >& MEDCouplingRemapper::getCrudeMatrix()
 {
   return _matrix;
 }
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method works on precomputed \a this->_matrix. All coefficients in the matrix is lower than \a maxValAbs this coefficient is
+ * set to 0. That is to say that its entry disappear from the map storing the corresponding row in the data storage of sparse crude matrix.
+ * This method is useful to correct at a high level some problems linked to precision. Indeed, with some \ref NatureOfField "natures of field" some threshold effect
+ * can occur.
+ *
+ * \param [in] maxValAbs is a limit behind which a coefficient is set to 0. \a maxValAbs is expected to be positive, if not this method do nothing.
+ * \return a positive value that tells the number of coefficients put to 0. The 0 returned value means that the matrix has remained unchanged.
+ * \sa MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrix
+ */
+int MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception)
+{
+  int ret=0;
+  std::vector<std::map<int,double> > matrixNew(_matrix.size());
+  int i=0;
+  for(std::vector<std::map<int,double> >::const_iterator it1=_matrix.begin();it1!=_matrix.end();it1++,i++)
+    {
+      std::map<int,double>& rowNew=matrixNew[i];
+      for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+        {
+          if(fabs((*it2).second)>maxValAbs)
+            rowNew[(*it2).first]=(*it2).second;
+          else
+            ret++;
+        }
+    }
+  if(ret>0)
+    _matrix=matrixNew;
+  return ret;
+}
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method works on precomputed \a this->_matrix. All coefficients in the matrix is lower than delta multiplied by \a scaleFactor this coefficient is
+ * set to 0. That is to say that its entry disappear from the map storing the corresponding row in the data storage of sparse crude matrix.
+ * delta is the value returned by MEDCouplingRemapper::getMaxValueInCrudeMatrix method.
+ * This method is useful to correct at a high level some problems linked to precision. Indeed, with some \ref NatureOfField "natures of field" some threshold effect
+ * can occur.
+ *
+ * \param [in] scaleFactor is the scale factor from which coefficients lower than \a scaleFactor times range width of coefficients are set to zero.
+ * \return a positive value that tells the number of coefficients put to 0. The 0 returned value means that the matrix has remained unchanged. If -1 is returned it means
+ *         that all coefficients are null.
+ * \sa MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrixAbs
+ */
+int MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception)
+{
+  double maxVal=getMaxValueInCrudeMatrix();
+  if(maxVal==0.)
+    return -1;
+  return nullifiedTinyCoeffInCrudeMatrixAbs(scaleFactor*maxVal);
+}
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method returns the maximum of the absolute values of coefficients into the sparse crude matrix.
+ * The returned value is positive.
+ */
+double MEDCouplingRemapper::getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception)
+{
+  double ret=0.;
+  for(std::vector<std::map<int,double> >::const_iterator it1=_matrix.begin();it1!=_matrix.end();it1++)
+    for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+      if(fabs((*it2).second)>ret)
+        ret=fabs((*it2).second);
+  return ret;
+}
index b09539ec405af3653dedee3f876729613d9028ab..c2005df8e26a8e477a5a635f99f8591c060743de 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGREMAPPER_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGREMAPPER_HXX__
@@ -54,6 +55,10 @@ namespace ParaMEDMEM
     MEDCOUPLINGREMAPPER_EXPORT bool setOptionInt(const std::string& key, int value);
     MEDCOUPLINGREMAPPER_EXPORT bool setOptionDouble(const std::string& key, double value);
     MEDCOUPLINGREMAPPER_EXPORT bool setOptionString(const std::string& key, const std::string& value);
+    //
+    MEDCOUPLINGREMAPPER_EXPORT int nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception);
+    MEDCOUPLINGREMAPPER_EXPORT int nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception);
+    MEDCOUPLINGREMAPPER_EXPORT double getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception);
   public:
     MEDCOUPLINGREMAPPER_EXPORT const std::vector<std::map<int,double> >& getCrudeMatrix() const;
     MEDCOUPLINGREMAPPER_EXPORT static void PrintMatrix(const std::vector<std::map<int,double> >& m);
index 1f4e1fef5ad0f1bf3e2856fe5fd35bde23f44aef..7712aa874d4354f56f4764b5a902054fae09e6ad 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingTimeDiscretization.hxx"
 #include "MEDCouplingMemArray.hxx"
index 6dab084c31e365bf56b4da2adba475678b753317..79d6fa07a6bdde63e6ffb6b69e89b2dea8378f23 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGTIMEDISCRETIZATION_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGTIMEDISCRETIZATION_HXX__
index e91f08a4e76f546428a2c0ec830194b4edce0ee3..9c2716c1e70ad62d83900490e8ec9ddcc4d121c3 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingTimeLabel.hxx"
 
index c334ffdbdd1c3375537ed51c42bd504a0c9bcbc4..4755d2edd88d3432c8f898554b538082f54ec81d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_TIMELABEL_HXX__
 #define __PARAMEDMEM_TIMELABEL_HXX__
index 24e0e52dd6ba431facbd78ca5706baba244ee449..d8f87ad56216febabd1b67931b1a43b818c7b675 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingUMesh.hxx"
 #include "MEDCouplingMemArray.txx"
index a03196d89aba49a7e70fca0f0f75a93e881ef6da..eb28c5a309ccc4c9115eecfde6f963efdf9046ae 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGUMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGUMESH_HXX__
index 4807d075b0a438d183e5052e62c0f9286e040e69..22905de8578ee2ed3692a5687c15430a9fe2cdaf 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingUMeshDesc.hxx"
 #include "CellModel.hxx"
index 27216c8f348c7eb7766acd405327112c78e83ba6..37e27e1f37da5f36730f0f107bb2b462a41e2016 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGUMESHDESC_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGUMESHDESC_HXX__
index f293a7ca08100152b411c1a11236679c91814093..8f87532b8b6b448b917f1c534de1d050a1915ee0 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index c5b2385ee52e473a0e3ca291eb7f3d36edaf6c82..f0c4138b3e6962827c413b5ffbad406044eb1684 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
-  $(CPPUNIT_INCLUDE_DIRS)
+  ${CPPUNIT_INCLUDE_DIRS}
+  ${PTHREADS_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}/..
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Bases
@@ -51,18 +53,18 @@ SET(TestMEDCouplingExamples_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDCoupling ${TestMEDCoupling_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCoupling PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCoupling medcoupling ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCoupling PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCoupling medcoupling ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDCoupling TestMEDCoupling)
 
 ADD_EXECUTABLE(TestMEDCouplingRemapper ${TestMEDCouplingRemapper_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingRemapper medcouplingremapper ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingRemapper medcouplingremapper ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDCouplingRemapper TestMEDCouplingRemapper)
 
 ADD_EXECUTABLE(TestMEDCouplingExamples ${TestMEDCouplingExamples_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingExamples PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingExamples medcoupling ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingExamples PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingExamples medcoupling ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDCouplingExamples TestMEDCouplingExamples)
 
 INSTALL(TARGETS TestMEDCoupling TestMEDCouplingRemapper DESTINATION ${MED_salomebin_BINS})
index 3e7a7844849fcd0f4cbf3c9dcb4d00585ee93f36..12daa71e6ff375d6db29a44f417b5c3055c30682 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST_HXX__
 #define __MEDCOUPLINGBASICSTEST_HXX__
index bcd2fc326cdc1e6e10df0c0a7bb9ab534b31fe44..84624cf0bf920505473967da435e9b978fa903f4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest.hxx"
 #include "MEDCouplingUMesh.hxx"
index 12769a45c587882235cd7a5e7be2e8a167299b12..b1b83ca9e18c78a00dd09d6e5c2e6c3d96f9e3b0 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest1.hxx"
 #include "MEDCouplingUMesh.hxx"
index 6cea32d74735e39d30516346e13cb137acb77987..9e0082458c44f74c553f04aae8aed919ffd194b5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST1_HXX__
 #define __MEDCOUPLINGBASICSTEST1_HXX__
index fd90286e875159a0adc7fd78a6bafb5ee1eb37ed..89cf9818f87b03f573cf044a5eb5ac4c6246e58f 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest2.hxx"
 #include "MEDCouplingUMesh.hxx"
index 4a8d58c45c23e5cb8776afbcea909f3cb8340c4d..ae2f56ddbc012ee1c72a94b53ada03339cf498e6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST2_HXX__
 #define __MEDCOUPLINGBASICSTEST2_HXX__
index a02421060a758c9aa7c3ddf0b805f2fe19c1ab64..ce2fc84ecc57f0bc43809a71fcfcaef206d91817 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest3.hxx"
 #include "MEDCouplingUMesh.hxx"
index b6d04e3bc9d7e5c50e58f8e17e5aebc5207cf5fe..1caa2c5bb21075bc8be536b949150a1b74ba86b6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST3_HXX__
 #define __MEDCOUPLINGBASICSTEST3_HXX__
index c867a699adb7653206cf8228af2e63fd593f0980..f781b061a3bc1b506d6676dbe4ae303e185370ef 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest4.hxx"
 #include "MEDCouplingUMesh.hxx"
index f1eb2c0c7a77aba85a3653d43f5d63896b862c62..d3551bbcb00d04abd835ec8ff26c03dbd399b67c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST4_HXX__
 #define __MEDCOUPLINGBASICSTEST4_HXX__
index 25e9a5bb98c3e025816b20353d6236bb7530a5e3..5e0d2a25343704387530c3824f8c1c5a71a04931 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest5.hxx"
 #include "MEDCouplingUMesh.hxx"
index cd4b556464a85dcf2fc1bc7c80208414e87a4b66..0bc8432f6d1cded094c786a937768b616294b33d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST5_HXX__
 #define __MEDCOUPLINGBASICSTEST5_HXX__
index 14541f4cfa34000d116f8a05baacd170fd2754e0..2ec891bc14867264c0b4d73ea434e2cd273c34d6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 int connITT[201]={0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1029, 1058, 1087, 1116, 1145, 1174, 1203,
                     1232, 1261, 1290, 1319, 1348, 1377, 1406, 1435, 1464, 1493, 1522, 1551, 1580, 1609, 1638, 1667, 1696, 1725, 1754, 1783, 1812, 1841, 1870, 1899,
index 33c4a793de5791661641b77a722826b827f11b5a..9d6e9a16d4540262a5887c5f0c5c8971fdc7c35b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTestInterp.hxx"
 #include "MEDCouplingUMesh.hxx"
@@ -1524,7 +1525,7 @@ void MEDCouplingBasicsTestInterp::testInterpolationCC()
       {
         sum += s_v->second;
         double vvv;
-#ifdef WNT
+#ifdef WIN32
         double vv = s_v->second / precis;
         if(vv>=0.0)
           {
index 96a6781ebed7e03213ec395dac8b3596ff351db5..af82f9d6b63dec7344d8cda8b47af0afa74b7eb1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTESTINTERP_HXX__
 #define __MEDCOUPLINGBASICSTESTINTERP_HXX__
index 1f89f7578622195a8a01a9b205a95abf467081b4..635f91789d24659fe949f09f6279592c07f742f6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest.hxx"
 #include "MEDCouplingUMesh.hxx"
index e348d8e51584605c360bf4a7aed9b6953396d425..b5c4a24169e104a96e0df0baff10ac80b9638c00 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRemapperTest.hxx"
 #include "MEDCouplingUMesh.hxx"
index 44c4bc31274de4ecdec313d63447bd30230aa889..d7d161d6f33eb4a5c37ef5da28b56c3bfc864651 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGREMAPPERTEST_HXX__
 #define __MEDCOUPLINGREMAPPERTEST_HXX__
index 1e0cd1d0c14608fe50bd16971b70da471c851d8b..4eff0b4a3af72b0db70f322e6ee236e90943434d 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 50ba034934db7c58513df3c02c0b4de579a0d5ca..c192b27a41ad307ae48adeb2494217a2713d3f5c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest1.hxx"
 #include "MEDCouplingBasicsTest2.hxx"
index 35ff0082859bd124415e968b8be6f9e140ac3484..14e0c3b85d5fb044fb0a90b58b3a9e5ce4c87f03 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRemapperTest.hxx"
 
index e4d866dff35b08560d0c9350989afa39f8690894..07af5fb49f5881f07393dd7df47cd1fda04d859c 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Client)
-ADD_SUBDIRECTORY(Test)
+
+IF (CPPUNIT_IS_OK)
+  ADD_SUBDIRECTORY(Test)
+ENDIF (CPPUNIT_IS_OK)
 
 INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
@@ -47,8 +51,8 @@ SET(medcouplingcorba_SOURCES
   )
 
 ADD_LIBRARY(medcouplingcorba SHARED ${medcouplingcorba_SOURCES})
-SET_TARGET_PROPERTIES(medcouplingcorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcouplingcorba medcoupling SalomeIDLMED)
+SET_TARGET_PROPERTIES(medcouplingcorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcouplingcorba medcoupling SalomeIDLMED ${PLATFORM_LIBS})
 INSTALL(TARGETS medcouplingcorba DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medcouplingcorba_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index f2fa9690044a394675181ebbb03f42476b276549..c7486da92540a94fe5a055952d8585fb68fc8ff0 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
@@ -40,8 +41,8 @@ SET(medcouplingclient_SOURCES
   )
 
 ADD_LIBRARY(medcouplingclient SHARED ${medcouplingclient_SOURCES})
-SET_TARGET_PROPERTIES(medcouplingclient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcouplingclient medcoupling SalomeIDLMED ${OMNIORB_LIBS})
+SET_TARGET_PROPERTIES(medcouplingclient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcouplingclient medcoupling SalomeIDLMED ${OMNIORB_LIBS} ${PLATFORM_LIBS})
 INSTALL(TARGETS medcouplingclient DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medcouplingclient_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index 19132a0910909f8ed743eebde9e46da9a2058b13..d421000c89a73696552c360dee882ad56f9a9c3e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "DataArrayDoubleClient.hxx"
 #include "MEDCouplingMemArray.hxx"
index 7e6f2a97cbd23704205df4f3bba2230b5b603a26..518b04f003a5635bd5a7600497840101b6122ab2 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __DATAARRAYDOUBLECLIENT_HXX__
 #define __DATAARRAYDOUBLECLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 7a36eb6ad805cc44709dd0d5fa09db5952d32bc6..4691c97513d62a6f5c13c10f70747b8624eef2ff 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "DataArrayIntClient.hxx"
 #include "MEDCouplingMemArray.hxx"
index bbf74eed3881b77d3bacde495150f2bc8e49f2b8..b1ec80d23ae3a83bcf2dcbc9c573b3271a3ec432 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __DATAARRAYINTCLIENT_HXX__
 #define __DATAARRAYINTCLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 20305abf318a76f3f9b4c4755954ac253d217dad..d6bb765b23b345cb87becc7b8389a1d19cab2db1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingCMeshClient.hxx"
 #include "MEDCouplingMeshClient.hxx"
index 778ba4c5f9db51c8fce365d49ae2cc5086f08d04..79fa6fef4a798150da6254723b0e2678a4e98388 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCMESHCLIENT_HXX__
 #define __MEDCOUPLINGCMESHCLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 64553bd060803db44565f29913caec76e7007e5d..9e7837a6e8305df5c90a7286ded857ca88b00b1b 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCLIENT_HXX__
 #define __MEDCOUPLINGCLIENT_HXX__
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined medcouplingclient_EXPORTS
 #    define MEDCOUPLINGCLIENT_EXPORT __declspec( dllexport )
 #  else
index 4f06572584a3cd3118a6446f63de9c4ff2676535..cd17680460a8cb1963e83dc53f6b25395e4e6822 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingExtrudedMeshClient.hxx"
 #include "MEDCouplingMeshClient.hxx"
index 1c938854f7adcfb612f5502586f37b94322f35f6..4874c06979a71b1d50777fc3ebf259ffa8cd2aad 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGEXTRUDEDMESHCLIENT_HXX__
 #define __MEDCOUPLINGEXTRUDEDMESHCLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 0ca4da1f17865c95edecdc079f8d50c93e17284e..7cdcf9cb411864f6e48818f7b118846f00d9c941 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldDoubleClient.hxx"
 #include "MEDCouplingMeshClient.hxx"
index 68c0b759f4ac04a02b7e1378fb808ec5673e8341..e3496684a1b5e9dcef60544fb5b2368013236913 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGFIELDDOUBLECLIENT_HXX__
 #define __MEDCOUPLINGFIELDDOUBLECLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 6d807936d47d2d04d1e749f6de6829025fd58e70..b599fa5737b3cf3b21cfeacb86c22c3ecbce74b6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldOverTimeClient.hxx"
 #include "MEDCouplingMultiFieldsClient.hxx"
index ebb1b6ea3d37a43bc5228baf2db617a965ca678c..0597cdf705bfb7173492ce55983d5ca8b5247044 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGFIELDOVERTIMECLIENT_HXX__
 #define __MEDCOUPLINGFIELDOVERTIMECLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index a8cb1f9677ef31e5de5d61b18cf15664e52af730..4dd75818fceed0f5ac658f86cc789d08b50ed1d1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldTemplateClient.hxx"
 #include "MEDCouplingMeshClient.hxx"
index e309860e893c52f6480861c5cf912242ad4fdf9e..46ce9378c8ca1a54e3734b977b094a82698d9ae9 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGFIELDTEMPLATECLIENT_HXX__
 #define __MEDCOUPLINGFIELDTEMPLATECLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 538520868e8cd55df263c748ed50708221656464..9f1c6e8df6584d208590e4fa281f16c648c11bdb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMeshClient.hxx"
 #include "MEDCouplingUMeshClient.hxx"
index 6cf00775fb18fcb72da6cf3279c449fa48ded971..5ce8a6342fe480a4182f0f531c3758e064e226a7 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGMESHCLIENT_HXX__
 #define __MEDCOUPLINGMESHCLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 49cb1bca546440ecd22509a6aa9519b4ffa98637..c2cade421e0b1d9599a557f186522bda9ce94ccb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMultiFieldsClient.hxx"
 #include "MEDCouplingFieldTemplate.hxx"
index 0dce121dbf488768a0b2389ca24177bf1ca7280c..e6c5a97f792f4306f7dc603a57b84db585419486 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGMULTIFIELDSCLIENT_HXX__
 #define __MEDCOUPLINGMULTIFIELDSCLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 938856f56feff742f64e01fe1d2382b069c78467..ebb551c9b3cbba53679536cc024f2bb9ff0fe608 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingUMeshClient.hxx"
 #include "MEDCouplingMeshClient.hxx"
index 056a169564d11e7f2eae03a2ed874ed640127e80..6da12361ee6f7b371135034985842001ade7e3fe 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGUMESHCLIENT_HXX__
 #define __MEDCOUPLINGUMESHCLIENT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index c3cf1de8c42a9df9698f29e469002caae538515b..69c6295740daee2cc4cb1f65bdc2b14956f297fd 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 2c1f8d62d7dd0db44c7c5365c393446e908f2e43..e972a9aeea562a8c899ccd2cef0533d28807367d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "DataArrayDoubleServant.hxx"
 #include "MEDCouplingMemArray.hxx"
index 4117aae3289edd0630a85163dd7df0a1dbe5323f..1e01a4e38a3783afd2e32b3f3404fd0895594c0c 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __DATAARRAYDOUBLESERVANT_HXX__
 #define __DATAARRAYDOUBLESERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 32a5dbe89c90b9d52d33045e35669128fcb2b0b7..77c5726af73811f22088961cc7ed8847e64fecee 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "DataArrayIntServant.hxx"
 #include "MEDCouplingMemArray.hxx"
index 9391c10102f6a9dd8bbbe72b57e44d6c325ba7ad..e7c9853c528f6c4470eea3b4168b8f6698db7377 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __DATAARRAYINTSERVANT_HXX__
 #define __DATAARRAYINTSERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 0887b2b0dec2b111aa5e77b3de8d6dd4526568ac..6464f8b960b979905cb1bcadf610bdef96497501 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "DataArrayServant.hxx"
 #include "MEDCouplingMemArray.hxx"
index ec78f5a1dba3e489f991b60724db4587466d034f..25f6c39d6aabe464dd00a882e7e5065c79d8f355 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __DATAARRAYSERVANT_HXX__
 #define __DATAARRAYSERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index bacc0b92500222604f99324e9210e94f59074a44..3c60be3d26c25dfce79531f0d906a41b01f50fec 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingCMeshServant.hxx"
 
index bd53bda56732f0ef5196238d0ed4480175991856..9b8fe0810f89ff49dde575b618bd8d51f8240225 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCMESHSERVANT_HXX__
 #define __MEDCOUPLINGCMESHSERVANT_HXX__
index 5e424ecabb4fe72baaf01ba77d16b1eb0f1d0f16..e9c78a33e565d712465bf95aa4a5cd9f62a3b7d2 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCORBA_HXX__
 #define __MEDCOUPLINGCORBA_HXX__
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined medcouplingcorba_EXPORTS
 #    define MEDCOUPLINGCORBA_EXPORT __declspec( dllexport )
 #  else
index fea6cbc8028e8d70f79da8b518194b2c5d226357..c014f42f7f3f2a8c9fca77a7d534a300f0622d5f 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingExtrudedMeshServant.hxx"
 
index d6c533ed99203d0cc455554b9f6e57f64b841df7..035b8495b26da76c4f47edbbd9f0345f4f155928 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGEXTRUDEDMESHSERVANT_HXX__
 #define __MEDCOUPLINGEXTRUDEDMESHSERVANT_HXX__
index 00e168517c15afc372834bf1a720a0a44e92ba87..96f3e4ea7775c88758ab5a1b7e2be68db2b93b00 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldDoubleServant.hxx"
 #include "MEDCouplingFieldDouble.hxx"
index 417959ef126dc560029a9fbe3527dd1731210902..431011e992cabdbaa90ae47041626d9fabde5464 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGFIELDDOUBLESERVANT_HXX__
 #define __MEDCOUPLINGFIELDDOUBLESERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index fd9c93c684b44bf62139d026d7c2eac41700f1bb..0b2ddd922a00035be76df5a49bdccb73fe19b1e7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldOverTimeServant.hxx"
 #include "DataArrayDoubleServant.hxx"
index 3324ec0b816b92a260d4c2bf3ab4f3844f1726ed..c1c6e801d548f851d6614f146e2a8f6bf8e91691 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGFIELDOVERTIMESERVANT_HXX__
 #define __MEDCOUPLINGFIELDOVERTIMESERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 71dc56abca0be4ce8b308a6a6c15cf9b2b20e996..6437162aba8e3cd27d415b7e7fd2bea281a16132 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldServant.hxx"
 #include "MEDCouplingMeshServant.hxx"
index 209c457714ae992ebded5271c26c3f2e7192d06d..b9c7c495bc8278266822e9862d4a44382da36366 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGFIELDSERVANT_HXX__
 #define __MEDCOUPLINGFIELDSERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 61cc0a61ee6890159b9a3b62a47222936fc8fc00..20627138ec1a3fbcf226a1e3738582b2a41563e4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldTemplateServant.hxx"
 #include "MEDCouplingFieldTemplate.hxx"
index d5cf73b208bc9bf0a694bfacb748b96786729d2e..2bc7410ba379b896c69c9f35374823e4392303d9 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGFIELDTEMPLATESERVANT_HXX__
 #define __MEDCOUPLINGFIELDTEMPLATESERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index e03feb68bda05f1174603c9c0dbdfe6416790d4a..4912eabe10fb069821ee9de9f4a5b6a0fc454bfb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMeshServant.hxx"
 #include "InterpKernelException.hxx"
index d55199c65a7062f2ce2b58dc1527641d1d906ba6..071c64709355eda68473a099838e84a1da5c04ee 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGMESHSERVANT_HXX__
 #define __MEDCOUPLINGMESHSERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index e50afcbeba190bde7017fc5da7d26b78acd7b9a4..df85f5acf51e356b26bccde208346ffe07e05802 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMultiFieldsServant.hxx"
 #include "DataArrayDoubleServant.hxx"
index bae30cffc4a927b211a176f6e4a97c680c619c39..b5f0862f43c35e51a4733d3dde926f50441eaf8b 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGMULTIFIELDSSERVANT_HXX__
 #define __MEDCOUPLINGMULTIFIELDSSERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 44bab4a458c04b71223fc603c9b9f7067ca75825..60c1921d3503832792fb1456e6f0153d1081cfc9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingPointSetServant.hxx"
 #include "MEDCouplingPointSet.hxx"
index e19e33e16a8a5c061c46c3bae86746c8491f18ac..d00147694c95000439af7f5ddf923e8f99a18280 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGPOINTSETSERVANT_HXX__
 #define __MEDCOUPLINGPOINTSETSERVANT_HXX__
index 7f6606e63a0b64ea78155f8bde3713b02b5ead8c..b6322754aab05114552dc3c50ba5c689406ccfea 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRefCountServant.hxx"
 #include "InterpKernelException.hxx"
index ea30a34c9248f7b7de2c4806cb7480509f0a30fd..119059281e91c3a4f227107b0d94bbc3468c04ca 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGREFCOUNTSERVANT_HXX__
 #define __MEDCOUPLINGREFCOUNTSERVANT_HXX__
index 0184429939023d1ba13ce47413db7df946e1b44d..86dcbe8e40dc73be240a8cbe02ebdbefa8fd3363 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingUMeshServant.hxx"
 #include "MEDCouplingUMesh.hxx"
index d6103f6b452f81318c2baabcfed0239148c1d07e..5dc3de0ec5f705a6aec712ae2f70ee7d8bb6a50a 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGUMESHSERVANT_HXX__
 #define __MEDCOUPLINGUMESHSERVANT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServant)
index 2bf783344683245142100d927c2fbcfc6de3e5bb..4b0b2b3737f09ef2282bfb22a1e56a83a8d2ac35 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index f376122165ff6adea0606a6e42856845a1de3ed0..ef36e359dae2e14bf4f3e137b01d079915dcec93 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
+  ${CPPUNIT_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}/../../../idl
   ${CMAKE_CURRENT_SOURCE_DIR}/..
@@ -35,8 +38,8 @@ SET(TestMEDCouplingCorbaServ_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDCouplingCorbaServ ${TestMEDCouplingCorbaServ_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingCorbaServ PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaServ medcouplingcorba SalomeIDLMEDTests ${OMNIORB_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingCorbaServ PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaServ medcouplingcorba SalomeIDLMEDTests ${OMNIORB_LIBS} ${PLATFORM_LIBS})
 
 SET(TestMEDCouplingCorbaClt_SOURCES
   TestMEDCouplingCorbaClt.cxx
@@ -45,7 +48,7 @@ SET(TestMEDCouplingCorbaClt_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDCouplingCorbaClt ${TestMEDCouplingCorbaClt_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingCorbaClt PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaClt medcouplingclient SalomeIDLMEDTests ${OMNIORB_LIBS} ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingCorbaClt PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaClt medcouplingclient SalomeIDLMEDTests ${OMNIORB_LIBS} ${CPPUNIT_LIBS} ${PLATFORM_LIBS} ${PTHREAD_LIBS})
 
 INSTALL(TARGETS TestMEDCouplingCorbaServ TestMEDCouplingCorbaClt DESTINATION ${MED_salomebin_BINS})
index 98e86a7638d159649977ed5b58614f37ed00e4f2..584dee8a79046b352286f1942696a4e8250ec987 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMeshFieldFactoryComponent.hxx"
 #include "MEDCouplingExtrudedMesh.hxx"
index 52828bc8d089067e75f15a1e9563a5e8017a53ee..a5a5d91b025278bfef641de8607fce8f2857e8af 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENT_HXX__
 #define __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENT_HXX__
index 68298047a2b9f53c3035ea10ed57eb6078a4713e..afac3db7bf9f588eb5f6526778d6f38bf610bdea 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMeshFieldFactoryComponentClt.hxx"
 #include "MEDCouplingMeshFieldFactoryComponent.hxx"
index 9ea15384ce7b8dbce174b4edf48bfd468b829860..b977c8d9354abcd9949ec9647b3fc95faf44ebbb 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENTCLT_HXX__
 #define __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENTCLT_HXX__
 
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_CLIENT_HEADER(MEDCouplingCorbaServantTest)
index 4840941bbfb68ee732b554072a1dd92159f3d834..40338a81c719b26aa9451598e2adda1ac60d1aa0 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMeshFieldFactoryComponentServ.hxx"
 #include "MEDCouplingMeshFieldFactoryComponent.hxx"
index 7331fc7c8795797affa42638b252f63105711dfc..13ec56c111fd8610b85a63675dbba0658cba7df2 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENTSERV_HXX__
 #define __MEDCOUPLINGCORBAFIELDFACTORYCOMPONENTSERV_HXX__
 
 #include <cppunit/extensions/HelperMacros.h>
 #include "SALOMEconfig.h"
-#ifdef WNT
+#ifdef WIN32
 #define NOMINMAX
 #endif
 #include CORBA_SERVER_HEADER(MEDCouplingCorbaServantTest)
index de4dad982c2033f4824de8918e82eeb327783ae2..a3d626e29e033b02a270044e565fcffc511de17a 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index ad4c6d0f8dc0793a53dadd92d73106354fa16dd0..a37499ae4ec478c4ed748fc2c69c3069ad3ba296 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMeshFieldFactoryComponentClt.hxx"
 #include "MEDCouplingMeshFieldFactoryComponent.hxx"
index 11535f59693b5f71adba175f6fdb1f491e87cfd1..cca9a679f93d03a87bbef45fc52ca5fc94fcad6f 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMeshFieldFactoryComponentServ.hxx"
 #include "MEDCouplingMeshFieldFactoryComponent.hxx"
index 8a79fe154c2a2aee8b5b6b86cb40cd50cd6d9ece..78a20f1e0e127a82d7470bd2129118ad5199f1a0 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Client)
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -40,8 +41,11 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(MEDCouplingCorba python MEDCouplingCorba.i)
-SWIG_LINK_LIBRARIES(MEDCouplingCorba ${PYTHON_LIBRARIES} medcouplingcorba)
-SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(MEDCouplingCorba ${PYTHON_LIBS} medcouplingcorba ${PLATFORM_LIBS})
+SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingCorba_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 
 INSTALL(TARGETS _MEDCouplingCorba DESTINATION ${MED_salomepythondir})
 INSTALL(FILES MEDCouplingCorba.i MEDCouplingCorbaTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
index d7af2876d9fbbda7908eb216acf8781b43327e1d..e92b1fafe35dfd4d33dde0ea1db99a8c43c80184 100644 (file)
@@ -16,8 +16,9 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -38,8 +39,11 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(MEDCouplingClient python MEDCouplingClient.i)
-SWIG_LINK_LIBRARIES(MEDCouplingClient ${PYTHON_LIBRARIES} medcouplingclient)
-SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(MEDCouplingClient ${PYTHON_LIBS} medcouplingclient)
+SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingClient_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 
 INSTALL(TARGETS _MEDCouplingClient DESTINATION ${MED_salomepythondir})
 INSTALL(FILES MEDCouplingClient.i DESTINATION ${MED_salomeinclude_HEADERS})
index 4be1e789db865230aadee6dcce9e2313a6da26a6..83736be8cbe1282ee16b1bdfaf2ea9be593416a9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 %module MEDCouplingClient
 
@@ -382,6 +383,33 @@ def ParaMEDMEMDataArrayIntIdiv(self,*args):
 def ParaMEDMEMDataArrayIntImod(self,*args):
     import _MEDCouplingClient
     return _MEDCouplingClient.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+    import _MEDCouplingClient
+    return _MEDCouplingClient.DataArrayIntTuple____imod___(self, self, *args)
 %}
 
 %include "MEDCouplingFinalize.i"
index 8974c864068dc3dd2d795d8f487c5d4494c87cb6..68f06238cd219ff51fd1282dbb388ff3e2d5ca6a 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 0a5e5e0dc55bacb98f2d4d9fb41d0057efc77645..517bf5acba43e09478ebcf2c40c66d2197df0526 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 %module MEDCouplingCorba
 
@@ -187,6 +188,33 @@ def ParaMEDMEMDataArrayIntIdiv(self,*args):
 def ParaMEDMEMDataArrayIntImod(self,*args):
     import _MEDCouplingCorba
     return _MEDCouplingCorba.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+    import _MEDCouplingCorba
+    return _MEDCouplingCorba.DataArrayIntTuple____imod___(self, self, *args)
 %}
 
 %include "MEDCouplingFinalize.i"
index fbc49da8c3a27cd73aefa776ff8e70e2f75e6f0b..cdce36bbd1ea076e65cb344ecc01d8d08c66da6c 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDCoupling import *
 import math
index 3e0d0a0272100c967d2bbac550ae20c4b5cd1c2c..5a1abe1a90cbf6692d3f0f1523c004bb0f0a3eb2 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 import MEDCouplingCorbaSwigTest
 from MEDCouplingClient import *
index 76d1f5bd4d1237c95f3cf34e3edd039cba4a71b1..0c51a8629bf5826bd0f91223c800c27bcac69210 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 import MEDCouplingCorbaSwigTest
 import MEDCouplingCorbaServantTest_idl
index cc6ae3d190b8076e6459e92b1a3ec275861b593d..d37a9586d7cf685d40acf3444ef4957caf94064e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 template<class TServant>
 static PyObject *buildServantAndActivate(const typename TServant::CppType *pt)
index e17bd18167b87509e2a86dcc20b8790d45919cc6..882fa344862904472f89315598a6e3d4d55ab207 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index a9d7601e6296189bf404864f1291a787340fd54a..549ce453cdd2ce9f069ddcea7e2469ad14c0876f 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 import unittest
 import CORBA
index 4978286bfe29d3edc5f85eea44ad372161e294fd..897cd6416a4823280d82afa5b976cd87b22707d0 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 import CORBA
 import MEDCouplingCorbaSwigTest
index 8e47178bad361ba7a0dbdace2c7328a30a9744c9..bbd5f1848a4cd37687a092f9ddb4804028445d9d 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
-#INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/UseSWIG.cmake)
 
 SET_SOURCE_FILES_PROPERTIES(MEDCoupling.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(MEDCoupling.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Bases
@@ -38,19 +40,28 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(MEDCoupling python MEDCoupling.i)
-SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBRARIES} medcoupling)
+SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBS} ${PLATFORM_LIBS} medcoupling)
+SET_TARGET_PROPERTIES(_MEDCoupling PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
 
 SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 SWIG_ADD_MODULE(MEDCouplingRemapper python MEDCouplingRemapper.i)
-SWIG_LINK_LIBRARIES(MEDCouplingRemapper ${PYTHON_LIBRARIES} medcouplingremapper)
+SWIG_LINK_LIBRARIES(MEDCouplingRemapper ${PYTHON_LIBS} medcouplingremapper)
+SET_TARGET_PROPERTIES(_MEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDCouplingRemapper PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingRemapper_d)
+  SET_TARGET_PROPERTIES(_MEDCoupling PROPERTIES DEBUG_OUTPUT_NAME _MEDCoupling_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+INSTALL(TARGETS _MEDCoupling _MEDCouplingRemapper DESTINATION ${MED_salomelib_LIBS})
 
 SET(PYFILES_TO_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/MEDCoupling.py ${CMAKE_CURRENT_BINARY_DIR}/MEDCouplingRemapper.py ${CMAKE_CURRENT_SOURCE_DIR}/libMEDCoupling_Swig.py)
-INSTALL(TARGETS _MEDCoupling _MEDCouplingRemapper DESTINATION ${MED_salomepythondir})
-INSTALL(FILES MEDCoupling.i MEDCouplingCommon.i MEDCouplingFinalize.i MEDCouplingRemapper.i MEDCouplingTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
 INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomescript_PYTHON})
 
+INSTALL(FILES MEDCoupling.i MEDCouplingCommon.i MEDCouplingFinalize.i MEDCouplingRemapper.i MEDCouplingTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
+INSTALL(FILES MEDCouplingBasicsTest.py MEDCouplingRemapperTest.py MEDCouplingDataForTest.py DESTINATION ${MED_salomescript_PYTHON})
+
 ADD_TEST(MEDCouplingBasicsTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingBasicsTest.py)
 ADD_TEST(MEDCouplingExamplesTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingExamplesTest.py)
 ADD_TEST(MEDCouplingRemapperTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingRemapperTest.py)
index ff905cc1ade9f5f17e54230653e331f4f3731ddd..04d497020f95629c6af7c83f978e0d5248e738e2 100644 (file)
@@ -59,6 +59,33 @@ def ParaMEDMEMDataArrayIntIdiv(self,*args):
 def ParaMEDMEMDataArrayIntImod(self,*args):
     import _MEDCoupling
     return _MEDCoupling.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____imod___(self, self, *args)
 %}
 
 %include "MEDCouplingFinalize.i"
index c635023fc39a9f484f1a782ade72bbf06955ee6c..4f63e6fd3fd5f32e6ad69db3c74014280e6204c9 100644 (file)
@@ -10182,6 +10182,54 @@ class MEDCouplingBasicsTest(unittest.TestCase):
             pass
         pass
 
+    def testSwigDataTupleIOp1(self):
+        d=DataArrayDouble(10,1)
+        d.iota(7.)
+        for elt in d:
+            elt+=2.
+            pass
+        toTest=DataArrayDouble([9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0])
+        self.assertTrue(toTest.isEqual(d,1e-12))
+        for elt in d:
+            elt-=2.
+            pass
+        toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
+        self.assertTrue(toTest.isEqual(d,1e-12))
+        for elt in d:
+            elt*=2.
+            pass
+        toTest=DataArrayDouble([14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0])
+        self.assertTrue(toTest.isEqual(d,1e-12))
+        for elt in d:
+            elt/=2.
+            pass
+        toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
+        self.assertTrue(toTest.isEqual(d,1e-12))
+        #
+        d=DataArrayInt(10,1)
+        d.iota(7)
+        for elt in d:
+            elt+=2
+            pass
+        self.assertEqual(d.getValues(),[9,10,11,12,13,14,15,16,17,18])
+        for elt in d:
+            elt-=2
+            pass
+        self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
+        for elt in d:
+            elt*=2
+            pass
+        self.assertEqual(d.getValues(),[14,16,18,20,22,24,26,28,30,32])
+        for elt in d:
+            elt/=2
+            pass
+        self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
+        for elt in d:
+            elt%=3
+            pass
+        self.assertEqual(d.getValues(),[1,2,0,1,2,0,1,2,0,1])
+        pass
+
     def setUp(self):
         pass
     pass
index b6e2d0b64d0603f72ebf3d85d8733251e7ee7c6e..085293b0c9405d55d120950ae93e10bd174a8660 100644 (file)
@@ -2444,7 +2444,39 @@ namespace ParaMEDMEM
   {
     return self->buildDADouble(1,self->getNumberOfCompo());
   }
+
+  PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayDouble____iadd___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
   
+  PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayDouble____isub___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+  
+  PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayDouble____imul___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+
+  PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayDouble____idiv___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+
   PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
   {
     int sw;
@@ -4108,6 +4140,46 @@ namespace ParaMEDMEM
   {
     return self->buildDAInt(1,self->getNumberOfCompo());
   }
+
+  PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____iadd___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+  
+  PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____isub___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+  
+  PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____imul___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+
+  PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____idiv___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+
+  PyObject *___imod___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____imod___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
   
   PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
   {
index 5f47296fa9e752f20d6de68bb9438900c4c9eebf..909b4cf959caf78155fd680a6ea4ffb5f50d1c6b 100644 (file)
@@ -34,6 +34,17 @@ MEDCouplingFieldDouble.__isub__=ParaMEDMEMMEDCouplingFieldDoubleIsub
 MEDCouplingFieldDouble.__imul__=ParaMEDMEMMEDCouplingFieldDoubleImul
 MEDCouplingFieldDouble.__idiv__=ParaMEDMEMMEDCouplingFieldDoubleIdiv
 
+DataArrayDoubleTuple.__iadd__=ParaMEDMEMDataArrayDoubleTupleIadd
+DataArrayDoubleTuple.__isub__=ParaMEDMEMDataArrayDoubleTupleIsub
+DataArrayDoubleTuple.__imul__=ParaMEDMEMDataArrayDoubleTupleImul
+DataArrayDoubleTuple.__idiv__=ParaMEDMEMDataArrayDoubleTupleIdiv
+
+DataArrayIntTuple.__iadd__=ParaMEDMEMDataArrayIntTupleIadd
+DataArrayIntTuple.__isub__=ParaMEDMEMDataArrayIntTupleIsub
+DataArrayIntTuple.__imul__=ParaMEDMEMDataArrayIntTupleImul
+DataArrayIntTuple.__idiv__=ParaMEDMEMDataArrayIntTupleIdiv
+DataArrayIntTuple.__imod__=ParaMEDMEMDataArrayIntTupleImod
+
 del ParaMEDMEMDataArrayDoubleIadd
 del ParaMEDMEMDataArrayDoubleIsub
 del ParaMEDMEMDataArrayDoubleImul
@@ -47,4 +58,13 @@ del ParaMEDMEMDataArrayIntIsub
 del ParaMEDMEMDataArrayIntImul
 del ParaMEDMEMDataArrayIntIdiv
 del ParaMEDMEMDataArrayIntImod
+del ParaMEDMEMDataArrayDoubleTupleIadd
+del ParaMEDMEMDataArrayDoubleTupleIsub
+del ParaMEDMEMDataArrayDoubleTupleImul
+del ParaMEDMEMDataArrayDoubleTupleIdiv
+del ParaMEDMEMDataArrayIntTupleIadd
+del ParaMEDMEMDataArrayIntTupleIsub
+del ParaMEDMEMDataArrayIntTupleImul
+del ParaMEDMEMDataArrayIntTupleIdiv
+del ParaMEDMEMDataArrayIntTupleImod
 %}
index 9e43f6e36ae9cd5c3e7b4eca507c011252c0631f..3b2359a61f6b28cc6ccb3b5800093b5c7b9988bb 100644 (file)
@@ -59,6 +59,10 @@ namespace ParaMEDMEM
       bool setOptionInt(const std::string& key, int value);
       bool setOptionDouble(const std::string& key, double value);
       bool setOptionString(const std::string& key, const std::string& value);
+      //
+      int nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception);
+      int nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception);
+      double getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception);
       %extend
          {
            PyObject *getCrudeMatrix() const
@@ -120,6 +124,33 @@ def ParaMEDMEMDataArrayIntIdiv(self,*args):
 def ParaMEDMEMDataArrayIntImod(self,*args):
     import _MEDCouplingRemapper
     return _MEDCouplingRemapper.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____imod___(self, self, *args)
 %}
 
 %include "MEDCouplingFinalize.i"
index ca343368e30967c6ada5f104f601ca7555b2cbc5..f6216e8525eae1b9b7b39be1c63dbe2d848852c8 100644 (file)
@@ -39,6 +39,7 @@ INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
   ${CAS_INCLUDE_DIRS}
   ${BOOST_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${GUI_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}
@@ -55,10 +56,10 @@ SET(MEDGUITS_SOURCES
   MED_images.ts
   MED_msg_fr.ts
   MED_msg_en.ts
-  )
+)
 
 ADD_LIBRARY(MEDGUI SHARED ${MEDGUI_SOURCES} ${MEDGUI_HEADERS_MOC} ${MEDGUI_FORMS_HEADERS})
-SET_TARGET_PROPERTIES(MEDGUI PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDGUI medcalculator ${QT_MT_LIBS} ${CAS_KERNEL} ${BOOST_LIBS} ${GUI_LDFLAGS} ${SalomeApp} ${CAM} ${LightApp} ${qtx} ${suit} ${SalomeObject})
+SET_TARGET_PROPERTIES(MEDGUI PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDGUI medcalculator ${QT_MT_LIBS} ${CAS_KERNEL} ${BOOST_LIBS} ${GUI_LDFLAGS} ${SalomeApp} ${CAM} ${LightApp} ${qtx} ${suit} ${SalomeObject} ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA})
 INSTALL(TARGETS MEDGUI DESTINATION ${MED_salomelib_LIBS})
 QT4_INSTALL_TS_RESOURCES("${MEDGUITS_SOURCES}" "${MED_salomeres_DATA}")
index c558ecf6e3aa12dbbcdb9e13250f4aab924bc2fd..1ba36792793dd798166b5856bfcd18a5f70e868a 100644 (file)
@@ -37,20 +37,27 @@ dist_libMEDGUI_la_SOURCES = MEDGUIFileContentDial.h MEDGUISelection.hxx \
 
 MOC_FILES= MEDGUI_moc.cxx MEDGUIFileContentDial_moc.cxx MEDGUISelectComponents_moc.cxx
 
+# meta object implementation files generation (moc)
+%_moc.cxx: %.h
+       $(MOC) $< -o $@
+
+# translation (*.qm) files generation (lrelease)
+%.qm: %.ts
+       $(LRELEASE) $< -qm $@
+
+EXTRA_DIST += $(MOC_FILES:%_moc.cxx=%.h) $(nodist_salomeres_DATA:%.qm=%.ts)
+
 ui_%.h: %.ui
        ${QTDIR}/bin/uic $< -o $@
 
 .hxx_moc.cxx :
        ${QTDIR}/bin/moc -p . -o $@ $<
 
-%_moc.cxx: %.hxx
-       ${QTDIR}/bin/moc $< -o $@
-
 .qrc_qrc.cxx :
        ${QTDIR}/bin/rcc -name $(*F)  $< -o $@
 
 clean-local-qt :
-       rm -f *_moc.cxx *_qrc.cxx ui_*.h
+       rm -f *_moc.cxx *_qrc.cxx ui_*.h *.qm
 
 clean-local: clean-local-qt
 
@@ -64,12 +71,16 @@ libMEDGUI_la_CPPFLAGS= $(QT_INCLUDES) $(VTK_INCLUDES) @CAS_CPPFLAGS@ $(PYTHON_IN
        -I$(top_builddir) -I$(top_builddir)/idl -I$(srcdir)/../MEDCoupling -I$(srcdir)/../INTERP_KERNEL -I$(srcdir)/../INTERP_KERNEL/Bases \
        -I$(srcdir)/../MEDCoupling -I$(srcdir)/../MEDLoader -I$(srcdir)/../MEDCalculator
 
-libMEDGUI_la_LDFLAGS= \
+libMEDGUI_la_LDFLAGS = \
        $(QT_MT_LIBS) $(CAS_KERNEL) $(BOOST_LIBS) \
-       ../../idl/libSalomeIDLMED.la ../MEDCalculator/libmedcalculator.la \
        $(KERNEL_LDFLAGS) -lSalomeLifeCycleCORBA -lOpUtil -lSALOMELocalTrace \
        $(GUI_LDFLAGS) -lSalomeApp -lCAM -lLightApp -lqtx -lsuit -lSalomeObject
 
+libMEDGUI_la_LIBADD = \
+       $(top_builddir)/idl/libSalomeIDLMED.la \
+       $(top_builddir)/src/MEDCalculator/libmedcalculator.la
+
+
 # .po files to transform in .qm
 nodist_salomeres_DATA= \
        MED_images.qm \
index 5da47beaba6205c6498cf76ec61f3bc73227ad8c..0a812c71a66ff5fe0564f735cf7c82844eb523dc 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Swig)
 ADD_SUBDIRECTORY(Test)
@@ -47,7 +48,7 @@ SET(medloader_SOURCES
   )
 
 ADD_LIBRARY(medloader SHARED ${medloader_SOURCES})
-SET_TARGET_PROPERTIES(medloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
+SET_TARGET_PROPERTIES(medloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(medloader medcoupling ${MED3_LIBS_C_ONLY} ${HDF5_LIBS})
 INSTALL(TARGETS medloader DESTINATION ${MED_salomelib_LIBS})
 
index aa856a49277636b50ba2211ed92a8d8fdebee971..cf361a4c3479d971f6f63da04842cbec4f61dd9c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileBasis.hxx"
 
index 24de3909aa58f7d0e91124612d97fc3364c03d97..67702e68ef3664b58a8e70dc1bb3c69441adb698 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEBASIS_HXX__
 #define __MEDFILEBASIS_HXX__
index 8a97c37548d3aebff4116e4b9bcddfd9dcc177c2..b18c3cb4299300f3a6afa904999148acb9728262 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileData.hxx"
 
index 6a9e404124fa81d68fe7326f3a20709b8472cc92..64b946ec0d1ef3b33c1165d0ccf4b48dd4141692 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEDATA_HXX__
 #define __MEDFILEDATA_HXX__
index cc166fa444dd971a0d20c7d1f9884872ea2e3f09..cf851c2e96052398aec3f3ad5d8a121577f6a97f 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileField.hxx"
 #include "MEDFileMesh.hxx"
index b099d369b53b0d9aa32f9cf69657d20b4793dee0..b6afd67a1f57c5c00bf2918ae0b00e219fcfbffc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEFIELD_HXX__
 #define __MEDFILEFIELD_HXX__
@@ -535,14 +536,14 @@ namespace ParaMEDMEM
     void setProfileNameOnLeaf(const char *mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const char *newPflName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception);
     //! underground method see MEDFileField1TSWithoutSDA::setLocNameOnLeaf
     void setLocNameOnLeaf(const char *mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const char *newLocName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception);
-  private:
-    void writeLL(med_idt fid) const throw(INTERP_KERNEL::Exception);
     std::vector<std::string> getPflsReallyUsed() const;
     std::vector<std::string> getLocsReallyUsed() const;
     std::vector<std::string> getPflsReallyUsedMulti() const;
     std::vector<std::string> getLocsReallyUsedMulti() const;
     void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) throw(INTERP_KERNEL::Exception);
     void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) throw(INTERP_KERNEL::Exception);
+  private:
+    void writeLL(med_idt fid) const throw(INTERP_KERNEL::Exception);
     MEDFileField1TS(const char *fileName, const char *fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception);
     MEDFileField1TS(const MEDFileField1TSWithoutSDA& other, bool deepCpy);
     MEDFileField1TS();
@@ -715,7 +716,7 @@ std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(int iterati
     void destroyFieldAtPos(int i) throw(INTERP_KERNEL::Exception);
     bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab) throw(INTERP_KERNEL::Exception);
     bool renumberEntitiesLyingOnMesh(const char *meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N) throw(INTERP_KERNEL::Exception);
-  private:
+  public:
     int getPosFromFieldName(const char *fieldName) const throw(INTERP_KERNEL::Exception);
     std::vector<std::string> getPflsReallyUsed() const;
     std::vector<std::string> getLocsReallyUsed() const;
index 009112b705da5628194116be64d9e6cac046dcb8..6f77ac21770c9d32dba7126cf8ad001dfb18952c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileMesh.hxx"
 #include "MEDFileUtilities.hxx"
index 563df009374917cb2fed9b6de4afdeccd2dd8622..02df40ac61be2ce5e0c468a80d71e83677bc01b8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEMESH_HXX__
 #define __MEDFILEMESH_HXX__
index 6a04fb2d2735341c22c8189194bade872908e179..33d14b9f39318d6c47745d416635fcaedb25a83b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileMeshElt.hxx"
 
index 7cf22da69748a5752ee6e7b74948971b4e2802f2..e8bda66294729b97484bcbb4d6c93f0f6b62c72b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEMESHELT_HXX__
 #define __MEDFILEMESHELT_HXX__
index 7191c0bb88b59a74401cec670e145c4192936f5c..2c3c77d9be8d6c7fff7abb6536ff48ba0308c4e7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileMeshLL.hxx"
 #include "MEDFileMesh.hxx"
index 16f3a446ec8b5d0cd620ac4f65c6af66e4655370..263f77d4175017c85817f2f3f47bff824d5033d3 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEMESHLL_HXX__
 #define __MEDFILEMESHLL_HXX__
index 6114e0ea7086164a35c9ed0f90fa80cf7e98c347..89ddaa17aa2a6ec04095fa952b4bbca79ea9e015 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileUtilities.hxx"
 #include "MEDLoaderBase.hxx"
index b814c12828b1ad737ec5da7b085edce09bfcfd43..42fbcd28c567a01133392afb2d5bdfd2cc755e42 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEUTILITIES_HXX__
 #define __MEDFILEUTILITIES_HXX__
index 0d1d57ce0961f03daf8c408d634e03d7b48d47f0..60e8773ec517cbc912193479c5e0abef9a2416c5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDLoader.hxx"
 #include "MEDLoaderBase.hxx"
index 33907f2197dd951d33402d7191946bbb1df151e6..61536db389b7a46c385ce6f902cdf39df35e657c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDLOADER_HXX__
 #define __MEDLOADER_HXX__
index dd69727dab25b17cc9474bbc304147e68cdbfb28..7284476eb9df006052bd59eb602a682a3084f2d2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDLoaderBase.hxx"
 #include "InterpKernelException.hxx"
index b31b8c6adcd714fc925bb360a6ce95b6c680c977..504b4b0d37dff3d3282b1665019f5a0e74fff569 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDLOADERBASE_HXX__
 #define __MEDLOADERBASE_HXX__
index f1a0874576ea51109f50b674a5971e91f27dbda5..c68fb07ef74a3d2a30cc00fd402c2e80049d18fc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDLOADERDEFINES_HXX__
 #define __MEDLOADERDEFINES_HXX__
index 1edb2c85f79a0d95a840c60fbe608d28505962ae..31bdf0ffa2c6d8ca020cd68a2d09a71a7468e8dc 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 800c84ab1619836b72e8e53183b193209c4249c3..75e1d0c139c8c6776fb45388a0d459ae31ed88df 100644 (file)
 #include <cstring>
 #include <fcntl.h>
 
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #endif
 
-#ifndef WNT
+#ifndef WIN32
 #define HAS_XDR
 #include <unistd.h>
 #endif
@@ -259,7 +259,8 @@ unsigned SauvUtilities::getDimension( INTERP_KERNEL::NormalizedCellType type )
 
 //================================================================================
 /*!
- * \brief Returns interlace array to transform a quadratic GIBI element to a MED one
+ * \brief Returns interlace array to transform a quadratic GIBI element to a MED one.
+ *        i-th array item gives node index in GIBI connectivity for i-th MED node
  */
 //================================================================================
 
@@ -474,7 +475,7 @@ bool ASCIIReader::isASCII() const
 
 bool ASCIIReader::open()
 {
-#ifdef WNT
+#ifdef WIN32
   _file = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
 #else
   _file = ::open (_fileName.c_str(), O_RDONLY);
@@ -772,9 +773,9 @@ double ASCIIReader::getDouble() const
   //  7.70000000000000-100  7.70000000000000+100  7.70000000000000+100
   //0123456789012345678901234567890123456789012345678901234567890123456789
   const size_t posE = 18;
-  if ( _curPos[posE] != 'E' && _curPos[posE] != 'e' )
+  std::string aStr (_curPos);
+  if ( aStr.find('E') < 0 && aStr.find('e') < 0 )
     {
-      std::string aStr (_curPos);
       if ( aStr.size() < posE+1 )
         THROW_IK_EXCEPTION("No more doubles (line #" << lineNb() << ")");
       aStr.insert( posE, "E", 1 );
index b86f34dfa7489bedbf267c7f3530824ab2164737..b4f44f55422088f6ac5fbf42e98dc2a45ba288df 100644 (file)
@@ -572,7 +572,7 @@ void SauvWriter::write(const char* fileName)
   std::fstream fileStream;
   fileStream.open( fileName, ios::out);
   if
-#ifdef WNT
+#ifdef WIN32
     ( !fileStream || !fileStream.is_open() )
 #else
     ( !fileStream || !fileStream.rdbuf()->is_open() )
@@ -737,7 +737,7 @@ void SauvWriter::writeSubMeshes()
                       if ( toMedConn )
                         {
                           for ( unsigned j = 0; j < nbElemNodes; ++j )
-                            transformedConn[ j ] = cellConn[ toMedConn[ j ]];
+                            transformedConn[ toMedConn[ j ]] = cellConn[ j ];
                           cellConn.swap( transformedConn );
                         }
                       for ( unsigned j = 0; j < nbElemNodes; ++j, fcount++ )
index 16da8eb57a76a7f07eaf657d34f43267a1f227eb..dece3560bbedcf6126da59298fe09eefc9e07bd6 100644 (file)
@@ -16,8 +16,9 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
@@ -27,32 +28,34 @@ SET_SOURCE_FILES_PROPERTIES(MEDLoader.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${MED3_INCLUDE_DIRS}
+  ${HDF5_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/..
   ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling_Swig
   ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Bases
-  )
-
-SWIG_ADD_MODULE(MEDLoader python MEDLoader.i)
-
-SWIG_LINK_LIBRARIES(MEDLoader ${PYTHON_LIBRARIES} medloader)
-
-INCLUDE_DIRECTORIES(
-  ${MED3_INCLUDE_DIRS}
-  ${HDF5_INCLUDE_DIRS}
-  ${CMAKE_CURRENT_SOURCE_DIR}/..
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Geometric2D
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/ExprEval
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/GaussPoints
-  )
+)
+
+SWIG_ADD_MODULE(MEDLoader python MEDLoader.i)
+SWIG_LINK_LIBRARIES(MEDLoader ${PYTHON_LIBS} ${PLATFORM_LIBS} medloader medcoupling)
+SET_TARGET_PROPERTIES(_MEDLoader PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDLoader PROPERTIES DEBUG_OUTPUT_NAME _MEDLoader_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+INSTALL(TARGETS _MEDLoader DESTINATION ${MED_salomelib_LIBS})
+
+INSTALL(FILES MEDLoader.i MEDLoaderTypemaps.i MEDLoaderCommon.i DESTINATION ${MED_salomeinclude_HEADERS})
 
-INSTALL(TARGETS _MEDLoader DESTINATION ${MED_salomepythondir})
-INSTALL(FILES MEDLoader.i MEDLoaderCommon.i MEDLoaderTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
 SET(PYFILES_TO_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/MEDLoader.py ${CMAKE_CURRENT_SOURCE_DIR}/libMEDLoader_Swig.py)
 INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomescript_PYTHON})
 
+INSTALL(FILES MEDLoaderDataForTest.py MEDLoaderTest.py MEDLoaderTest2.py MEDLoaderTest3.py DESTINATION ${MED_salomescript_PYTHON})
+
 ADD_TEST(MEDLoaderTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest.py)
 ADD_TEST(MEDLoaderTest2 ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest2.py)
 ADD_TEST(MEDLoaderTest3 ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest3.py)
index 4ee736faccaaee1e428ebb74da26cad6b7ec0443..1f4b743e01d168fb499458f543c55c1f38f15f40 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 %include "MEDLoaderCommon.i"
 
@@ -59,6 +60,33 @@ def ParaMEDMEMDataArrayIntIdiv(self,*args):
 def ParaMEDMEMDataArrayIntImod(self,*args):
     import _MEDLoader
     return _MEDLoader.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____imod___(self, self, *args)
 %}
 
 %include "MEDCouplingFinalize.i"
index 0ca52c382a87d94f31ca1a07c7fd63884469bc35..f99f6635bc14242c1ad22dcb2a702ff4d5083ac8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 %module MEDLoader
 
index 26c949d7876c49e7a8413134554c9b2ad27e7ea8..104675b3e9019f4bc3f51c6ddfd0d1a18cb78924 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 from math import pi,e,sqrt
index f9b2651112a0f2d446f4b14d85d492a189ef0fc2..24ee31a8cf8b7bacc8c54dc1f654554ff6253ca2 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 import unittest
index 2e31afb65a94f19cf0f8a88dc7cb11096119bef5..42f11222e9ff67473b2ee2482bd8380304704a06 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 import MEDLoader
 import unittest
index 4e7a94760f530b593a8f4b008da9145a1a02529f..f7df16c882ff41d0147a1f054d7d890c3222fcc7 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 import unittest
index a50b516a6228f3bb05d5a3b1fe2d4942281cf90a..1622b29803f58e049a40edc98c33b3e873ef632e 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 import unittest
index 05d60b7269c14fcaae56eed025ca346859c8d6bf..111fd0e2b159d1b04e9ef892514cf175454c4711 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include <vector>
 
index 18194bb0e2687cbf5643f1e63c052fe8f6325061..bf514f6f6736191d611b8443a5dc4a40c70bdfa6 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 #  MED MEDMEM_SWIG : binding of C++ implementation and Python
 #
index 6621b405bfe2d27f2bec10f8f13e5f9e67391c46..88b33f85a4325229d09a10f8525413031fd693a1 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Edward AGAPOV (eap)
 
 from MEDLoader import *
 import unittest, os
index 25e57944be5dcbb8da96b9cb8cada0a7668e7ac4..5bf7093d66784590ce7ddf91fc9716aba5a6c2ae 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 print """
 **********************************************************************
index 2865a645019231b40adafc75ec6b37c966f199fc..eb4f5fcd6a48df67a822274900d8282a4e87e6b6 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${CPPUNIT_INCLUDE_DIRS}
@@ -39,13 +40,14 @@ SET(TestSauvLoader_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDLoader ${TestMEDLoader_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDLoader medloader ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDLoader medloader ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDLoader TestMEDLoader)
 
 ADD_EXECUTABLE(TestSauvLoader ${TestSauvLoader_SOURCES})
-SET_TARGET_PROPERTIES(TestSauvLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestSauvLoader medloader ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestSauvLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+TARGET_LINK_LIBRARIES(TestSauvLoader medloader ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestSauvLoader TestSauvLoader)
 
 INSTALL(TARGETS TestMEDLoader TestSauvLoader DESTINATION ${MED_salomebin_BINS})
index f4f7362fc2dec5149a522c28ad808bb36282fb70..1a2528843b07408e4835fe8db03713245e0bd691 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDLoaderTest.hxx"
 #include "MEDLoader.hxx"
index bdd7278d6e27023e26fccbd298cd3df7a70d7621..111f2c0b9afcb7f58cffd7f45a4b0e39f874f71d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDLOADERTEST_HXX__
 #define __MEDLOADERTEST_HXX__
index aced95abda0f9146529eb7ea579dec9c6ca9b5c9..c6d7be53477c648cc76aa506537b7a6f6e1b5717 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 249f192067c66d59ff7d77ca18579bf0d4ac957f..76df3f1ae84af9eda1f03946007183ebb409baa6 100644 (file)
@@ -25,7 +25,7 @@
 #include "MEDCouplingFieldDouble.hxx"
 #include "MEDCouplingMemArray.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 # include <windows.h>
 #else
 # include <unistd.h>
@@ -205,7 +205,7 @@ void SauvLoaderTest::tearDown()
   const char* fileToRemove[nbFilesToRemove] = { "allPillesTest.med", "pointe.sauv" };
   for ( int i = 0; i < nbFilesToRemove; ++i )
     {
-#ifdef WNT
+#ifdef WIN32
       if (GetFileAttributes(fileToRemove[i]) != INVALID_FILE_ATTRIBUTES)
 #else
         if (access(fileToRemove[i], F_OK) == 0)
@@ -229,7 +229,7 @@ std::string SauvLoaderTest::getResourceFile( const std::string& filename )
     resourceFile += "/share/salome/resources/med/";
   }
   resourceFile += filename;
-#ifdef WNT
+#ifdef WIN32
   std::string fixedpath = resourceFile;
   for ( int i=0; i < fixedpath.length(); ++i )
     if (fixedpath[i] == '/')
index 9e9b6d872660eee7695fc744f87baf1fe3d01f13..c2fc70395b3b90b2264eec3f8ca6e5f4edd08bfd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "CppUnitTest.hxx"
 #include "MEDLoaderTest.hxx"
index 1484d97c826af07ce8089d03816a72308be839ea..98380852218f309602cbc64734dc083f5a73bcb7 100644 (file)
@@ -71,8 +71,8 @@ SET(medmem_SOURCES
   )
 
 ADD_LIBRARY(medmem SHARED ${medmem_SOURCES})
-SET_TARGET_PROPERTIES(medmem PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medmem interpkernel ${MED3_LIBS_C_ONLY} ${HDF5_LIBS} ${XDR_LIBS})
+SET_TARGET_PROPERTIES(medmem PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medmem interpkernel ${MED3_LIBS_C_ONLY} ${HDF5_LIBS} ${XDR_LIBS} ${PLATFORM_LIBS})
 INSTALL(TARGETS medmem DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medmem_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index b5da62b4a03cae6c6e5fe640537d4eef2abcd503..fa1a97aae9a35f60de9131b48e558db071b73181 100755 (executable)
@@ -27,7 +27,7 @@
 #ifndef _MEDMEM_HXX_
 #define _MEDMEM_HXX_
 
-#ifdef WNT
+#ifdef WIN32
  #if defined MEDMEM_EXPORTS || defined medmem_EXPORTS
   #if defined WIN32
    #define MEDMEM_EXPORT __declspec( dllexport )
@@ -45,7 +45,7 @@
  #define MEDMEM_EXPORT
 #endif
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning(disable:4251) // Warning DLL Interface ...
 #pragma warning(disable:4290) // Warning Exception ...
 #endif
index d74b0260f3fdc2f7e8751be7a16b2754b33148b0..95d86a41420b908e7cd9e47866db9449b03a4fff 100644 (file)
@@ -64,7 +64,7 @@ class MEDMEM_EXPORT CONNECTIVITY
         sum+=key[i]*(i+key.size());
       return sum;
     }
-// #ifdef WNT
+// #ifdef WIN32
 //     static const size_t bucket_size = 4;
 //     static const size_t min_buckets = 8;
 //     bool operator()(const vector<int>& key1, const vector<int>& key2) const
index a429f0ffb111c050f6eb4c8aca176a9642dcc43f..6bf33f8967c662621c4d928a042d7a6c3ba254ac 100644 (file)
@@ -141,7 +141,7 @@ struct MEDMEM_EXPORT _groupe
                                       */
   const _maille& maille(int index) { return *mailles[index]; }
   bool empty() const { return mailles.empty() && groupes.empty(); }
-#ifdef WNT
+#ifdef WIN32
   int  size()  const { return (mailles.size()>relocMap.size())?mailles.size():relocMap.size(); }
 #else
   int  size()  const { return std::max( mailles.size(), relocMap.size() ); }
@@ -167,7 +167,7 @@ struct MEDMEM_EXPORT _fieldBase {
     std::string & compName( int i_comp ) { return _comp_names[ i_comp ]; }
     bool isValidNbGauss() const { return *std::max_element( _nb_gauss.begin(), _nb_gauss.end() ) ==
                                     *std::min_element( _nb_gauss.begin(), _nb_gauss.end() ); }
-#ifdef WNT
+#ifdef WIN32
     int nbGauss() const { return (1>_nb_gauss[0])?1:_nb_gauss[0]; }
 #else
     int nbGauss() const { return std::max( 1, _nb_gauss[0] ); }
index 68e2c7d707530d7cf1842d12b982d4efe463a939..e56c11f1eec11fb6db581298ced83c61c3a094d1 100644 (file)
@@ -21,7 +21,7 @@
 #include <sstream>
 #include <iomanip>
 
-#ifndef WNT
+#ifndef WIN32
 #include <fenv.h>
 #endif
 
@@ -738,7 +738,7 @@ void ENSIGHT_FIELD_RDONLY_DRIVER::read (void)
   {
     // Read values
 
-#ifndef WNT
+#ifndef WIN32
     int curExcept = fedisableexcept( FE_ALL_EXCEPT ); //!< there may be nan values
 #endif
 
@@ -765,7 +765,7 @@ void ENSIGHT_FIELD_RDONLY_DRIVER::read (void)
       }
     }
 
-#ifndef WNT
+#ifndef WIN32
     feclearexcept( FE_ALL_EXCEPT );
     if ( curExcept >= 0 )
       feenableexcept( curExcept );
index cef49674bbb1fd24916562c2f5dc61c0324c8136..b12520ecfcba40a671bc5f13ffd605e22a6f82ec 100644 (file)
@@ -30,7 +30,7 @@
 #include "MEDMEM_EnsightFieldDriver.hxx"
 #include "MEDMEM_DriverTools.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #else
 #include <unistd.h>
@@ -112,7 +112,7 @@ namespace MEDMEM
   }
 }
 
-#ifdef WNT
+#ifdef WIN32
 #define FILE_SEPARATOR '\\'
 #else
 #define FILE_SEPARATOR '/'
@@ -1832,7 +1832,7 @@ void _CaseFileDriver_User::merge( const GENDRIVER& driver)
 
 bool _CaseFileDriver_User::isBinaryDataFile(const string& dataFileName)
 {
-#ifdef WNT
+#ifdef WIN32
   int _file = ::_open (dataFileName.c_str(), _O_RDONLY|_O_BINARY);
 #else
   int _file = ::open (dataFileName.c_str(), O_RDONLY);
@@ -2394,7 +2394,7 @@ std::ostream& operator << (std::ostream& os, const _SubPartDesc& desc)
 
 _ASCIIFileReader::_ASCIIFileReader(const string& fileName) throw (MEDEXCEPTION)
 {
-#ifdef WNT
+#ifdef WIN32
   _file = ::_open (fileName.c_str(), _O_RDONLY|_O_BINARY);
 #else
   _file = ::open (fileName.c_str(), O_RDONLY);
@@ -2779,7 +2779,7 @@ _ASCIIFileReader::~_ASCIIFileReader()
 _BinaryFileReader::_BinaryFileReader(const string& fileName) throw (MEDEXCEPTION)
   : _exception(STRING("Unexpected EOF ") << fileName), _mySwapBytes(false)
 {
-#ifdef WNT
+#ifdef WIN32
   _file = ::_open (fileName.c_str(), _O_RDONLY|_O_BINARY);
 #else
   _file = ::open (fileName.c_str(), O_RDONLY);
@@ -2877,7 +2877,7 @@ void _BinaryFileReader::skipTimeStepBeginning() throw (MEDEXCEPTION)
 _BinaryFileWriter::_BinaryFileWriter(const string& fileName)  throw (MEDEXCEPTION)
   : _exception(STRING("Can't write into ") << fileName)
 {
-#ifdef WNT
+#ifdef WIN32
   _file = ::_open (fileName.c_str(), _O_WRONLY|_O_BINARY|_O_TRUNC);
 #else
   _file = ::open (fileName.c_str(), O_WRONLY|O_TRUNC); //length shall be truncated to 0
index 749762e5710202da9b282bc86aa5e149580a696a..29b350b5622b2ea23c4edea4a66cb52af09abcac 100644 (file)
@@ -34,7 +34,7 @@
 #include <float.h>
 #include <cmath>
 
-#ifdef WNT
+#ifdef WIN32
 # define isnan _isnan
 #else
 # include <unistd.h>
@@ -610,7 +610,7 @@ public:
   }
   float  getReal() throw (MEDEXCEPTION) {
     if ( eof() ) throw MEDEXCEPTION("Unexpected EOF");
-#ifdef WNT
+#ifdef WIN32
 #else
     return strtof(_ptr, &_ptr);
 #endif
@@ -800,7 +800,7 @@ private:
     if ( int(bufSize) > _maxPos - _pos )
       throw _exception;
     T* buf = new T[ nb ];
-#ifdef WNT
+#ifdef WIN32
 #else
     ssize_t nBytesRead = ::read (_file, buf, bufSize );
     _pos += nBytesRead;
@@ -878,7 +878,7 @@ private:
   template <typename T>
   void add(const T* data, int nbValues) throw (MEDEXCEPTION)
   {
-#ifdef WNT
+#ifdef WIN32
 #else
     ssize_t nbWritten = ::write( _file, (const void *) data, nbValues * sizeof(T));
     if ( nbWritten < 0 ) throw _exception;
index 6ed04e531a0f4214840985e0e90ee19c399f33f1..87312e66f57117a24f29d1e436bade3fda6c1374 100644 (file)
@@ -51,7 +51,7 @@ class FIELD_;
 
 #include <stdio.h>
 #include <fcntl.h>
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #else
 #include <unistd.h>
@@ -1427,7 +1427,7 @@ GIBI_MESH_DRIVER::GIBI_MESH_DRIVER(const string &         fileName,
   int pos=fileName.find(ext,0);
   int pos1=fileName.rfind('/');
   if ( pos < 0 || pos >= (int)fileName.size() ) pos = fileName.size();
-#ifdef WNT
+#ifdef WIN32
   if ( pos1 < 0 || pos1 >= (int)fileName.size() ) pos1 = fileName.rfind('\\');
 #endif
   if ( pos1 < 0 || pos1 >= (int)fileName.size() ) pos1 = -1;
@@ -1518,7 +1518,7 @@ void GIBI_MESH_RDONLY_DRIVER::open()
 //   if ( aMode != MED_EN::MED_LECT && aMode != MED_EN::MED_REMP )
 //     throw MEDEXCEPTION(LOCALIZED(STRING(LOC) << " Bad file mode access ! " << aMode));
 
-#ifdef WNT
+#ifdef WIN32
   _File = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
 #else
   _File = ::open (_fileName.c_str(), O_RDONLY);
@@ -1565,7 +1565,7 @@ void GIBI_MESH_RDONLY_DRIVER::open()
       xdr_destroy((XDR*)_xdrs);
       free((XDR*)_xdrs);
       fclose(_xdrs_file);
-#ifdef WNT
+#ifdef WIN32
       _File = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
 #else
       ::close (_File); // ? needed ?
@@ -2606,7 +2606,7 @@ void GIBI_MESH_WRONLY_DRIVER::open()
   }
   //change for windows compilation
   if ( !_gibi ||
-#ifdef WNT
+#ifdef WIN32
       !_gibi.is_open()
 #else
       !_gibi.rdbuf()->is_open()
index 68261325ead27fb82c6affba88244431565aa80f..143469ca70d533d8cc89601769aecd5a05a944db 100644 (file)
@@ -45,7 +45,7 @@
 #include <iomanip>
 /////
 
-#ifdef WNT
+#ifdef WIN32
 #else
 #define HAS_XDR
 #endif
index d8870d8ccced6e30c304d8c12004282bc04dd85d..cf851f094e745aab49298203c875b98514aa91b1 100644 (file)
@@ -49,7 +49,7 @@ MEDMEM::INIT::INIT()
 
   if (traceKind == NULL)
     {
-#ifndef WNT
+#ifndef WIN32
       setenv("SALOME_trace","local",1);
 #else
       _putenv("SALOME_trace=%TEMP%\\local");
index 3fc44e3930a8f3bd6fefd255efc1ed993bcfe11a..fc0474ced8ca91abe62227320b94387202340383 100644 (file)
@@ -101,7 +101,7 @@ PORFLOW_MESH_DRIVER::PORFLOW_MESH_DRIVER(const string & fileName,
   const string ext=".inp"; // expected extension
   string::size_type pos=fileName.find(ext,0);
   string::size_type pos1=fileName.rfind('/');
-#ifdef WNT
+#ifdef WIN32
   if (pos1 == string::npos ) pos1=fileName.rfind('\\');
 #endif
   if (pos1 != string::npos )
@@ -386,7 +386,7 @@ void PORFLOW_MESH_RDONLY_DRIVER::read(void)
     // the directory name will be used to locate the files included in _fileName.
     string dirName;
     string::size_type pos=_fileName.rfind('/');
-#ifdef WNT
+#ifdef WIN32
     if (pos == string::npos ) pos=_fileName.rfind('\\');
 #endif
     if (pos != string::npos )
index 6457d32cb6cc985fefd742eef9f7c990ee2b7c1b..e914ec6949386f70472fdd3423d51456f8fbda52 100644 (file)
@@ -42,7 +42,7 @@
 #include "MEDMEM_CellModel.hxx"
 #include "MEDMEM_VtkMeshDriver.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #else
 #include <unistd.h>
@@ -378,14 +378,14 @@ template <class T> void VTK_FIELD_DRIVER<T>::writeAppend(void) const
 
   // check if dataStr is already present in the file
   bool toWriteDataStr = true;
-#ifdef WNT
+#ifdef WIN32
   int vtkFile = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
 #else
   int vtkFile = ::open (_fileName.c_str(), O_RDONLY);
 #endif
   if ( vtkFile > 0 )
   {
-#ifdef WNT
+#ifdef WIN32
     ssize_t fileSize = ::_lseek( vtkFile, 0, SEEK_END); ::lseek( vtkFile, 0, SEEK_SET);
     char* buf = new char[ fileSize ];
     ::_read (vtkFile, buf, fileSize );
@@ -398,7 +398,7 @@ template <class T> void VTK_FIELD_DRIVER<T>::writeAppend(void) const
     while ( ++vtkData < vtkDataEnd && toWriteDataStr )
       toWriteDataStr = ( strncmp( dataStr.data(), vtkData, dataStr.size()) != 0 );
     delete [] buf;
-#ifdef WNT
+#ifdef WIN32
     ::_close (vtkFile);
 #else
     ::close (vtkFile);
index 335b21d278cd32daf2c2f4552b24d6d9e1361c00..256a6da79cc220b5224f0fab41e9f703033c657c 100644 (file)
@@ -521,7 +521,7 @@ bool _VTK_BinaryWriter::open(bool append) const
       // opening
       _VTK_BinaryWriter* mutableMe =(_VTK_BinaryWriter*) this;
       int append_flag = 0;
-#ifdef WNT
+#ifdef WIN32
       if ( append ) append_flag = _O_APPEND;
       mutableMe->_binaryFile = ::_open (_fileName.c_str(), _O_WRONLY|_O_BINARY|append_flag);
 #else
@@ -538,7 +538,7 @@ bool _VTK_BinaryWriter::close() const
 {
   if ( _binaryFile )
     {
-#ifdef WNT
+#ifdef WIN32
       ::_close (_binaryFile);
 #else
       ::close (_binaryFile);
index ce13bb38405035cb4d2aca699a245d991adab11a..91e3c8bf74bc947498bda4076234a19f9c5073a5 100644 (file)
@@ -143,7 +143,7 @@ public:
         while ( ++intBuf < bufEnd )
           *intBuf = swapBytes( *intBuf );
       }
-#ifdef WNT
+#ifdef WIN32
     ssize_t nbWritten = ::_write( _binaryFile, toWrite, nbValues * sizeof(T));
 #else
     ssize_t nbWritten = ::write( _binaryFile, toWrite, nbValues * sizeof(T));
index 2dc0288eb4cb9d12676ca753100a56fb570e3d5a..12ffc1e5433934e9c38627f7f12a4752ff557814 100644 (file)
@@ -131,6 +131,15 @@ SET(testAnalFile_SOURCES testAnalFile.cxx)
 SET(test_MEDMEM_MeshingFlica_SOURCES test_MEDMEM_MeshingFlica.cxx)
 
 SET(testConvertPolygon_SOURCES testConvertPolygon.cxx)
+SET(create_mesh_SOURCES create_mesh.c)
+SET(create_mesh_c2q4s2_SOURCES create_mesh_c2q4s2.c)
+SET(create_mesh_c3h8q4_SOURCES create_mesh_c3h8q4.c)
+SET(create_mesh_c3h8q4_wrong_SOURCES create_mesh_c3h8q4_wrong.c)
+SET(create_mesh_c2q4s2_wrong_SOURCES create_mesh_c2q4s2_wrong.c)
+SET(create_grid_SOURCES create_grid.c)
+SET(create_mesh_c2q4_SOURCES create_mesh_c2q4.c)
+SET(create_mesh_c3h8_SOURCES create_mesh_c3h8.c)
+SET(create_poly3D_SOURCES create_poly3D.c)
 
 SET(ALLMEDMEMBIN_TESTS
   dumpInterpolation
@@ -185,17 +194,27 @@ SET(ALLMEDMEMBIN_TESTS
   testAnalFile
   test_MEDMEM_MeshingFlica
   testConvertPolygon
+  create_mesh 
+  create_mesh_c2q4s2 
+  create_mesh_c3h8q4 
+  create_mesh_c3h8q4_wrong
+  create_mesh_c2q4s2_wrong 
+  create_grid 
+  create_mesh_c2q4 
+  create_mesh_c3h8 
+  create_poly3D                  
   )
 
 FOREACH(ALLMEDMEMBIN_TEST ${ALLMEDMEMBIN_TESTS})
   ADD_EXECUTABLE(${ALLMEDMEMBIN_TEST} ${${ALLMEDMEMBIN_TEST}_SOURCES})
-  SET_TARGET_PROPERTIES(${ALLMEDMEMBIN_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(${ALLMEDMEMBIN_TEST} medmem)
+  SET_TARGET_PROPERTIES(${ALLMEDMEMBIN_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+  TARGET_LINK_LIBRARIES(${ALLMEDMEMBIN_TEST} medmem ${PLATFORM_LIBS})
 ENDFOREACH(ALLMEDMEMBIN_TEST ${ALLMEDMEMBIN_TESTS})
 
 INSTALL(TARGETS ${ALLMEDMEMBIN_TESTS} DESTINATION ${MED_salomebin_BINS})
 
 SET(MEDMEMBINTEST_PYOPT_TEST -c"import sys;import os;import subprocess;os.putenv(\"srcdir\",sys.argv[1]);sys.exit(subprocess.call([\"sh\",sys.argv[2]]))")
+
 ADD_TEST(check_convertToPoly ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_convertToPoly)
 ADD_TEST(check_duplicateMED ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_duplicateMED)
 ADD_TEST(check_ensight2med ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_ensight2med)
index 1249429aa03f4bf4b6a4ba4786d2c879d8407394..df66695303f8351805041fae2a0e19341f50ab0f 100644 (file)
@@ -21,7 +21,7 @@
 //
 
 #include "MEDMEM_Mesh.hxx"
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #define access _access
 #define W_OK 02
index 7ffc8869da3c23d18995447cf7050023fadfc088..f25909c00fa16bf7412c9b98bf9ca5615969d906 100644 (file)
@@ -26,7 +26,7 @@
 #include "MEDMEM_Meshing.hxx"
 #include "MEDMEM_Group.hxx"
 #include "MEDMEM_Field.hxx"
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #define access _access
 #define W_OK 02
index e82ee51a687f7e06b3e809ef18aeb0c7e304f928..b1bf88a2f85c224852caa20dda08d6196ebcfd7b 100644 (file)
@@ -22,7 +22,7 @@
 
 #include "MEDMEM_Meshing.hxx"
 #include "MEDMEM_Group.hxx"
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #define access _access
 #define W_OK 02
index 2cc8a9cc97ed3eed766ea4b8e48cb01b24cab879..622fce12c9cd908a384671868a9beac4e2fc4dd9 100644 (file)
@@ -21,7 +21,7 @@
 //
 #include "MEDMEM_Meshing.hxx"
 #include "MEDMEM_DriverFactory.hxx"
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #define access _access
 #define W_OK 02
index d85cee87ea5a51bdd19568315245f4678e390936..ad869500adb8db1b3f266f2a48c17cb6f3f0ed60 100644 (file)
@@ -114,15 +114,17 @@ SET(MEDMEMTest_VtkMeshDriver_fault_SOURCES
   )
 
 ADD_LIBRARY(MEDMEMCppTest SHARED ${MEDMEMCppTest_SOURCES})
-SET_TARGET_PROPERTIES(MEDMEMCppTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDMEMCppTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(MEDMEMCppTest medmem ${CPPUNIT_LIBS})
 
 SET(ALLMEDMEMCPP_TESTS TestMEDMEM MEDMEMTest_Array_fault MEDMEMTest_Connectivity_fault MEDMEMTest_Coordinate_fault MEDMEMTest_Family_fault MEDMEMTest_Field_fault MEDMEMTest_Grid_fault MEDMEMTest_MeshAndMeshing_fault MEDMEMTest_Support_fault MEDMEMTest_VtkFieldDriver_fault MEDMEMTest_VtkMeshDriver_fault)
 FOREACH(MEDMEMCPP_TEST ${ALLMEDMEMCPP_TESTS})
   ADD_EXECUTABLE(${MEDMEMCPP_TEST} ${${MEDMEMCPP_TEST}_SOURCES})
-  SET_TARGET_PROPERTIES(${MEDMEMCPP_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(${MEDMEMCPP_TEST} MEDMEMCppTest)
+  SET_TARGET_PROPERTIES(${MEDMEMCPP_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+  TARGET_LINK_LIBRARIES(${MEDMEMCPP_TEST} MEDMEMCppTest ${PLATFORM_LIBS})
 ENDFOREACH(MEDMEMCPP_TEST ${ALLMEDMEMCPP_TESTS})
 
 INSTALL(TARGETS MEDMEMCppTest DESTINATION ${MED_salomelib_LIBS})
 INSTALL(TARGETS ${ALLMEDMEMCPP_TESTS} DESTINATION ${MED_salomebin_BINS})
+INSTALL(FILES testMEDMEM.py DESTINATION ${MED_salomebin_BINS})
+INSTALL(FILES MEDMEMTest.hxx MEDMEMCppTestExport.hxx DESTINATION ${MED_salomeinclude_HEADERS})
index b230f2164ce6c77601078151982e2704fc824e37..be9d306539a842794a1f5f8faa14795f6ee4abe7 100644 (file)
@@ -20,7 +20,7 @@
 #ifndef _MEDMEMCPPTESTEXPORT_HXX_
 #define _MEDMEMCPPTESTEXPORT_HXX_
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined MEDMEMCppTest_EXPORTS
 #    define MEDMEMCPPTEST_EXPORT __declspec( dllexport )
 #  else
index 0ee5d04a3541088784bb68e4f4b70855ef26e300..0e2c4d08509c4d8b775ad9792fbdf7e7255c320d 100644 (file)
@@ -33,7 +33,7 @@
 #include <cmath>
 #include <stdexcept>
 
-#ifdef WNT
+#ifdef WIN32
 #include <windows.h>
 #endif
 
@@ -654,7 +654,7 @@ MEDMEMTest_TmpFilesRemover::~MEDMEMTest_TmpFilesRemover()
 {
   set<string>::iterator it = myTmpFiles.begin();
   for (; it != myTmpFiles.end(); it++) {
-#ifdef WNT
+#ifdef WIN32
     //if (GetFileAttributes((*it).data()) & FILE_ATTRIBUTE_NORMAL)
     if (GetFileAttributes((*it).data()) != INVALID_FILE_ATTRIBUTES)
 #else
index 788e60770ff1d01a9eefdae5d5ca25964e0551da..87d92ff9aa4c70a55ba8e8faaf0c84f60b11e4b4 100644 (file)
@@ -28,7 +28,7 @@
 #include <cppunit/Message.h>
 #include <cppunit/TestAssert.h>
 
-#ifdef WNT
+#ifdef WIN32
 #include <windows.h>
 #endif
 
@@ -186,7 +186,7 @@ void MEDMEMTest::testDesactivateFacesComputation()
   MEDMEM::GIBI_MESH_WRONLY_DRIVER *gibidriver=new MEDMEM::GIBI_MESH_WRONLY_DRIVER(tmpGibiFile,mesh );
   id=mesh->addDriver(*gibidriver);
   mesh->write(id);
-#ifdef WNT
+#ifdef WIN32
   CPPUNIT_ASSERT( GetFileAttributes(tmpGibiFile.c_str()) != INVALID_FILE_ATTRIBUTES );
 #else
   CPPUNIT_ASSERT( access(tmpGibiFile.c_str(), F_OK) == 0 );
index 446510c357cc6eedf296b8a1164f162737e01b52..21e2e3bb802eb0b8f9026a2fcd579ece27c59e9a 100644 (file)
@@ -25,7 +25,7 @@
 // #include <sstream>
 // #include <cmath>
 
-#ifdef WNT
+#ifdef WIN32
 #include <windows.h>
 #endif
 
index b4a047834eb0e259932acc043479a242f2234b42..b3d0df9c903413e8ba0813ac6d906844b8491f30 100644 (file)
@@ -22,7 +22,7 @@
 #include <list>
 #include <stdexcept>
 
-#ifdef WNT
+#ifdef WIN32
 #include <windows.h>
 #else
 #include <unistd.h>
@@ -77,7 +77,7 @@ std::string getTmpDirectory()
 
   std::string tmpd = "";
   for ( std::list<std::string>::iterator dir = dirs.begin(); dir != dirs.end() && tmpd == "" ; ++dir ) {
-#ifdef WNT
+#ifdef WIN32
     if ( GetFileAttributes(dir->data()) & FILE_ATTRIBUTE_DIRECTORY )
 #else
     if ( access( dir->data(), W_OK ) == 0 )
@@ -106,7 +106,7 @@ std::string makeTmpFile( const std::string& tmpfile, const std::string& srcfile
 {
   std::string tmpf = fixSlashes( getTmpDirectory() + "/" + tmpfile );
   if ( srcfile != "" ) {
-#ifdef WNT
+#ifdef WIN32
     std::string cmd  = "copy " + fixSlashes( srcfile ) + " " + tmpf;
 #else
     std::string cmd  = "cp " + srcfile + " " + tmpf + " ; chmod +w " + tmpf;
@@ -125,7 +125,7 @@ std::string makeTmpFile( const std::string& tmpfile, const std::string& srcfile
 
 std::string fixSlashes( const std::string& path)
 {
-#ifdef WNT
+#ifdef WIN32
   std::string fixedpath = path;
   for ( int i=0; i < path.size(); ++i )
     if (path[i] == '/')
index edba2fed85b85c8837a5dd906491c07c4dc9f2ad..1a9b7e745877f947126c043f145c74177a4ad6d6 100644 (file)
@@ -19,6 +19,7 @@
 
 INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
@@ -42,8 +43,9 @@ SET(MEDMEMImpl_SOURCES
   )
 
 ADD_LIBRARY(MEDMEMImpl SHARED ${MEDMEMImpl_SOURCES})
-SET_TARGET_PROPERTIES(MEDMEMImpl PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDMEMImpl medmem SalomeIDLMED)
+SET_TARGET_PROPERTIES(MEDMEMImpl PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDMEMImpl medmem SalomeIDLMED ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA} ${SALOMELocalTrace} ${SalomeCommunication} ${SalomeGenericObj} ${SalomeNS} ${OpUtil})
+
 INSTALL(TARGETS MEDMEMImpl DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB MEDMEMImpl_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index 9d02f8c5fa32415e03e2556224c08136dd62d573..5d4e18d6248cca3c3a686533909111a27a7594a1 100755 (executable)
@@ -27,7 +27,7 @@
 #ifndef _MEDMEM_I_HXX_
 #define _MEDMEM_I_HXX_
 
-#ifdef WNT
+#ifdef WIN32
  #if defined MEDMEM_I_EXPORTS || defined MEDMEMImpl_EXPORTS
   #if defined WIN32
    #define MEDMEM_I_EXPORT __declspec( dllexport )
index c721f6fa06c0d8e27d7ff2437c53b556a38bf33f..42a42423ae47949f2b504a4d5abc1da44d66eed5 100644 (file)
@@ -22,7 +22,7 @@ INCLUDE(${SWIG_USE_FILE})
 
 SET_SOURCE_FILES_PROPERTIES(libMEDMEM_Swig.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(libMEDMEM_Swig.i PROPERTIES SWIG_DEFINITIONS "-shadow")
-SET_SOURCE_FILES_PROPERTIES(libMEDMEM_SwigPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SET_SOURCE_FILES_PROPERTIES(libMEDMEM_SwigPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
@@ -37,10 +37,42 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(libMEDMEM_Swig python libMEDMEM_Swig.i)
-SWIG_LINK_LIBRARIES(libMEDMEM_Swig ${PYTHON_LIBRARIES} medmem)
+SWIG_LINK_LIBRARIES(libMEDMEM_Swig ${PYTHON_LIBS} medmem)
+SET_TARGET_PROPERTIES(_libMEDMEM_Swig PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
 
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libMEDMEM_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMEDMEM_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 INSTALL(TARGETS _libMEDMEM_Swig DESTINATION ${MED_salomepythondir})
+
 INSTALL(FILES libMEDMEM_Swig.i my_typemap.i MEDMEM_SWIG_Templates.hxx DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDMEM_Swig.py DESTINATION ${MED_salomescript_PYTHON})
-INSTALL(FILES med2sauv sauv2med avs2med DESTINATION ${MED_salomescript_PYTHON}
+INSTALL(FILES medutilities.py ${CMAKE_CURRENT_BINARY_DIR}/libMEDMEM_Swig.py DESTINATION ${MED_salomepythondir})
+SET(SCRIPTS
+  medmem.py
+  med_test1.py
+  med_test2.py
+  med_test3.py
+  med_test_grid.py
+  med_test_skin.py
+  medMeshing_test.py
+  med_field_anal.py
+  med_opfield_test.py
+  med_opsupp_test.py
+  test_gibi.py
+  test_porflow.py
+  testDriverAscii.py
+  testGaussLocalization.py
+  test_profil_MedFieldDriver.py
+  testWriteAndFam.py
+  testMedMemGeneral.py
+  testMedMemCxxTests.py
+  dumpMEDMEM.py
+  ensightMedEnsight_test.py
+  medEnsightMed_test.py
+  medNumPy_test.py
+  med2sauv 
+  sauv2med 
+  avs2med
+)
+INSTALL(FILES ${SCRIPTS} DESTINATION ${MED_salomescript_PYTHON}
   PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
diff --git a/src/MEDOP/CMakeLists.txt b/src/MEDOP/CMakeLists.txt
new file mode 100644 (file)
index 0000000..00a361e
--- /dev/null
@@ -0,0 +1,25 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(cmp)
+ADD_SUBDIRECTORY(tui)
+ADD_SUBDIRECTORY(res)
+ADD_SUBDIRECTORY(gui)
+ADD_SUBDIRECTORY(exe)
+ADD_SUBDIRECTORY(doc)
diff --git a/src/MEDOP/Makefile.am b/src/MEDOP/Makefile.am
new file mode 100644 (file)
index 0000000..c41773e
--- /dev/null
@@ -0,0 +1,30 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# This folder contains the packages for the MED fields operations:
+# - cmp: package containing the SALOME components
+# - tui: package containing the python user interface
+# - gui: package containing the graphical user interface (the GUI part of the MED module)
+# - res: folder containing data files (resources)
+# - exe: folder containing small executable programs for MED data processing
+# - doc: folder containing the documentation of the MEDOP package 
+
+SUBDIRS= cmp tui res gui exe doc/sphinx
+
+EXTRA_DIST = README.txt
diff --git a/src/MEDOP/README.txt b/src/MEDOP/README.txt
new file mode 100644 (file)
index 0000000..9a07aa6
--- /dev/null
@@ -0,0 +1,6 @@
+This folder contains the packages for the MED fields operations:
+- cmp: package containing the SALOME components
+- tui: package containing the python user interface
+- gui: package containing the graphical user interface (the GUI part of the MED module)
+- res: resources files associated to the MEDOP package (icons, config files, data files, ...)
+
diff --git a/src/MEDOP/cmp/CMakeLists.txt b/src/MEDOP/cmp/CMakeLists.txt
new file mode 100644 (file)
index 0000000..165ca2d
--- /dev/null
@@ -0,0 +1,73 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE_DIRECTORIES(
+  ${OMNIORB_INCLUDE_DIRS}
+  ${MED3_INCLUDE_DIRS}
+  ${HDF5_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
+  ${KERNEL_ROOT_DIR}/include/salome
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_BINARY_DIR}/idl
+  ${CMAKE_SOURCE_DIR}/src/MEDCoupling
+  ${CMAKE_SOURCE_DIR}/src/INTERP_KERNEL/Bases
+  ${CMAKE_SOURCE_DIR}/src/INTERP_KERNEL
+  ${CMAKE_SOURCE_DIR}/src/MEDLoader
+)
+
+SET(MEDOPFactoryEngine_SOURCES
+  MEDDataManager_i.cxx
+  MEDCalculator_i.cxx
+  MEDOPFactory_i.cxx
+)
+SET(COMMON_LIBS
+  medloader
+  SalomeIDLMED
+  ${TOOLSDS}
+  ${SalomeHDFPersist}
+  ${SalomeContainer}
+  ${SalomeCommunication}
+  ${SalomeKernelHelpers}
+  ${SalomeLifeCycleCORBA}
+  ${SALOMELocalTrace}
+  ${SALOMEBasics} 
+  ${SalomeGenericObj}
+  medcoupling
+  interpkernel
+  ${MED3_LIBS}
+  ${HDF5_LIBS}
+  ${OMNIORB_LIBS}
+  ${PLATFORM_LIBS}
+)
+SET(COMMON_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+# This undefines the macros MIN and MAX which are specified in the windows headers 
+IF(WINDOWS)
+  SET(COMMON_FLAGS "${COMMON_FLAGS} -DNOMINMAX")
+ENDIF(WINDOWS)
+
+ADD_LIBRARY(MEDOPFactoryEngine SHARED ${MEDOPFactoryEngine_SOURCES})
+SET_TARGET_PROPERTIES(MEDOPFactoryEngine PROPERTIES COMPILE_FLAGS "${COMMON_FLAGS}")
+TARGET_LINK_LIBRARIES(MEDOPFactoryEngine SalomeIDLMED ${COMMON_LIBS})
+
+INSTALL(TARGETS MEDOPFactoryEngine DESTINATION ${MED_salomelib_LIBS})
+
+FILE(GLOB MEDOPFactoryEngine_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${MEDOPFactoryEngine_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
+INSTALL(FILES test_medop_components.py PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${MED_salomebin_BINS}/xmed)
diff --git a/src/MEDOP/cmp/MEDCalculator_i.cxx b/src/MEDOP/cmp/MEDCalculator_i.cxx
new file mode 100644 (file)
index 0000000..94ad602
--- /dev/null
@@ -0,0 +1,387 @@
+//  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDCalculator_i.hxx"
+#include "SALOME_KernelServices.hxx"
+#include "Basics_Utils.hxx"
+#include <string>
+
+#include "MEDCouplingFieldDouble.hxx"
+using namespace ParaMEDMEM;
+
+MEDCalculator_i * MEDCalculator_i::_instance = NULL;
+
+MEDCalculator_i * MEDCalculator_i::getInstance() {
+  if ( _instance == NULL ) {
+    _instance = new MEDCalculator_i();
+  }
+  return _instance;
+}
+
+MEDCalculator_i::MEDCalculator_i()
+{
+  LOG("Creating a MEDCalculator_i instance");
+  _medDataManager = MEDDataManager_i::getInstance();
+}
+
+MEDCalculator_i::~MEDCalculator_i()
+{
+  LOG("Deleting MEDCalculator_i instance");
+}
+
+/*!
+ * This function realizes the addition of the MEDCoupling field
+ * objects identified by the FieldHandler objects passed in arguments.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::add(const MEDOP::FieldHandler & f1_hdl,
+                                          const MEDOP::FieldHandler & f2_hdl)
+{
+  // We first check that both operandes share the same mesh id. Note
+  // that it's not strictly required because the MEDCoupling operation
+  // would raise an exception if the fields does not share the same
+  // mesh support.
+  if ( f1_hdl.meshid != f2_hdl.meshid ) {
+    std::string message = 
+      std::string("ERROR: Mesh ids are different for the field operandes ") +
+      std::string(f1_hdl.fieldname) + std::string(" and ") + std::string(f2_hdl.fieldname);
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+
+  MEDCouplingFieldDouble* f1 = _medDataManager->getFieldDouble(&f1_hdl);
+  MEDCouplingFieldDouble* f2 = _medDataManager->getFieldDouble(&f2_hdl);
+
+  MEDCouplingFieldDouble* field_result;
+  // This operation could raise an INTERP_KERNEL exception, for
+  // example, if the fields are not defined on the same support. 
+  try {
+    field_result = (*f1) + (*f2);
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    throw KERNEL::createSalomeException(ex.what());
+  }
+
+  std::string name = std::string(f1->getName()) + "+" + std::string(f2->getName());
+  field_result->setName(name.c_str());
+
+  //
+  // The field must be registered in the dataManager structure so
+  // that it could be reused in a future operation (in particular for
+  // a manipulation that combine several operation as "r = f1+f2+f3",
+  // the operator will try to make the addition f1+f2 and then
+  // resultof(f1+f2) + f3. This last operation will fail if the field
+  // resultof(f1+f2) is not in the dataManager structure).
+  //
+  // Note that we choose arbitrary the first field operande to get the
+  // meshid (both have the same meshid).
+  //
+  long meshHandlerId = f1_hdl.meshid;
+  MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+                                                                      meshHandlerId);
+  
+  // >>>>>>>>>
+  // _GBO_ We should test here if the iteration and order of the input
+  // files are identical for both operandes. A convention has to be
+  // defined here. By default, we let the iteration and order be
+  // determined by the resulting MEDCouplingFieldDouble instance (see
+  // function addField of the data manager).
+  // <<<<<<<<<
+
+  return fieldResultHandler;
+}
+
+/*!
+ * This function realizes the substraction of the MEDCoupling field
+ * objects identified by the FieldHandler objects passed in arguments.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::sub(const MEDOP::FieldHandler & f1_hdl,
+                                          const MEDOP::FieldHandler & f2_hdl)
+{
+  if ( f1_hdl.meshid != f2_hdl.meshid ) {
+    std::string message = 
+      std::string("ERROR: Mesh ids are different for the field operandes ") +
+      std::string(f1_hdl.fieldname) + std::string(" and ") + std::string(f2_hdl.fieldname);
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+
+  MEDCouplingFieldDouble* f1 = _medDataManager->getFieldDouble(&f1_hdl);
+  MEDCouplingFieldDouble* f2 = _medDataManager->getFieldDouble(&f2_hdl);  
+
+  MEDCouplingFieldDouble* field_result;
+  try {
+    field_result = (*f1) - (*f2);
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    throw KERNEL::createSalomeException(ex.what());
+  }
+
+  std::string name = std::string(f1->getName()) + "-" + std::string(f2->getName());
+  field_result->setName(name.c_str());
+
+  long meshHandlerId = f1_hdl.meshid;
+  MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+                                                                      meshHandlerId);
+  return fieldResultHandler;
+}
+
+/*!
+ * This function realizes the multiplication of the MEDCoupling field
+ * objects identified by the FieldHandler objects passed in arguments.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::mul(const MEDOP::FieldHandler & f1_hdl,
+                                          const MEDOP::FieldHandler & f2_hdl)
+{
+  if ( f1_hdl.meshid != f2_hdl.meshid ) {
+    std::string message = 
+      std::string("ERROR: Mesh ids are different for the field operandes ") +
+      std::string(f1_hdl.fieldname) + std::string(" and ") + std::string(f2_hdl.fieldname);
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+
+  MEDCouplingFieldDouble* f1 = _medDataManager->getFieldDouble(&f1_hdl);
+  MEDCouplingFieldDouble* f2 = _medDataManager->getFieldDouble(&f2_hdl);  
+  
+  MEDCouplingFieldDouble* field_result;
+  try {
+    field_result = (*f1) * (*f2);
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    throw KERNEL::createSalomeException(ex.what());
+  }
+  std::string name = std::string(f1->getName()) + "*" + std::string(f2->getName());
+  field_result->setName(name.c_str());
+
+  long meshHandlerId = f1_hdl.meshid;
+  MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+                                                                      meshHandlerId);
+  return fieldResultHandler;
+}
+
+/*!
+ * This function realizes the division of the MEDCoupling field
+ * objects identified by the FieldHandler objects passed in arguments.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::div(const MEDOP::FieldHandler & f1_hdl,
+                                          const MEDOP::FieldHandler & f2_hdl)
+{
+  if ( f1_hdl.meshid != f2_hdl.meshid ) {
+    std::string message = 
+      std::string("ERROR: Mesh ids are different for the field operandes ") +
+      std::string(f1_hdl.fieldname) + std::string(" and ") + std::string(f2_hdl.fieldname);
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+
+  MEDCouplingFieldDouble* f1 = _medDataManager->getFieldDouble(&f1_hdl);
+  MEDCouplingFieldDouble* f2 = _medDataManager->getFieldDouble(&f2_hdl);  
+
+  MEDCouplingFieldDouble* field_result;
+  try {
+    field_result = (*f1) / (*f2);
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    throw KERNEL::createSalomeException(ex.what());
+  }
+
+  std::string name = std::string(f1->getName()) + "/" + std::string(f2->getName());
+  field_result->setName(name.c_str());
+
+  long meshHandlerId = f1_hdl.meshid;
+  MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+                                                                      meshHandlerId);
+  return fieldResultHandler;
+}
+
+/*!
+ * This function realizes the power of the MEDCoupling field
+ * object identified by the FieldHandler object passed in argument.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::pow(const MEDOP::FieldHandler & f_hdl, CORBA::Long power)
+{
+  MEDCouplingFieldDouble* field = _medDataManager->getFieldDouble(&f_hdl);
+  
+  // We use the applyFunc function to execute this operation. The
+  // applyFunc function modifies the original field (that is not what
+  // we want). So we have first to make a deep copy.
+  MEDCouplingFieldDouble* field_result;
+  try {
+    field_result = field->clone(true);
+    string functionToApply = "u^"+ToString(power);
+    field_result->applyFunc(functionToApply.c_str());
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    throw KERNEL::createSalomeException(ex.what());
+  }
+
+  // Set the name (the default is the same as the original field)
+  string name(field_result->getName());
+  name.append("^");
+  name.append(ToString(power));
+  field_result->setName(name.c_str());
+
+  long meshHandlerId = f_hdl.meshid;
+  MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+                                                                      meshHandlerId);
+  return fieldResultHandler;
+}
+
+/*!
+ * This function creates a new field as the linear transformation of
+ * the field object identified by the FieldHandler in argument. The
+ * transformation is y= factor*x + offset.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::lin(const MEDOP::FieldHandler & f_hdl, double factor, double offset)
+{
+  MEDCouplingFieldDouble* field = _medDataManager->getFieldDouble(&f_hdl);
+  
+  // We use the applyFunc function to execute this operation. The
+  // applyFunc function modifies the original field (that is not what
+  // we want). So we have first to make a deep copy.
+  MEDCouplingFieldDouble* field_result;
+  try {
+    field_result = field->clone(true);
+    string functionToApply = "u*"+ToString(factor)+"+"+ToString(offset);
+    field_result->applyFunc(functionToApply.c_str());
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    throw KERNEL::createSalomeException(ex.what());
+  }
+
+  // Set the name (the default is the same as the original field)
+  string name = string("lin(");
+  name.append(field->getName());
+  name.append(",factor=");
+  name.append(ToString(factor));
+  name.append(",offset=");
+  name.append(ToString(offset));
+  name.append(")");
+  field_result->setName(name.c_str());
+
+  long meshHandlerId = f_hdl.meshid;
+  MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+                                                                      meshHandlerId);
+  return fieldResultHandler;
+
+}
+
+/*!
+ * This function creates a new field as the duplicate of the field
+ * object identified by the FieldHandler in argument.
+ *
+ * It returns a FieldHandler that identifies the resulting MEDCoupling
+ * field object. The resulting MEDCoupling field object is physically
+ * in the SALOME MED container and is automatically registered in the
+ * MEDDataManager.
+ */
+MEDOP::FieldHandler * MEDCalculator_i::dup(const MEDOP::FieldHandler & f_hdl)
+{
+  MEDCouplingFieldDouble* field = _medDataManager->getFieldDouble(&f_hdl);
+  
+  // We just make a deep copy of the input field
+  MEDCouplingFieldDouble* field_result;
+  try {
+    field_result = field->clone(true);
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    throw KERNEL::createSalomeException(ex.what());
+  }
+
+  // Set the name (the default is the same as the original field)
+  string name = string("dup(");
+  name.append(field->getName());
+  name.append(")");
+  field_result->setName(name.c_str());
+
+  long meshHandlerId = f_hdl.meshid;
+  MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+                                                                      meshHandlerId);
+  return fieldResultHandler;
+}
+
+/*!
+ * This creates a new field by applying a function on the specified
+ * field. The function is defined by a string of characters
+ * (function), that specifies the litteral equation to apply, and an
+ * integer (nbcomponents), that specifies the number of components to
+ * consider in the resulting field. This is to mimic the interface of
+ * MEDCouplingFieldDouble::applyFunc.
+ * Note that if nbcomponents is not in the range 1..N where N is the
+ * number of components of the specified field, then the function is
+ * apply on the whole field (as if specified N=numberOfComponents).
+ */
+MEDOP::FieldHandler * MEDCalculator_i::fct(const MEDOP::FieldHandler & f_hdl,
+                                          const char * function, CORBA::Long nbResComponents)
+{
+  MEDCouplingFieldDouble* field = _medDataManager->getFieldDouble(&f_hdl);
+
+  // We first make a deep copy of the input field
+  MEDCouplingFieldDouble* field_result;
+  try {
+    field_result = field->clone(true);
+    if ( (nbResComponents == MEDOP::NBCOMP_DEFAULT ) ||
+        (nbResComponents < 1) || (nbResComponents > field_result->getNumberOfComponents()) ) {
+      field_result->applyFunc(function);
+    }
+    else {
+      field_result->applyFunc(nbResComponents,function);
+    }
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    throw KERNEL::createSalomeException(ex.what());
+  }
+
+  string name = string("fct("); name.append(field->getName());
+  name.append(",\""); name.append(function);
+  name.append(",\""); name.append(ToString(nbResComponents)); name.append("\")");
+  field_result->setName(name.c_str());
+
+  long meshHandlerId = f_hdl.meshid;
+  MEDOP::FieldHandler * fieldResultHandler = _medDataManager->addField(field_result,
+                                                                      meshHandlerId);
+  return fieldResultHandler;
+}
diff --git a/src/MEDOP/cmp/MEDCalculator_i.hxx b/src/MEDOP/cmp/MEDCalculator_i.hxx
new file mode 100644 (file)
index 0000000..4b95e61
--- /dev/null
@@ -0,0 +1,75 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_CALCULATOR_I_HXX_
+#define _MED_CALCULATOR_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(MEDDataManager)
+#include CORBA_SERVER_HEADER(MEDCalculator)
+#include "SALOME_GenericObj_i.hh"
+
+#include "MEDDataManager_i.hxx"
+
+#include "MEDOP.hxx"
+class MEDOP_EXPORT MEDCalculator_i: public POA_MEDOP::MEDCalculator,
+                                   public SALOME::GenericObj_i
+{
+public:
+
+  // 
+  // ===========================================================
+  // Functions specified in the IDL interface
+  // ===========================================================
+  //
+  MEDOP::FieldHandler * add(const MEDOP::FieldHandler & f1_hdl, const MEDOP::FieldHandler & f2_hdl);
+  MEDOP::FieldHandler * sub(const MEDOP::FieldHandler & f1_hdl, const MEDOP::FieldHandler & f2_hdl);
+  MEDOP::FieldHandler * mul(const MEDOP::FieldHandler & f1_hdl, const MEDOP::FieldHandler & f2_hdl);
+  MEDOP::FieldHandler * div(const MEDOP::FieldHandler & f1_hdl, const MEDOP::FieldHandler & f2_hdl);
+  MEDOP::FieldHandler * pow(const MEDOP::FieldHandler & f_hdl, CORBA::Long power);
+  MEDOP::FieldHandler * lin(const MEDOP::FieldHandler & f_hdl, double factor, double offset);
+  MEDOP::FieldHandler * dup(const MEDOP::FieldHandler & f_hdl);
+
+  MEDOP::FieldHandler * fct(const MEDOP::FieldHandler & f_hdl,
+                           const char * function, CORBA::Long nbResComponents);
+
+  // 
+  // ===========================================================
+  // Other public functions (non available via CORBA)
+  // ===========================================================
+  //
+  static MEDCalculator_i * getInstance();
+
+private:
+  MEDCalculator_i();
+  ~MEDCalculator_i();
+
+  // The MEDCalculator is a singleton, whose instance can be obtained
+  // using the getInstance static method.
+  static MEDCalculator_i * _instance;
+
+  MEDDataManager_i * _medDataManager;
+};
+
+#endif // _MED_CALCULATOR_I_HXX_
diff --git a/src/MEDOP/cmp/MEDDataManager_i.cxx b/src/MEDOP/cmp/MEDDataManager_i.cxx
new file mode 100644 (file)
index 0000000..b4b01e4
--- /dev/null
@@ -0,0 +1,795 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDDataManager_i.hxx"
+#include "SALOME_KernelServices.hxx"
+#include "Basics_DirUtils.hxx"
+#include "Basics_Utils.hxx"
+
+#include "MEDLoader.hxx"
+using namespace ParaMEDMEM;
+
+#include <string>
+#include <vector>
+using namespace std;
+
+MEDDataManager_i * MEDDataManager_i::_instance = NULL;
+long MEDDataManager_i::LONG_UNDEFINED = -1;
+
+MEDDataManager_i * MEDDataManager_i::getInstance() {
+  // _GBO_ we will certainly need to define one single DataManager per
+  // SALOME study and not one singleton for the whole session
+  if ( _instance == NULL ) {
+    _instance = new MEDDataManager_i();
+  }
+  return _instance;
+}
+
+#define IOR_UNDEF "IOR UNDEFINED"
+MEDDataManager_i::MEDDataManager_i()
+{
+  LOG("Creating a MEDDataManager_i instance");
+  _fieldLastId = 0;
+  _sourceLastId = 0;
+  _meshLastId = 0;
+  _fieldseriesLastId = 0;
+  _medEventListenerIOR = NULL;
+}
+MEDDataManager_i::~MEDDataManager_i()
+{
+  LOG("Deleting MEDDataManager_i instance");
+}
+
+const char * MEDDataManager_i::file_to_source(const char * filepath)
+{
+  string * source = new string("file://");
+  source->append(filepath);
+  return source->c_str();;
+}
+const char * MEDDataManager_i::source_to_file(const char * source)
+{
+  string * filepath = new string(source);
+  filepath->replace(0,7,"");
+  return filepath->c_str();
+}
+
+/*!
+ * This function loads the meta-data from the specified med file and
+ * returns the associated datasource handler. The data source handler
+ * is a key to retrieve all informations concerning the data (meshes,
+ * fields).
+ */
+MEDOP::DatasourceHandler * MEDDataManager_i::addDatasource(const char *filepath) {
+
+  // We first check that this datasource is not already registered  
+  long sourceid = getDatasourceId(filepath);
+  if ( sourceid != LONG_UNDEFINED ) {
+    // The file is already registered under the identifier sourceid
+    LOG("WRN: The file "<<filepath<<" is already registered with id="<<ToString(sourceid));
+    return new MEDOP::DatasourceHandler(*_datasourceHandlerMap[sourceid]);
+  }
+
+  // Then we check that the file is readable by MEDLoader
+  MEDLoader::CheckFileForRead(filepath);
+
+  // Initialise the datasource handler
+  MEDOP::DatasourceHandler * datasourceHandler = new MEDOP::DatasourceHandler();
+  datasourceHandler->id = _sourceLastId; _sourceLastId++;
+  datasourceHandler->name = (Kernel_Utils::GetBaseName(filepath)).c_str();
+  datasourceHandler->uri = file_to_source(filepath);
+  _datasourceHandlerMap[datasourceHandler->id] = datasourceHandler;
+
+  // We start by read the list of meshes (spatial supports of fields)
+  vector<string> meshNames = MEDLoader::GetMeshNames(filepath);
+  int nbOfMeshes = meshNames.size();
+  for (int iMesh = 0; iMesh < nbOfMeshes; iMesh++) {
+    const char * meshName = meshNames[iMesh].c_str();
+    LOG("name of mesh " << iMesh << " = " << meshName);
+
+    MEDOP::MeshHandler * meshHandler = new MEDOP::MeshHandler();
+    meshHandler->id       = _meshLastId; _meshLastId++;
+    meshHandler->name     = meshName;
+    meshHandler->sourceid = datasourceHandler->id;
+
+    _meshHandlerMap[meshHandler->id] = meshHandler;
+
+    // For each mesh, we can read the list of the names of the
+    // associated fields, i.e. fields whose spatial support is this
+    // mesh.
+    vector<string> fieldNames = MEDLoader::GetAllFieldNamesOnMesh(filepath,
+                                                                 meshName);
+    int nbOfFields = fieldNames.size();
+    for (int iField = 0; iField < nbOfFields; iField++) {
+      const char * fieldName = fieldNames[iField].c_str();
+      LOG("-- name of field " << iField << " = " << fieldName);
+      
+      // A field name could identify several MEDCoupling fields, that
+      // differ by their spatial discretization on the mesh (values on
+      // cells, values on nodes, ...). This spatial discretization is
+      // specified by the TypeOfField that is an integer value in this
+      // list:
+      // 0 = ON_CELLS  
+      // 1 = ON_NODES  
+      // 2 = ON_GAUSS_PT       
+      // 3 = ON_GAUSS_NE
+
+      // As a consequence, before loading values of a field, we have
+      // to determine the types of spatial discretization defined for
+      // this field and to chooose one.
+
+      vector<TypeOfField> listOfTypes = MEDLoader::GetTypesOfField(filepath,
+                                                                  meshName,
+                                                                  fieldName);
+      int nbOfTypes = listOfTypes.size();
+      for (int iType = 0; iType < nbOfTypes; iType++) {
+       LOG("---- type "<<iType<<" of field "<<iField<< " = " << listOfTypes[iType]);
+
+       // Then, we can get the iterations associated to this field on
+       // this type of spatial discretization:
+       std::vector< std::pair<int,int> > fieldIterations = 
+         MEDLoader::GetFieldIterations(listOfTypes[iType],
+                                       filepath,
+                                       meshName,
+                                       fieldName);
+       
+       int nbFieldIterations = fieldIterations.size();
+       LOG("---- nb. iterations = " << nbFieldIterations);
+
+       // We can define the timeseries of fields (fieldseries) for
+       // this type. A fieldseries is a macro object that handle the whole
+       // set of time iterations of a field.
+       MEDOP::FieldseriesHandler * fieldseriesHandler = new MEDOP::FieldseriesHandler();
+       fieldseriesHandler->id     = _fieldseriesLastId; _fieldseriesLastId++;
+       fieldseriesHandler->name   = fieldName;
+       fieldseriesHandler->type   = listOfTypes[iType];
+       fieldseriesHandler->meshid = meshHandler->id;
+       fieldseriesHandler->nbIter = nbFieldIterations;
+       _fieldseriesHandlerMap[fieldseriesHandler->id] = fieldseriesHandler;
+
+       // We can then load meta-data concerning all iterations
+       for (int iterationIdx=0; iterationIdx<nbFieldIterations; iterationIdx++) {
+         
+         int iteration = fieldIterations[iterationIdx].first;
+         int order = fieldIterations[iterationIdx].second;
+         
+         const char * source = datasourceHandler->uri;
+         MEDOP::FieldHandler * fieldHandler = newFieldHandler(fieldName,
+                                                              meshName,
+                                                              listOfTypes[iType],
+                                                              iteration,
+                                                              order,
+                                                              source);
+         
+         fieldHandler->meshid = meshHandler->id;
+         fieldHandler->fieldseriesId = fieldseriesHandler->id;
+         _fieldHandlerMap[fieldHandler->id] = fieldHandler;
+       }
+      }
+    }
+  }
+  
+  return new MEDOP::DatasourceHandler(*datasourceHandler);
+}
+
+long MEDDataManager_i::getDatasourceId(const char *filepath) {
+  const char * uri = file_to_source(filepath);
+  DatasourceHandlerMapIterator it = _datasourceHandlerMap.begin();  
+  while ( it != _datasourceHandlerMap.end() ) {
+    if ( strcmp(it->second->uri,uri) == 0 ) {
+      return it->first;
+    }
+    ++it;
+  }
+  return LONG_UNDEFINED;
+}
+
+
+MEDOP::MeshHandler * MEDDataManager_i::getMesh(CORBA::Long meshId) {
+  if ( _meshHandlerMap.count(meshId) == 0 ) {
+    std::string message =
+      std::string("The mesh of id=") + ToString(meshId) +
+      std::string(" does not exist in the data manager");
+    LOG(message);
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+  return new MEDOP::MeshHandler(*(_meshHandlerMap[meshId]));
+}
+
+
+/*!
+ * This function returns the list of mesh handlers associated to the
+ * specified datasource. It corresponds to the list ofmeshes defined
+ * in the datasource.
+ */
+MEDOP::MeshHandlerList * MEDDataManager_i::getMeshList(CORBA::Long datasourceId) {
+
+  // We initiate a list with the maximum lentgh
+  MEDOP::MeshHandlerList_var meshHandlerList = new MEDOP::MeshHandlerList();
+  meshHandlerList->length(_meshHandlerMap.size());
+
+  // Scan the map looking for meshes associated to the specified datasource
+  int itemIdx = 0;
+  MeshHandlerMapIterator meshIt;
+  for ( meshIt=_meshHandlerMap.begin(); meshIt != _meshHandlerMap.end(); meshIt++) {
+    if ( meshIt->second->sourceid == datasourceId ) {
+      meshHandlerList[itemIdx] = *(meshIt->second);
+      itemIdx++;
+    }
+  }
+
+  // Adjust the length to the real number of elements
+  meshHandlerList->length(itemIdx);
+  return meshHandlerList._retn();
+}
+
+/*!
+ * This function returns the list of fieldseries defined on the
+ * specified mesh.
+ */
+MEDOP::FieldseriesHandlerList * MEDDataManager_i::getFieldseriesListOnMesh(CORBA::Long meshId) {
+  // We initiate a list with the maximum lentgh
+  MEDOP::FieldseriesHandlerList_var
+    fieldseriesHandlerList = new MEDOP::FieldseriesHandlerList();
+  fieldseriesHandlerList->length(_fieldseriesHandlerMap.size());
+
+  // Scan the map looking for fieldseries defined on the specified mesh
+  int itemIdx = 0;
+  FieldseriesHandlerMapIterator it;
+  for ( it=_fieldseriesHandlerMap.begin(); it != _fieldseriesHandlerMap.end(); it++) {
+    if ( it->second->meshid == meshId ) {
+      fieldseriesHandlerList[itemIdx] = *(it->second);
+      itemIdx++;
+    }
+  }
+
+  // Adjust the length to the real number of elements
+  fieldseriesHandlerList->length(itemIdx);
+  return fieldseriesHandlerList._retn();
+}
+
+/*!
+ * A fieldseries is a timeseries of fields. Then the list of fields is
+ * the different time iterations defined for the specified field id.  
+ */
+MEDOP::FieldHandlerList * MEDDataManager_i::getFieldListInFieldseries(CORBA::Long fieldseriesId) {
+
+  // We initiate a list with the maximum lentgh
+  MEDOP::FieldHandlerList_var fieldHandlerList = new MEDOP::FieldHandlerList();
+  fieldHandlerList->length(_fieldHandlerMap.size());
+
+  // Scan the map looking for field defined on the specified mesh
+  int itemIdx = 0;
+  FieldHandlerMapIterator it;
+  for ( it=_fieldHandlerMap.begin(); it != _fieldHandlerMap.end(); it++) {
+    if ( it->second->fieldseriesId == fieldseriesId ) {
+      fieldHandlerList[itemIdx] = *(it->second);
+      itemIdx++;
+    }
+  }
+
+  // Adjust the length to the real number of elements
+  fieldHandlerList->length(itemIdx);
+  return fieldHandlerList._retn();
+}
+
+/*!
+ * This returns the whole set of fields handlers for all datasource
+ * that have been loaded using addDatasource.
+ */
+MEDOP::FieldHandlerList * MEDDataManager_i::getFieldHandlerList() {
+  MEDOP::FieldHandlerList_var fieldHandlerSeq = new MEDOP::FieldHandlerList();
+  fieldHandlerSeq->length(_fieldHandlerMap.size());
+
+  int sequenceId = 0;
+  FieldHandlerMapIterator fieldIt;
+  for ( fieldIt=_fieldHandlerMap.begin(); fieldIt != _fieldHandlerMap.end(); fieldIt++) {
+    fieldHandlerSeq[sequenceId] = *(fieldIt->second);
+    sequenceId++;
+  }
+  return fieldHandlerSeq._retn();
+}
+
+/*!
+ * This returns a copy of the fieldHandler associated to the specified id.
+ */
+MEDOP::FieldHandler * MEDDataManager_i::getFieldHandler(CORBA::Long fieldHandlerId) {
+  LOG("getFieldHandler: START")
+
+  FieldHandlerMapIterator fieldIt = _fieldHandlerMap.find(fieldHandlerId);
+  if ( fieldIt != _fieldHandlerMap.end() ) {
+    // >>> WARNING: CORBA struct specification indicates that the
+    // assignement acts as a desctructor for the structure that is
+    // pointed to. The values of the fields are copy first in the new
+    // structure that receives the assignement and finally the initial
+    // structure is destroyed. In the present case, WE WANT to keep
+    // the initial fieldHandler in the map. We must then make a deep
+    // copy of the structure found in the map and return the copy. The
+    // CORBA struct specification indicates that a deep copy can be
+    // done using the copy constructor.  <<<
+    return new MEDOP::FieldHandler(*(fieldIt->second));
+  }
+  return NULL;
+}
+
+/*!
+ * This returns a string representation of the field associated to the specified id.
+ */
+char * MEDDataManager_i::getFieldRepresentation(CORBA::Long fieldHandlerId) {
+  LOG("getFieldRepresentation: START")
+  MEDOP::FieldHandler * fieldHandler = getFieldHandler(fieldHandlerId);
+  MEDCouplingFieldDouble* fieldDouble = getFieldDouble(fieldHandler);
+  return CORBA::string_dup(fieldDouble->getArray()->repr().c_str());
+}
+
+void MEDDataManager_i::saveFields(const char * filepath,
+                                 const MEDOP::FieldIdList & fieldIdList)
+{
+  LOG("saveFields to : " << filepath);
+
+  // We first have to check if the target filepath is writable
+  // (segmentation fault in med otherwise)
+  if (!Kernel_Utils::IsWritable(Kernel_Utils::GetDirName(std::string(filepath)))) {
+    std::string message =
+      std::string("The target filepath ") +
+      std::string(filepath) +
+      std::string(" is not writable");
+    LOG(message);
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+
+  if ( fieldIdList.length() == 0 ) {
+    throw KERNEL::createSalomeException("No fields to save");
+  }
+  
+  // Consider the first field to initiate the med file
+  CORBA::Long fieldHandlerId = fieldIdList[0];
+  MEDOP::FieldHandler * fieldHandler = getFieldHandler(fieldHandlerId);
+  MEDCouplingFieldDouble* fieldDouble = getFieldDouble(fieldHandler);  
+
+  try {
+    bool writeFromScratch = true;
+    MEDLoader::WriteField(filepath, fieldDouble, writeFromScratch);
+    
+    writeFromScratch = false;
+    for(CORBA::ULong i=1; i<fieldIdList.length(); i++) {
+      fieldHandlerId = fieldIdList[i];
+      fieldHandler = getFieldHandler(fieldHandlerId);
+      fieldDouble = getFieldDouble(fieldHandler);  
+      MEDLoader::WriteField(filepath, fieldDouble, writeFromScratch);
+    }
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    std::string message = 
+      std::string("Error when saving file ") +
+      std::string(filepath) + std::string(" : ") + ex.what();
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+  catch (const std::exception& ex) {
+    std::string message = 
+      std::string("Error when saving file ") +
+      std::string(filepath) + std::string(" : ") + ex.what();
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+
+}
+
+/*!
+ * This function must be used to indicate that the field with the
+ * specified id must be considered as persistent (if persistent is
+ * true) or not persistent (if persistent is false). If a field is
+ * marked as persistent, then it is automatically saved when the
+ * function savePersistentFields is called.
+ */
+void MEDDataManager_i::markAsPersistent(CORBA::Long fieldHandlerId, bool persistent) {
+  LOG("mark as persistant : id="<<fieldHandlerId);
+  _fieldPersistencyMap[fieldHandlerId] = persistent;
+}
+
+void MEDDataManager_i::savePersistentFields(const char * filepath) {
+  LOG("savePersistentFields to : " << filepath);
+  std::vector<long> listId;
+
+  FieldPersistencyMapIterator mapIt;
+  for ( mapIt = _fieldPersistencyMap.begin(); mapIt != _fieldPersistencyMap.end(); mapIt++) {
+    if ( mapIt->second == true ) {
+      listId.push_back(mapIt->first);
+    }
+  }
+  
+  MEDOP::FieldIdList fieldIdList;
+  fieldIdList.length(listId.size());
+  for (int i=0; i<listId.size(); i++) {
+    fieldIdList[i] = CORBA::Long(listId[i]);
+  }
+  
+  try {
+    this->saveFields(filepath, fieldIdList);
+  } 
+  catch (const SALOME::SALOME_Exception & ex) {
+    throw ex;
+  }
+  catch (const std::exception& ex) {
+    std::string message = 
+      std::string("Error when saving file ") +
+      std::string(filepath) + std::string(" : ") + ex.what();
+    throw KERNEL::createSalomeException(message.c_str());
+  }
+}
+
+/*!
+ * This function is responsible for creating the FieldHandler
+ * instances. You must use this function because it manages
+ * automatically the identifier value (autoincrementation of a static
+ * variable)
+ */
+MEDOP::FieldHandler * MEDDataManager_i::newFieldHandler(const char * fieldname,
+                                                       const char * meshname,
+                                                       TypeOfField  type,
+                                                       long         iteration,
+                                                       long         order,
+                                                       const char * source)
+{
+  MEDOP::FieldHandler * fieldHandler = new MEDOP::FieldHandler();
+  fieldHandler->id = _fieldLastId; _fieldLastId++;
+  fieldHandler->fieldname = fieldname;
+  fieldHandler->meshname  = meshname;
+  fieldHandler->type      = type;
+  fieldHandler->iteration = iteration;
+  fieldHandler->order     = order;
+  fieldHandler->source    = source;
+  return fieldHandler;
+}
+
+/*!
+ * This updates the metadata of the field identified by its id with
+ * the data of the given field handler. Returns a copy of the updated
+ * handler (that should be identical to the given field handler for
+ * all data but not for the id that is an invariant for all session
+ * long).
+ * WARN: you should be warned that this function could leave the data
+ * model in a non-coherent state, by example if you change the mesh
+ * name while the mesh has not been updated.
+ */
+MEDOP::FieldHandler * MEDDataManager_i::updateFieldHandler(CORBA::Long fieldHandlerId,
+                                                          const char * fieldname,
+                                                          long         iteration,
+                                                          long         order,
+                                                          const char * source) {
+  FieldHandlerMapIterator fieldIt = _fieldHandlerMap.find(fieldHandlerId);
+  if ( fieldIt != _fieldHandlerMap.end() ) {
+    // Update the attributes
+    // >>> WARN: note that the id of a handler registered in the map
+    // SHOULD NEVER be modified because it is the identifier used in
+    // the whole application for this field all the session long.
+    // <<<
+    fieldIt->second->fieldname = fieldname;
+    fieldIt->second->iteration = iteration;
+    fieldIt->second->order     = order;
+    fieldIt->second->source    = source;
+    // Return a copy
+    return new MEDOP::FieldHandler(*fieldIt->second);
+  }
+  return NULL;
+}
+
+MEDCouplingUMesh * MEDDataManager_i::getUMesh(long meshHandlerId) {
+
+  LOG("getUMesh: START")
+
+  MEDCouplingUMesh * myMesh = NULL;
+  if ( _meshMap.count(meshHandlerId) > 0 ) {
+    // The mesh has been found in the map
+    myMesh = _meshMap[meshHandlerId];
+  } else {
+    // The mesh is not loaded yet ==> load it and register it in the map
+    LOG("getUMesh: the mesh must be loaded. meshid="<<meshHandlerId);    
+    if ( _meshHandlerMap[meshHandlerId] == NULL ) {
+      std::string message = 
+       std::string("No mesh for id=") + ToString(meshHandlerId);
+      LOG("getUMesh: "<<message);
+      throw KERNEL::createSalomeException(message.c_str());
+    }
+
+    long sourceid = _meshHandlerMap[meshHandlerId]->sourceid;
+    const char * filepath = source_to_file((_datasourceHandlerMap[sourceid])->uri);  
+    const char * meshName = _meshHandlerMap[meshHandlerId]->name;
+    int meshDimRelToMax = 0;
+    myMesh = MEDLoader::ReadUMeshFromFile(filepath,meshName,meshDimRelToMax);
+    _meshMap[meshHandlerId] = myMesh;
+  }
+  return myMesh;
+}
+
+/**
+ * Try to retrieve the id of the specified mesh, i.e. the key it is
+ * registered with in the internal meshes map.
+ */
+long MEDDataManager_i::getUMeshId(const MEDCouplingMesh * mesh) {
+  bool found = false;
+  MeshMapIterator it = _meshMap.begin();  
+  while ( it != _meshMap.end() ) {
+    found = (it->second == mesh);
+    if (found) {
+      return it->first;
+    }
+    ++it;
+  }
+  return LONG_UNDEFINED;
+}
+
+/*!
+ * This method returns the physical data of the specified field,
+ * i.e. the MEDCoupling field associated to the specified field
+ * handler. If the field source is a file and the data ar not loaded
+ * yet, the this function load the data from the file in a MEDCoupling
+ * field instance. Otherwize, it just returns the MEDCoupling field
+ * instance.
+ */
+MEDCouplingFieldDouble * MEDDataManager_i::getFieldDouble(const MEDOP::FieldHandler * fieldHandler)
+{
+
+  LOG("getFieldDouble: START with id="<<fieldHandler->id);
+
+  if ( _fieldDoubleMap.count(fieldHandler->id) > 0 ) {
+  // The MEDCoupling field data are already loaded. Just return the
+  // reference of the MEDCouplingFieldDouble pointer
+    return _fieldDoubleMap[fieldHandler->id];
+  }
+
+  // The MEDCoupling field data are not loaded yet. Load the data and
+  // register the MEDCoupling field in our internal map an all the
+  // associated data if needed (i.e. the underlying mesh).
+
+  // At this step, the mesh handler needs a meshid correctly
+  // set. Normally, we should arrive at this step only in the case
+  // where the field is loaded from a file ==> the meshid is defined
+  // (see the addDatasource function).
+  //
+  // >>>> __GBO__ TO BE CHECKED AND SERIOUSLY TESTED. There at least
+  // one case where we can arrive here with no previous call to
+  // addDataSource: for example the field handler list can be obtained
+  // from a call to addFieldsFromFile instead of addDataSource (see
+  // for exemple the getFieldRepresentation service of the
+  // dataManager, that comes here and then calls getUMesh where we
+  // need a map initialized only in addDataSource) <<<<
+  long meshid = fieldHandler->meshid;
+
+  // We first have to check if the associated mesh is already loaded
+  // and to load it if needed. The loaded meshes are registered in a
+  // map whose key is the mesh handler id. This checking is
+  // automatically done by the function getUMesh. It's important to do
+  // it before the loading of field data to prevent from the case
+  // where the mesh would not have been loaded already (in the
+  // previous field loading).
+  MEDCouplingUMesh * myMesh =this->getUMesh(meshid);
+
+  long sourceid = _meshHandlerMap[meshid]->sourceid;
+
+  const char * filepath = source_to_file((_datasourceHandlerMap[sourceid])->uri);
+  const char * meshName = myMesh->getName();
+  LOG("getFieldDouble: field "<<fieldHandler->fieldname<<" loaded from file "<<filepath);
+  TypeOfField type = (TypeOfField)fieldHandler->type;
+  int meshDimRelToMax = 0;
+  MEDCouplingFieldDouble * myField = MEDLoader::ReadField(type,
+                                                         filepath,
+                                                         meshName,
+                                                         meshDimRelToMax,
+                                                         fieldHandler->fieldname,
+                                                         fieldHandler->iteration,
+                                                         fieldHandler->order);
+  myField->setMesh(myMesh);
+  _fieldDoubleMap[fieldHandler->id] = myField;
+  return myField;
+}
+
+/*!
+ * This adds the specified MEDCoupling field in the collection managed
+ * by this DataManager. The associated FieldHandler is returned. This
+ * is typically used in a context where the MEDCoupling field is
+ * created from scratch, for example by operations in the
+ * MEDCalculator.
+ * @param[in] fieldDouble   the MEDCouplingFieldDouble instance to add
+ * @param[in] meshHandlerId the id of the meshHandler this filed is associated to.
+ * @return a copy of the FieldHandler registered in the internal map for this field.
+ */
+MEDOP::FieldHandler * MEDDataManager_i::addField(MEDCouplingFieldDouble * fieldDouble,
+                                                long meshHandlerId)
+{
+  const char * fieldName = fieldDouble->getName();
+  const char * meshName  = fieldDouble->getMesh()->getName();
+  TypeOfField  type      = fieldDouble->getTypeOfField();
+
+  int iteration, order;
+  // WARN: note that the variables "iteration" and "order" are passed
+  // by reference to the function getTime (see documentation of
+  // MEDCouplingField). As a consequence, the values of these
+  // variables are updated by this function call. This is the mean to
+  // retrieve the iteration and order of the field.
+  double timestamp = fieldDouble->getTime(iteration, order);
+  
+  // For the fields that are created in memory (by operations for
+  // example), the convention for the source attribute is to specify
+  // the fielddouble name, because this name describes the operation
+  // the field has been created with.
+  string * source = new string("mem://"); source->append(fieldName);
+  MEDOP::FieldHandler * fieldHandler = newFieldHandler(fieldName,
+                                                      meshName,
+                                                      type,
+                                                      iteration,
+                                                      order,
+                                                      source->c_str());
+
+  if ( meshHandlerId == LONG_UNDEFINED ) {
+    // We have to gess the id of the underlying mesh to preserve data
+    // integrity (a fieldHandler must have an attribute that contains
+    // the id of its underlying mesh):
+    //
+    // WARNING: it's better to let the client code (the one who calls the
+    // function addField) to specify this meshid. This guess procedure is
+    // not reliable, it's just to have a second chance.
+    //
+    LOG("addField: The mesh id is not defined. Trying to guess from the mesh name "<<meshName);
+    long meshid = this->getUMeshId(fieldDouble->getMesh());
+    fieldHandler->meshid = meshid;
+    if ( meshid == LONG_UNDEFINED ) {
+      // No mesh has been found in the internal map
+      LOG("addField: The mesh id for the mesh "<<meshName<<" can't be retrieved from the field "<<fieldName);
+      // _GBO_ : Maybe it could be better to raise an exception
+    }
+  }
+  else {
+    fieldHandler->meshid = meshHandlerId;
+  }
+  
+  _fieldHandlerMap[fieldHandler->id] = fieldHandler;
+  _fieldDoubleMap[fieldHandler->id] = fieldDouble;
+  // >>> WARNING: CORBA structure assignement specification ==> return
+  // >>> a deep copy to avoid the destruction of the fieldHandler
+  // >>> registered in the map (assignement acts as a destructor for
+  // >>> CORBA struct).   
+  return new MEDOP::FieldHandler(*fieldHandler);
+}
+
+/*!
+ * This function updates the meta-data "fieldname" associated to the
+ * specified field.
+ */
+void MEDDataManager_i::updateFieldMetadata(CORBA::Long  fieldHandlerId,
+                                          const char * fieldname,
+                                          CORBA::Long  iteration,
+                                          CORBA::Long  order,
+                                          const char * source)
+{
+  // We have to update the field handler registered in the internal
+  // map AND the associated fieldDouble loaded in memory.
+  MEDOP::FieldHandler * fieldHandler = getFieldHandler(fieldHandlerId);
+  updateFieldHandler(fieldHandlerId,fieldname,iteration,order,source);
+                    
+  MEDCouplingFieldDouble* fieldDouble = getFieldDouble(fieldHandler);
+  fieldDouble->setName(fieldname);
+
+  // _GBO_ TO BE IMPLEMENTED: iteration and order
+}
+
+/**
+ * This can be used to associate to the specified field another mesh
+ * support than its current one. This is typically needed to operate 2
+ * fields defined on the same mesh but coming from different med
+ * files. In this case, the underlying meshes are different mesh
+ * objects (from the MEDCoupling point of view) and then no operation
+ * can be allowed by MEDCoupling. The operation of course fails if the
+ * new mesh is not identical to the old one.
+ */
+void MEDDataManager_i::changeUnderlyingMesh(CORBA::Long fieldHandlerId, CORBA::Long meshHandlerId) {
+  
+  MEDOP::FieldHandler * fieldHandler = getFieldHandler(fieldHandlerId);
+  MEDCouplingFieldDouble* fieldDouble = getFieldDouble(fieldHandler);
+  MEDCouplingMesh * newMesh = getUMesh(meshHandlerId);
+
+  try {
+    fieldDouble->changeUnderlyingMesh(newMesh,10,1e-12);
+  }
+  catch (INTERP_KERNEL::Exception &ex) {
+    std::string * message = new std::string("Error when changing the underlying mesh : ");
+    message->append(ex.what());
+    throw KERNEL::createSalomeException(message->c_str());
+  }
+
+  // The change of mesh is OK, then we can update the meta-data
+  _fieldHandlerMap[fieldHandlerId]->meshid = meshHandlerId;
+  _fieldHandlerMap[fieldHandlerId]->meshname = _meshHandlerMap[meshHandlerId]->name;
+
+
+  // WARN: if this field has already been request by the tui for
+  // manipulation (in a fieldproxy), then the data should be
+  // synchronized
+}
+
+
+
+/*!
+ * This functions display the internal data of the MEDDataManager on
+ * the server side (data in the SALOME container).
+ */
+void MEDDataManager_i::serverlog() {
+  
+  LOG("==== Field Handler Map ====================================================");
+  LOG("Size = "<<_fieldHandlerMap.size());
+  FieldHandlerMapIterator fhmIt;
+  for ( fhmIt = _fieldHandlerMap.begin(); fhmIt != _fieldHandlerMap.end(); fhmIt++) {
+    long id = fhmIt->first;
+    LOG("------------------------------------- id = "<<ToString(id));
+    LOG("- id        \t= "<<fhmIt->second->id);
+    LOG("- fieldname \t= "<<fhmIt->second->fieldname);
+    LOG("- meshname  \t= "<<fhmIt->second->meshname);
+  }
+
+  LOG("==== Field Double Map ====================================================");
+  LOG("Size = "<<_fieldDoubleMap.size());
+  FieldDoubleMapIterator fdmIt;
+  for ( fdmIt = _fieldDoubleMap.begin(); fdmIt != _fieldDoubleMap.end(); fdmIt++) {
+    long id = (*fdmIt).first;
+    MEDCouplingFieldDouble * fieldDouble = (*fdmIt).second;
+    LOG("------------------------------------- id = "<<ToString(id));
+    LOG("- fieldname \t= "<<fieldDouble->getName());
+    LOG("- meshname  \t= "<<fieldDouble->getMesh()->getName());
+  }
+}
+
+/*!
+ * The event listener is created inside the GUI by the
+ * WorkspaceController. This function is called by the WorkspaceController to
+ * store the event listener IOR for the time of the session. Then this
+ * IOR can be available to any point of the application that can
+ * request the data manager (the python console for example).
+ */
+void MEDDataManager_i::setEventListenerIOR(const char * ior) {
+  if ( _medEventListenerIOR != NULL ) {
+    free(_medEventListenerIOR);
+  }
+  _medEventListenerIOR = (char *)malloc(sizeof(char)*strlen(ior));
+  strcpy(_medEventListenerIOR, ior);
+}
+/*!
+ * Return the IOR of the event listener that resides in the
+ * GUI. Having the IOR, you can restore the CORBA object by using:
+ *
+ * In a python SALOME context:
+ *
+ * >>> import salome
+ * >>> salome.salome_init()
+ * >>> myobject = salome.orb.string_to_object(ior)
+ *
+ * In a C++ SALOME context: (to do if needed)
+ */
+char * MEDDataManager_i::getEventListenerIOR() {
+  if ( _medEventListenerIOR == NULL ) {
+    throw KERNEL::createSalomeException("The event listener IOR is not defined");
+  }
+  // WARN: return a copy because the pointer memory will be released
+  // (CORBA specification)
+  char * ior = (char *)malloc(sizeof(char)*strlen(_medEventListenerIOR));
+  strcpy(ior, _medEventListenerIOR);
+  return ior;
+}
diff --git a/src/MEDOP/cmp/MEDDataManager_i.hxx b/src/MEDOP/cmp/MEDDataManager_i.hxx
new file mode 100644 (file)
index 0000000..e2cd798
--- /dev/null
@@ -0,0 +1,163 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_DATAMANAGER_I_HXX_
+#define _MED_DATAMANAGER_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(MEDDataManager)
+#include "SALOME_GenericObj_i.hh"
+
+#include "MEDCouplingUMesh.hxx"
+#include "MEDCouplingFieldDouble.hxx"
+using namespace ParaMEDMEM;
+
+/*! This map is used for lifecycle management of fields used in this operator */
+#include <map>
+#include <string>
+using namespace std;
+
+typedef map<long,MEDOP::DatasourceHandler*> DatasourceHandlerMap;
+typedef map<long,MEDOP::DatasourceHandler*>::iterator DatasourceHandlerMapIterator;
+
+typedef map<long,MEDOP::MeshHandler*> MeshHandlerMap;
+typedef map<long,MEDOP::MeshHandler*>::iterator MeshHandlerMapIterator;
+
+typedef map<long,MEDOP::FieldseriesHandler*> FieldseriesHandlerMap;
+typedef map<long,MEDOP::FieldseriesHandler*>::iterator FieldseriesHandlerMapIterator;
+
+typedef map<long,MEDOP::FieldHandler*> FieldHandlerMap;
+typedef map<long,MEDOP::FieldHandler*>::iterator FieldHandlerMapIterator;
+typedef map<long,bool> FieldPersistencyMap;
+typedef map<long,bool>::iterator FieldPersistencyMapIterator;
+
+typedef map<long,MEDCouplingFieldDouble*> FieldDoubleMap;
+typedef map<long,MEDCouplingFieldDouble*>::iterator FieldDoubleMapIterator;
+
+typedef map<long,MEDCouplingUMesh*> MeshMap;
+typedef map<long,MEDCouplingUMesh*>::iterator MeshMapIterator;
+
+#include "MEDOP.hxx"
+class MEDOP_EXPORT MEDDataManager_i: public POA_MEDOP::MEDDataManager,
+                                    public SALOME::GenericObj_i
+{
+public:
+
+  // 
+  // ===========================================================
+  // Functions specified in the IDL interface
+  // ===========================================================
+  //
+  // -----------------------------------------------------------
+  // Datasource management
+  MEDOP::DatasourceHandler * addDatasource(const char *filepath);
+
+  // -----------------------------------------------------------
+  // Mesh management
+  MEDOP::MeshHandlerList * getMeshList(CORBA::Long datasourceId);
+  MEDOP::MeshHandler * getMesh(CORBA::Long meshId); 
+
+  // -----------------------------------------------------------
+  // Field management
+  MEDOP::FieldseriesHandlerList * getFieldseriesListOnMesh(CORBA::Long meshId);
+  MEDOP::FieldHandlerList * getFieldListInFieldseries(CORBA::Long fieldseriesId);
+
+  MEDOP::FieldHandler *     getFieldHandler(CORBA::Long fieldHandlerId);
+  char *                    getFieldRepresentation(CORBA::Long fieldHandlerId);
+  MEDOP::FieldHandlerList * getFieldHandlerList();
+
+  void                      saveFields(const char * filepath,
+                                      const MEDOP::FieldIdList & fieldIdList);
+  void                      markAsPersistent(CORBA::Long fieldHandlerId, bool persistent);
+  void                      savePersistentFields(const char * filepath);
+
+
+  void updateFieldMetadata(CORBA::Long  fieldHandlerId,
+                          const char * fieldname,
+                          CORBA::Long  iteration,
+                          CORBA::Long  order,
+                          const char * source);
+
+  void changeUnderlyingMesh(CORBA::Long fieldHandlerId, CORBA::Long meshHandlerId);
+
+  void   setEventListenerIOR(const char * ior);
+  char * getEventListenerIOR();
+
+  void serverlog();
+
+  // 
+  // ===========================================================
+  // Other public functions (non available via CORBA)
+  // ===========================================================
+  //
+  static long LONG_UNDEFINED;
+  static MEDDataManager_i * getInstance();
+  MEDCouplingFieldDouble *  getFieldDouble(const MEDOP::FieldHandler * fieldHandler);
+  MEDOP::FieldHandler *     addField(MEDCouplingFieldDouble * fieldDouble,
+                                    long meshHandlerId=LONG_UNDEFINED);
+
+private:
+  MEDDataManager_i();
+  ~MEDDataManager_i();
+
+  // The MEDDataManager is a singleton, whose instance can be obtained
+  // using the getInstance static method.
+  static MEDDataManager_i * _instance;
+
+  long _sourceLastId;
+  long _meshLastId;
+  long _fieldseriesLastId;
+  long _fieldLastId;
+  DatasourceHandlerMap _datasourceHandlerMap;
+  MeshHandlerMap _meshHandlerMap;
+  FieldseriesHandlerMap _fieldseriesHandlerMap;
+  FieldHandlerMap _fieldHandlerMap;
+  FieldDoubleMap _fieldDoubleMap;
+  MeshMap _meshMap;
+  FieldPersistencyMap _fieldPersistencyMap;
+
+  char * _medEventListenerIOR;
+
+  MEDOP::FieldHandler * newFieldHandler(const char * fieldname,
+                                       const char * meshname,
+                                       TypeOfField  type,
+                                       long         iteration,
+                                       long         order,
+                                       const char * source);
+
+  MEDOP::FieldHandler * updateFieldHandler(CORBA::Long fieldHandlerId,
+                                          const char * fieldname,
+                                          long         iteration,
+                                          long         order,
+                                          const char * source);
+
+  const char * file_to_source(const char * filepath);
+  const char * source_to_file(const char * source);
+  long getDatasourceId(const char *filepath);
+
+  MEDCouplingUMesh * getUMesh(long meshHandlerId);
+  long getUMeshId(const MEDCouplingMesh * mesh);
+};
+
+#endif // _MED_DATAMANAGER_I_HXX_
diff --git a/src/MEDOP/cmp/MEDOP.hxx b/src/MEDOP/cmp/MEDOP.hxx
new file mode 100644 (file)
index 0000000..f7b3bc4
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef __MEDOP_HXX__
+#define __MEDOP_HXX__
+
+#ifdef WIN32
+# if defined medop_EXPORTS || defined MEDOPFactoryEngine_EXPORTS || defined MEDOPFACTORYENGINE_EXPORTS 
+#    define MEDOP_EXPORT __declspec( dllexport )
+#  else
+#    define MEDOP_EXPORT __declspec( dllimport )
+#  endif
+#else
+#  define MEDOP_EXPORT
+#endif
+
+#endif
diff --git a/src/MEDOP/cmp/MEDOPFactory_i.cxx b/src/MEDOP/cmp/MEDOPFactory_i.cxx
new file mode 100644 (file)
index 0000000..5a61cfe
--- /dev/null
@@ -0,0 +1,85 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDOPFactory_i.hxx"
+#include "utilities.h"
+
+#include <string>
+
+#include "MEDDataManager_i.hxx"
+#include "MEDCalculator_i.hxx"
+
+using namespace std;
+
+//=============================================================================
+/*!
+ *  standard constructor
+ */
+//=============================================================================
+
+MEDOPFactory_i::MEDOPFactory_i(CORBA::ORB_ptr orb,
+       PortableServer::POA_ptr poa,
+       PortableServer::ObjectId * contId, 
+       const char *instanceName, 
+       const char *interfaceName) :
+  Engines_Component_i(orb, poa, contId, instanceName, interfaceName)
+{
+  MESSAGE("activate object");
+  _thisObj = this ;
+  _id = _poa->activate_object(_thisObj);
+}
+
+MEDOPFactory_i::~MEDOPFactory_i()
+{
+}
+
+MEDOP::MEDDataManager_ptr MEDOPFactory_i::getDataManager() {
+  MEDDataManager_i * medDataManager = MEDDataManager_i::getInstance();
+  MEDOP::MEDDataManager_ptr medDataManagerPtr = medDataManager->_this();
+  return medDataManagerPtr;
+}
+
+MEDOP::MEDCalculator_ptr MEDOPFactory_i::getCalculator() {
+  MEDCalculator_i * medCalculator = MEDCalculator_i::getInstance();
+  MEDOP::MEDCalculator_ptr medCalculatorPtr = medCalculator->_this();
+  return medCalculatorPtr;
+}
+
+extern "C"
+{
+  PortableServer::ObjectId * MEDOPFactoryEngine_factory(
+                              CORBA::ORB_ptr orb,
+                              PortableServer::POA_ptr poa, 
+                              PortableServer::ObjectId * contId,
+                              const char *instanceName, 
+                              const char *interfaceName)
+  {
+    MESSAGE("PortableServer::ObjectId * MEDOPEngine_factory()");
+    SCRUTE(interfaceName);
+    MEDOPFactory_i * factory = new MEDOPFactory_i(orb, poa, contId,
+                                                 instanceName,
+                                                 interfaceName);
+    return factory->getId() ;
+  }
+}
diff --git a/src/MEDOP/cmp/MEDOPFactory_i.hxx b/src/MEDOP/cmp/MEDOPFactory_i.hxx
new file mode 100644 (file)
index 0000000..84f3cca
--- /dev/null
@@ -0,0 +1,61 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MEDOPFactory_HXX_
+#define _MEDOPFactory_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(MEDOPFactory)
+#include CORBA_SERVER_HEADER(MEDDataManager)
+#include CORBA_SERVER_HEADER(MEDCalculator)
+#include "SALOME_Component_i.hxx"
+
+#include "MEDOP.hxx"
+class MEDOP_EXPORT MEDOPFactory_i: public POA_MEDOP::MEDOPFactory,
+                                  public Engines_Component_i
+{
+  
+public:
+  MEDOPFactory_i(CORBA::ORB_ptr orb,
+                PortableServer::POA_ptr poa,
+                PortableServer::ObjectId * contId, 
+                const char *instanceName, 
+                const char *interfaceName);
+  virtual ~MEDOPFactory_i();
+
+  /*! Returns the singleton instance of the data manager */
+  MEDOP::MEDDataManager_ptr getDataManager();
+  /*! Returns the singleton instance of the calculator */
+  MEDOP::MEDCalculator_ptr getCalculator();
+  
+};
+
+extern "C"
+MEDOP_EXPORT PortableServer::ObjectId * MEDOPFactoryEngine_factory(CORBA::ORB_ptr orb,
+                                              PortableServer::POA_ptr poa,
+                                              PortableServer::ObjectId * contId,
+                                              const char *instanceName,
+                                              const char *interfaceName);
+
+#endif
diff --git a/src/MEDOP/cmp/Makefile.am b/src/MEDOP/cmp/Makefile.am
new file mode 100644 (file)
index 0000000..045a571
--- /dev/null
@@ -0,0 +1,64 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+mypkgpythondir = $(salomescriptdir)/med
+dist_mypkgpython_SCRIPTS = \
+       test_medop_components.py
+
+salomeinclude_HEADERS =      \
+       MEDOP.hxx            \
+       MEDDataManager_i.hxx \
+       MEDCalculator_i.hxx  \
+       MEDOPFactory_i.hxx
+
+lib_LTLIBRARIES = libMEDOPFactoryEngine.la
+libMEDOPFactoryEngine_la_SOURCES = \
+       MEDDataManager_i.cxx       \
+       MEDCalculator_i.cxx        \
+       MEDOPFactory_i.cxx
+
+libMEDOPFactoryEngine_la_LDFLAGS = -no-undefined -version-info=0:0:0
+
+OMNIORB_CXXFLAGS=@CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+OMNIORB_LIBS=@OMNIORB_LIBS@
+
+libMEDOPFactoryEngine_la_CPPFLAGS = \
+       -I$(top_builddir)/idl \
+       -I$(top_srcdir)/src/MEDCoupling \
+       -I$(top_srcdir)/src/INTERP_KERNEL/Bases \
+       -I$(top_srcdir)/src/INTERP_KERNEL \
+       -I$(top_srcdir)/src/MEDLoader \
+       $(KERNEL_CXXFLAGS) \
+       $(MED2_CXXFLAGS) \
+       $(HDF5_CXXFLAGS) \
+       $(OMNIORB_CXXFLAGS)
+
+libMEDOPFactoryEngine_la_LIBADD = \
+       $(top_builddir)/idl/libSalomeIDLMED.la  \
+       $(KERNEL_LDFLAGS) -lSalomeKernelHelpers  \
+       $(top_builddir)/src/MEDCoupling/libmedcoupling.la \
+       $(top_builddir)/src/MEDLoader/libmedloader.la \
+       $(top_builddir)/src/INTERP_KERNEL/libinterpkernel.la \
+       $(MED2_LIBS) \
+       $(HDF5_LIBS) \
+       $(OMNIORB_LIBS)
diff --git a/src/MEDOP/cmp/test_medop_components.py b/src/MEDOP/cmp/test_medop_components.py
new file mode 100644 (file)
index 0000000..adde7ad
--- /dev/null
@@ -0,0 +1,383 @@
+#!/usr/bin/env python
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# This file is a set of basic use case to test (from the python
+# context) the functions developped in the MEDOP engine and the
+# associated MEDOP CORBA interface (MEDDataManager and
+# MEDCalaculator).
+#
+# (gboulant - 16/6/2011)
+#
+
+# WARN: this scripts is a unit tests runner for testing the SALOME
+# MEDOP CORBA components and it should stay self-consistent. Then,
+# it's on purpose that the script does not use the xmed python
+# package. Conversely, some (small) parts of this code could be
+# redundant with code from the xmed package.
+
+#
+# ===============================================================
+# Initializing some CORBA stuff
+# ===============================================================
+#
+
+# Remember SALOME definitions:
+# ---------------------------
+#
+# componentName = Name of the component (a library lib<componentName>Engine
+# should exist with a C function named <componentName>Engine_factory, and the
+# component should be registered in the catalog MEDCatalog.xml).
+#
+# corbaModule = Name of the corba module that contains the IDL
+# specifications of the component (name as defined in the idl file)
+#
+# containerType = Name of the container factory
+#
+componentName = "MEDOPFactory"
+corbaModule   = "MEDOP"
+containerType = "FactoryServer"
+
+import salome
+if salome.lcc is None:
+    salome.salome_init()
+__import__(corbaModule)
+factory=salome.lcc.FindOrLoadComponent(containerType,componentName)
+# This is not the main CORBA component of the SALOME module MED
+# (i.e. the engine associated to the active study), but the CORBA
+# entry point for MED fields operations (i.e. a CORBA component
+# reachable throught the LifeCycleCORBA). This entry point is used to
+# get the other SALOME CORBA components required for MED field
+# operations, in particular the dataManager and the calculator
+
+#
+# ==================================================
+# Helper functions to localize tests files and get data
+# ==================================================
+#
+import os
+
+try:
+    MED_ROOT_DIR=os.environ["MED_ROOT_DIR"]
+except KeyError, e:
+    raise RuntimeError("MED_ROOT_DIR should be defined to load the test data")
+
+RESDIR=os.path.join(MED_ROOT_DIR,"share","salome","resources","med","medop_testfiles")
+
+def getFilePath(filename):
+    """
+    Returns the absolute path for a given file base name. The base
+    name must match with a file contained in the test files directory.
+    """
+    filepath = os.path.join(RESDIR,filename)
+    if not os.path.exists(filepath):
+        raise RuntimeError("The file %s does not exists"%filepath)
+    return filepath
+
+testFileName = "smallmesh_varfield.med"
+testMeshName = "My2DMesh"
+testFieldName= "testfield2"
+testFieldIt  = 1
+testFieldDt  = 1
+testTypeOfField = 1 # On nodes
+testFilePath = getFilePath(testFileName)
+
+#
+# ==================================================
+# Basic use cases of the MEDDataManager
+# ==================================================
+#
+def TEST_getDataManager():
+    dataManager = factory.getDataManager()
+    if "addDatasource" not in dir(dataManager):
+        return False
+    return True
+
+def TEST_addDatasource():
+    dataManager = factory.getDataManager()
+    datasource = dataManager.addDatasource(testFilePath)
+    if datasource.name != testFileName:
+        print "ERR: datasource.name=%s (should be %s)"%(datasource.name,testFilePath)
+        return False
+
+    # We try to load the file twice. It should not load twice and
+    # return the same datasource as previously registered (same id).
+    sourceid_ref = datasource.id
+    datasource = dataManager.addDatasource(testFilePath)
+    if datasource.id != sourceid_ref:
+        print "ERR: datasource.id=%s (should be %s)"%(datasource.id,sourceid_ref)
+        return False
+        
+    return True
+
+def TEST_getFieldHandlerList():
+    dataManager = factory.getDataManager()
+    datasource = dataManager.addDatasource(testFilePath)
+    fieldHandlerList = dataManager.getFieldHandlerList()
+    if fieldHandlerList is None or len(fieldHandlerList) == 0:
+        return False
+    return True
+
+def TEST_getFieldRepresentation():
+    dataManager = factory.getDataManager()
+    datasource = dataManager.addDatasource(testFilePath)
+    fieldHandlerList = dataManager.getFieldHandlerList()
+    fieldHandler0 = fieldHandlerList[0]
+
+    print dataManager.getFieldRepresentation(fieldHandler0.id)
+    return True
+
+def TEST_updateFieldMetadata():
+    dataManager = factory.getDataManager()
+    datasource = dataManager.addDatasource(testFilePath)
+    fieldHandlerList = dataManager.getFieldHandlerList()
+    fieldHandler0 = fieldHandlerList[0]
+
+    fieldid = fieldHandler0.id
+    newname = fieldHandler0.fieldname + " modified"
+    
+    dataManager.updateFieldMetadata(fieldid, newname,
+                                    fieldHandler0.iteration,
+                                    fieldHandler0.order,
+                                    fieldHandler0.source)
+
+    fieldHandlerModified = dataManager.getFieldHandler(fieldid)
+    print fieldHandlerModified
+
+    if fieldHandlerModified.fieldname != newname:
+        print "ERR: the name is %s (should be %s)"%(fieldHandlerModified.fieldname,newname)
+        return False
+    return True
+
+def TEST_saveFields():
+    dataManager = factory.getDataManager()
+    datasource = dataManager.addDatasource(testFilePath)
+    fieldHandlerList = dataManager.getFieldHandlerList()
+    fieldHandler0 = fieldHandlerList[0]
+    fieldIdList = [fieldHandler0.id]
+    filepath = "/tmp/test_xmed_saveFields.med"
+
+    print "fieldIdList = %s"%fieldIdList
+    print "filepath = %s"%filepath
+    
+    dataManager.saveFields(filepath,fieldIdList)
+    # We just control that the file exists. But we should reload the
+    # contents to check the fields
+    import os
+    if not os.path.exists(filepath):
+        print "ERR: the file %s does not exist"%(filepath)
+        return False
+    return True
+
+#
+# ==================================================
+# Use cases of the MEDDataManager for data loading
+# ==================================================
+#
+def TEST_MEDDataManager_getMeshList():
+    dataManager = factory.getDataManager()
+    datasourceHandler = dataManager.addDatasource(testFilePath)
+    meshHandlerList = dataManager.getMeshList(datasourceHandler.id)
+    print meshHandlerList
+
+    if len(meshHandlerList) == 0:
+        return False
+    return True
+    
+def TEST_MEDDataManager_getMesh():
+    dataManager = factory.getDataManager()
+    datasourceHandler = dataManager.addDatasource(testFilePath)
+    meshHandlerList = dataManager.getMeshList(datasourceHandler.id)
+    for mRef in meshHandlerList:
+        meshId = mRef.id
+        mRes = dataManager.getMesh(meshId)
+        print mRes
+        if ( mRes.name != mRef.name ) or ( mRes.sourceid != mRef.sourceid):
+            return False
+    return True
+    
+def TEST_MEDDataManager_getFieldseriesListOnMesh():
+    dataManager = factory.getDataManager()
+    datasourceHandler = dataManager.addDatasource(testFilePath)
+
+    meshHandlerList = dataManager.getMeshList(datasourceHandler.id)
+    # We look for the fieldseries defined on the first mesh of the list
+    meshId = meshHandlerList[0].id
+    fieldseriesList = dataManager.getFieldseriesListOnMesh(meshId)
+    print fieldseriesList
+
+    if len(fieldseriesList) == 0:
+        return False
+    return True
+
+def TEST_MEDDataManager_getFieldListInFieldseries():
+    dataManager = factory.getDataManager()
+    testFilePath = os.path.join(RESDIR,testFileName)
+
+    testFilePath  = getFilePath("timeseries.med")
+    datasourceHandler = dataManager.addDatasource(testFilePath)
+
+    meshHandlerList = dataManager.getMeshList(datasourceHandler.id)
+    # We look for the fieldseries defined on the first mesh of the list
+    meshId = meshHandlerList[0].id
+    fieldseriesList = dataManager.getFieldseriesListOnMesh(meshId)
+    # We look for the fields defined in the first fieldseries,
+    # i.e. the time steps for this field.
+    fieldseriesId = fieldseriesList[0].id
+    fieldList = dataManager.getFieldListInFieldseries(fieldseriesId)
+    print fieldList
+
+    if len(fieldList) == 0:
+        return False
+    return True
+
+#
+# ==================================================
+# Use cases of the MEDCalculator
+# ==================================================
+#
+def TEST_Calculator_basics():
+    dataManager = factory.getDataManager()
+    datasource = dataManager.addDatasource(testFilePath)
+    fieldHandlerList = dataManager.getFieldHandlerList()
+
+    # Try to operate on the two first fields
+    fieldHandler0 = fieldHandlerList[0]
+    fieldHandler1 = fieldHandlerList[1]
+    print fieldHandler0
+    print fieldHandler1
+
+    calculator = factory.getCalculator()
+    add = calculator.add(fieldHandler0, fieldHandler1)
+    print add
+    sub = calculator.sub(fieldHandler0, fieldHandler1)
+    print sub
+    mul = calculator.mul(fieldHandler0, fieldHandler1)
+    print mul
+    div = calculator.div(fieldHandler0, fieldHandler1)
+    print div
+    #power = calculator.pow(fieldHandler0, 2)
+    #print power 
+    linear = calculator.lin(fieldHandler0, 3,2)
+    print linear
+
+    return True
+
+def TEST_Calculator_applyFunc():
+    dataManager = factory.getDataManager()
+    datasource = dataManager.addDatasource(testFilePath)
+    fieldHandlerList = dataManager.getFieldHandlerList()
+    fieldHandler = fieldHandlerList[0]
+
+    # In this example, "u" stands for the whole field
+    calculator = factory.getCalculator()
+    import MEDOP
+    nbResultingComponent = MEDOP.NBCOMP_DEFAULT
+    res = calculator.fct(fieldHandler,"abs(u)",nbResultingComponent);
+    print res
+
+    # In this example, "a" stands for the first component
+    nbResultingComponent = 1
+    res = calculator.fct(fieldHandler,"a+2",nbResultingComponent)
+    print res
+
+    return True
+
+#
+# ==================================================
+# Use cases of the MEDDataManager that need MEDCalculator
+# ==================================================
+#
+def TEST_markAsPersistent():
+    dataManager = factory.getDataManager()
+    datasource = dataManager.addDatasource(testFilePath)
+    fieldHandlerList = dataManager.getFieldHandlerList()
+    fieldHandler0 = fieldHandlerList[0]
+    fieldHandler1 = fieldHandlerList[1]
+
+    calculator = factory.getCalculator()
+    add = calculator.add(fieldHandler0, fieldHandler1)
+
+    filepath = "/tmp/test_xmed_markAsPersistent.med"
+    dataManager.markAsPersistent(add.id, True)
+    dataManager.savePersistentFields(filepath)
+    import os
+    if not os.path.exists(filepath):
+        print "ERR: the file %s does not exist"%(filepath)
+        return False
+    return True
+
+#
+# =============================================================
+# Unit tests runner
+# =============================================================
+#
+import unittest
+from salome.kernel import pyunittester
+class MyTestSuite(unittest.TestCase):
+
+    # === MEDDataManager (core functions)
+    def test_getDataManager(self):
+        self.assertTrue(TEST_getDataManager())
+
+    def test_addDatasource(self):
+        self.assertTrue(TEST_addDatasource())
+
+    def test_getFieldHandlerList(self):
+        self.assertTrue(TEST_getFieldHandlerList())
+
+    def test_getFieldRepresentation(self):
+        self.assertTrue(TEST_getFieldRepresentation())
+
+    def test_updateFieldMetadata(self):
+        self.assertTrue(TEST_updateFieldMetadata())
+
+    def test_saveFields(self):
+        self.assertTrue(TEST_saveFields())
+
+    # === MEDDataManager (data request functions)
+    def test_MEDDataManager_getMeshList(self):
+        self.assertTrue(TEST_MEDDataManager_getMeshList())
+
+    def test_MEDDataManager_getMesh(self):
+        self.assertTrue(TEST_MEDDataManager_getMesh())
+
+    def test_MEDDataManager_getFieldseriesListOnMesh(self):
+        self.assertTrue(TEST_MEDDataManager_getFieldseriesListOnMesh())
+
+    def test_MEDDataManager_getFieldListInFieldseries(self):
+        self.assertTrue(TEST_MEDDataManager_getFieldListInFieldseries())
+
+    # === MEDCalculator (need MEDDataManager)
+    def test_Calculator_basics(self):
+        self.assertTrue(TEST_Calculator_basics())
+
+    def test_Calculator_applyFunc(self):
+        self.assertTrue(TEST_Calculator_applyFunc())
+
+    # === MEDDataManager (need MEDCalculator)
+    def test_markAsPersistent(self):
+        self.assertTrue(TEST_markAsPersistent())
+
+def myunittests():
+    pyunittester.run(MyTestSuite)
+
+if __name__ == "__main__":
+    myunittests()
diff --git a/src/MEDOP/doc/CMakeLists.txt b/src/MEDOP/doc/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f06fcb6
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(sphinx)
diff --git a/src/MEDOP/doc/models/medop.xmi b/src/MEDOP/doc/models/medop.xmi
new file mode 100644 (file)
index 0000000..0175826
--- /dev/null
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMI verified="false" xmi.version="1.2" timestamp="2012-09-06T10:36:47" xmlns:UML="http://schema.omg.org/spec/UML/1.3">
+ <XMI.header>
+  <XMI.documentation>
+   <XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter>
+   <XMI.exporterVersion>1.5.8</XMI.exporterVersion>
+   <XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
+  </XMI.documentation>
+  <XMI.metamodel xmi.version="1.3" href="UML.xml" xmi.name="UML"/>
+ </XMI.header>
+ <XMI.content>
+  <UML:Model isSpecification="false" isAbstract="false" isLeaf="false" xmi.id="m1" isRoot="false" name="Modèle UML">
+   <UML:Namespace.ownedElement>
+    <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="folder" name="folder"/>
+    <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="datatype" name="datatype"/>
+    <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="interface" name="interface"/>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Logical View" name="Logical View">
+     <UML:Namespace.ownedElement>
+      <UML:Package stereotype="folder" visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Datatypes" name="Datatypes">
+       <UML:Namespace.ownedElement>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ZPqOwG3ZaJgC" name="int"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="WVv63G5f9uiL" name="char"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="dHU5JP7qmxEj" name="bool"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="CIGkZvv5QqCT" name="float"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="7F8E7oZk44nN" name="double"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="RuDDqPu2fBmF" name="short"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="6hIUWSwdh4po" name="long"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="rMXvQKIpDT33" name="unsigned int"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="qx3W6plAV1f1" name="unsigned short"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Ubc9dPySlTNA" name="unsigned long"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ndz0601vw4R2" name="string"/>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Package visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="NBqMfPwp0LlT" name="MEDOP">
+       <UML:Namespace.ownedElement>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="KO9M6BTsmDX3" name="DatasourceHandler">
+         <UML:Classifier.feature>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="IDqrnmQNZzdi" type="ZPqOwG3ZaJgC" name="sourceid"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="eazbSktruFv5" type="ndz0601vw4R2" name="name"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="Js2a6sRrdpCC" type="ndz0601vw4R2" name="uri"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="mpuQQtzqbsfV" name="MeshHandler">
+         <UML:Classifier.feature>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="6bYmLOgeEiEK" type="ZPqOwG3ZaJgC" name="meshid"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="MMCAGaa7ZOiQ" type="ndz0601vw4R2" name="name"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="4CWdiGy6waJd" type="ZPqOwG3ZaJgC" name="sourceid"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Z3sQfH0YJ5g6" name="FieldHandler">
+         <UML:Classifier.feature>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="o3IdSrqOde12" type="ZPqOwG3ZaJgC" name="fieldid"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="HICpfJOiAmOR" type="ZPqOwG3ZaJgC" name="type"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="kwipcobg6E6w" type="ZPqOwG3ZaJgC" name="iteration"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="5UZhTZzlr9YW" type="ZPqOwG3ZaJgC" name="order"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="RuFbeb0OViC7" type="ZPqOwG3ZaJgC" name="meshid"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="tFFeytJRMARL" name="FieldseriesHandler">
+         <UML:Classifier.feature>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="OKYFoL4febk2" type="ZPqOwG3ZaJgC" name="fieldseriesId"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="dZ9FP4RHHevG" type="ZPqOwG3ZaJgC" name="type"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="VEhrN6DlOlzB" type="ZPqOwG3ZaJgC" name="nbIterations"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="41qibbiE8sRX" type="ZPqOwG3ZaJgC" name="meshId"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="kG3S8XATRqib" name="Factory">
+         <UML:Classifier.feature>
+          <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="CS8eIf5ejE39" name="getDataManager">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter kind="return" xmi.id="HO3Z38DlLEsc" type="nSHVdoPkDYFK"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+          <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="52BLkz1CzFrG" name="getCalculator">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter kind="return" xmi.id="UD4jBGoER8yQ" type="UsXTM49RP2EE"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="nSHVdoPkDYFK" name="DataManager"/>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="UsXTM49RP2EE" name="Calculator"/>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="waq19EhXGt1t" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="aIpeEQxrDZ1d" type="KO9M6BTsmDX3" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="n" xmi.id="KLQQ3Six0Wy7" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="SJsPpluxXW2y" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="uGVzTJNdzM70" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="L0i3AAwcTp0I" type="KO9M6BTsmDX3" name="sourceid" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="ld0pX3I6kldh" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="UVr0zGsErWnr" type="Z3sQfH0YJ5g6" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="tIX5O3q7eqxB" type="mpuQQtzqbsfV" name="meshId" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="oCVhQ0u5qFB3" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="yYmvjqxZZY8F" type="Z3sQfH0YJ5g6" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="0" xmi.id="kG5Bo02aCVGa" type="tFFeytJRMARL" name="fieldseriesId" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="ONJtNJsd01tV" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="5vXlBV761AlS" type="tFFeytJRMARL" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="uYDM7AmTV5Lr" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Package visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="rEjTH3dMz3kh" name="SALOME">
+       <UML:Namespace.ownedElement>
+        <UML:Interface stereotype="interface" visibility="public" isSpecification="false" namespace="rEjTH3dMz3kh" isAbstract="true" isLeaf="false" isRoot="false" xmi.id="BYw7PBW7PaZW" comment="SALOME CORBA Object that can be requested using the lyfe cycle corba registry" name="EngineComponent"/>
+        <UML:Interface stereotype="interface" visibility="public" isSpecification="false" namespace="rEjTH3dMz3kh" isAbstract="true" isLeaf="false" isRoot="false" xmi.id="tDJT9A2gh9I3" comment="Standard SALOME CORBA Object" name="GenericObject"/>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="BYw7PBW7PaZW" xmi.id="OOxclE0ol1ww" client="kG3S8XATRqib" name=""/>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="fUBIKo7DA4LI" name="instancie">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="FsZMpwZ9gj4C" type="kG3S8XATRqib" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="50TAtgDYAPqS" type="nSHVdoPkDYFK" name="" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="DweL0xdEpAae" name="instancie">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="5AnlrsvxqO7j" type="kG3S8XATRqib" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="4JHDg6ft0HE0" type="UsXTM49RP2EE" name="" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="tDJT9A2gh9I3" xmi.id="WqUPF7X6LpZS" client="nSHVdoPkDYFK" name=""/>
+      <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="tDJT9A2gh9I3" xmi.id="AwSTl1vib2NJ" client="UsXTM49RP2EE" name=""/>
+     </UML:Namespace.ownedElement>
+     <XMI.extension xmi.extender="umbrello">
+      <diagrams>
+       <diagram showopsig="1" linecolor="#ff0000" snapx="10" showattribassocs="1" snapy="10" linewidth="0" showattsig="1" isopen="1" showpackage="1" showpubliconly="1" showstereotype="1" name="MEDOP_datamodel" font="Ubuntu,10,-1,5,50,0,0,0,0,0" canvasheight="644" canvaswidth="1201" localid="" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#000000" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffff00" zoom="100" xmi.id="yesp3EjZ9T3u" documentation="" showscope="1" snapgrid="0" showatts="1" type="1">
+        <widgets>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="261" showattsigs="601" showstereotype="1" y="101" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="193" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="KO9M6BTsmDX3" showscope="1" height="67" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="273" showattsigs="601" showstereotype="1" y="220" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="155" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="mpuQQtzqbsfV" showscope="1" height="67" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="268" showattsigs="601" showstereotype="1" y="371" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="150" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="Z3sQfH0YJ5g6" showscope="1" height="97" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="574" showattsigs="601" showstereotype="1" y="218" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="190" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="tFFeytJRMARL" showscope="1" height="82" showopsigs="601"/>
+         <notewidget width="170" showstereotype="1" x="703" noteType="0" usesdiagramusefillcolor="1" y="278" usesdiagramfillcolor="1" isinstance="0" fillcolor="none" height="79" linecolor="none" xmi.id="IxOvY2fRkpkU" usefillcolor="1" linewidth="none" font="Ubuntu,10,-1,5,50,0,0,0,0,0" text="A Fieldseries is a data structure gathering a sequence of fields of same type."/>
+        </widgets>
+        <messages/>
+        <associations>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="mpuQQtzqbsfV" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="SJsPpluxXW2y" widgetbid="KO9M6BTsmDX3" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+          <linepath>
+           <startpoint startx="323" starty="220"/>
+           <endpoint endx="323" endy="168"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="325" showstereotype="1" y="199" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="fLhlJM6afAET" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="325" showstereotype="1" y="170" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="TQYswJeO30Ac" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="260" showstereotype="1" y="170" text="sourceid" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="67" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RkMoYLWfIJyZ" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="Z3sQfH0YJ5g6" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="ld0pX3I6kldh" widgetbid="mpuQQtzqbsfV" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+          <linepath>
+           <startpoint startx="318" starty="371"/>
+           <endpoint endx="318" endy="287"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="320" showstereotype="1" y="350" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="BQQrafI23qu0" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="320" showstereotype="1" y="289" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="AWMBUWnoA3P5" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="264" showstereotype="1" y="289" text="meshId" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="59" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="KeHcxEAaZpMs" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="Z3sQfH0YJ5g6" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="oCVhQ0u5qFB3" widgetbid="tFFeytJRMARL" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+          <linepath>
+           <startpoint startx="418" starty="371"/>
+           <endpoint endx="574" endy="300"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="408" showstereotype="1" y="349" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="kd1mStmcP6lr" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="570" showstereotype="1" y="303" text="0" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="aZgic3nraRfw" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="487" showstereotype="1" y="282" text="fieldseriesId" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="90" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="HZgqM0hYQ5Nz" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="tFFeytJRMARL" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="ONJtNJsd01tV" widgetbid="mpuQQtzqbsfV" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+          <linepath>
+           <startpoint startx="574" starty="246"/>
+           <endpoint endx="428" endy="246"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="556" showstereotype="1" y="225" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RKSqQnp8Rout" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="430" showstereotype="1" y="225" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="heT4kEtIlZ0L" height="19"/>
+         </assocwidget>
+        </associations>
+       </diagram>
+       <diagram showopsig="1" linecolor="#ff0000" snapx="10" showattribassocs="1" snapy="10" linewidth="0" showattsig="1" isopen="1" showpackage="1" showpubliconly="1" showstereotype="1" name="MEDOP_componentmodel" font="Ubuntu,10,-1,5,50,0,0,0,0,0" canvasheight="644" canvaswidth="1201" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#808080" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffffc0" zoom="100" xmi.id="e3MA5ySQiAqG" documentation="" showscope="1" snapgrid="0" showatts="1" type="1">
+        <widgets>
+         <classwidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="none" showoperations="1" usesdiagramusefillcolor="0" showpubliconly="1" showpackage="1" x="330" showattsigs="601" showstereotype="1" y="184" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="227" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" xmi.id="kG3S8XATRqib" showscope="1" height="52" showopsigs="601"/>
+         <interfacewidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="342" showstereotype="1" y="87" font="Ubuntu,10,-1,5,75,1,0,0,0,0" drawascircle="0" width="184" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="BYw7PBW7PaZW" showscope="1" height="44" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="459" showattsigs="601" showstereotype="1" y="300" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="133" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="UsXTM49RP2EE" showscope="1" height="29" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="254" showattsigs="601" showstereotype="1" y="300" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="153" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="nSHVdoPkDYFK" showscope="1" height="29" showopsigs="601"/>
+         <interfacewidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="367" showstereotype="1" y="388" font="Ubuntu,10,-1,5,75,1,0,0,0,0" drawascircle="0" width="160" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="tDJT9A2gh9I3" showscope="1" height="44" showopsigs="601"/>
+        </widgets>
+        <messages/>
+        <associations>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="OOxclE0ol1ww" widgetbid="BYw7PBW7PaZW" totalcountb="2" type="511" usefillcolor="0" linewidth="none">
+          <linepath>
+           <startpoint startx="432" starty="184"/>
+           <endpoint endx="432" endy="131"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="255" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="255" fillcolor="none" linecolor="none" totalcounta="3" xmi.id="fUBIKo7DA4LI" widgetbid="nSHVdoPkDYFK" totalcountb="2" type="512" usefillcolor="255" linewidth="none">
+          <linepath>
+           <startpoint startx="362" starty="236"/>
+           <endpoint endx="362" endy="300"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="362" showstereotype="1" y="268" text="instancie" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="703" width="62" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="We8Eh3gTpzBZ" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="364" showstereotype="1" y="238" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RukaNOvu336i" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="364" showstereotype="1" y="279" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="GwYUBCNb75BU" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="2" indexb="1" usesdiagramusefillcolor="0" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="3" xmi.id="DweL0xdEpAae" widgetbid="UsXTM49RP2EE" totalcountb="2" type="512" usefillcolor="0" linewidth="none">
+          <linepath>
+           <startpoint startx="508" starty="236"/>
+           <endpoint endx="508" endy="300"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="508" showstereotype="1" y="269" text="instancie" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="703" width="62" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="s8Nl0cfW6qjS" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="510" showstereotype="1" y="238" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="wJt1HUa9cvsa" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="510" showstereotype="1" y="279" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="XyVvibXetPfA" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="nSHVdoPkDYFK" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="WqUPF7X6LpZS" widgetbid="tDJT9A2gh9I3" totalcountb="3" type="511" usefillcolor="0" linewidth="none">
+          <linepath>
+           <startpoint startx="398" starty="329"/>
+           <endpoint endx="398" endy="388"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="2" usesdiagramusefillcolor="0" widgetaid="UsXTM49RP2EE" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="AwSTl1vib2NJ" widgetbid="tDJT9A2gh9I3" totalcountb="3" type="511" usefillcolor="58" linewidth="none">
+          <linepath>
+           <startpoint startx="510" starty="329"/>
+           <endpoint endx="510" endy="388"/>
+          </linepath>
+         </assocwidget>
+        </associations>
+       </diagram>
+      </diagrams>
+     </XMI.extension>
+    </UML:Model>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Use Case View" name="Use Case View">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Component View" name="Component View">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Deployment View" name="Deployment View">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Entity Relationship Model" name="Entity Relationship Model">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+   </UML:Namespace.ownedElement>
+  </UML:Model>
+ </XMI.content>
+ <XMI.extensions xmi.extender="umbrello">
+  <docsettings viewid="e3MA5ySQiAqG" uniqueid="1YG8dfUmZuFJ" documentation=""/>
+  <listview>
+   <listitem open="1" type="800" id="Views">
+    <listitem open="1" type="836" id="Entity Relationship Model"/>
+    <listitem open="1" type="802" id="Use Case View"/>
+    <listitem open="1" type="821" id="Component View"/>
+    <listitem open="1" type="827" id="Deployment View"/>
+    <listitem open="1" type="801" id="Logical View">
+     <listitem open="1" type="818" id="NBqMfPwp0LlT">
+      <listitem open="1" type="813" id="UsXTM49RP2EE"/>
+      <listitem open="1" type="813" id="nSHVdoPkDYFK"/>
+      <listitem open="0" type="813" id="KO9M6BTsmDX3">
+       <listitem open="0" type="814" id="eazbSktruFv5"/>
+       <listitem open="1" type="814" id="IDqrnmQNZzdi"/>
+       <listitem open="0" type="814" id="Js2a6sRrdpCC"/>
+      </listitem>
+      <listitem open="1" type="813" id="kG3S8XATRqib">
+       <listitem open="0" type="815" id="52BLkz1CzFrG"/>
+       <listitem open="0" type="815" id="CS8eIf5ejE39"/>
+      </listitem>
+      <listitem open="0" type="813" id="Z3sQfH0YJ5g6">
+       <listitem open="0" type="814" id="o3IdSrqOde12"/>
+       <listitem open="0" type="814" id="kwipcobg6E6w"/>
+       <listitem open="0" type="814" id="RuFbeb0OViC7"/>
+       <listitem open="0" type="814" id="5UZhTZzlr9YW"/>
+       <listitem open="0" type="814" id="HICpfJOiAmOR"/>
+      </listitem>
+      <listitem open="0" type="813" id="tFFeytJRMARL">
+       <listitem open="0" type="814" id="OKYFoL4febk2"/>
+       <listitem open="0" type="814" id="41qibbiE8sRX"/>
+       <listitem open="0" type="814" id="VEhrN6DlOlzB"/>
+       <listitem open="0" type="814" id="dZ9FP4RHHevG"/>
+      </listitem>
+      <listitem open="0" type="813" id="mpuQQtzqbsfV">
+       <listitem open="0" type="814" id="6bYmLOgeEiEK"/>
+       <listitem open="0" type="814" id="MMCAGaa7ZOiQ"/>
+       <listitem open="0" type="814" id="4CWdiGy6waJd"/>
+      </listitem>
+     </listitem>
+     <listitem open="0" type="807" id="e3MA5ySQiAqG" label="MEDOP_componentmodel"/>
+     <listitem open="0" type="807" id="yesp3EjZ9T3u" label="MEDOP_datamodel"/>
+     <listitem open="1" type="818" id="rEjTH3dMz3kh">
+      <listitem open="1" type="817" id="BYw7PBW7PaZW"/>
+      <listitem open="1" type="817" id="tDJT9A2gh9I3"/>
+     </listitem>
+     <listitem open="0" type="830" id="Datatypes">
+      <listitem open="1" type="829" id="dHU5JP7qmxEj"/>
+      <listitem open="1" type="829" id="WVv63G5f9uiL"/>
+      <listitem open="1" type="829" id="7F8E7oZk44nN"/>
+      <listitem open="1" type="829" id="CIGkZvv5QqCT"/>
+      <listitem open="1" type="829" id="ZPqOwG3ZaJgC"/>
+      <listitem open="1" type="829" id="6hIUWSwdh4po"/>
+      <listitem open="1" type="829" id="RuDDqPu2fBmF"/>
+      <listitem open="1" type="829" id="ndz0601vw4R2"/>
+      <listitem open="1" type="829" id="rMXvQKIpDT33"/>
+      <listitem open="1" type="829" id="Ubc9dPySlTNA"/>
+      <listitem open="1" type="829" id="qx3W6plAV1f1"/>
+     </listitem>
+    </listitem>
+   </listitem>
+  </listview>
+  <codegeneration>
+   <codegenerator language="C++"/>
+  </codegeneration>
+ </XMI.extensions>
+</XMI>
diff --git a/src/MEDOP/doc/sphinx/CMakeLists.txt b/src/MEDOP/doc/sphinx/CMakeLists.txt
new file mode 100644 (file)
index 0000000..54da688
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+IF(SPHINX_STATUS)
+  SET(srcdir ${CMAKE_CURRENT_SOURCE_DIR})
+  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/conf.py @ONLY)
+  #FILE(GLOB MEDOP_DOC_RST "${CMAKE_CURRENT_SOURCE_DIR}/*.rst")
+  
+  #FOREACH(SRCFNAME ${MEDOP_DOC_RST})
+  #  GET_FILENAME_COMPONENT(FNAME ${SRCFNAME} NAME)
+  #  CONFIGURE_FILE(${SRCFNAME} ${CMAKE_CURRENT_BINARY_DIR}/${FNAME} COPY_ONLY)
+  #ENDFOREACH(FNAME ${MEDOP_DOC_RST})
+  
+  #FILE(MAKE_DIRECTORY _static)
+  #CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/_static/xmed.css ${CMAKE_CURRENT_BINARY_DIR}/_static/xmed.css COPY_ONLY)
+
+  #FILE(GLOB MEDOP_DOC_PNG_RST "${CMAKE_CURRENT_SOURCE_DIR}/images/*.png")
+  #FOREACH(SRCFNAME ${MEDOP_DOC_PNG_RST})
+  #  GET_FILENAME_COMPONENT(FNAME ${SRCFNAME} NAME)
+  #  CONFIGURE_FILE(${SRCFNAME} ${CMAKE_CURRENT_BINARY_DIR}/images/${FNAME} COPY_ONLY)
+  #ENDFOREACH(FNAME ${MEDOP_DOC_RST})
+
+  INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${SPHINX_EXECUTABLE_TO_FIND} -c ${CMAKE_CURRENT_BINARY_DIR} -b html -d doctrees -D latex_paper_size=a4 ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/html)")
+
+  INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION share/doc/salome/dev/MED)
+
+ENDIF(SPHINX_STATUS)
diff --git a/src/MEDOP/doc/sphinx/Makefile.am b/src/MEDOP/doc/sphinx/Makefile.am
new file mode 100644 (file)
index 0000000..523111e
--- /dev/null
@@ -0,0 +1,123 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+tuidocdir = $(docdir)/tui/MED
+devdocdir = $(docdir)/dev/MED
+medopdocdir=$(devdocdir)
+
+.PHONY : latex
+
+if SPHINX_IS_OK
+
+medopdoc_DATA=html/index.html
+html/index.html:$(RSTFILES)
+       make htm
+
+endif
+
+EXTRA_DIST += html
+
+SPHINXOPTS      =
+SOURCEDIR       = $(srcdir)
+SPHINXBUILD     = sphinx-build
+PAPEROPT_a4     = -D latex_paper_size=a4
+ALLSPHINXOPTS   = -d doctrees $(PAPEROPT_a4) $(SPHINXOPTS) $(SOURCEDIR)
+SPHINX_PYTHONPATH = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome:$(KERNEL_ROOT_DIR)/lib/python$(PYTHON_VERSION)/site-packages/salome:$(KERNEL_ROOT_DIR)/bin/salome:$(OMNIORB_ROOT)/lib/python$(PYTHON_VERSION)/site-packages
+
+CONF_PATH = $(top_builddir)/src/MEDOP/doc/sphinx
+
+SPHINX_LD_LIBRARY_PATH = $(OMNIORB_ROOT)/lib
+
+htm:
+       mkdir -p html doctrees
+       PYTHONPATH=$(SPHINX_PYTHONPATH):${PYTHONPATH}; \
+       LD_LIBRARY_PATH=$(SPHINX_LD_LIBRARY_PATH):${LD_LIBRARY_PATH}; \
+       $(SPHINXBUILD) -c $(CONF_PATH) -b html $(ALLSPHINXOPTS) html
+       @echo
+       @echo "Build finished. The HTML pages are in html."
+
+latex:
+       mkdir -p latex doctrees
+       PYTHONPATH=$(SPHINX_PYTHONPATH):${PYTHONPATH}; \
+       LD_LIBRARY_PATH=$(SPHINX_LD_LIBRARY_PATH):${LD_LIBRARY_PATH}; \
+       $(SPHINXBUILD) -c $(CONF_PATH) -b latex $(ALLSPHINXOPTS) latex
+       @echo
+       @echo "Build finished; the LaTeX files are in latex."
+       @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+             "run these through (pdf)latex."
+
+html:
+       mkdir -p $@
+
+RSTFILES= \
+       index.rst               \
+       xmed-specifications.rst \
+       xmed-develguide.rst     \
+       xmed-userguide.rst
+
+# Files on the development of the prototype (version 2010)
+RSTFILES+=\
+       xmed-prototype-overview.rst     \
+       xmed-prototype-develguide.rst   \
+       xmed-prototype-medmem.rst
+
+# Files containing definitions and references
+RSTFILES+=\
+       xmed-definitions.rst \
+       xmed-references.rst  \
+       xmed-workingnotes-2010.rst \
+       xmed-workingnotes-2011.rst \
+       xmed-workingnotes-2012.rst
+
+# Files on annexe topics
+RSTFILES+=\
+       salomedoc.rst
+
+EXTRA_DIST+= $(RSTFILES)
+
+EXTRA_DIST+= \
+       conf.py 
+
+install-data-local:
+       $(INSTALL) -d $(DESTDIR)$(medopdocdir)
+       if test -d "html"; then b=; else b="$(srcdir)/"; fi; \
+       cp -rf $$b"html"/* $(DESTDIR)$(medopdocdir) ; \
+       if test -f $$b"latex"/medopdoc.pdf; then cp -f $$b"latex"/medopdoc.pdf $(DESTDIR)$(medopdocdir) ; fi;
+
+uninstall-local:
+       chmod -R +w $(DESTDIR)$(medopdocdir)
+       rm -rf $(DESTDIR)$(medopdocdir)/*
+
+clean-local:
+       -rm -rf html latex doctrees
+       if test -d "html"; then rm -rf html ; fi
+
+pdf: latex
+       cd latex; make all-pdf
+       cp latex/*.pdf html/_static/documents/.
+
+WIKIRELATIVEPATH="pub/userdata/gboulant/data/salome/smodules/xmed/doc"
+WIKIREMOTEPATH="nepal@nepal:/nepal/$(WIKIRELATIVEPATH)"
+deploy: htm pdf
+       rsync -avz html/ $(WIKIREMOTEPATH)
+       @echo "The documentation can be read at URL : http://nepal.der.edf.fr/$(WIKIRELATIVEPATH)/index.html"
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf b/src/MEDOP/doc/sphinx/_static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf
new file mode 100755 (executable)
index 0000000..405a2cc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20091211_CEA_AGEAY_09-017-RT-A_Normalisation_des_champs_et_des_maillages_pour_le_couplage_de_codes.pdf b/src/MEDOP/doc/sphinx/_static/documents/20091211_CEA_AGEAY_09-017-RT-A_Normalisation_des_champs_et_des_maillages_pour_le_couplage_de_codes.pdf
new file mode 100755 (executable)
index 0000000..2357da0
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20091211_CEA_AGEAY_09-017-RT-A_Normalisation_des_champs_et_des_maillages_pour_le_couplage_de_codes.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf b/src/MEDOP/doc/sphinx/_static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf
new file mode 100755 (executable)
index 0000000..25a151e
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf b/src/MEDOP/doc/sphinx/_static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf
new file mode 100755 (executable)
index 0000000..8048e0b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20101027_MAN_revueEDF-CEA.pdf b/src/MEDOP/doc/sphinx/_static/documents/20101027_MAN_revueEDF-CEA.pdf
new file mode 100755 (executable)
index 0000000..f5f9123
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20101027_MAN_revueEDF-CEA.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_notes.pdf b/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_notes.pdf
new file mode 100644 (file)
index 0000000..aee46bf
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_notes.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf b/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf
new file mode 100644 (file)
index 0000000..dce10d9
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf b/src/MEDOP/doc/sphinx/_static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf
new file mode 100755 (executable)
index 0000000..2ea4918
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf
new file mode 100644 (file)
index 0000000..9a12930
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv
new file mode 100644 (file)
index 0000000..8339d63
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv differ
diff --git a/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv
new file mode 100644 (file)
index 0000000..ec7c90a
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv differ
diff --git a/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv
new file mode 100644 (file)
index 0000000..7398d19
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv differ
diff --git a/src/MEDOP/doc/sphinx/_static/xmed.css b/src/MEDOP/doc/sphinx/_static/xmed.css
new file mode 100644 (file)
index 0000000..150d019
--- /dev/null
@@ -0,0 +1,115 @@
+@import url("default.css");
+
+body {
+  font-family: {{ 'Liberation', sans-serif }};
+  font-size: 82%;
+  color: #000;
+  background-color: #fff;
+  margin-left: 28px;
+}
+
+ul {
+  margin: 0 0 0 0;
+}
+
+div.related {
+  background-color: #444;
+}
+
+a,
+div.sphinxsidebar h3 a,
+div.sphinxsidebar a,
+div.footer a {
+  color: #444;
+}
+
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+  color: #000;
+}
+
+div.sphinxsidebar ul {
+  font-size: 94%;
+  color: #000;
+}
+
+div.sphinxsidebar input {
+  border-color: #444;
+}
+
+div.document {
+  background-color: #f5f8e4;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+  color: #000;
+  background-color: transparent;
+  border-bottom: 1px solid #444;
+}
+
+div.footer {
+  color: #000;
+}
+
+li.toctree-l2 {
+  font-size: 100%;
+}
+
+li.toctree-l3 {
+  font-size: 100%;
+}
+
+div.sphinxsidebarwrapper ul {
+  list-style-type: disc;
+  margin-top: 1px;
+  padding-left: 6px;
+}
+
+div.sphinxsidebarwrapper h3 {
+  font-size: 100%;
+  font-weight: bold;
+}
+
+div.body h1 {
+  font-size: 200%;
+}
+div.body h2 {
+  font-size: 160%;
+}
+div.body h3, div.body h4 {
+  font-size: 125%;
+}
+
+div.body p.topic-title {
+  margin-bottom: 2px;
+  font-size: 100%;
+}
+
+div.sphinxsidebar p {
+  color: #444;
+}
+
+#introduction p > em {
+  text-align: right;
+  float: right;
+}
+
+#introduction p {
+  font-size: 90%;
+  margin-bottom: 3px;
+}
+
+#introduction #id2.docutils.footnote {
+  font-size: 70%;
+  margin-top: 25px;
+}
+
+#introduction table.docutils.footnote {
+  font-size: 70%;
+  margin-top: 5px;
+}
diff --git a/src/MEDOP/doc/sphinx/conf.py.in b/src/MEDOP/doc/sphinx/conf.py.in
new file mode 100644 (file)
index 0000000..1127d1b
--- /dev/null
@@ -0,0 +1,209 @@
+# -*- coding: iso-8859-1 -*-
+#
+# yacs documentation build configuration file, created by
+# sphinx-quickstart on Fri Aug 29 09:57:25 2008.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc']
+
+# Uncomment the following line to build the links with Python documentation
+# (you might need to set http_proxy environment variable for this to work)
+#extensions += ['sphinx.ext.intersphinx']
+
+# Intersphinx mapping to add links to modules and objects in the Python
+# standard library documentation
+intersphinx_mapping = {'http://docs.python.org': None}
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = [os.path.join('@srcdir@','_templates')]
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = 'MED, Manipulation de champs dans SALOME'
+copyright = '2010 CEA/DEN, EDF R&D, OPEN CASCADE, G. Boulant, A. Geay'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '@SHORT_VERSION@'
+# The full version, including alpha/beta/rc tags.
+release = '@VERSION@'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+language = 'fr'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['.build','ref','images','CVS','.svn']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+#html_theme = 'omadoc'
+html_theme_options = {
+    "stickysidebar": "false",
+    "rightsidebar": "false",
+}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = ['themes']
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+
+# The stylecheet file will be searched within the static path, while
+# the layout.html file will be searched within the template path
+# (Note that this parameter can't be used together with html_theme. Exclusive)
+html_style = 'xmed.css'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = [os.path.join('@srcdir@','_static')]
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+html_use_modindex = False
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'xmeddoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+latex_paper_size = 'a4'
+
+# The font size ('10pt', '11pt' or '12pt').
+latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('index', 'xmed-alldoc.tex', 'Documentation du module XMED', 'G. Boulant', 'manual'),
+  ('xmed-specifications', 'xmed-specifications.tex', 'Module XMED - Specifications', 'G. Boulant', 'manual'),
+  ('xmed-develguide', 'xmed-develguide.tex', 'Module XMED - Guide de developpement', 'G. Boulant', 'manual'),
+  ('xmed-userguide', 'xmed-userguide.tex', 'Module XMED - Guide d\'utilisation', 'G. Boulant', 'manual')
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+latex_use_modindex = False
diff --git a/src/MEDOP/doc/sphinx/images/champ_altitude_MAP.png b/src/MEDOP/doc/sphinx/images/champ_altitude_MAP.png
new file mode 100644 (file)
index 0000000..0fbf2ba
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/champ_altitude_MAP.png differ
diff --git a/src/MEDOP/doc/sphinx/images/convert.sh b/src/MEDOP/doc/sphinx/images/convert.sh
new file mode 100755 (executable)
index 0000000..289e7c3
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+factor="50%"
+listfiles="\
+    medop-gui-aliasfield.png \
+    medop-gui-result.png \
+    medop-gui-selectfield.png \
+    medop-gui-visufield.png"
+
+for file in $listfiles; do
+    echo "Processing file $file ..."
+    bn=$(basename $file .png)
+    outfile=$bn"_scale.png"
+    convert -scale $factor $file $outfile
+done
+
+
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_add.png b/src/MEDOP/doc/sphinx/images/ico_datasource_add.png
new file mode 100644 (file)
index 0000000..bcec3d6
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_add.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_changeUnderlyingMesh.png b/src/MEDOP/doc/sphinx/images/ico_datasource_changeUnderlyingMesh.png
new file mode 100644 (file)
index 0000000..fe6c8b6
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_changeUnderlyingMesh.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_expandfield.png b/src/MEDOP/doc/sphinx/images/ico_datasource_expandfield.png
new file mode 100644 (file)
index 0000000..07c8b0b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_expandfield.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_use.png b/src/MEDOP/doc/sphinx/images/ico_datasource_use.png
new file mode 100644 (file)
index 0000000..0d1ab63
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_use.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_view.png b/src/MEDOP/doc/sphinx/images/ico_datasource_view.png
new file mode 100644 (file)
index 0000000..4189144
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_view.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_imagesource.png b/src/MEDOP/doc/sphinx/images/ico_imagesource.png
new file mode 100644 (file)
index 0000000..465b156
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_imagesource.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_workspace_save.png b/src/MEDOP/doc/sphinx/images/ico_workspace_save.png
new file mode 100644 (file)
index 0000000..268c8fb
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_workspace_save.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_xmed.png b/src/MEDOP/doc/sphinx/images/ico_xmed.png
new file mode 100644 (file)
index 0000000..4f09fe0
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_xmed.png differ
diff --git a/src/MEDOP/doc/sphinx/images/med-uml-main.png b/src/MEDOP/doc/sphinx/images/med-uml-main.png
new file mode 100755 (executable)
index 0000000..1e7d458
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/med-uml-main.png differ
diff --git a/src/MEDOP/doc/sphinx/images/med-uml-main_60pc.png b/src/MEDOP/doc/sphinx/images/med-uml-main_60pc.png
new file mode 100644 (file)
index 0000000..f8f06cb
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/med-uml-main_60pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medlayers.png b/src/MEDOP/doc/sphinx/images/medlayers.png
new file mode 100644 (file)
index 0000000..179ae0b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medlayers.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medmem-corba-layers.png b/src/MEDOP/doc/sphinx/images/medmem-corba-layers.png
new file mode 100755 (executable)
index 0000000..de355e9
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medmem-corba-layers.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medmem-layers.png b/src/MEDOP/doc/sphinx/images/medmem-layers.png
new file mode 100644 (file)
index 0000000..d781003
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medmem-layers.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield.png b/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield.png
new file mode 100755 (executable)
index 0000000..ad266f8
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield_scale.png b/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield_scale.png
new file mode 100644 (file)
index 0000000..33a5cae
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield_scale.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-result.png b/src/MEDOP/doc/sphinx/images/medop-gui-result.png
new file mode 100755 (executable)
index 0000000..54a41bf
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-result.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-result_scale.png b/src/MEDOP/doc/sphinx/images/medop-gui-result_scale.png
new file mode 100644 (file)
index 0000000..a53187b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-result_scale.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-selectfield.png b/src/MEDOP/doc/sphinx/images/medop-gui-selectfield.png
new file mode 100755 (executable)
index 0000000..47d5d61
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-selectfield.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-selectfield_scale.png b/src/MEDOP/doc/sphinx/images/medop-gui-selectfield_scale.png
new file mode 100644 (file)
index 0000000..e311926
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-selectfield_scale.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-visufield.png b/src/MEDOP/doc/sphinx/images/medop-gui-visufield.png
new file mode 100755 (executable)
index 0000000..fc42627
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-visufield.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-visufield_scale.png b/src/MEDOP/doc/sphinx/images/medop-gui-visufield_scale.png
new file mode 100644 (file)
index 0000000..6cbe393
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-visufield_scale.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop_exportparavis.png b/src/MEDOP/doc/sphinx/images/medop_exportparavis.png
new file mode 100644 (file)
index 0000000..4205c6b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop_exportparavis.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop_exportparavis_result.png b/src/MEDOP/doc/sphinx/images/medop_exportparavis_result.png
new file mode 100644 (file)
index 0000000..56abc6e
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop_exportparavis_result.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop_image2med_dialog.png b/src/MEDOP/doc/sphinx/images/medop_image2med_dialog.png
new file mode 100644 (file)
index 0000000..35cf57b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop_image2med_dialog.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop_image2med_tomographie.png b/src/MEDOP/doc/sphinx/images/medop_image2med_tomographie.png
new file mode 100644 (file)
index 0000000..9f67fbc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop_image2med_tomographie.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-architecture.png b/src/MEDOP/doc/sphinx/images/xmed-architecture.png
new file mode 100755 (executable)
index 0000000..143b674
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-architecture.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-exploremed.png b/src/MEDOP/doc/sphinx/images/xmed-exploremed.png
new file mode 100644 (file)
index 0000000..c9e0283
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-exploremed.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-functions.png b/src/MEDOP/doc/sphinx/images/xmed-functions.png
new file mode 100644 (file)
index 0000000..b0e67b8
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-functions.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh.png
new file mode 100644 (file)
index 0000000..c62da6a
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png
new file mode 100644 (file)
index 0000000..bccd8c2
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu.png
new file mode 100644 (file)
index 0000000..a8df311
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_60pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_60pc.png
new file mode 100644 (file)
index 0000000..5492fa1
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_60pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_70pc.png
new file mode 100644 (file)
index 0000000..5db5a11
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_80pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_80pc.png
new file mode 100644 (file)
index 0000000..48ed011
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_80pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-expand-zoom.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-expand-zoom.png
new file mode 100644 (file)
index 0000000..b4891fd
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-expand-zoom.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore-zoom.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore-zoom.png
new file mode 100644 (file)
index 0000000..2de39c7
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore-zoom.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore.png
new file mode 100644 (file)
index 0000000..8bb9bbd
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-menucontextuel-zoom.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-menucontextuel-zoom.png
new file mode 100644 (file)
index 0000000..85ea5d5
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-menucontextuel-zoom.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-selectfile.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-selectfile.png
new file mode 100644 (file)
index 0000000..39da533
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-selectfile.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-alias.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-alias.png
new file mode 100644 (file)
index 0000000..f6eca45
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-alias.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result.png
new file mode 100644 (file)
index 0000000..505e3d6
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result_70pc.png
new file mode 100644 (file)
index 0000000..f942cd8
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace.png
new file mode 100644 (file)
index 0000000..1f7109f
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace_70pc.png
new file mode 100644 (file)
index 0000000..98e1f32
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result.png
new file mode 100644 (file)
index 0000000..b0f4243
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_50pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_50pc.png
new file mode 100644 (file)
index 0000000..f86b7b0
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_50pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_70pc.png
new file mode 100644 (file)
index 0000000..6bf6817
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-zoom.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-zoom.png
new file mode 100644 (file)
index 0000000..e556b10
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-zoom.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize.png
new file mode 100644 (file)
index 0000000..94fa549
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_50pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_50pc.png
new file mode 100644 (file)
index 0000000..a96aefc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_50pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_70pc.png
new file mode 100644 (file)
index 0000000..1f0599e
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-start.png b/src/MEDOP/doc/sphinx/images/xmed-gui-start.png
new file mode 100644 (file)
index 0000000..8a0a593
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-start.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-withframe.png b/src/MEDOP/doc/sphinx/images/xmed-gui-withframe.png
new file mode 100644 (file)
index 0000000..532c285
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-withframe.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-workspace-view.png b/src/MEDOP/doc/sphinx/images/xmed-gui-workspace-view.png
new file mode 100644 (file)
index 0000000..f501f6c
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-workspace-view.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-workspace.png b/src/MEDOP/doc/sphinx/images/xmed-gui-workspace.png
new file mode 100644 (file)
index 0000000..081b833
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-workspace.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui.png b/src/MEDOP/doc/sphinx/images/xmed-gui.png
new file mode 100644 (file)
index 0000000..0c91683
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui_70pc.png
new file mode 100644 (file)
index 0000000..6d1845c
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-implantation.png b/src/MEDOP/doc/sphinx/images/xmed-implantation.png
new file mode 100644 (file)
index 0000000..0f17dcc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-implantation.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-irm-diff.png b/src/MEDOP/doc/sphinx/images/xmed-irm-diff.png
new file mode 100644 (file)
index 0000000..44d5578
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-irm-diff.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-irm-field.png b/src/MEDOP/doc/sphinx/images/xmed-irm-field.png
new file mode 100644 (file)
index 0000000..1012ab1
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-irm-field.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-irm.png b/src/MEDOP/doc/sphinx/images/xmed-irm.png
new file mode 100644 (file)
index 0000000..5d20c7e
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-irm.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-datasource.png b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-datasource.png
new file mode 100644 (file)
index 0000000..4e67ab1
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-datasource.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace-save.png b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace-save.png
new file mode 100644 (file)
index 0000000..9d10513
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace-save.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace.png b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace.png
new file mode 100644 (file)
index 0000000..3138f7a
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-visu-importtimestamps.png b/src/MEDOP/doc/sphinx/images/xmed-visu-importtimestamps.png
new file mode 100644 (file)
index 0000000..b685ecc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-visu-importtimestamps.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-visu-scalarmaptimestamps.png b/src/MEDOP/doc/sphinx/images/xmed-visu-scalarmaptimestamps.png
new file mode 100644 (file)
index 0000000..1cda69b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-visu-scalarmaptimestamps.png differ
diff --git a/src/MEDOP/doc/sphinx/index.rst b/src/MEDOP/doc/sphinx/index.rst
new file mode 100644 (file)
index 0000000..90fdc6b
--- /dev/null
@@ -0,0 +1,44 @@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ Documentation du module XMED
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module SALOME nommé XMED (pour eXtension MED) est l'espace de
+développement des fonctions de manipulation de champs dans SALOME. Le
+contenu de ce module est amené à intégrer le module MED pour former la
+future version en préparation pour la version SALOME 7 de 2012.
+
+Documentation principale
+========================
+
+.. toctree::
+   :maxdepth: 1
+
+   xmed-specifications.rst
+   xmed-develguide.rst
+   xmed-userguide.rst
+
+Documentation du prototype 2010
+===============================
+
+Cette section décrit le prototype mis au point en 2010 pour les
+analyses de conception (maquette 2010 sur base MEDMEM)
+
+.. toctree::
+   :maxdepth: 1
+
+   xmed-prototype-overview.rst
+   xmed-prototype-develguide.rst
+   xmed-prototype-medmem.rst
+
+Documentation annexe
+====================
+
+.. toctree::
+   :maxdepth: 1
+
+   xmed-references.rst
+   xmed-workingnotes-2010.rst
+   xmed-workingnotes-2011.rst
+   xmed-workingnotes-2012.rst
+   salomedoc.rst
diff --git a/src/MEDOP/doc/sphinx/salomedoc.rst b/src/MEDOP/doc/sphinx/salomedoc.rst
new file mode 100644 (file)
index 0000000..fc2f1fd
--- /dev/null
@@ -0,0 +1,231 @@
+.. meta::
+   :keywords: SALOME, development
+   :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Annexe : Règles de développement SALOME
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Cette annexe est un recueil de techniques de développement spécifiques
+à l'environnement SALOME et utilisées pour la mise au point du module
+XMED. Elles sont a priori utilisables pour d'autres contexte de
+développement dans SALOME.
+
+.. TODO: récupérer les fonctions génériques de VisuGUI_Tools.cxx
+.. TODO: récupérer les fonctions génériques de SMESGGUI_utils.cxx
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Récupérer la sélection dans l'arbre d'étude
+===========================================
+
+Dans une classe dérivée de ``SalomeApp_Module``, on peut utiliser un
+code de la forme suivante:
+
+.. code-block:: cpp
+ #include <SALOME_ListIO.hxx>
+ #include <LightApp_SelectionMgr.h>
+ #include <SALOME_ListIteratorOfListIO.hxx>
+ #include <SALOME_InteractiveObject.hxx>
+ // ...
+
+ // Get the selected object in the study (SObject)
+ LightApp_SelectionMgr* aSelectionMgr = this->getApp()->selectionMgr();
+ SALOME_ListIO aListIO;
+ aSelectionMgr->selectedObjects(aListIO);
+
+ // Analyse the selection. There can be more than one item.
+ SALOME_ListIteratorOfListIO It (aListIO);
+ for (; It.More(); It.Next()) {
+   Handle(SALOME_InteractiveObject) anIO = It.Value();
+   SALOMEDS::SObject_var aSObject = aStudy->FindObjectID(anIO->getEntry());
+
+   // Check if the selected object is relevant for the operation
+   // ...
+
+   // Process the SObject if it's relevant
+   // ...
+   
+ }
+
+On peut noter qu'une variable ``aStudy`` est requise. Elle représente
+l'étude SALOME sur laquelle s'oppère la sélection. L'étude active
+(impliquée dans la sélection) peut être obtenue au moyen du
+gestionnaire d'étude (voir :ref:`ci-dessous <salomedoc_getActiveStudy>`).
+
+Réglage du curseur graphique
+============================
+
+Dans le cas où le traitement est long, il peut être intéressant
+d'encadrer l'opération par un vérouillage du curseur de sélection:
+
+.. code-block:: cpp
+
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+
+ // Do the job
+ // ...
+
+ QApplication::restoreOverrideCursor();
+
+
+Les variables pour la gestion de l'étude
+========================================
+
+Les variables CORBA
+-------------------
+
+Les variables CORBA comme le serveur de noms (naming service) et le
+gestionnaire de cycle de vie des objets (LifeCycleCRORBA) sont
+fréquement utilisés. Dans le contexte d'une application (classe de
+type ``SalomeApp_Module``), il est possible de récupérer simplement
+des instances de ces variables par les commandes suivantes:
+
+.. code-block:: cpp
+
+   #include <SalomeApp_Application.h>
+   #include <SALOME_NamingService.hxx>
+
+   CORBA::ORB_var               orb           = SalomeApp_Application::orb();
+   SALOMEDSClient_StudyManager* studyMgr      = SalomeApp_Application::studyMgr();
+   SALOME_NamingService*        namingService = SalomeApp_Application::namingService();
+   SALOME_LifeCycleCORBA*       lcc           = SalomeApp_Application::lcc();
+
+Pour un usage en dehors de l'application graphique (par exemple au
+niveau du container), l'orb peut être obtenu par les mécanismes
+standard d'omniORB:
+
+.. code-block:: cpp
+
+   CORBA::ORB_var orb = CORBA::ORB_init(0,0);
+
+L'orb est par exemple utile à récupérer pour la sérialisation des
+objets CORBA et la manipulation des références sous forme de chaîne de
+caractères:
+
+.. code-block:: cpp
+
+   // We suppose here that we have a CORBA object reference (object of
+   // type *_ptr or *_var), for example a SALOME_MED::MED object.
+   SALOME_MED::MED_ptr medObj = ... // anything to get this object  
+   QString medIOR = orb->object_to_string(medObj);
+
+   SALOME_MED::MED_ptr anOtherRefToMedObj = orb->string_to_object(medIOR)
+
+.. note: this serialization can be used to communicate between a GUI
+   and a component in a container, or between the C++ context and the
+   python context.
+
+.. _salomedoc_getActiveStudy:
+
+Récupérer l'étude active
+------------------------
+
+Le concept d'étude active est un concept GUI. Il désigne l'étude en
+cours d'usage au niveau de l'interface graphique. 
+
+.. note: Pour rappel, l'étude est un objet CORBA de type
+   ``SALOMEDS::Study`` qui héberge physiquement les ``SObject``
+   pointant vers les données. L'arbre d'étude ("Object browser") est
+   une représentation graphique de cet objet.
+
+L'étude active peut être obtenue au moyen du gestionnaire
+d'étude. Dans le corps d'une classe de type ``SalomeApp_Module``, ceci
+peut se faire par un code de la forme suivante:
+
+.. code-block:: cpp
+
+  #include "SALOMEconfig.h"
+  #include CORBA_SERVER_HEADER(SALOMEDS)
+  #include <SalomeApp_Application.h>
+  #include <SALOME_NamingService.hxx>
+
+  // ...
+
+  // Get the study id of the active study
+  SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*> (this->getApp()->activeStudy());
+  _PTR(Study) aCStudy = appStudy->studyDS();
+  int aStudyID = aCStudy->StudyId();
+
+  // Then get the study manager
+  SALOME_NamingService *aNamingService = SalomeApp_Application::namingService();
+  CORBA::Object_var anObject = aNamingService->Resolve("/myStudyManager");
+  SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObject);
+
+  // Finally, request the study manager for the study (SALOMEDS::Study)
+  SALOMEDS::Study_var aStudy = aStudyManager->GetStudyByID(aStudyID);
+
+
+Communiquer avec la console python
+==================================
+
+La console python désigne l'interpréteur embarqué dans l'interface
+graphique de SALOME (GUI). Elle est également désignée comme
+l'interface textuelle de SALOME (TUI) car elle permet de piloter
+SALOME au moyen de commandes en syntaxe python.
+
+Le paragraphe montre comment communiquer avec cette interface texte
+depuis le contexte C++ de l'interface graphique, en particulier pour
+déclencher l'exécution de commandes.
+
+Le code se situe donc au sein d'une classe de type
+``SalomeApp_Module`` (de laquelle hérite la partie graphique d'un
+module SALOME, de nom ``<MODULE_NAME>GUI``). Cette classe possède une
+méthode ``getApp()`` par laquelle on peut récupérer une instance de la
+console python embarquée (this->getApp()->pythonConsole()).
+
+Le code suivant illustre l'envoie d'une commande python par ce
+mécanisme. Dans cette exemple, on défini une variable ``id`` dans la
+console python comme l'identifiant de l'étude active:
+
+.. code-block:: cpp
+
+   #include <PyConsole_Console.h>
+   #include <QString>
+   #include <QStringList>
+
+   PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+   QStringList commands;
+   commands+="import salome";
+   commands+="id=salome.myStudyId";
+      
+   QStringListIterator it(commands);
+   while (it.hasNext()) {
+       pyConsole->exec(it.next());
+   }
+
+Dans ce deuxième exemple, on cherche à reconstituer dans le contexte
+de la console python un pointer vers un objet med instancié dans le
+contexte C++ de l'application graphique. Pour cela, on communique la
+référence de l'objet sous la forme sérialisé (IOR pour un objet
+CORBA):
+
+.. code-block:: cpp
+
+   #include <PyConsole_Console.h>
+   #include <QString>
+   #include <QStringList>
+   #include <SalomeApp_Application.h>
+
+   // We suppose here that we have a CORBA object reference (object of
+   // type *_ptr or *_var), for example a SALOME_MED::MED object.
+   SALOME_MED::MED_ptr medObj = ... // anything to get this object  
+
+   // Get the IOR of this object
+   QString medIOR = SalomeApp_Application::orb()->object_to_string(medObj);
+
+   PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+   QStringList commands;
+   commands+="import salome";
+   commands+=QString("med=salome.orb.string_to_object(\"%1\")").arg(medIOR);
+      
+   QStringListIterator it(commands);
+   while (it.hasNext()) {
+       pyConsole->exec(it.next());
+   }
diff --git a/src/MEDOP/doc/sphinx/xmed-definitions.rst b/src/MEDOP/doc/sphinx/xmed-definitions.rst
new file mode 100644 (file)
index 0000000..cfd0bc1
--- /dev/null
@@ -0,0 +1,88 @@
+.. AVERTISSEMENT:
+.. Ce fichier contient les définitions globales à la documentation. Il
+.. peut être inclu au moyen de la directive rst "include" pour
+.. disposer des définitions dans le fichier qui fait l'inclusion.
+.. Pour éviter de polluer les textes dans lequel ce fichier est inclu,
+.. il est interdit de faire afficher du texte par ce document de
+.. définition.
+
+.. REFERENCES DOCUMENTAIRES:
+.. (les documents sont fournis dans le répertoire _static/documents)
+
+.. You can refer to this reference using the keyword: |REF_EDF_VCA_H-I2C-2009-03595-FR|_
+.. |REF_EDF_VCA_H-I2C-2009-03595-FR| replace:: H-I2C-2009-03595-FR: Manipulation de champs dans SALOME - Orientations générales
+.. _REF_EDF_VCA_H-I2C-2009-03595-FR: _static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf
+
+.. You can refer to this reference using the keyword: |REF_CEA_VBE_MEDMEM|_
+.. |REF_CEA_VBE_MEDMEM| replace:: Guide utilisateur de MED mémoire
+.. _REF_CEA_VBE_MEDMEM: _static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_GBO_WORKNOTE|_
+.. |REF_EDF_GBO_WORKNOTE| replace:: XMED: Notes de travail
+.. _REF_EDF_GBO_WORKNOTE: _static/documents/20110309_XMED_scan_notes.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_ELO_REM|_
+.. |REF_EDF_ELO_REM| replace:: XMED: Remarques E. Lorentz
+.. _REF_EDF_ELO_REM: _static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP01|_
+.. |REF_EDF_PRESMANIPCHP01| replace:: Séminaire EDF-CEA de janvier 2010: manipulation de champs
+.. _REF_EDF_PRESMANIPCHP01: _static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP02|_
+.. |REF_EDF_PRESMANIPCHP02| replace:: Révue EDF-CEA: maquette de manipulation de champs
+.. _REF_EDF_PRESMANIPCHP02: _static/documents/20101027_MAN_revueEDF-CEA.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP03|_
+.. |REF_EDF_PRESMANIPCHP03| replace:: Séminaire EDF-CEA de mars 2011: manipulation de champs, maquette 2010
+.. _REF_EDF_PRESMANIPCHP03: _static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf
+
+.. PRESENTATIONS:
+
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_PDF|_
+.. |REF_EDF_JUS2011_PDF| replace:: JUS2011: outils de manipulation de champs
+.. _REF_EDF_JUS2011_PDF: _static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV1|_
+.. |REF_EDF_JUS2011_OGV1| replace:: JUS2011: outils de manipulation de champs - Exemple 1
+.. _REF_EDF_JUS2011_OGV1: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV3|_
+.. |REF_EDF_JUS2011_OGV3| replace:: JUS2011: outils de manipulation de champs - Exemple 3
+.. _REF_EDF_JUS2011_OGV3: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV4|_
+.. |REF_EDF_JUS2011_OGV4| replace:: JUS2011: outils de manipulation de champs - Exemple 4
+.. _REF_EDF_JUS2011_OGV4: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv
+
+
+
+.. LIENS EXTERNES:
+.. (l'accès nécessite le réseau intranet EDF et internet)
+
+.. You can refer to this reference using the keyword: |LINK_EDF_MEDDOC|_
+.. |LINK_EDF_MEDDOC| replace:: Modèle MED
+.. _LINK_EDF_MEDDOC: http://med.der.edf.fr/logiciels/med-2.3.6/doc/html/modele_de_donnees.html
+
+.. You can refer to this reference using the keyword: |LINK_EDF_MEDFICHIERDOC|_
+.. |LINK_EDF_MEDFICHIERDOC| replace:: Documentation de MED fichier
+.. _LINK_EDF_MEDFICHIERDOC: http://med.der.edf.fr/logiciels/med-2.3.6/doc
+
+.. You can refer to this reference using the keyword: |LINK_EDF_SALOME_MED__MED|_
+.. |LINK_EDF_SALOME_MED__MED| replace:: SALOME_MED::MED
+.. _LINK_EDF_SALOME_MED__MED: http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/interfaceSALOME__MED_1_1MED.html
+
+.. RENVOIES:
+
+.. You can refer to this reference using the keyword: |SEE_MEDMEM_CORBA|
+.. |SEE_MEDMEM_CORBA| replace:: :ref:`L'interface CORBA SALOME_MED<xmed-medmem_corbainterface>`
+
+
+.. SNAPSHOTS:
+
+.. |XMED_SPECIFICATIONS_PDF| replace:: version pdf
+.. _XMED_SPECIFICATIONS_PDF: _static/documents/xmed-specifications.pdf
+
+.. |XMED_DEVELGUIDE_PDF| replace:: version pdf
+.. _XMED_DEVELGUIDE_PDF: _static/documents/xmed-develguide.pdf
+
+.. |XMED_USERGUIDE_PDF| replace:: version pdf
+.. _XMED_USERGUIDE_PDF: _static/documents/xmed-userguide.pdf
diff --git a/src/MEDOP/doc/sphinx/xmed-develguide.rst b/src/MEDOP/doc/sphinx/xmed-develguide.rst
new file mode 100644 (file)
index 0000000..be5d72b
--- /dev/null
@@ -0,0 +1,239 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, med, développement
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Guide de développement
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_DEVELGUIDE_PDF|_)
+
+Ce document est la documentation technique du module XMED. Il fournit
+les instructions à suivre pour installer le module en vue d'un travail
+de développement, puis décrit les éléments de conception qui
+structurent le module.
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+.. warning:: Ce document est en travaux. Tant que cet avis n'aura pas
+   disparu, veuillez en considérer le plan et le contenu encore
+   incomplets, temporaires et sujets à caution.
+
+Mise en place d'un espace de développement
+==========================================
+
+Gestion de configuration du module XMED
+---------------------------------------
+
+Les sources du module (répertoire ``xmed``) sont archivés en dépôt de
+configuration dans une base git du projet NEPAL. Ils peuvent être
+récupérés au moyen de la commande::
+
+ $ git clone git@cli70rw.der.edf.fr:xom/xmed.git
+
+Cette commande installe un répertoire ``xmed`` contenant l'ensemble
+des sources du module XMED.
+
+Le module XMED a pour pré-requis logiciel la plateforme SALOME:
+
+* SALOME version 6.1.3 (au moins) à télécharger à l'URL
+  http://pal.der.edf.fr/pal/projets/pal/releases/V6_1_3
+* On peut également utiliser une version dérivée comme SALOME-MECA 2010.1
+* Installer la plate-forme choisie selon les instructions fournies.
+
+Le module XMED utilise également une bibliothèque interne au projet
+NEPAL, appelée XSALOME, et qui fournit une extension aux fonctions de
+SALOME pour un usage de développement (XSALOME signifie eXtension
+SALOME). Les sources de cette bibliothèque doivent être récupérés au
+moyen de la commande::
+
+ $ git clone git@cli70rw.der.edf.fr:xom/xsalome.git
+
+Cette commande installe un répertoire ``xsalome`` contenant l'ensemble
+des sources de la bibliothèque XSALOME.
+.. note:: La bibliothèque XSALOME n'est pas un module SALOME mais une
+   simple bibliothèque de fonctions qui complète ou rend plus facile
+   d'utilisation les fonctions de SALOME. Elle NE DOIT EN AUCUN CAS
+   être intégrée à d'autres projets que les projets internes NEPAL ou
+   MAILLAGE. Il s'agit en effet d'une bibliothèque de transition qui
+   héberge des développements destinés à être reversés dans la
+   plate-forme SALOME. Le contenu et les interfaces de XSALOME ne peut
+   donc être garanti sur le long terme.
+
+Installation et lancement de l'application
+------------------------------------------
+
+L'installation suppose qu'une version 6.1.3 de SALOME (ou plus) est
+disponible et que le shell de travail est étendu avec l'environnement
+de SALOME. En général, par des commandes de la forme::
+
+ $ . /where/is/salome/prerequis.sh
+ $ . /where/is/salome/envSalome.sh
+
+La compilation des modules xsalome et xmed suit le standard SALOME. La
+bibliothèque xsalome est un prérequis à la compilation de xmed. Pour
+cela, la variable d'environnement XSALOME_DIR doit être spécifiée pour
+la configuration de la procédure de reconstruction de xmed::
+
+ $ export XSALOME_DIR=<xsalome_installdir>
+
+Aprés l'installation de xmed, il est possible de générer
+automatiquement une application SALOME prête à l'emploi pour la
+manipulation de champs::
+
+ $ <xmed_installdir>/bin/salome/xmed/appligen/appligen.sh
+
+Cette commande génére un répertoire ``appli`` à l'emplacement où elle
+est exécutée. Il reste à lancer l'application SALOME au moyen de la
+commande::
+ $ ./appli/runAppli -k
+
+Exécution des tests unitaires
+-----------------------------
+
+Les tests unitaires peuvent être exécutés au moyen de scripts python
+lancés depuis une session shell SALOME. Dans un nouveau shell, taper::
+
+ $ ./appli/runSession
+ [NS=mars:2810]$ python appli/lib/python2.6/site-packages/salome/xmed/test_medoperation.py
+
+L'exécution imprime un rapport détaillant le résultat pour chaque
+fonction de test::
+
+ test_addition (__main__.MyTestSuite) ... ok
+ test_arithmetics (__main__.MyTestSuite) ... ok
+ test_composition (__main__.MyTestSuite) ... FAIL
+ test_litteral_equation (__main__.MyTestSuite) ... ok
+ test_modification_of_attributes (__main__.MyTestSuite) ... ok
+ test_unary_operations (__main__.MyTestSuite) ... ok
+ test_update_metadata (__main__.MyTestSuite) ... ok
+
+Les scripts de test sont:
+
+* ``test_medoperation.py``: tests des operations de champs telles
+  qu'elles sont mises en oeuvre depuis l'interface textuelle.
+* ``test_xmed.py``: tests des composants CORBA mis en oeuvre
+  (``MEDDataManager`` et ``MEDCalculator``)
+
+Architecture du module XMED
+===========================
+
+Le module MED pour la manipulation de champs est composé de:
+
+* une bibliothèque de fonctions pour le traitement de données sur des
+  maillages et des champs conformes au modèle MED (package
+  MEDCoupling, MEDLoader et REMAPPER);
+* une interface graphique pour la mise en oeuvre des cas standard de
+  manipulation de champs;
+* une ensemble d'outils pour intervenir sur des fichiers au format
+  MED.
+
+Une bibliothèque de fonctions pour le traitement de données
+-----------------------------------------------------------
+
+La figure ci-dessous montre la structure des paquets logiciels qui
+constituent la bibliothèque:
+
+.. image:: images/medlayers.png
+   :align: center
+
+Elle comprend en particulier les paquets suivants:
+
+* MEDCoupling: qui décrit les structures de données pour porter les
+  maillages et les champs
+* MEDLoader: qui fournit les fonctions de persistence sous forme de
+  fichiers au format MED (lecture et écriture).
+* REMAPPER:
+
+Il est important de noter que MEDCoupling n'a aucune dépendance
+logicielle autre que la bibliothèque C++ standard. Ceci permet
+d'envisager son implantation dans un code de calcul ou un outil de
+traitement sans tirer l'ensemble pré-requis de SALOME.
+
+Une interface graphique pour l'exécution des cas standard
+---------------------------------------------------------
+
+
+Un ensemble d'outils pour le traitement de fichiers
+---------------------------------------------------
+
+
+Description des composants
+==========================
+
+MEDDataManager - Le gestionnaire des données de session
+-------------------------------------------------------
+
+Le composant MEDDataManager s'occupe de fournir les données MED sur
+demande des interfaces clientes, en particulier pour module de
+pilotage fieldproxy.py. Ces données peuvent avoir plusieurs sources,
+en général elle proviennent d'un fichier au format med contenant des
+champs définis sur des maillages. Les données sont identifiées à la
+lecture des métadonnées de description dans le fichiers med, puis les
+valeurs des champs et les maillages support sont chargés au besoin.
+
+Le chargement des métadonnées de description se fait par la méthode::
+
+  addDatasource(const char \*filepath)
+
+
+
+Eléments d'implémentation
+=========================
+
+Ecrire un service CORBA qui retourne une sequence de FieldHandler:
+
+.. code-block:: cpp
+
+  MEDOP::FieldHandlerList * MyFunction(...) {
+    vector<MEDOP::FieldHandler*> fieldHandlerList;
+    ...
+  
+    fieldHandlerList.push_back(fieldHandler);
+  
+    // Map the resulting list to a CORBA sequence for return:
+    MEDOP::FieldHandlerList_var fieldHandlerSeq = new MEDOP::FieldHandlerList();
+    int nbFieldHandler = fieldHandlerList.size();
+    fieldHandlerSeq->length(nbFieldHandler);
+    for (int i=0; i<nbFieldHandler; i++) {
+      fieldHandlerSeq[i] = *fieldHandlerList[i];
+    } 
+    return fieldHandlerSeq._retn();
+  }
+
+Ecrire un service CORBA qui retourne une structure CORBA:
+
+.. code-block:: cpp
+
+    MEDOP::FieldHandler * fieldHandler = new ...
+    _fieldHandlerMap[fieldHandler->id] = fieldHandler;
+
+    // >>> WARNING: CORBA struct specification indicates that the
+    // assignement acts as a desctructor for the structure that is
+    // pointed to. The values of the fields are copy first in the new
+    // structure that receives the assignement and finally the initial
+    // structure is destroyed. In the present case, WE WANT to keep
+    // the initial fieldHandler in the map. We must then make a deep
+    // copy of the structure found in the map and return the copy. The
+    // CORBA struct specification indicates that a deep copy can be
+    // done using the copy constructor.  <<<
+    return new MEDOP::FieldHandler(*fieldHandler);
+
+
+
+ANNEXE: Bug en cours
+====================
+
+TO FIX:
+
+* la composition d'opérations n'est pas possible (ex: 2*f1+f2) car
+  2*f1 est indiqué comme non compatible (il semble qu'il n'ai pas la
+  reference correcte vers le maillage).
+* le script de test test_medoperation.py plante si le module xmed n'a
+  pas été chargé avec des données chargées.
diff --git a/src/MEDOP/doc/sphinx/xmed-prototype-develguide.rst b/src/MEDOP/doc/sphinx/xmed-prototype-develguide.rst
new file mode 100644 (file)
index 0000000..de2387b
--- /dev/null
@@ -0,0 +1,731 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, XMED
+   :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Démonstrateur XMED, documentation technique
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Cette note fait la synthèse des développements effectués pour le
+maquettage des fonctions de manipulation de champs dans SALOME. Elle
+présente les principes retenus en matière de conception, c'est-à-dire
+concernant les mécanismes techniques sous-jacents, et en matière
+d'ergonomie, c'est-à-dire concernant les modalités d'utilisation dans
+l'environnement SALOME.
+
+Ces principes sont illustrés par des développements implantés dans le
+module XMED, développé pour les besoins de l'analyse, et dans le
+module MED distribué avec la plateforme SALOME.
+
+.. note:: la lecture de ce chapitre demande une connaissance de la
+   structure de classes du module MED, en particulier la distinction
+   entre les classes ``MEDMEM::*`` et les servants CORBA associés
+   (classe ``SALOME_MED::*``).
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Principes directeurs
+====================
+
+Objectif et motivation
+----------------------
+
+L'objectif de maquettage est de trouver une architecture technique qui
+permet d'exécuter le cas d'utilisation suivant:
+
+* Chargement d'un fichier med dans SALOME (a priori dans le module MED)
+* Sélection graphique des champs de l'étude à mettre à disposition
+  dans la console utilisateur ("calculette" en mode texte qui
+  concraitement correspond à l'interface python de SALOME).
+* Dans la calculette, exécution d'opérations algébriques (+,-,*,/)
+  entre champs avec possibilité d'utiliser des scalaires dans des
+  opérations de type transformation linéaire (y=ax+b ou y et x sont
+  des champs et a et b des scalaires). Opérations pow, sqrt.
+* Possibilité de visualiser les champs produits avec VISU pour
+  contrôle des résultats.
+* Possibilité d'exporter des champs produits dans un fichier med.
+
+Eléments de contexte
+--------------------
+
+Les opérations de manipulation de champs sont en grande partie
+implémentées dans la bibliothèque MEDMEM. Pour illustration, le
+fragment de code ci-dessous montre comment une addition de champ peut
+être opérée en python:
+
+.. code-block:: python
+
+    from libMEDMEM_Swig import MedDataManager
+    from xmed.helper import readMed, writeMed
+
+    # Load the medmem data structure from a med file
+    med = readMed("/tmp/input.med")
+    # Then create a med data manager to deal with the fields data
+    dm  = MedDataManager(med)
+    # Get the timestamps (dt,it)=(-1,-1) of the fields "testfield1" and "testfield2"
+    f1 = dm.getFieldDouble("testfield1",-1,-1)
+    f2 = dm.getFieldDouble("testfield2",-1,-1)
+
+    # Create a new field as the sum of f1 and f2
+    r  = f1 + f2
+    # And add this new field to the med data structure
+    med.addField(r)
+
+    # Finally, write the whole data in an output med file
+    writeMed(med,"/tmp/output.med")
+
+Ceci montre que les champs peuvent être manipulés avec une interface
+relativement ergonomique (une addition de deux champs f1 et f2 s'écrit
+f1+f2) tant que l'on manoeuvre des objets MEDMEM purs (classes C++ du
+package MEDMEM et wrapping python du package MEDMEM_SWIG).
+
+Par ailleurs, le fonctionnement actuel des modules SALOME qui
+manoeuvrent des données MED est d'instancier les structures de données
+MEDMEM au niveau de la partie serveur, c'est-à-dire au niveau des
+servants CORBA hébergés dans le processus ``SALOME_Container``, et de
+donner accés à ces données depuis l'étude SALOME au travers de
+pointeurs CORBA. Ce choix d'architecture présente l'avantage de
+centraliser au niveau serveur la gestion du cycle de vie des données
+informatiques et de pouvoir distribuer des "poignées" pour manipuler
+ces données depuis chaque point de l'application qui sait accéder au
+bus CORBA, l'interface graphique en particulier.
+
+
+Hypothèse de travail
+--------------------
+
+Compte-tenu de l'objectif de maquettage et des éléments de contexte
+existant, on cherche une solution dans le cadre des hypothèses
+de travail suivantes:
+
+* La manipulation des champs se fait dans l'environement graphique de
+  SALOME.
+* Dans cet environnement, on souhaite pouvoir sélectionner
+  graphiquement les champs à considérer, puis manipuler ces champs
+  dans l'interface texte au moyen de variables python avec une syntaxe
+  aussi simple que celle définie dans le wrapping python de MEDMEM,
+  c'est-à-dire que pour faire l'addition de 2 champs f1 et f2, on veut
+  pouvoir écrire f1+f2.
+* Les données MED sont physiquement dans la partie serveur de SALOME
+  et accessibles via des pointeurs CORBA (interface spécifiée dans
+  MED.idl). On exclu la recopie de données au niveau du client
+  graphique.
+
+Dans le cadre de ces hypothèses, la difficulté technique réside dans
+la mise au point d'une interface de communication entre des variables
+manipulées par l'utilisateur dans l'interface graphique (c'est-à-dire
+dans le processus ``SALOME_SessionServer``) et des objets MEDMEM
+instanciés dans le containeur des servants CORBA (c'est-à-dire dans le
+processus ``SALOME_Container``).
+
+
+Eléments de conception
+======================
+
+
+Implantation technique
+----------------------
+
+Le diagramme ci-dessous représente l'organisation des principaux
+paquets logiciels du module MED:
+
+.. image:: images/medmem-layers.png
+   :align: center
+
+Les cadres bleus représentent le lieu d'implantation des
+développements effectués dans le module MED pour les besoins du
+maquettage. On notera en particulier les interventions aux niveaux
+suivants:
+
+* interfaces idl: ajout de l'interface MEDOP.idl
+* package MEDMEM_I: ajout du servant SALOME_MED::MEDOP qui implémente
+  l'interface MEDOP.idl
+
+Architecture technique
+----------------------
+
+Les schéma ci-dessous représente les objets informatiques qui sont à
+l'oeuvre pour la réalisation des opérations sur les champs:
+
+.. image:: /images/xmed-architecture.png
+   :align: center
+   :alt: Objets mis en oeuvre dans l'interface de manipulation de champs
+
+On distingue les objets suivants:
+
+* Une instance de ``MEDMEM::MED``, correspondant à la structure de donnée
+  MED chargée en mémoire.
+* Des instances de ``MEDMEM::FIELD`` qui représentent les champs med
+  chargés en mémoire.
+* Une instances de ``SALOME_MED::MED`` et des instances de
+  ``SALOME_MED::FIELD`` qui sont les servants CORBA respectivement de la
+  structure med et des champs qui lui sont associés et chargés en
+  mémoire.
+* Une instance de ``SALOME_MED::MEDOP`` qui est le servant CORBA qui
+  centralise la mise en oeuvre des opérations de champs sur le serveur
+  ``SALOME_Container``. Le servant MEDOP détient en attribut une référence
+  sur la structure ``MEDMEM::MED``, ce qui lui permet d'accéder
+  directement aux champs ``MEDMEM::FIELD`` à partir de leur nom et du pas
+  de temps.
+* Des instances de ``FieldProxy`` qui correspondent aux variables
+  manipulées au niveau de l'interface graphique et qui représentent
+  les champs. Une instance de FieldProxy possède détient les
+  références des servants ``SALOME_MED::MEDOP`` et
+  ``SALOME_MED::FIELD`` sous la forme de pointeurs CORBA de noms
+  ``medop_ptr`` et ``field_ptr`` respectivement.
+* Il existe également une instance de ``MedProxy`` non représentée
+  dans ce diagramme. Cette instance correspond à une variable qui
+  permet de manipuler la structure med.
+
+.. note:: Les éléments apportés par la maquette sont les classes
+   ``SALOME_MED::MEDOP``, ``MedProxy`` et ``FieldProxy``. Les autres
+   éléments ont pu être modifiés légèrement pour les besoins de
+   l'intégration ou pour la correction de quelques bugs.
+
+Le cycle de vie de ces objets est le suivant.
+
+Pour ce qui concerne les instances de la structure ``MEDMEM::MED`` et
+des champs ``MEDMEM::FIELD``, la création est faite au moment du
+chargement du fichier med dans SALOME au moyen du module MED. A cette
+occasion, les servants CORBA associés ``SALOME_MED::MED`` et
+``SALOME_MED::FIELD`` sont créés et des références vers ces servants
+sont publiés dans l'étude. Ils peuvent donc être sélectionnés par
+l'utilisateur dans l'interface graphique. L'ensemble de ces données
+préexiste à la manipulation de champs.
+
+Les objets ``SALOME_MED::MEDOP`` sont instanciés au sein du servant
+``SALOME_MED::MED`` auquel ils sont associées. Le servant
+``SALOME_MED::MED`` possède une référence sur la structure
+``MEDMEM::MED`` et il la transmet à l'instance du servant
+``SALOME_MED::MEDOP`` qu'il construit. L'opérateur MEDOP est donc
+autonome par la suite pour manipuler les données MED, et les champs en
+particulier. Le code python ci-dessous montre comment un opérateur med
+``SALOME_MED::MEDOP`` peut être créé puis utilisé pour réaliser
+l'addition de deux champs:
+
+.. code-block:: python
+
+   import salome
+   salome.salome_init()
+   import SALOME_MED
+   
+   medComp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+   medObj  = medComp.readStructFile("myfile.med",salome.myStudyName)
+   medOp   = medObj.createMedOperator()
+   
+   f1 = medObj.getField("testfield1",-1,-1)
+   f2 = medObj.getField("testfield2",-1,-1)
+   
+   somme = medOp.add(f1,f2)
+
+Il est à noter qu'une instance de ``SALOME_MED::MEDOP`` est associé à
+une instance unique de ``SALOME_MED::MED`` (et donc indirectement de
+``MEDMED::MED``) pour toute la durée de son cycle de vie. Par contre,
+un servant ``SALOME_MED::MED`` peut être associé à plusieurs servants
+``SALOME_MED::MEDOP`` différents. Un servant ``SALOME_MED::MEDOP`` a
+une référence directe sur la structure ``MEDMEM::MED`` et peut la
+manoeuvrer pour demander des champs, faire des opérations avec ces
+champs, ajouter le champs résultat à la structure et enfin retourner
+un servant ``SALOME_MED::FIELD`` qui encapsule le champ résultat.
+
+Enfin, quelques éléments concernant la classe ``FieldProxy``. Une
+instance de ``FieldProxy`` est un objet python qui peut être
+manoeuvrée dans l'interpréteur SALOME et qui référence un champ MED
+localisé sur le serveur ``SALOME_Container`` (par le mécanisme décrit
+ci-dessus). C'est à ce niveau qu'on règle les détails d'ergonomie
+d'usage (cf. paragraphe ci-après). La création d'un objet
+``FieldProxy`` déclenche la création d'un opérateur med (instance de
+``SALOME_MED::MEDOP``) qui lui est associé et dont il conserve la
+référence CORBA en attribut (noté ``medop_ptr`` sur le diagramme). Cet
+opérateur ``medop_ptr`` peut être requêter pour exécuter toutes les
+opérations possibles sur ce champ, comme illustrer sur l'exemple
+ci-dessus.
+
+
+Rôle des objets proxy
+---------------------
+
+Dans le modèle d'architecture présenté ci-dessus, on introduit deux
+types d'objets proxy:
+
+* Les objets de classe ``FieldProxy`` qui représentent des poignées de
+  manipulation des champs ``MEDMEM::FIELD`` physiquement instanciés
+  dans le container SALOME.
+* Les objets de classe ``MedProxy`` qui représentent des poignées de
+  manipulation des structures ``MEDMEM::MED`` physiquement instanciées
+  dans le container SALOME.
+
+Elles sont instanciées dans l'interpréteur python SALOME pour
+manipulation dans l'interface textuelle à partir de la donnée du
+pointeur vers le servant ``SALOME_MED::MED`` et de l'identifiant du
+champ (le nom du champ et le pas de temps défini par le numéro d'ordre
+et le numéro d'iteration:
+
+.. code-block:: python
+
+   import salome
+   salome.salome_init()
+   import SALOME_MED
+
+   medComp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")   
+   medObj  = medComp.readStructFile("myfile.med",salome.myStudyName)
+
+   from xmed import fieldproxy
+   from xmed import medproxy
+
+   f1 = fieldproxy.getFieldFromMed(medObj, "testfield1", -1, -1)
+   f2 = fieldproxy.getFieldFromMed(medObj, "testfield2", -1, -1)
+
+   field_somme  = f1 + f2
+   field_offset = f1 + 5.3
+
+Dans cet exemple, les variables ``f1``, ``f2``, ``field_somme`` et
+``field_offset`` sont des objets de classe ``FieldProxy``. Ils
+correspondent aux variables physiquement manipulées par
+l'utilisateur pour désigner les champs dans les opérations.
+
+Ces classes proxy sont conçues pour être le lieu d'implémentation de
+l'interprétation des commandes utilisateur et donc de l'ergonomie
+de manipulation des champs au niveau l'interface textuelle. Ce point
+est développé :ref:`plus bas <develguide_execFieldOperation>`.
+
+Programmation de l'interface textuelle
+--------------------------------------
+
+Dans le cadre de la maquette, l'interface de manipulation des champs
+est l'interface textuelle python intégrée à SALOME. Dans la pratique,
+l'utilisateur manipule des variables python qui correspondent à des
+objets de classe ``FieldProxy`` équipées des fonctions requises et de
+l'ergonomie nécessaire à la mise en oeuvre des opérations (voir
+ci-dessus).
+
+Or, l'hypothèse de travail est que les données MED sont chargées dans
+SALOME et publiées dans l'étude pour point d'accés depuis l'interface
+graphique. L'utilisateur choisi un champs directement dans l'arbre
+d'étude (ou dans une interface graphique dédiée) puis demande qu'il
+soit mis à disposition dans l'interface python sous un nom de variable
+à choisir. Les captures d'écran ci-dessous montre la séquence
+graphique en images:
+
+.. |IMG_SELECT| image:: images/medop-gui-selectfield_scale.png
+.. |IMG_ALIAS| image:: images/medop-gui-aliasfield_scale.png
+
++---------------+---------------+ 
+| |IMG_SELECT|  | |IMG_ALIAS|   |
++---------------+---------------+ 
+
+L'image de gauche montre la sélection du pas de temps, l'image de
+droite la boîte de dialogue qui permet la saisie de l'alias avec
+lequel le champs sera manipulé dans l'interface textuelle. La
+validation de cette fenêtre doit mettre automatiquement le champ à
+disposition dans l'interface python SALOME et sous le nom de variable
+spécifié par l'alias saisi.
+
+Pour cela, il y a un couplage technique à programmer entre l'interface
+graphique et l'interface textuelle python, avec en particulier la
+transmission des pointeurs vers les servants CORBA mis en jeu dans la
+sélection.
+
+Ce couplage est implanté au niveau de la classe MEDGUI.cxx du module
+MED (où de la classe XMEDGUI.cxx du module XMED pour la maquette) qui
+implémente l'interface graphique du module. Pour rappel, l'interface
+graphique d'un module SALOME se présente sous la forme d'une classe
+centrale de nom ``<MODULE_NAME>GUI`` et qui spécialise la classe
+``SalomeApp_Module``. Cette classe possède une méthode ``getApp()``
+par laquelle on peut récupérer une instance de la console python
+embarquée (this->getApp()->pythonConsole()).
+
+Le code suivant illustre l'envoie d'une commande python par ce
+mécanisme. Dans cet example, on cherche à reconstituer dans le
+contexte de la console python un pointer vers un objet med instancié
+dans le contexte C++ de l'application graphique. Pour cela, on
+communique la référence de l'objet sous la forme sérialisé (IOR pour
+un objet CORBA):
+
+.. code-block:: cpp
+
+   #include <PyConsole_Console.h>
+   #include <QString>
+   #include <QStringList>
+   #include <SalomeApp_Application.h>
+
+   // We suppose here that we have a CORBA object reference (object of
+   // type *_ptr or *_var), for example a SALOME_MED::MED object.
+   SALOME_MED::MED_ptr medObj = ... // anything to get this object  
+
+   // Get the IOR of this object
+   QString medIOR = SalomeApp_Application::orb()->object_to_string(medObj);
+
+   PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+   QStringList commands;
+   commands+="import salome";
+   commands+=QString("med=salome.orb.string_to_object(\"%1\")").arg(medIOR);
+      
+   QStringListIterator it(commands);
+   while (it.hasNext()) {
+       pyConsole->exec(it.next());
+   }
+
+Le code réel de la maquette est basé sur ce principe et transmet à la
+console python des lignes de commandes qui permettent de reconstruire:
+
+* un pointeur CORBA vers le servant ``SALOME_MED::MED`` associé au
+  champ sélectionné;
+* une instance de ``FieldProxy`` qui correspond au champ sélectionné
+  et avec pour nom de variable la valeur de l'alias saisi dans
+  l'interface graphique.
+
+Au niveau du code C++ de la classe ``XMEDGUI.cxx``, cela se traduit
+par la fabrication de la liste de commandes suivante pour envoie à la
+console python par le mécanisme illustré plus haut:
+
+.. code-block:: cpp
+
+   QStringList commands;
+   commands+="from xmed.fieldproxy import getFieldFromMed";
+   commands+="from xmed.medproxy import getMedProxy";
+   commands+=QString("if not dir().__contains__('med'): med = getMedProxy(\"%1\")").arg(medIOR);
+   commands+=QString("%1=getFieldFromMed(med,\"%3\",%4,%5)").arg(*alias).arg(fieldName).arg(orderIndex).arg(iterationIndex);
+
+Les variables ``medIOR``, ``fieldName``, ``orderIndex`` et
+``iterationIndex`` sont construites à partir du champ sélectionné par
+des techniques de programmation standard dans SALOME qu'on peut
+examiner en détail dans la classe ``XMEDGUI`` (voir méthode
+``XMEDGUI::LoadIntoPythonConsole()``). La variable ``alias`` est la
+chaîne saisie par l'utilisateur dans la fenêtre de dialogue.
+
+Le point important à noter ici est que les données à transmettre
+doivent être fournies sous forme de chaînes de caractères ou de types
+simples. C'est pourquoi la référence au servant CORBA
+``SALOME_MED::MED`` est transmise ici sous la forme de son IOR,
+c'est-à-dire une chaîne de caractères qui permet l'identification de
+l'objet au niveau du bus CORBA.
+
+Au niveau de la console python cela correspond à l'exécution des
+commandes suivantes:
+
+.. code-block:: python
+
+   from xmed.fieldproxy import getFieldFromMed
+   from xmed.medproxy import getMedProxy
+   
+   med = getMedProxy("IOR:010000001700000049444c3a53414c4f4d455f4d45442f4d45443a312e300000010000000000000064000000010102000e0000003133302e39382e37372e313733009e0a0e000000feadc4ca4c00003169000000001100000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100")
+   
+   f1=getFieldFromMed(med,"testfield1",-1,-1)
+
+Ce jeu d'instructions reconstitue un pointeur vers le servant CORBA
+``SALOME_MED::MED`` à partir de son identifiant IOR (voir la fonction
+``getMedProxy(...)``, puis crée une instance de ``FieldProxy``
+associée à ce servant (en fait associée au servant
+``SALOME_MED::MEDOP`` créé sur demande par le servant
+``SALOME_MED::MED``, voir la fonction ``getFieldFromMed(...)``).
+
+.. _develguide_execFieldOperation:
+
+Exécution des opérations sur le champs
+--------------------------------------
+
+Les variables définies dans l'interface textuelle pour désigner les
+champs à manipuler sont des objets de classe ``FieldProxy``.
+
+Cette classe a une propriété remarquable, elle est construite sur un
+design pattern de type "Proxy" qui pointe vers un servant
+``SALOME_MED::FIELD``. Cela signifie que l'on ne peut pas accéder
+directement au servant vers lequel il pointe, mais que l'on passe
+systématiquement par une procédure de l'objet proxy qui fait "boîte
+aux lettres":
+
+.. code-block:: python
+
+   class FieldProxy:
+
+     def __getattr__( self, name ):
+        """
+        This method realizes the proxy pattern toward the servant
+        SALOME_MED::FIELD.
+        """
+        return getattr( self.__field_ptr, name )
+
+Ce pattern permet l'implémentation de pré-traitement et/ou de
+post-traitement suivant le type d'accés que l'on cherche à faire.
+
+Il permet aussi et surtout de fournir un objet python qui présente
+l'interface de ``SALOME_MED::FIELD`` dotée d'extentions adhoc pour les
+operations de champs. Ici, python est ton ami, car il s'agit pour cela
+d'équiper la classe ``FieldProxy`` des automatismes prévus nativement
+par python pour les operations entre objets. En particulier, la
+re-définition des fonctions internes ``__add__`` (opérateur addition),
+``__sub__`` (opérateur soustraction), ``__mul__`` (opérateur
+multiplication) et ``__div__`` (opérateur division) au sein de la
+classe ``FieldProxy``, permet de prendre la main sur le comportement
+des opérations algébriques et de définir une ergonomie sur mesure. Par
+exemple, la méthode ``__add__`` peut gérer les variantes "f1+f2"
+(ajout de deux variables de type FieldProxy) et "f1+5.3" (ajout d'un
+réel à une variable de type FieldProxy):
+
+.. code-block:: python
+
+   class FieldProxy:
+
+     def __add__(self, operande):
+        """
+        This can process the addition of two fields or the addition of
+        a scalar to a field. It depends weither the operande is a
+        FieldProxy or a simple scalar numerical value.
+        """
+        if isinstance(operande, FieldProxy):
+            # The operande is an other field
+            otherField_ptr = operande.__field_ptr
+            rfield_ptr = self.__medOp_ptr.add(self.__field_ptr, otherField_ptr)
+        else:
+            # The operande is a scalar numerical value that must be
+            # considered as an offset in a linear transformation
+            factor = 1
+            offset = operande
+            rfield_ptr = self.__medOp_ptr.lin(self.__field_ptr, factor, offset)
+        return FieldProxy(self.__med_ptr, rfield_ptr)
+
+Il est à noter que dans les deux cas de figure (opérande=champ ou
+opérande=scalaire), la fonction délègue la réalisation concrète de
+l'opération au servant ``SALOME_MED::MEDOP`` (identifié ici par
+l'attribut ``self.__medOp_ptr`` et que l'on appelera l'*opérateur
+MEDOP* dans la suite pour simplifier), mais n'appelle pas le même
+service de calcul (l'addition entre champs dans le premier cas,
+l'application d'une transformation linéaire de type y=factor*x+offset
+dans le deuxième cas).
+
+Pour couvrir le cas des opérations algébriques, l'opérateur MEDOP
+présentre l'interface suivante (cf. fichier ``MEDOP.idl`` qui définie
+l'interface du servant ``SALOME_MED_MEDOP``):
+
+.. code-block:: cpp
+
+    /*! Addition of the fields f1 and f2 ( f1+f2) */
+    FIELD add(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+    /*! Substraction of the fields f1 and f2 (f1-f2) */
+    FIELD sub(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+    /*! Multiplication of the fields f1 by f2 (f1*f2) */
+    FIELD mul(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+    /*! Division of the fields f1 by f2 (f1/f2) */
+    FIELD div(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+    /*! Power of the field f (f^power) */
+    FIELD pow(in FIELD f, in long power) raises (SALOME::SALOME_Exception);
+    /*! Linear transformation of the field f (factor*f+offset) */
+    FIELD lin(in FIELD f, in double factor, in double offset) raises (SALOME::SALOME_Exception);
+    /*! Dublication of the field f */
+    FIELD dup(in FIELD f) raises (SALOME::SALOME_Exception);
+
+Cette interface est implémentée dans la classe C++ ``MEDOP_i`` du
+module MED (voir fichier ``MEDMEM_MedOp_i.hxx`` du package
+``MEDMEM_I``). C'est au sein des instances de cette classe que sont
+réalisées les opérations et que sont produites physiquement les
+données. Typiquement, les opérations présentées ici produisent un
+champ ``MEDMEM::FIELD`` sur la base duquel elle fabrique un servant
+``SALOME_MED::FIELD`` pour finalement retourner un pointeur CORBA sur
+ce servant.
+
+Ce mécanisme global peut être étendu sans limitation à tout les types
+d'opération qui sont envisagés dans les spécifications de manipulation
+des champs dans SALOME.
+
+
+Contrôle visuel des champs
+--------------------------
+
+Les illustrations ci-dessous montrent qu'une fonction de visalisation
+est implémentée dans la maquette pour permettre le contrôle visuel
+d'un champ au moyen d'une représentation 3D (une carte spatiale du
+module du champ dans l'exemple implémenté par défaut):
+
+.. |IMG_VISU| image:: images/medop-gui-visufield_scale.png
+.. |IMG_RESULT| image:: images/medop-gui-result_scale.png
+
++---------------+---------------+ 
+| |IMG_VISU|    | |IMG_RESULT|  |
++---------------+---------------+ 
+
+Cette fonction répond au besoin de contrôle interactif des résultats
+produits par les opérations de manipulation de champs.
+
+Il s'agit là d'un usage classique de SALOME, dans lequel on demande au
+module VISU de faire une représentation 3D d'un champ spécifié par la
+donnée du servant ``SALOME_MED::FIELD`` qui lui est associé
+(représenté par la variable ``field_ptr`` dans l'exemple ci-dessous):
+
+.. code-block:: python
+   
+   import salome
+   import VISU
+
+   visuComp = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+   visuComp.SetCurrentStudy(salome.myStudy)
+
+   # Then we can import the specified field in the VISU module. This
+   # creates an study entry in the VISU folder.
+   result = visuComp.ImportMedField(field_ptr)
+
+   meshName   = field_ptr.getSupport().getMesh().getName()
+   fieldName  = field_ptr.getName()
+   iterNumber = field_ptr.getIterationNumber()
+   scalarmap = visuComp.ScalarMapOnField(result,
+                                         meshName,
+                                         visuEntityType,
+                                         fieldName,
+                                         iterNumber)
+
+Dans ce jeu d'instructions donné pour exemple (non fonctionnel, en
+particulier à cause de la non définition de la variable
+``visuEntityType``, voir remarque plus bas), le composant VISU
+désigné ici par la variable ``visuComp`` va chercher les données du
+champ en interrogeant le servant ``SALOME_MED::FIELD`` transmis en
+argument de la fonction ``ImportMedField``, puis produit une
+représentation de type "scalarmap".
+
+.. note:: Compte-tenu des propriétés de la classe FieldProxy décrites
+   plus haut conférées par le pattern "Proxy", on peut transmettre ici
+   aussi bien le servant CORBA que l'instance du proxy (la fonction
+   ``ImportMedField`` n'y verra que du feu).
+
+Le code complet et fonctionnel de la fonction d'affichage est dans le
+corps du module python ``fieldproxy.py`` sous la forme d'une fonction
+de nom ``visuField``. Il convient de noter que cette fonction doit
+établir une correspondance entre le type des entités tel que défini
+dans MED et dans VISU:
+
+.. code-block:: python
+
+    medEntityType = field_ptr.getSupport().getEntity()
+    if (medEntityType == SALOME_MED.MED_CELL):
+        visuEntityType = VISU.CELL
+    elif (medEntityType == SALOME_MED.MED_NODE):
+        visuEntityType = VISU.NODE
+
+
+Export des résultats de calcul
+------------------------------
+
+Tous les champs produits à l'occasion des opérations entre objets
+``FieldProxy`` sont automatiquement ajoutés à la structure med à
+laquelle is sont associés. Une convention d'attribution des noms est
+implémentée de sorte que par défaut aucune précision n'est demandée à
+l'utilisateur.
+
+La structure med peut être manipulée au moyen de la variable ``med``
+créée dans l'interface textuelle comme une instance de la classe
+``MedProxy``. La classe ``MedProxy`` fournit un objet qui présente
+l'interface du servant ``SALOME_MED::MED`` étendue de quelques
+fonctions utilitaires pour la gestion et le contrôle des données.
+
+En particulier, la sauvegarde de la structure dans un fichier est
+automatisée par la méthode ``save(medfilename)``:
+
+.. code-block:: python
+
+   med = medproxy.MedProxy(medObj)
+   med.save("/tmp/output.med")
+
+Cette méthode s'occupe de définir un driver d'écriture et de procéder
+à l'enregistrement des données de la structure med (les maillages, les
+champs présents au départ et tous les champs produits depuis la
+lecture initiale).
+
+Limitations
+===========
+
+L'implémentation de la maquette limite l'usage des opérations aux cas
+de figure suivants:
+
+* Seules les operations entre champs qui partagent le même support med
+  sont possibles. Ceci est une contrainte imposé par la conception
+  actuelle de MEDMEM.
+* Le résultat d'une opérations est calculé sur toutes les composantes
+  et tout le domaine de définition des champs en opérande. Cette
+  deuxième contrainte est juste parce que les usages plus fin,
+  notemment avec la notion de domaine de définition, n'a pas encore
+  été exéminée à ce jour.
+* Le nom d'un champ produit par une opération ne correspond pas au nom
+  de la variable python par laquelle on le réceptionne et on le
+  manipule. Le nom est attribué par une convention (ceci n'est pas
+  vraiment une limitation mais une caractéristique à connaître).
+
+On note également les restriction techniques suivantes:
+
+* Les données MEDMEM sont supposées être chargées par le composant MED
+  puis référencées dans l'étude SALOME (comme c'est fait aujourd'hui
+  par le module MED).
+* Dans certain cas, python n'est pas ton ami. Pour que les opérateur
+  de la classe ``FieldProxy`` soient pris en considération dans les
+  opérations sur les champs, il est indispensable que le premier
+  opérande d'une opération unitaire soit un champ (objet de classe
+  ``FieldProxy``). Par exemple: "field_offset = field + 5.3"
+  fonctionne alors que "field_offset = 5.3 + field" ne fonctionne pas
+  car python tente de traiter la situation au moyen de la fonction
+  ``__add__`` de la classe ``float`` (qui n'est pas modifiable).
+
+
+Notice informatique
+===================
+
+Gestion de configuration
+------------------------
+
+Les développements décrits dans ce chapitre sont répartis entre les
+modules MED et XMED (développé pour l'occasion). Cette séparation est
+faite par soucis de clarté et d'efficacité de développement, mais les
+éléménts du module XMED ont vocation à intégrer le module MED dans la
+mesure où les propositions techniques sont retenues pour le
+développement à venir.
+
+Le code source du module XMED peut être récupérés par la commande
+suivante::
+
+ $ svn co svn://nepal.der.edf.fr/FIELD/XMED_SRC/trunk XMED_SRC
+
+Le pré-requis est la plate-forme SALOME version 5.1.4 (ou plus)
+équipée au minimum des modules KERNEL, GUI, MED (branche BR_medop) et
+VISU. Pour récupérer la branche BR_medop du module MED, taper la
+commande::
+
+ $ cvs -d :pserver:anonymous@cvs.opencascade.com:2401/home/server/cvs/MED co -r BR_medop MED_SRC
+
+La configuration de référence est:
+
+* XMED: révision svn 41
+* MED: tag cvs BR_medop_20101025
+
+Moyens de tests
+---------------
+
+Plusieurs types de tests unitaires sont définis (reste à les
+automatiser proprement):
+
+* Test des servants et utilitaires de manipulation python:
+
+  - Dans XMED, package xmed/tests, utiliser le script
+    ``test_medoperation.py`` dans un interpréteur python lancé dans
+    une session shell SALOME. Ce script prépare des variables de test
+    et fournit des fonctions de test unitaire (à exécuter ou pour s'en
+    inspirer). Après avoir lancé SALOME via une application virtuelle,
+    on peut taper::
+      $ <APPLI_ROOT>/runSession
+      [NS=venus:2810] $ python -i test_medoperation.py
+      >>> 
+   
+  - Ceci permet de tester en particulier l'interface ``MedOp`` et son
+    utilisation dans le module python ``fieldproxy.py``.
+
+* Test des classes MEDMEM:
+
+  - Test de MEDMEM::MedDataManager dans ``MEDMEM_MedDataManager_test.cxx``
+
+Un fichier de test basique (mais néanmoins suffisant) de nom
+``tesfield.med`` est fourni avec les sources dans le répertoire
+``<XMED_SRC>/resources/datafiles`` et dans l'installation au niveau du
+répertoire ``<INSTALLDIR>/share/salome/resources/xmed/datadir``. Il
+contient deux champs ``testfield1`` et ``testfield2`` définis sur un
+pas de temps unique (dt,it=-1,-1). Ces champs définissent des valeurs
+par éléments (MED_CELL).
diff --git a/src/MEDOP/doc/sphinx/xmed-prototype-medmem.rst b/src/MEDOP/doc/sphinx/xmed-prototype-medmem.rst
new file mode 100644 (file)
index 0000000..da331c0
--- /dev/null
@@ -0,0 +1,513 @@
+.. meta::
+   :keywords: maillage, champ, MED, MEDMEM
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Note de travail concernant l'utilisation de MEDMEM
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module MED de SALOME comporte plusieurs composants d'intérêt pour
+la manipulation de champs:
+
+* la bibliothèque MEDMEM qui fournit une interface de programmation
+  pour manoeuvrer une structure MED
+* le module CORBA SALOME_MED qui matérialise le composant SALOME
+  (serveur corba) du module MED
+* l'interopérabilité avec le module VISU qui permet la visualisation
+  des champs manipulés dans MED
+
+Les sections ci-après donnent quelques éclairages techniques sur ces
+différents aspects. Les sources de démonstration peuvent être
+récupérés depuis le dépôt svn::
+
+ $ svn export svn://nepal.der.edf.fr/OM/manifield/trunk manifield
+ $ svn export svn://nepal.der.edf.fr/FIELD/demofield/trunk demofield
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Présentation synthétique de MED
+===============================
+
+MED désigne un modèle conceptuel pour décrire des données de type
+éléments finis (éléments finis, volumes finis et éléments
+discrets). Dans l'usage courant, il permet la description et l'échange
+des données de calcul de type maillages et champs. La documentation
+complète peut être trouvée à l'URL suivantes:
+
+* |LINK_EDF_MEDDOC|_ (version 2.3).
+
+On distingue deux implémentations informatiques de ce modèle:
+
+* MED fichier: qui permet la lecture et l'écriture de données depuis
+  un fichier au format med. Les opérations de lecture/écriture sont
+  atomiques (pas de chargement de la structure de données globale).
+* MED mémoire (noté MEDMEM): qui permet le chargement en mémoire d'une
+  image de la structure de données MED contenue dans un fichier au
+  format med. Les opérations peuvent être atomiques ou
+  globales.
+
+On notera simplement ici que MEDMEM utilise MED fichier pour les
+opérations de lecture/écriture et que MED fichier est indépendant de
+MED mémoire. La documentation complète de MED fichier peut être
+trouvée à l'URL suivante:
+
+* |LINK_EDF_MEDFICHIERDOC|_
+
+La bibliothèque MEDMEM
+======================
+
+Le modèle de classes MEDMEM est structuré autour des notions de MESH
+(les maillages), de SUPPORT (le profil des entités) et de FIELD (les
+champs). Ces notions reprennent en partie des concepts du modèle
+MED. Le diagramme ci-dessous présente les classes principales:
+
+.. image:: images/med-uml-main_60pc.png
+   :align: center
+
+Le conteneur de plus haut niveau dans MEDMEM est la classe MED. La
+figure ci-dessous indique qu'une instance MED peut être associée à
+plusieurs maillage et plusieurs champs. Par contre un champ donné ne
+peut être associé qu'à un seul maillage (par l'intermédiaire du
+support). Plusieurs champs peuvent être associés au même maillage. La
+forme la plus courante est d'ailleurs une instance composé d'un
+maillage unique sur lequel sont définis plusieurs champs.
+
+On peut avoir également des configurations plus complexes, comme par
+exemple un maillage unique, plusieurs champs définis sur ce maillage
+mais avec des supports différents, par exemple parce que les valeurs
+sont définies sur des entités de maillage différentes (les éléments
+pour un champ, les noeuds pour un autre, ...)::
+
+  field1->support1->mesh
+  field2->support2->mesh
+  field3->support3->mesh
+
+On observe:
+
+* 2 champs U et V doivent avoir le même support (au sens informatique
+  du terme) pour pouvoir être en argument d'une opération (sinon
+  exception). Il faudrait accepter qu'il soit informatiquement
+  différent et vérifier la conformité conceptuelle.
+* Cette contrainte peut se comprendre car physiquement les données
+  sont stockées dans un vecteur qui couvre toutes les mailles. Le
+  support est le seul masque de lecture pour établir la correspondance
+  avec les positions dans le maillage et il est donc important qu'une
+  cohérence soit assurée.
+
+Les objets champs (FIELD) et maillage (MESH)
+--------------------------------------------
+
+Un objet MED permet d'accéder aux différentes informations concernant
+les objets MESH, SUPPORT et FIELD, mais il ne permet pas d'accéder aux
+données physiques associées à ces objets (les valeurs des composantes
+pour les champs, les mailles et leur connectivité pour les
+maillages). L'accès aux données physiques est du ressort des objets
+spécifiques MESH, SUPPORT et FIELD.
+
+Un objet MED peut être créé intégralement en mémoire. L'usage plus
+fréquent est de l'initialiser à partir de la donnée d'un fichier
+med. Pour cela, l'objet MED doit être associé à un driver
+d'entrée/sortie branché sur le fichier (``testfilename`` dans
+l'exemple):
+
+.. code-block:: cpp
+   
+   MED *myMed = new MED;
+   MED_MED_RDONLY_DRIVER *driverIn = new MED_MED_RDONLY_DRIVER(testfilename, myMed);
+   driverIn->open();
+   driverIn->readFileStruct();
+   driverIn->close();
+
+A l'occasion de la fonction readFileStruct, la structure interne de
+l'objet MED est enrichie des informations concernant les objets MESH,
+SUPPORT et FIELD contenu dans le fichier. En particulier un
+dictionnaire des champs (variable map interne) est initialisé est
+contient l'ensemble des objets ``FIELD_`` préchargés (i.e. avec les
+méta-données uniquement). Chaque objet ``FIELD_`` ainsi préchargé est
+autonome pour être chargé sur demande. On peut alors requêter l'objet
+MED pour obtenir un champ particulier (spécifié par son nom
+``fieldname`` dans l'exemple):
+
+.. code-block:: cpp
+
+   FIELD<double> *field = (FIELD<double> *)myMed->getField(fieldname, dt, it);
+
+Puis le champ qui lui est associé doit être physiquement chargé pour
+permettre la mise à jour du support:
+
+.. code-block:: cpp
+   
+   MESH * mesh = myMed->getMesh(field);
+   mesh->read();
+   myMed->updateSupport();
+
+Pour enfin charger les valeurs des composantes du champ:
+
+.. code-block:: cpp
+   
+   field->read();
+
+La numérotation des éléments de maillage
+----------------------------------------
+
+Les éléments qui composent un maillage sont caractérisés par:
+
+* Le type d'entité de l'élément, à choisir dans la liste
+  ``MED_EN::medEntityMesh``, qui contient en particulier ``MED_NODE``,
+  ``MED_FACE``, ``MED_CELL``.
+* Le type de géométrie de l'élément, à choisir dans la liste
+  ``MED_EN::medGeometryElement``, qui contient en particulier
+  ``MED_NONE``, ``MED_TRIA3``, ..., ``MED_ALL_ELEMENTS``.
+
+Les éléments sont numérotés par un indice relatif à la catégorie
+géométrique à laquelle ils appartiennent. Ainsi, si le modèle est
+composé de Na arrêtes et Nf faces de type géométrique MED_QUAD4, alors
+ces faces sont numérotées de 1 à Nf dans le modèle MED (et de manière
+persistente dans le fichier med). De même, les arrêtes sont numérotées
+de 1 à Na. Une numérotion globale implicite existe sur les éléments,
+elle consiste à parcourir l'ensemble des types géométriques dans
+l'ordre de définition du modèle de données. Ainsi, si le modèle
+contient uniquement les Na arrêtes et les Nf faces, alors l'indice
+global de la première face est Na+1.
+
+.. note:: Des exemples de code sont disponibles dans le package ``demofield``, fichier ``python/pybasicfields/MEDMEM_tester.py``.
+
+
+Binding python de MEDMEM
+------------------------
+
+Les classes du package ``MEDMEM`` (package du module ``MED`` qui
+implémentent les structures de données C++ de MED mémoire) produisent
+la bibliothèque ``libmedmem.so``. Cette ensemble de classes est en
+partie mis à disposition de l'interface python grace à une couche de
+liaison (binding Python-C++) générée par le logiciel SWIG à partir
+d'un fichier de description d'interface ``libMEDMEM_Swig.i`` (dans le
+package source ``MEDMEM_SWIG``).
+
+Ce fichier d'interface doit être mis à jour dés lors qu'une évolution
+des interfaces publiques des classes C++ MEDMEM est faite ou qu'une
+nouvelle classe est créée (du moins si l'on souhaite profiter de ces
+évolutions dans l'interface python).
+
+Cette mise à jour nécessite de prendre soin au transfert des
+structures de données entre les espaces python et C++. En particulier,
+l'utilisation des template de classe pour décrire les champs typés en
+C++ appelle une précaution de codage particulière de l'interface
+SWIG.
+
+Pour exemple, le fragment de code ci-dessous, extrait du fichier
+``libMEDMEM_Swig.i``, montre comment déclarer la nouvelle classe
+``MedDataManager`` dans l'interface:
+
+.. code-block:: cpp
+   
+   #include "MEDMEM_MedDataManager.hxx"
+
+   class MedDataManager
+   {
+     public:
+      ~MedDataManager();
+      void printFieldDouble(FIELD<double,FullInterlace> * field);
+   
+      %extend {
+        MedDataManager(char * fileName)
+        {
+         return new MedDataManager(string(fileName));
+        }
+        MedDataManager(MED * med)
+        {
+          return new MedDataManager(med);
+        }
+    
+        %newobject getFieldDouble(const char * fieldName, const int dt, const int it);
+        FIELD<double, FullInterlace> * getFieldDouble(const char * fieldName, const int dt, const int it)
+        {
+         return (FIELD<double, FullInterlace> *) self->getFieldDouble(string(fieldName), dt, it);
+        }
+      }
+  
+   };
+
+
+Utilisation de MEDMEM pour la manipulation de champs
+----------------------------------------------------
+
+Des opérations de manipulation de champs sont disponibles dans la
+bibliothèque MEDMEM standard est peuvent être utilisées dans
+l'interface python. Les quelques lignes suivantes illustrent l'usage
+qu'on peut en faire pour exécuter l'addition de deux champs sur tout
+leur espace de définition et pour un pas de temps donné:
+
+.. code-block:: python
+
+    from libMEDMEM_Swig import MedDataManager
+    from xmed.helper import readMed, writeMed
+
+    # Load the medmem data structure from a med file
+    med = readMed("/tmp/input.med")
+    # Then create a med data manager to deal with the fields data
+    dm  = MedDataManager(med)
+    # Get the timestamps (dt,it)=(-1,-1) of the fields "testfield1" and "testfield2"
+    f1 = dm.getFieldDouble("testfield1",-1,-1)
+    f2 = dm.getFieldDouble("testfield2",-1,-1)
+
+    # Create a new field as the sum of f1 and f2
+    r  = f1 + f2
+    # And add this new field to the med data structure
+    med.addField(r)
+
+    # Finally, write the whole data in an output med file
+    writeMed(med,"/tmp/output.med")
+
+.. note:: Cet exemple de code requiert les évolutions de MEDMEM
+   opérées dans la branche BR_medop (pour disposer de la classe
+   MedDataManager en particulier) et le package python ``xmed`` qui
+   fournit quelques fonctions utilitaires pour manoeuvrer les données
+   med (ce package est dans le module XMED et sera probablement à
+   terme intégré au module MED).
+
+Des limitations existent aujourd'hui pour ce type de manipulations:
+
+* les champs doivent partager le même support MED, c'est-à-dire être
+  décrit sur le même maillage et sur les mêmes entités de ce
+  maillage.
+* ...
+
+
+Remarque sur l'implémentation C++
+---------------------------------
+
+A noter l'usage de plusieurs formes d'arguments pour les fonctions:
+
+* passage des arguments par valeur ``myfunction(A a);``
+* passage des arguments par référence ``myfunction(A& a);``
+* passage des arguments par pointeur ``myfunction(A* a);``
+
+Le passage des arguments par référence est une facilité d'écriture
+pour éviter de passer un pointeur tout en évitant la récopie des
+données de la variable.
+
+.. _xmed-medmem_corbainterface:
+
+L'interface CORBA SALOME_MED
+============================
+
+Implémentation du composant MED et des servants SALOME_MED::\*
+--------------------------------------------------------------
+
+Le composant MED est un servant CORBA qui permet la manipulation de
+données MEDMEM dans l'environnement SALOME. Le composant peut fournir
+des pointeurs vers des instances de l'interface SALOME_MED (objets
+SALOMEMED::MED, SALOME_MED_FIELD, ...). Ces instances sont des
+servants CORBA qui résident dans le container et qui encapsulent les
+données MEDMEM.
+
+Le schéma ci-dessous représente les éléments informatiques qui
+composent l'architecture CORBA du module MED:
+
+.. image:: images/medmem-corba-layers.png
+   :align: center
+
+Les structures MEDMEM (données physiques) et SALOME_MED (wrapping
+CORBA) fonctionnent différement en ce qui concerne le chargement des
+données:
+
+* Dans MEDMEM, les données sont chargées à la demande (fonctions read
+  des objets) et aucune gestion n'est assurée. En particulier l'appel
+  à read alors que la donnée est déjà chargée conduit à une levée
+  d'exception. C'est à l'utilisateur de MEDMEM de prendre en charge ce
+  type de gestion.
+* Dans SALOME_MED, les données sont chargées à la création de
+  l'instance SALOME_MED::MED. Les maillages ainsi que les champs et
+  leurs données sont chargés à ce moment là et gérés dans une table de
+  type HashMap au niveau de la structure SALOME_MED::MED. Cette
+  structure remplie dés lors des fonction de gestion. L'appel à
+  SALOME_MED::MED.getField(...) ne charge pas les données mais renvoie
+  un pointeur SALOME_MED::FIELD_ptr sur les données chargées à
+  l'initialisation (ATTENTION, cette fonction est bugguée dans la
+  branche principale -> Fix dans la branche BR_medop).
+
+Une gestion intermédiaire peut être envisagée: le chargement à la
+demande géré dans une ou plusieurs tables de champs (une pour chaque
+type de valeur numérique). Une implémentation de ce type de gestion
+est illustré dans la classe ``MedDataManager`` du package MEDMEM qui prend
+en charge ce comportement pour les structures de données MED (en
+particulier les champs).
+
+Utilisation du composant MED
+----------------------------
+Le module SALOME MED fournit un module CORBA appelé SALOME_MED. Les
+interfaces de ce module CORBA sont spécifiées par les fichiers idl
+suivants:
+
+* le fichier
+  [http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/MED_8idl.html
+  ``MED.idl``] qui décrit les interfaces des objets manipulés par le
+  module SALOME_MED. On trouve en particulier les objets MESH, SUPPORT
+  et FIELD.
+* le fichier
+  [http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/MED__Gen_8idl.html
+  ``MED_Gen.idl``] qui décrit les interfaces du composant SALOME
+  (c'est-à-dire le composant chargé par la commande
+  ``FindOrLoadComponent("FactoryServer", "MED")`` du
+  lyfeCycleCorba). On trouve:
+
+  - l'interface ``MED_Gen_Driver`` qui hérite de SALOMEDS::Driver
+    pour l'implémentation des services généraux des composants SALOME
+    (persistance hdf, dump)
+  - l'interface ``MED_Gen`` qui hérite des interfaces
+    ``Engines::Component`` et ``MED_Gen_Driver`` pour
+    l'implémentation des services spécifiques du composant MED.
+
+L'implémentation de ces interfaces est faites au niveau de différents
+packages des sources du module MED:
+
+* Le package ``MEDMEM_I`` qui fournit l'implémentation C++ des
+  interfaces décrites par le fichier ``MED.idl``;
+* Le package ``MED`` qui fournit l'implémentation C++ des interfaces
+  décrites par le fichier ``MED_Gen.idl``, et qui correspond à la
+  partie composant classique d'un module SALOME.
+* Le package ``MedCorba_Swig`` qui fournit une interface swig
+  générée à partir de l'implémentation C++ de ``MEDMEM_I`` et
+  ``MED``
+
+L'utilisation peut être illustrée au moyen d'exemples python (i.e. qui
+utilise l'interface swig fournie par MedCorba_Swig). Après l'import
+d'amorce systématique:
+
+.. code-block:: python
+   
+   import salome
+   salome.salome_init()
+   
+   import SALOME_MED
+   from libSALOME_Swig import *
+
+On peut charger le composant SALOME MED:
+
+.. code-block:: python
+   
+   medComp=salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+
+grâce auquel les services de chargement de la structure MED peuvent
+être invoqués. Par exemple, les commandes suivantes chargent toute la
+structure MED dans l'étude salome passée en argument:
+
+.. code-block:: python
+   
+   filePathName = "myfile.med"
+   medComp.readStructFileWithFieldType(filePathName,salome.myStudyName)
+
+Ce deuxième exemple charge la structure MED mais ne place pas le résultat dans l'étude:
+
+.. code-block:: python
+   
+   filePathName = "myfile.med"
+   medObj = medComp.readStructFile(filePathName,salome.myStudyName)
+
+On récupère à la place un objet de classe |LINK_EDF_SALOME_MED__MED|_
+qui permet une utilisation assez semblable (mais différente on le
+verra plus bas) à MEDMEM:
+
+.. code-block:: python
+
+   fieldIdx     = 1 # WRN maybe there is no field of idx=1
+   iterationIdx = 0
+   fieldName = medObj.getFieldNames()[fieldIdx]
+   dtitfield = medObj.getFieldIteration(fieldName,iterationIdx)        
+   it = dtitfield[0]
+   dt = dtitfield[1]
+   fieldObj = medObj.getField(fieldName,it,dt)
+   nbOfFields = medObj.getNumberOfFields()
+   fieldNames = medObj.getFieldNames()
+    
+   mesh = fieldObj.getSupport().getMesh()
+
+.. note::
+   Observations en vrac:
+
+   * Un FIELD_i possède un champ de type ``MEDMEM::FIELD_`` qui représente
+     le champ informatique réel (objet MEDMEM).
+   * FIELD_i::fieldMap variable static de type map qui semble gérer
+     les différentes instances de FIELD_i (~pattern factory). Cette
+     map peut être requétée au moyen d'un indice de type long  appelé
+     corbaIndex.
+   * Quand on crée un FIELD_i par le constructeur d'argument
+     ``MEDMEM::FIELD_``, le ``MEDMEM::FIELD_`` est ajouté dans la map avec
+     incrément du corbaIndex
+   * La fonction FIELD_i::read(i) redirige vers la fonction read(i) du
+     ``MEDMEM::FIELD_`` associé
+   * A CONFIRMER: Il semble que les fonctions de chargement
+     ``readStructFile*()`` charge toutes les données du fichier med,
+     alors qu'en MEDMEM seules les meta-données sont chargées.
+   * A CONFIRMER: il semble que le chargement d'une structure MED
+     CORBA peut se faire sans passer par le composant (cf. l'interface
+     de MED)
+
+Interface avec le module VISU
+=============================
+
+Des interactions sont possibles entre MED et VISU à partir du moment
+où les données med sont gérées dans l'étude, c'est-à-dire sous la
+forme d'objets SALOME_MED (voir ci-dessus) publiés dans l'étude. Les
+deux conditions sont aujourd'hui nécessaires (objet corba + publié
+dans l'étude) mais il semble que ce ne soit lié qu'à un choix
+d'interface VISU (la fonction ``ImportMed`` en particulier) qui peut
+a priori être modifié. A CONFIRMER.
+
+L'exemple de code ci-dessous (en python, mais il peut être transposé à
+une implémentation C++) montre par exemple comment envoyer au module
+VISU  une requête de visualisation d'un champs hébergé par le module
+MED (en fait, les données sont gérées au travers d'un objet corba
+SALOME_MED "délocalisé" et qui a été référencé dans l'étude dans la
+catégorie du composant MED). Les importations standard (salome,
+SALOME_MED, ...) sont supposées avoir été faites au préalable (voir
+les exemples précédents):
+
+.. code-block:: python
+   
+   # Load the med structure using MED
+   medComp=salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+   filePathName = "myfile.med"
+   medComp.readStructFileWithFieldType(filePathName,salome.myStudyName)
+    
+   # Get the VISU component
+   import VISU
+   visuComp = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+   visuComp.SetCurrentStudy(salome.myStudy)
+    
+   # Get the sobject associated to the med object named "Med"
+   aSObject = salome.myStudy.FindObject("Med")
+   isPresent, medSObj = aSObject.FindSubObject(1)
+    
+   # Finally, import the med sobject in VISU 
+   result = visuComp.ImportMed(medSObj)
+
+Il est possible de d'aller plus loin et par exemple de déclencher
+l'affichage d'une scalarmap d'un champ spécifique pour une itération
+particulière (voir la fonction
+``TEST_SALOMEMED_requestToVisu_scalarmap`` du fichier
+``SALOMEMED_tester.py`` fourni dans les sources d'exemple).
+
+Liens complémentaires:
+
+* http://nepal.der.edf.fr/pub/SALOME_userguide/VISU_V5_1_3/doc/salome/gui/VISU La documentation utilisateur en ligne du module VISU
+
+
+Notes en vrac
+=============
+
+Questions:
+
+* Comment obtenir le nom du fichier med à partir d'une structure med? 
+* Peut-on imaginer un moyen de fournir l'objet MEDMEM::MED à partir de
+  la donnée de l'objet CORBA SALOME_MED::MED?
+
+Remarques:
+
+* A part, les opérations arithmétiques (+,-,*,/), aucune opération
+  n'est définie.
diff --git a/src/MEDOP/doc/sphinx/xmed-prototype-overview.rst b/src/MEDOP/doc/sphinx/xmed-prototype-overview.rst
new file mode 100644 (file)
index 0000000..c571c6e
--- /dev/null
@@ -0,0 +1,95 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, XMED
+   :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Démonstrateur XMED, vue d'ensemble
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module XMED est un espace d'expérimentation pour le développement
+des opérations de manipulation de champs. Il complète des
+développements intégrés directement dans le module MED et gérés dans
+la branche CVS BR_medop.
+
+Une maquette est au point pour illustrer les propositions en matière
+d'ergonomie d'utilisation et en matière d'architecture technique. La
+maquette permet de réaliser des cas d'utilisation de la forme:
+
+* Chargement d'un fichier med dans le module MED (ou publication par
+  un code de calcul).
+* Sélection graphique des champs de l'étude à mettre à disposition
+  dans la console utilisateur ("calculette" en mode texte qui
+  concraitement correspond à l'interface python de SALOME).
+* Dans la calculette, exécution d'opérations algébriques (+,-,*,/)
+  entre champs avec possibilité d'utiliser des scalaires dans des
+  opérations de type transformation linéaire (y=ax+b ou y et x sont
+  des champs et a et b des scalaires). Egalement quelques fonctions
+  mathématiques standard applicables sur des champs (pow, sqrt).
+* Possibilité de visualiser les champs produits avec VISU
+* Possibilité d'exporter des champs produits dans un fichier med
+
+La figure ci-dessous montre le résultat d'une séquence d'utilisation
+dans laquelle les champs "testfield1" et "testfield2" ont été
+sélectionnés dans l'arbre d'étude pour être utilisés dans la console
+textuelle sous les noms de variables f1 et f2. L'image montre le
+contrôle visuel du résultat de l'opération f1+f2-(f1-f2)^2 tapée en
+ligne de commande:
+
+.. image:: images/medop-gui-result.png
+   :align: center
+
+La séquence ci-après montre le cas d'utilisation complet en
+images:
+
+1. Sélection d'un champs sur un pas de temps dans l'arbre d'étude
+2. Saisie d'un nom de variable (alias) pour manipuler ce champ. Par
+   défaut, le nom du champ est proposé (``testfield1`` ici). Dans
+   l'exemple, l'utilisateur remplace par l'alias ``f1``.
+3. Contrôle visuel du champ ``testfield1`` manipulé par sa variable
+   ``f1`` au moyen de la commande ``f1.visu()``
+4. Chargement du champ ``testfield2`` sous le nom ``f2``, exécution de
+   l'opération ``f1+f2-(f1-f2)^2`` et contrôle visuel du résultat,
+   récupéré ici dans une variable de nom ``result``.
+
+.. |IMG_SELECT| image:: images/medop-gui-selectfield_scale.png
+.. |IMG_ALIAS| image:: images/medop-gui-aliasfield_scale.png
+.. |IMG_VISU| image:: images/medop-gui-visufield_scale.png
+.. |IMG_RESULT| image:: images/medop-gui-result_scale.png
+
++---------------+---------------+ 
+| |IMG_SELECT|  | |IMG_ALIAS|   |
++---------------+---------------+ 
+| |IMG_VISU|    | |IMG_RESULT|  |
++---------------+---------------+ 
+
+La solution technique est construite sur les principes suivants:
+
+* Les données MEDMEM sont physiquement chargées par le composant MED,
+  c'est-à-dire dans le processus ``Container`` de SALOME, et sont
+  référencées dans l'étude SALOME.
+* Les opérations sont physiquement des opérations entre objets MEDMEM
+  purs qui ont lieu dans le composant MED.
+* Les opérations sont pilotées par des objets proxy python instanciés
+  dans la console TUI puis manipulés par l'utilisateur. Ces objets
+  proxy savent accéder aux objets MEDMEM au travers de leur interface
+  CORBA.
+
+Ainsi, l'architecture technique est construite pour pouvoir travailler
+sur des données MEDMEM pur en partant de pointeurs CORBA manoeuvrés
+depuis des objets python dans l'interface textuelle de
+SALOME. L'effort principal a donc porté sur la mise au point de
+l'interface technique qui permet de lier des variables représentant
+les champs au niveau du GUI (techniquement, la calculette est
+l'interpréteur python embarqué dans le GUI, étendu de quelques
+fonctions pour la manipulation de champs), alors que les données
+MEDMEM sont physiquement disponibles uniquement au niveau des
+composants CORBA (et les opérations implémentées dans MEDMEM
+uniquement).
+
+Pour le moment, la maquette est limitée à des operations entre champs
+qui partagent le même support med (contrainte de MEDMEM) et le
+résultat est calculé sur toutes les composantes et tout le domaine de
+définition du champs (cette deuxième contrainte est juste parce que
+les extentions n'ont pas encore été examinées). Enfin, le support de
+gestion des données est supposé être l'étude SALOME et la structure
+MED qui y est publiée.
diff --git a/src/MEDOP/doc/sphinx/xmed-references.rst b/src/MEDOP/doc/sphinx/xmed-references.rst
new file mode 100644 (file)
index 0000000..30d66ec
--- /dev/null
@@ -0,0 +1,28 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Références documentaires
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. include:: xmed-definitions.rst
+
+Documents de référence:
+
+* |REF_EDF_VCA_H-I2C-2009-03595-FR|_ - Valérie Cano - décembre 2009
+* |REF_CEA_VBE_MEDMEM|_ - Vincent Bergeaud - janvier 2007
+* |LINK_EDF_MEDDOC|_ - documentation en ligne (EDF)
+
+Présentations:
+
+* |REF_EDF_PRESMANIPCHP01|_ - Valérie Cano, Guillaume Boulant - janvier 2010
+* |REF_EDF_PRESMANIPCHP02|_ - Guillaume Boulant - octobre 2010
+* |REF_EDF_PRESMANIPCHP03|_ - Guillaume Boulant - mars 2011
+* Présentation à la Journée des Utilisateurs de SALOME de 2011 (JUS2011):
+
+  - |REF_EDF_JUS2011_PDF|_ - Anthony Geay (CEA), Guillaume Boulant - novembre 2011
+  - |REF_EDF_JUS2011_OGV1|_
+  - |REF_EDF_JUS2011_OGV3|_
+  - |REF_EDF_JUS2011_OGV4|_
+
+Notes de travail:
+
+* |REF_EDF_GBO_WORKNOTE|_ - Guillaume Boulant - novembre 2010
+* |REF_EDF_ELO_REM|_ - Eric Lorentz - novembre 2010
diff --git a/src/MEDOP/doc/sphinx/xmed-specifications.rst b/src/MEDOP/doc/sphinx/xmed-specifications.rst
new file mode 100644 (file)
index 0000000..1f8cdab
--- /dev/null
@@ -0,0 +1,918 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, med
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Spécifications fonctionnelles et techniques
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_SPECIFICATIONS_PDF|_)
+
+Ce texte présente les spécifications informatiques pour le
+développement d'un module de manipulation de champs qui répond à
+l'expression de besoins formulée dans le cahier des charges
+|REF_EDF_VCA_H-I2C-2009-03595-FR|_.
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Description des cas d'application de référence
+==============================================
+
+Plusieurs cas d'applications métier sont identifiés pour piloter le
+développement du module de manipulation de champs:
+
+* **Analyser et post-traiter le résultat d'un calcul**. C'est l'usage
+  principal qui consiste typiquement à créer des champs comme le
+  résultat d'*opérations mathématiques* dont les opérandes sont des
+  champs et des scalaires. On compte également dans cette catégorie
+  les *opérations de restriction* qui permettent d'extraire puis
+  utiliser une partie d'un champs, c'est-à-dire de créer un champ
+  comme la restriction d'un autre champ à une partie de son domaine de
+  définition (certaines composantes, certains pas de temps, limitation
+  à un groupe de mailles).
+* **Comparer des champs issus d'un calcul paramétrique**. Il s'agit
+  d'une variante du cas précédent qui consiste à mesurer et visualiser
+  les variations entre des champs issues de sources de données
+  différentes (différents fichiers med).
+* **Préparer les conditions aux limites d'une calcul**. Il s'agit de
+  pouvoir initialiser un champ sur un maillage ou un groupe de
+  mailles, c'est-à-dire créer un champ de toute pièce sur un
+  support spatial donné, par exemple par la donnée d'une fonction
+  mathématique qui donne les valeurs des composantes en fonction des
+  coordonnées spatiales.
+* **Gérer des données de calcul**. Il s'agit typiquement de pouvoir
+  rassembler au sein d'un même fichier med des champs et des maillages
+  issues de différentes sources de données, et/ou créés au travers des
+  cas d'application présentés ci-dessus.
+
+Modèle conceptuel des données
+=============================
+
+On rappelle ici les concepts utilisés dans le module et les modalités
+d'utilisation de ces concepts. Le point de vue est celui de
+l'utilisateur du module de manipulation de champs. Il s'agit
+essentiellement pour le moment d'éclaircir l'ergonomie d'usage sur le
+plan conceptuel, avant d'aborder la déclinaison en spécifications
+techniques pour lesquelles les particularités du modèle MED devront
+être intégrées à la réflexion.
+
+Concept de champ
+----------------
+
+Le concept central est celui de *champ*, c'est-à-dire une grandeur
+physique exprimée sur un domaine spatial D. La grandeur peut être de
+type scalaire (une température), de type vectorielle (une vitesse) ou
+de type tensorielle (les contraintes). En un point de l'espace, elle
+se définie donc par la donnée d'une ou plusieurs valeurs numériques
+appelées les *composantes* (1 pour un champ scalaire, 3 pour un champ
+vectoriel 3D, 6 pour un champ tensoriel symétrique 3D).
+
+.. note:: Une pratique courante au niveau des codes est de stocker
+   plusieurs grandeurs physiques différentes dans un même champs med
+   (au sens informatique du terme). Par exemple, le champ
+   électromagnétique à 6 composantes, plus le champ de température
+   scalaire peuvent techniquement être stockés dans un même champs med
+   à 7 composantes. C'est pourquoi, le module de manipulation de
+   champs doit fournir des fonctions de restrictions qui permettent
+   d'extraire certaines composantes pour former la grandeur physique à
+   étudier. Dans la suite du document, on part du principe que l'on
+   peut se ramener dans tous les cas au cas d'un champ homogène tel
+   que défini plus haut.
+
+Dans le cadre d'un modèle numérique discret, les valeurs du champ sont
+exprimées pour un nombre fini de positions, qui correspondent à des
+lieux particuliers du maillage. Suivant la nature des modèles de
+calcul, les valeurs peuvent être données par cellule, par face, par
+noeud, aux points de gauss, ...
+
+Ainsi, un champ discret est un objet dont les valeurs peuvent être
+lues selon les dimensions suivantes:
+
+* *La position p dans l'espace*, caractérisée par le type de l'élément
+  de maillage support et son numéro identifiant
+* *La composante c*, caractérisée par son indice (jusqu'à 6
+  composantes dans les modèles physiques envisagés)
+
+L'évolution d'un champ dans le temps peut être exprimée sous la forme
+d'une série temporelle, c'est-à-dire une séquence de champs donnés
+pour des instants discrets. Aussi, si l'on manipule un champ qui varie
+dans le temps, l'accès aux valeurs introduit une dimension
+supplémentaire:
+
+* *Le temps t*, caractérisé par un numéro de pas de temps
+  (correspondant en général à une étape du calcul qui a produit le champ).
+
+.. note:: Il s'agit là d'une représentation conceptuelle standard dont
+   le |LINK_EDF_MEDDOC|_ fait une expression détaillée. En
+   particulier, la position p est déterminée par la donnée du type
+   d'élément support (valeurs aux noeuds, aux mailles, aux noeuds par
+   éléments, aux points de gauss) et de l'indice de cet élément. En
+   général, le type d'éléments support est résolu à l'initialisation
+   et l'indice peut suffire au repérage dans les algorithmes. Le temps
+   t est déterminé par un numéro d'itération, qui peut éventuellement
+   être complété par un numéro d'ordre. Le cas des points de gauss
+   ajoute un cran de complexité dans la mesure où il faut repérer
+   l'entité géométrique (maille, face, arrête) puis le point de gauss
+   de cette entité. A noter que dans le modèle MED, le concept de
+   série temporelle de champ n'est pas explicitement définie et
+   l'accès à des valeurs à différents instants t1 et t2 nécessite le
+   chargement des champs ``F1=F(t1)`` et ``F2=F(t2)``.
+
+Par convention, on utilisera par la suite les notations:
+
+* **U(t,p,c)** pour désigner la valeur de la composante c d'un champ U
+  à la position p et prise à l'instant t; 
+* **U(t,p,:)** pour signifier que l'on manipule l'ensemble de toutes
+  les composantes;
+* **U(t,:,c)** pour signifier que l'on manipule le domaine de
+  définition spatial complet. 
+
+Dans une grande majorité des cas d'usage on travaille à temps t fixé
+et sur un domaine spatiale prédéfini. Aussi on utilisera également la
+notation à deux arguments ``U(:,:)`` ou tout simplement ``U`` (dès
+lors qu'il n'y a pas ambiguïté) pour désigner un champ complet et Uc
+pour désigner la composante c du champ avec c=1..6.
+
+Concept d'opération
+-------------------
+Le deuxième concept à préciser est la notion d'*opération*. Une
+opération dans le présent contexte est l'application d'un opérateur
+sur un ou plusieurs champs pour produire une grandeur de type champ ou
+de type valeur numérique.
+
+Par exemple, la formule ``W=OP(U,V)`` indique que le champ W est formé
+à partir des champs U et V en arguments d'une fonction OP. Dans le cas
+d'une opération algébrique comme l'addition (cf. :ref:`Spécification
+des opérations<xmed-specifications>`, le résultat attendu par défaut
+est que pour chaque instant t, chaque position p et chaque composante
+c, on a ``W(t,p,c)=U(t,p,c)+V(t,p,c)`` (que l'on peut noter également
+``W(:,:,:)=U(:,:,:)+V(:,:,:)`` compte-tenu de la convention présentée
+plus haut). Ce n'est cependant pas une règle et l'utilisateur peut
+très bien manoeuvrer les champs en détaillant et mixant les
+composantes (par exemple ``W(:,:,3)=5+U(:,:,1)*V(:,:,2)``), ou encore
+ne travailler que sur un domaine spatial et/ou temporel particulier
+(cf. |REF_EDF_VCA_H-I2C-2009-03595-FR|_ §5.4.1).
+
+On formalise donc le concept d'opération par les propriétés suivantes:
+
+* L'opérateur peut produire un champ (par exemple la somme de deux
+  champs W=sum(U,V)=U+V), une valeur numérique (par exemple la moyenne
+  spatiale d'un champ m=smoy(U)) ou une valeur logique (par exemple le
+  test d'égalité de deux champs b=isequal(U,V));
+* L'opérateur peut être paramétré par la donnée de valeurs numériques
+  (par exemple, le changement d'unité peut être défini comme une
+  multiplication par un scalaire V=multiply(U,1000)=1000*U);
+* L'opérateur est caractérisé par un domaine d'application qui
+  spécifie la portée de l'opération. Ce domaine comporte plusieurs
+  dimensions:
+  - Un domaine temporel T qui spécifie les pas de temps sur lesquels
+    l'opération est appliquée;
+  - Un domaine spatial D qui spécifie la limite de portée de
+    l'opérateur et donc le domaine de définition du champ produit (qui
+    correspond dans ce cas à une restriction du domaine de définition
+    des champs en argument);
+  - Un domaine de composantes C qui spécifie les composantes sur
+    lesquelles l'opération est appliquée;
+
+.. note::
+   Sur le plan informatique, l'opérateur aura également un paramètre
+   appelé *option* qui pourra indiquer par exemple dans une
+   opération unaire V=F(U) si le résultat V est une nouvelle instance
+   de champ ou la valeur modifiée du champ de départ U. Il pourra
+   également être amené à manoeuvrer des paramètres de type chaîne de
+   caractères, par exemple pour les opérations de changement de nom
+   des champs.
+
+De manière générale, on utilisera la notation
+**(W|y)=OP[D,C,T](P,U,V,...)** pour désigner une opération OP:
+
+* **(V|y)**: V ou y désignent respectivement un résultat de type
+  champ ou de type valeur numérique ou logique;
+* **[T,D,C]**: le domaine d'application de l'opérateur avec T le
+  domaine temporel, D le domaine spatial et C le domaine des
+  composantes;
+* **P,U,V,...**: les paramètres numériques P (liste de valeurs
+  numériques) et les champs U,V,... en arguments de l'opérateur;
+
+On note également les particularités suivantes pour certaines
+opérations:
+
+* Le domaine de définition du champ produit par une opération peut
+  être différent du domaine de définition des champs en argument. Par
+  exemple, dans le cas d'une opération de projection de champ, le
+  domaine spatial résultat peut être modifié par rapport au domaine de
+  définition initial, soit par la modification de la zone géométrique,
+  soit par modification des entités de maillage support.
+* En dehors des opérations de type dérivée et intégrale, les valeurs
+  résultats sont déterminées de manière locale en chaque point du
+  domaine d'application. Par exemple, l'addition W=U+V consiste à
+  produire un champ W dont les valeurs en chaque point p sont la somme
+  des valeurs des composantes de U et V en ce point p: ``W=U+V <=>
+  W(:,p,:)=U(:,p,:)+V(:,p,:)`` pour tout point p du domaine
+  d'application D.
+
+Concept de domaine d'application
+--------------------------------
+
+Un domaine d'application est associé à une opération (et non pas à un
+champ). Il a pour objectif de restreindre la portée de l'opération en
+terme spatial, temporel, jeu des composantes.
+
+Pour ce qui concerne le domaine spatial D, plusieurs modalités de
+définition sont envisagées:
+
+* la donnée d'un maillage ou d'un groupe d'éléments du maillage;
+* un système de filtres qui peut combiner:
+
+  - une zone géométrique définie indépendamment du maillage (boîte
+    limite par exemple),
+  - des critères conditionnant le calcul (par exemple U(t,p,c)=1 si
+    V(t,p,c)<seuil).
+
+.. warning:: Version 2010: D pourra correspondre au maillage complet
+   et dans la mesure du possible à un groupe d'éléments du maillage
+
+Ce domaine d'application peut être différent du domaine de définition
+des champs mais il doit être compatible (recouvrement spatial partiel
+au moins et même support d'entité de maillage). Ainsi, sans précision
+particulière, une opération s'applique à l'ensemble du domaine de
+définition des champs en argument (qui dans la pratique MED est
+spécifié par le support et correspond en général au maillage
+complet).
+
+Limites d'utilisation
+---------------------
+
+Plusieurs situations doivent être examinées pour poser les limites
+d'utilisation:
+
+* Les champs en argument n'ont pas tous le même domaine de définition,
+  par exemple parcequ'il ne sont pas définis sur les mêmes zones
+  géométriques ou parcequ'ils ne sont pas donnés sur le même type
+  d'entité de maillage. On peut imaginer dans ce cas produire le
+  résultat sur les zones de recouvrement uniquement.
+* Le domaine de définition des champs et le domaine d'application de
+  l'opérateur ne sont pas compatibles, par exemple parcequ'on demande
+  une restriction sur une zone géométrique qui ne fait pas partie de
+  la zone de définition du champ d'entrée. A priori, ce type
+  d'opération est déclaré en échec.
+* Les champs en argument ne sont pas définis sur les mêmes pas de
+  temps. Si l'opération est tolérée (techniquement MEDCoupling permet
+  de le faire), le pas de temps résultat est indéfini.
+
+.. warning:: **A faire**: spécifier les modalités de prise en compte de
+   ces différentes situations (au moins sur le plan conceptuel).
+
+Au delà de ces limites conceptuelles, il faut avoir en tête les
+limites techniques liées à l'usage de MED mémoire (paquet
+MEDCoupling). Par exemple, MEDCoupling impose que les champs opérandes
+soient définis sur le même maillage support (on parle ici de l'objet
+informatique correspondant au maillage). Deux champs construits sur le
+même maillage (du point de vue conceptuel) mais issus de deux fichiers
+med différents sont considérés comme des champs définis sur des
+maillages support différents, c'est-à-dire que les objects
+informatiques correspondant aux maillages sont différents (chargés de
+deux fichiers différents). En l'état, il est donc impossible par
+exemple de faire la comparaison de champs résultats d'une étude
+paramétriques. MEDCoupling fournit une solution qu'il faudra mettre en
+oeuvre de manière ergonomique au niveau du module MED. Il est possible
+de changer le maillage support M1 d'un champs par un maillage M2 à
+partir du moment où les maillages M1 et M2 sont identiques
+géométriquement à une erreur près qu'il est possible de spécifier.
+
+.. note:: 
+   D'autres situations limites peuvent être évoquées sous l'angle
+   informatique. Ce sont des situations qui a priori n'ont pas de
+   raison d'exister sur le plan conceptuel mais qui peuvent très bien
+   survenir au niveau du module informatique compte-tenu des
+   particularités du modèle MED. Par exemple:
+   
+   * Le nombre et la nature des composantes ne sont pas identiques
+     pour tous les champs d'entrée. Par exemple, U défini ses
+     composantes comme U(:,:,1)=Ux, U(:,:,2)=Uy, U(:,:,3)=Uz et V les
+     défini comme U(:,:,1)=Uz, U(:,:,2)=Ux, U(:,:,3)=Uy. Cette
+     situation peut être gérée techniquement par exemple au moyen
+     d'une carte de correspondance qui accompagnerai chacun des champs
+     pour exprimer le sens physique de chaque composants (histoire de
+     ne pas ajouter des choux et des carottes).
+
+Spécifications générales
+========================
+
+Le diagramme ci-dessous représente un découpage fonctionnel qui rend
+compte de l'expression des besoins:
+
+.. image:: images/xmed-functions.png
+   :align: center
+
+On peut identifier les fonctionnalités suivantes:
+
+* **Opérations**: fonctions de manipulation de champs proprement
+  dites;
+* **Persistance**: fonctions d'enregistrement persistant et de
+  chargement des données (au format med fichier)
+* **Visualisation**: fonctions de contrôle visuel des champs
+  manipulés
+* **Export des données**: fonction de transposition des données de
+  champs dans un format textuel directement exploitable et de manière
+  autoportante dans une autre application, par exemple en python au
+  moyen des structures de données Numpy.
+
+Ces fonctions s'articulent autour d'un conteneur qui héberge les
+champs manipulés et les supports de ces champs (représenté par le
+cylindre central).
+
+Un scénario d'utilisation type est:
+
+* Préparation des champs à manipuler, par deux moyens complémentaires:
+
+  - Utilisation des fonctions de persistance: chargement depuis un
+    fichier med d'un ensemble de champs qui partagent le même espace
+    de définition;
+  - Utilisation des opérations de champs: chargement d'un maillage
+    depuis un fichier med, puis création ab initio de champs au moyen
+    des opérations de champs;
+
+* Manipulation des champs par application des opérations à
+  disposition, puis contrôle visuel des résultats produits au moyen
+  des fonctions de visualisation mises à disposition par SALOME;
+* Restitution des résultats produits, par deux moyens complémentaires:
+
+  - Restitution des champs produits et/ou modifiés sous une forme
+    persistante (fichier med);
+  - Restitution d'une partie seulement des résultats sous forme de
+    tableaux de valeurs sauvegardés dans un fichier texte ou exporté
+    sous forme de tableau numpy
+
+.. _xmed-specifications:
+
+Spécification des opérations
+============================
+
+Le cahier des charges définit trois catégories d'opérations
+mathématiques:
+
+* **Les opérations arithmétiques**, dans lesquelles le résultat à la
+  position p et à l'instant t ne dépend que des données à la position
+  p et à l'instant t;
+* **Les opérations d'interpolations**, dans lesquelles le résultat
+  est exprimé sur des entités de maillages différentes ou est projeté
+  sur une zone géométrique différente du domaine de définition
+  initial;
+* **Les opérations globales**, dans lesquelles le résultat peut
+  demander l'agrégation des valeurs sur plusieurs position p ou
+  plusieurs pas de temps t (calcul d'extremum, d'intégrale);
+
+Auxquelles, on peut ajouter à des fins de gestion des données:
+
+* **Les opérations de génération**, qui permettent de créer un champ
+  sur un maillage vierge ou d'étendre le domaine spatial de définition
+  d'un champ;
+* **Les opérations d'ordre sémantique**, qui permettent de modifier
+  les méta-données associées aux champs (nom, unité, ...)
+* **Les opérations de diagnostic**, qui permettent d'effectuer une
+  analyse particulière d'un champ et/ou des éléments de maillage
+  associés et de fournir un compte-rendu, sous la forme d'une
+  structure de données ou d'un texte formaté affichable dans
+  l'interface utilisateur.
+
+La suite de la section décrit les spécifications prévues pour chaque
+type d'opération unitaire. Un dernier paragraphe concerne les
+modalités de combinaison des opérations et spécifie la définition d'un
+domaine d'application sur une opération, qui permet de restreindre la
+portée de l'opération en terme spatial, temporelle ou nature des
+composantes impliquées.
+
+Les opérations arithmétiques
+----------------------------
+
+Les opérations arithmétiques regroupent:
+
+* les **opérations algébriques** (+, -, x, /);
+* les **opérations vectorielles** (produit scalaire, produit
+  vectoriel, produit tensoriel);
+* l'**application d'une fonction mathématique** à variable scalaire
+  (exponentielle, logarithme, fonctions trigonométriques, valeur
+  absolue, partie entière) ou à variable de type champ (les fonctions
+  de norme par exemple).
+
+Pour les besoins des spécifications informatiques, il est plus commode
+de classer ces opérations en deux catégories:
+
+* les **opérations unaires**, qui prennent un opérande unique en
+  argument. C'est le cas de la plupart des fonctions mathématiques
+  envisagées;
+* les **opérations binaires**, qui prennent deux opérandes en
+  argument. C'est le cas des opérations algébriques et des opérations
+  vectorielles.
+A partir de cette classification, il convient de distinguer trois
+formes d'usage selon la nature des opérandes:
+
+* les opérandes sont exclusivement des scalaires (typiquement des
+  valeurs de composantes des champs et des paramètres numériques). Par
+  exemple::
+    W(:,:4) = 1+2xU(:,:,2)+V(:,:,3)
+
+* les opérandes sont exclusivement des champs. Par exemple::
+
+    W = U + V       (addition)
+    W = U ^ V       (produit vectoriel)
+
+* les opérandes sont des champs et des paramètres numériques. Par exemple::
+
+    W = 3xU - 2xV
+    W = U + 2
+
+Le premier cas de figure (opérandes scalaires) est trivial car les
+règles mathématiques conventionnelles s'appliquent et sont
+implémentées dans tous les langages (Python et C++ en
+particulier). Les cas 2 et 3 par contre doivent être précisés car (i)
+les règles de comportement ne peuvent pas être simplement déduites des
+règles mathématiques (quel est le résultat de ``W = U + 2`` ?) et
+(ii) certaines écritures ne peuvent avoir aucun sens (par exemple
+``W = 2 / U``). Il convient donc de  préciser les conventions et
+les limites sur ces deux cas de figure.
+
+Dans le cas des opérations unaires où l'opérande est un champ, on doit
+distinguer deux cas d'usage:
+
+* l'application d'une fonction mathématique à valeur de type champ. Ce
+  cas est trivial également et on applique la règle d'usage de la
+  fonction. C'est typiquement le cas des fonctions de calcul de
+  norme.
+* l'application d'une fonction mathématique à valeur scalaire. Dans ce
+  cas, on convient d'appliquer la fonction de manière unitaire sur
+  chacune des composantes c du champ: ``W(:,:,c) = OP( U(:,:,c)
+  )``
+
+Dans le cas des opérations binaires, on recense les combinaisons
+d'opérandes suivantes (les lettres capitales représentent des champs,
+et les lettres minuscules une valeur scalaire qui peut être un
+paramètre numérique ou la composante d'un champ):
+
+* U+V ajoute les composantes en regard: W(:,:,c)=U(:,:,c)+V(:,:,c)
+* U-V soustrait les composantes en regard: W(:,:,c)=U(:,:,c)-V(:,:,c)
+* U*V multiplie les composantes en regard: W(:,:,c)=U(:,:,c)*V(:,:,c)
+* U/V divise les composantes en regard: W(:,:,c)=U(:,:,c)/V(:,:,c)
+* U+x ajoute x à toute les composantes: W(:,:,c)=U(:,:,c)+x
+* U*x multiplie toutes les composantes par x: W(:,:,c)=U(:,:,c)*x
+* U.V produit scalaire des champs U et V: W(:,:c)=U(:,:,c)*V(:,:,c)
+* U^V produit vectoriel des champs U et V: W(:,:1)=U(:,:,2)*V(:,:,3)-U(:,:,3)*V(:,:,2), ...
+
+.. note::
+   Pour ce qui concerne les opérations vectorielles, un convention
+   implicite est appliquée par laquelle on suppose que les composantes
+   sont rangées dans l'ordre des dimensions spatiales U1=Ux, U2=Uy,
+   U3=Uz. Sur le plan informatique au niveau du modèle MEDMEM, ceci
+   n'est pas garanti et aucun élément du modèle ne permet de
+   contraindre l'application de cette convention. Il convient donc de
+   prévoir des fonctions techniques qui permettront de mettre en
+   correspondance les indices de composantes et les dimensions
+   spatiales (par exemple par la données d'une carte de correspondance
+   applicable à un ensemble de champs).
+
+.. warning::
+   A développer:
+   
+   * Analyse dimensionnelle du champ résultats pour adapter
+     l'unité. Par exemple, si on fait UxV où U et V sont exprimés en
+     [m] alors le résultat est en [m2].
+
+Les opérations d'interpolation
+------------------------------
+.. warning:: Non prévues au programme 2010.
+
+Les opérations mathématiques globales
+-------------------------------------
+.. warning:: Non prévues au programme 2010.
+
+Les opérations de génération
+----------------------------
+.. warning:: EN TRAVAUX
+
+Les opérations de génération sont des fonctions qui permettent de
+créer un champ sur un domaine du maillage où il n'est pas défini
+initialement. Deux cas de figure peuvent se présenter:
+
+* Le champ n'existe pas et il doit être créé sur un domaine à définir;
+* Le champ existe mais les valeurs ne sont pas définies sur l'ensemble
+  du maillage.
+
+On peut envisager plusieurs modalités de mise en oeuvre:
+
+* le prolongement par une valeur constante (ou plus généralement par
+  une fonction de l'espace?);
+* les valeurs du champs sont données par une fonction f(p,t) qui prend
+  la position p et le pas de temps t en argument;
+* on peut prédéfinir le champ position **r** qui porte les
+  coordonnées spatiales de l'élément de maillage support, puis faire
+  une opération arithmétique standard.
+
+Les opérations d'ordre sémantique
+---------------------------------
+.. warning:: EN TRAVAUX
+
+Concerne:
+
+* le changement de nom du champ
+* le changement d'unité du champ (il s'agit ici de conserver la
+  cohérence entre la valeur numérique et l'attribut "unité" d'un
+  champ.
+
+Les opérations de diagnostic
+----------------------------
+.. warning:: EN TRAVAUX. A faire en fonction des besoins des cas d'application
+
+On peut identifier plusieurs types d'opérations:
+
+* les opérations à diagnostic booléen, par exemple
+  b=isequal(U,V)=[U=V] (où [.] signifie évaluation de la condition
+  entre crochers)
+* les opérations à diagnostic textuel, par exemple afficher les
+  méta-données associées à un champs (unité, nom, maillage support,
+  type d'entité, pas de temps, ...)
+* les opérations à diagnostic structuré, qui donneraient une structure
+  de données exploitable au niveau d'un code logiciel.
+
+Combinaison des opérations
+--------------------------
+.. warning:: EN TRAVAUX. Indiquer les règles de combinaison (associativité, commutativité, ...)
+
+Définition d'un domaine d'application
+-------------------------------------
+Pour rappel, un domaine d'application peut être associé à une
+opération pour restreindre la portée de l'opération en terme spatial,
+temporelle ou nature des composantes impliquées.
+
+.. warning:: Todo: spécifier comment on le définit et les modalités d'applications.
+
+Spécification de l'ergonomie
+============================
+
+L'ergonomie générale d'utilisation du module de manipulation de champs
+est inspirée des logiciels comme octave ou scilab. Elle associe une
+interface graphique, pour sélectionner et préparer les données, avec
+une interface texte (la console python) pour le travail effectif sur
+les données:
+
+* L'**interface graphique** a pour fonction essentielle de sélectionner et
+  préparer les champs à manipuler dans l'interface texte, puis
+  fournit des fonctions pour la gestion générale des données
+  (chargement, sauvegarde, contrôle visuel, export).
+* L'**interface texte** offre un jeu de commandes pour manipuler les
+  champs (afficher les données, effectuer des opérations), piloter les
+  fonctions d'affichage (contrôle visuel au moyen des modules VISU
+  et/ou PARAVIS) et communiquer avec l'interface graphique (ajouter
+  des nouveaux champs dans l'espace de gestion, mettre à jour les
+  méta-données d'un champ).
+
+Sur le plan de l'ergonomie, cela se traduit par un processus de
+travail dans lequel on peut distinguer différentes phases:
+
+* Une phase de préparation des champs à manoeuvrer sous la forme de
+  variables nommées et simples à manipuler dans l'interface
+  textuelle. Lors de cette phase, l'utilisateur spécifie de manière
+  graphique tout ce qui peut être définis à l'avance et pour toute la
+  durée du processus de travail. Par exemple, en spécifiant le nom des
+  fichiers med source des données et les noms des champs à utiliser
+  dans ces fichiers, le pas de temps de travail, le jeu des
+  composantes à considérer, le domaine d'application des opérations;
+* Une phase de manipulation des champs proprement dite, qui a lieu
+  principalement dans l'interface textuelle, et qui peut s'accompagner
+  de contrôle visuel des résultats et/ou d'export à destination
+  d'outils complémentaires indépendants (gnuplot, python, ...);
+* Une phase de restitution des champs produits pour assurer la
+  persistance des données de travail. Tout les champs créés par les
+  manipulations au niveau de l'interface textuelle ne sont pas à
+  sauvegarder, et on on propose donc à l'utilisateur les moyens de
+  choisir les champs à conserver. Cette phase peut amener
+  l'utilisateur à préciser les informations manquantes, comme les noms
+  de fichiers, les noms de champs produits, les unités, ...
+
+Dans ce cadre, l'utilisation type des fonctions de manipulation de
+champs est un processus de la forme suivante:
+
+1. Chargement d'un fichier med dans SALOME et exploration du contenu,
+   composé de maillages, sur lesquels sont définis des champs, pouvant
+   contenir un ou plusieurs pas de temps.
+2. Sélection (graphique) des champs à manipuler, avec la possibilité
+   de préciser des restrictions d'utilisation (pas de temps,
+   composantes, groupe de maille).
+3. Création de nouveaux champs par l'exécution d'opérations
+   algébriques (+,-,*,/) entre champs, l'application de fonctions
+   mathématiques standard (pow, sqrt, abs), ou encore l'initialisation
+   "from scratch" à partir d'un maillage support.
+4. Contrôle visuel rapide des champs produits (avec les modules VISU
+   et/ou PARAVIS de SALOME, pilotés automatiquement depuis l'interface
+   utilisateur)
+5. Enregistrement d'une partie des champs produits dans un fichier med
+
+
+Les espaces de données utilisateur
+----------------------------------
+
+Sur le plan conceptuel, on est amené à définir deux espaces de données
+utilisateur:
+
+* **l'espace des données source** (*dataspace*), dans lequel
+  l'utilisateur définit les sources de données med (*datasource*),
+  c'est-à-dire les fichiers med dans lesquels sont lus les champs
+  et maillages. Cet espace est en lecture seule et permet
+  l'exploration des sources de données (aperçu des maillages et des
+  champs).
+* **l'espace des données de travail** (*workspace*), dans lequel
+  l'utilisateur dépose les champs et maillages à utiliser, puis range
+  les champs produits au travers des fonctions de manipulation de
+  champs.
+
+La figure ci-dessous en donne une représentation imagée avec le
+support de l'interface graphique du module (interface non définitive
+affichée ici pour illustration des spécifications):
+
+.. image:: images/xmed-gui-withframe.png
+   :align: center
+
+.. note:: Techniquement, les données sources sont rangées dans l'étude
+   SALOME et peuvent être explorées au moyen de l'object browser. Les
+   données de travail sont rangées dans un arbre complémentaire et
+   manipulable dans la console python.
+
+Le principe général est que **les données sources ne sont jamais
+modifiées**. Le dataspace est un espace de chargement qui permet
+d'explorer puis de sélectionner les données à manipuler. L'utilisateur
+travaille à partir de maillages et de champs chargés préalablement
+dans cet espace, mais ne peut en aucun cas les modifier
+directement. Pour cela, il doit d'abord les sélectionner pour
+utilisation dans l'espace de travail. Ce choix garantie l'intégrité
+des sources de données et permet de rejouer la séquence de travail à
+partir de zéro en cas de besoin (on efface le tableau noir et on
+recommence). Par ailleurs, il permet d'assister graphiquement la
+définition du champs à manipuler effectivement, en particulier pour
+affecter un nom de variable de manipulation.
+
+Les captures d'écrans suivantes montrent le principe d'utilisation sur
+le cas de la sélection d'un pas de temps à utiliser dans l'espace de
+travail. Les données à manoeuvrer (maillage et/ou champs) sont
+sélectionnées pour utilisation dans l'espace de travail, où elles
+peuvent être modifiées et/ou utilisées dans les opérations de
+champs. Ici, le champ est désigné par la varibale ``f4`` dans
+l'interface textuelle:
+
+* Sur cette première capture, on sélectionne le pas de temps n°4 du
+  champs ``Pulse`` définit sur le maillage ``Grid_80x80`` de la source
+  de données ``timeseries.med`` (concrètement le fichier
+  ``timeseries.med``) pour faire apparaître ensuite le menu contextuel
+  et choisir l'option "Use in workspace":
+
+.. image:: images/xmed-gui-datasource-contextmenu_70pc.png
+   :align: center
+
+* Cette capture montre une fenêtre de dialogue qui invite
+  l'utilisateur à spécifier un alias pour la variable python qui
+  va permettre la manipulation du champ dans l'interface textuelle de
+  l'espace de travail (par défaut, le nom complet du champ est
+  proposé). Ici, l'utilisateur spécifie ``f4``: 
+
+.. image:: images/xmed-gui-datasource-useinworkspace_70pc.png
+   :align: center
+
+* La validation de la fenêtre provoque l'ajout du champs dans l'espace
+  de travail (le champ est désormais disponible à la manipulation) et
+  définit une variable python de nom ``f4`` qui permet la manipulation
+  du champ:
+
+.. image:: images/xmed-gui-datasource-useinworkspace-result_70pc.png
+   :align: center
+
+Modalités d'utilisation
+-----------------------
+
+.. warning:: cette section est à nettoyer car elle contient des
+   informations redondantes avec d'autres sections précédentes ou pire
+   qui contredisent des sections précédentes.
+
+Dans le cadre défini ci-dessus, une session d'utilisation type est:
+
+* Sélectionner les sources de données puis définir le domaine
+  d'application (espace, temps, composantes), avec éventuellement
+  l'assistance d'une interface graphique;
+* Charger les champs en conséquence dans l'espace de travail. Cette
+  opération propose de définir une variable python pour manipulation
+  dans l'interface textuelle.
+* Effectuer les opérations dans l'espace de travail, c'est-à-dire en
+  ligne de commandes python (ce qui demandera sans doute un travail
+  conséquent de simplification et d'assistance en ligne). Par exemple,
+  si ``fa`` et ``fb`` désignent deux champs définis dans l'espace de
+  travail, alors on peut en faire la somme par la commande::
+  
+  >>> r=fa+fb
+
+* Effectuer les contrôles visuel et les diagnostics en ligne de
+  commandes python (cf. :ref:`Spécification des fonctions de
+  visualisation<specification_visualisation>`)::
+
+  >>> view(r)
+
+* Enregistrer les champs produits dans l'espace de travail sous forme
+  de fichier med.
+
+Sur cette base, on peut envisager une grande variété de cas d'utilisation:
+
+* La structure MED (champs, maillage et groupes de mailles) est
+  chargée dans le dataspace (l'étude SALOME techniquement) et peut
+  être explorée au niveau de l'arbre d'étude. L'arbre peut faire
+  apparaître:
+  - les maillages et les groupes (qui peuvent être utilisés
+    éventuellement pour restreindre le domaine d'application)
+  - les champs dont on peut explorer les composantes et les itérations
+
+* On sélectionne plusieurs champs, éventuellement en sélectionnant les
+  pas de temps, les composantes et les domaines d'application spatiaux
+* Menu contextuel --> Modifier un champ, Créer un champ, Prolonger un
+  champ, ....
+* On choisi pour la suite "Créer un champ", une fenêtre de dialogue
+  s'affiche avec les saisies préremplies avec les données
+  sélectionnées. Il est possible de rajouter des éléments ou préciser
+  le domaine d'application
+* Une partie de la boîte de dialogue est réservée à la saisie de la
+  ligne de commande python qui permet la création du nouveau champ. Le
+  nom dans l'étude pour le nouveau champ, ainsi que son nom python,
+  sont spécifié par l'utilisateur ({{H|un peu à la mode du module
+  system}}).
+* L'opération est exécutée dans l'espace utilisateur (l'interface
+  python), de sorte que les variables soient projetées dans cet espace
+  et manipulables après l'opération au besoin. Par ailleurs,
+  l'utilisateur peut visualiser les ligne de commandes nécessaires à
+  taper pour exécuter sa requête.
+
+.. _specification_visualisation:
+
+Spécification des fonctions de visualisation
+============================================
+
+Dans le cadre du module MED, on appelle *fonction de visualisation*
+une fonction qui permet d'avoir un aperçu graphique d'un champ, par
+exemple au moyen d'une carte de champ construite sur une de ses
+composante. Il s'agit là de vue de contrôle pour avoir une idée rapide
+de la forme du champs. Pour créer des représentations spécifiques, on
+préférera passer par les fonctions d'export vers le module PARAVIS.
+
+Les modules VISU et PARAVIS offre des interface de programmation C++
+et python qui permettent le pilotage depuis un module tiers comme le
+module MED. On peut donc envisager une fonction de visualisation
+intégrée au module de manipulation de champs, c'est-à-dire que l'on
+déclenche sans sortir du module MED, et qui exploite les fonctions de
+visualisation des modules VISU et/ou PARAVIS.
+
+Les captures d'écran ci-dessous illustrent la mise en oeuvre de la
+fonction de visualisation:
+
+* Sélection d'un champ pour faire apparaitre le menu contextuel et
+  choisir l'option "Visualize":
+
+.. image:: images/xmed-gui-datasource-visualize_70pc.png
+   :align: center   
+
+* Cette option déclenche l'affichage d'une carte de champ sur le cadre
+  d'affichage des viewers SALOME:
+
+.. image:: images/xmed-gui-datasource-visualize-result_70pc.png
+   :align: center
+
+Cette fonction est également disponible en ligne de commandes de
+l'interface textuelle. Par exemple si ``f4`` désigne un champ de
+l'espace de travail (importé des données source ou construit par les
+opérations de champs), alors, on obtient une carte de champ par la
+commande::
+
+ >>> view(f4)
+
+On peut remarquer d'ailleurs sur la capture d'écran de droite
+ci-dessus que la demande de visualisation déclenche l'exécution de la
+commande ``view`` dans la console de travail sur un champ identifié
+par son numéro (3 dans l'exemple).
+
+.. note:: Tous les champs, qu'ils soient des champs chargés d'une
+   source de données ou construits par des opérations de champs sont
+   identifiés par un numéro unique et invariant tout au long de la
+   session de travail.
+
+Spécification des fonctions de persistance
+==========================================
+
+On adopte le principe de fonctionnement suivant:
+
+* Le module n’assure pas la persistence au sens SALOME du terme,
+  c’est-à-dire qu’il ne permet pas la sauvegarde du travail dans une
+  étude au format hdf, ni le dump sous la forme de script python
+  SALOME. Le besoin n'est pas avéré et on peut même dire que ça n'a
+  pas de sens compte-tenu de l'usage envisagé pour le module MED.
+* Par contre, le module fournit des fonctions de sauvegarde du travail
+  sous forme de fichiers med, l’export vers les modules VISU et
+  PARAVIZ, ou même la sauvegarde de l’historique de l’interface de
+  commandes.
+
+Ainsi donc, l'utilisateur aura une fonction (probablement graphique)
+pour définir la sélection des champs de l'espace de travail à
+sauvegarder.
+
+Spécification des fonctions d'export
+====================================
+
+.. warning:: EN TRAVAUX.
+
+Plusieurs export peuvent être proposés:
+
+* Export des champs vers le module PARAVIZ, dans l'objectif par
+  exemple d'en faire une analyse visuelle plus poussée qu'avec les
+  cartes de champs disponibles par défaut dans le module MED
+* Export des données sous forme de tableau numpy, par exemple pour
+  permettre un travail algorithmique sur les valeurs des champs.
+
+Spécifications techniques
+=========================
+
+Il s'agit d'exprimer ici les contraintes techniques applicables à la
+conception et au développement du nouveau module MED.
+
+Implantation technique du module
+--------------------------------
+
+Il est convenu que le module MED existant dans la plate-forme SALOME
+incarne le module de manipulation de champ. Dans la pratique, il
+s'agit d'identifier clairement les parties à conserver, d'une part,
+puis les parties à re-écrire, d'autre part. On peut partir sur les
+hypothèses techniques suivantes:
+
+* Le noyau du module en charge des opérations de manipulation de
+  champs proprement dites est construit sur la base des paquets
+  logiciels MEDCoupling (lui-même basé sur le INTERP_KERNEL) et
+  MEDLoader.
+* L'interface graphique du module MED est complétement re-écrite et
+  remplacée par une interface adaptée spécialement à la manipulation
+  des champs et la gestion des données associées
+* Le contrôle visuel pourra être déclenché dans les visualisateurs
+  SALOME (servis par les modules VISU et/ou PARAVIZ);
+* Le module n'assure pas la persistence au sens SALOME du terme,
+  c'est-à-dire qu'il ne permet pas la sauvegarde du travail dans une
+  étude au format hdf, ni le dump sous la forme de script python
+  SALOME.
+* Par contre, il fournit des fonctions de sauvegarde du travail sous
+  forme de fichiers med, l'export vers les modules VISU et PARAVIZ, ou
+  même la sauvegarde de l'historique de l'interface de commandes.
+
+L'implantation technique des développements est représentée sur la
+figure ci-dessous:
+
+.. image:: images/xmed-implantation.png
+   :align: center
+
+Le schéma représente les packages logiciels qui composent le module
+MED (cf. |REF_CEA_VBE_MEDMEM|_):
+
+* La partie MEDMEM, représentées en blanc. Cette partie est conservée
+  pour compatibilité ascendante au niveau des applications métier qui
+  ont fait le choix historique de s'appuyer sur MEDMEM. Cette partie
+  du module MED aura tendance à disparaitre dans le futur au bénéfice
+  de MEDCoupling et MEDLoader.
+* La partie MEDCoupling, représentée en orange et qui founrnit le
+  modèle MED mémoire de référence (composé de maillage et de champs)
+  et l'interface de programmation pour manipuler le modèle. Le paquet
+  MEDLoader est une extention dédiée à la persistence au format med
+  fichier (lecture et écriture de champs et de maillage dans des
+  fichiers med).
+* La partie à développer pour la manipulation de champ, représentée en
+  bleu.
+
+.. note:: MEDCoupling peut être vu comme une structure de donnée
+   particulièrement adaptée à la manipulation des gros volumes de
+   données, en particulier par l'exploitation des possibilités de
+   parallélisation et la réduction de la tailles des structures de
+   données. En contrepartie, elle peut présenter un périmètre
+   fonctionnel moins large que MEDMEM. Pour cette raison, MEDMEM avait
+   été choisi comme socle de développement du prototype en 2010:
+
+   * MEDCoupling ne permet pas de gérer des maillages composés de
+     plusieurs type de mailles et il est exclus de le faire évoluer
+     dans ce sens (c'est un choix fait pour les objectifs de
+     performances évoqués plus haut);
+   * MEDCoupling ne permet pas de gérer les supports qui expriment les
+     champs aux noeuds par élément ni aux points de gauss. Cette
+     seconde limitation a disparu en 2011.
+
+   Aujourd'hui, on fait clairement le choix de MEDCoupling pour sa
+   qualité et sa robustesse, dans l'objectif d'une meilleure
+   maintenance à long terme. Par ailleurs, les différences
+   fonctionnelles avec MEDMEM, si elles existaient encore en 2012 pour
+   les besoins de la manipulation de champs, pourront être résorbées
+   dans un futur proche.
+
+
diff --git a/src/MEDOP/doc/sphinx/xmed-userguide.rst b/src/MEDOP/doc/sphinx/xmed-userguide.rst
new file mode 100644 (file)
index 0000000..f352660
--- /dev/null
@@ -0,0 +1,749 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, guide utilisateur
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Guide d'utilisation
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_USERGUIDE_PDF|_)
+
+Ce document est un guide rapide pour l'utilisation du module MED. Il
+montre comment utiliser le module sur la base de quelques exemples de
+référence, inspirés des cas d'utilisation identifiés lors de l'analyse
+des besoins en matière de manipulation de champs.
+
+.. warning:: Le document est autonome, mais il est vivement conseillé
+   de parcourir au préalable (ou en parallèle) :doc:`le document de
+   spécifications<xmed-specifications>`, au moins pour fixer les
+   concepts et la terminologie.
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Présentation générale du module XMED
+====================================
+
+L'ergonomie générale d'utilisation du module de manipulation de champs
+est inspirée des logiciels comme octave ou scilab. Elle associe une
+interface graphique, pour sélectionner et préparer les données, avec
+une interface texte (la console python) pour le travail effectif sur
+les données.
+
+Pour cela, le module propose deux espaces utilisateurs qui sont
+symbolisés par les rectangles rouges et vert sur la capture d'écran
+ci-dessous:
+
+* **l'espace des données** (*dataspace*), dans lequel l'utilisateur
+  définit les sources de données med (*datasource*), c'est-à-dire les
+  fichiers med dans lesquels sont lus les champs et maillages. Cet
+  espace permet l'exploration des maillages et des champs fournis par
+  les différentes sources de données.
+* **l'espace de travail** (*workspace*), dans lequel l'utilisateur
+  peut déposer des champs sélectionnées dans l'espace source, pour
+  ensuite les travailler par exemple pour produire des nouveaux champs
+  au moyen des fonctions de manipulation fournies par l'interface
+  textuelle (console python TUI).
+
+.. image:: images/xmed-gui-withframe.png
+   :align: center
+
+L'utilisation type des fonctions de manipulation de champs suit un
+processus de la forme suivante:
+
+1. Chargement d'un fichier med dans l'espace de données (dataspace) et
+   exploration du contenu, composé de maillages et de champs définis
+   sur ces maillages et pouvant contenir un ou plusieurs pas de temps.
+2. Sélection (graphique) des champs à manipuler dans l'espace de
+   travail (workspace), avec la possibilité de préciser des
+   restrictions d'utilisation (pas de temps, composantes, groupe de
+   maille).
+3. Création de nouveaux champs par l'exécution d'opérations
+   algébriques (+,-,*,/) entre champs, l'application de fonctions
+   mathématiques standard (pow, sqrt, abs), ou encore l'initialisation
+   "from scratch" sur un maillage support.
+4. Contrôle visuel rapide des champs produits (avec les modules VISU
+   et/ou PARAVIS de SALOME, pilotés automatiquement depuis l'interface
+   utilisateur)
+5. Enregistrement d'une partie des champs produits dans un fichier med
+
+
+Tour rapide des fonctions du module XMED
+========================================
+
+Cette section présente des exemples d'utilisation du module XMED sous
+la forme de "storyboard", et illustre au passage les fonctions mises à
+disposition par le module.
+
+.. warning:: Cette section est en travaux. Tant que cet avis n'aura
+   pas disparu, veuillez en considérer le plan et le contenu encore
+   incomplets, temporaires et sujets à caution.
+
+Exemple 1: Explorer des sources de données
+------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * ajouter une source de données
+   * fonctions "Extends field series", "Visualize"
+
+.. |ICO_DATASOURCE_ADD| image:: images/ico_datasource_add.png
+                        :height: 16px
+
+.. |ICO_XMED| image:: images/ico_xmed.png
+              :height: 16px
+
+.. |ICO_DATASOURCE_EXPAND| image:: images/ico_datasource_expandfield.png
+                           :height: 16px
+
+.. |ICO_DATASOURCE_VIEW| image:: images/ico_datasource_view.png
+                         :height: 16px
+
+Au démarrage, le module de manipulation de champs, identifié par
+l'icône |ICO_XMED|, présente une interface vierge:
+
+.. image:: images/xmed-gui-start.png
+   :align: center
+   :width: 800px
+
+La première étape consiste à ajouter une ou plusieurs source de
+données med dans le "dataspace". Pour cela, on clique sur l'icône "Add
+datasource" |ICO_DATASOURCE_ADD| qui propose de sélectionner un
+fichier med:
+
+.. image:: images/xmed-gui-datasource-selectfile.png
+   :align: center
+   :width: 800px
+
+L'opération ajoute une nouvelle entrée (datasource) dans l'espace de
+données (dataspace). Le contenu peut être exploré en parcourant
+l'arborescence. La figure ci-dessous (image de gauche) montre le
+résultat du chargement du fichier ``timeseries.med`` contenant un
+maillage de nom ``Grid_80x80`` sur lequel est défini un champ au noeud
+de nom ``Pulse``. Par défaut, la composition du champs (en terme de
+pas de temps et de composantes) n'est pas affichée pour éviter
+l'encombrement visuel de l'arbre. On doit faire la demande explicite
+au moyen de la commande "Expand field timeseries"
+|ICO_DATASOURCE_EXPAND| disponible dans le menu contextuel associé aux
+champs. Le résultat est affiché sur l'image centrale. La liste des
+itérations du champ ``Pulse`` peut être consultée.
+
+.. |IMG_DATASOURCE_EXPLORE| image:: images/xmed-gui-datasource-explore-zoom.png
+                            :height: 340px
+.. |IMG_DATASOURCE_MENUCON| image:: images/xmed-gui-datasource-menucontextuel-zoom.png
+                            :height: 340px
+.. |IMG_DATASOURCE_EXPANDF| image:: images/xmed-gui-datasource-expand-zoom.png
+                            :height: 340px
+
++--------------------------+--------------------------+--------------------------+
+| |IMG_DATASOURCE_EXPLORE| | |IMG_DATASOURCE_MENUCON| | |IMG_DATASOURCE_EXPANDF| |
++--------------------------+--------------------------+--------------------------+
+
+.. note:: En toute rigueur, le concept de *champ* dans le modèle MED
+   désigne une itération donnée. Un ensemble d'itérations est désigné
+   par le terme *série temporelle de champs*. Par abus de langage, et
+   s'il n'y a pas ambiguité, on utilisera le nom du champ pour
+   désigner à la fois le champs proprement dit ou la série temporelle
+   à laquelle il appartient.
+
+Enfin, il est possible au niveau du dataspace de visualiser la forme
+générale du champ au moyen d'une carte scalaire affichée dans le
+viewer de SALOME. Pour cela, on sélectionne le pas de temps à
+visualiser et on utilise la commande "Visualize" |ICO_DATASOURCE_VIEW|
+disponible dans le menu contextuel associé:
+
+.. image:: images/xmed-gui-datasource-visualize-zoom.png
+   :align: center
+   :width: 800px
+
+.. note:: Cette représentation graphique a pour objectif le contrôle
+   visuel rapide. Aussi, les fonctions du module VISU sont employées
+   par défaut, mais il est possible de faire l'affichage des cartes
+   scalaires au moyen du module PARAVIS (choix de préférence non
+   implémenté pour le moment, mais techniquement réalisable).
+
+Exemple 2: Rassembler des champs issus de différentes sources
+-------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * fonction "Use in workspace"
+   * fonction "Save"
+
+.. |ICO_DATASOURCE_USE| image:: images/ico_datasource_use.png
+                        :height: 16px
+.. |ICO_WORKSPACE_SAVE| image:: images/ico_workspace_save.png
+                        :height: 16px
+
+L'objectif est de récupérer des données issues de différents fichiers
+med, puis de les rassembler dans un même fichier en sortie.
+
+On commence par ajouter les sources de données med dans l'espace de
+données (dataspace). Dans l'exemple ci-dessous, l'espace de données
+contient deux sources de nom ``parametric_01.med`` et
+``smallmesh_varfiled.med``. La première source contient le maillage
+``Grid_80x80_01`` sur lequel est défini le champ ``StiffExp_01``. La
+deuxième source contient le maillage ``My2DMesh`` sur lequel sont
+définis deux champs de noms respectifs ``testfield1`` et
+``testfield2``:
+
+.. image:: images/xmed-userguide-example2-datasource.png
+   :align: center
+   :width: 800px
+
+Pour l'exemple, on souhaite rassembler les champs ``StiffExp_01`` et
+``testfield2`` dans un fichier de nom ``result.med``. La procédure
+consiste à importer les deux champs dans l'espace de travail
+(workspace), puis à sauvegarder l'espace de travail. Pour cela, on
+sélectionne les champs et on utilise la commande "Use in workspace"
+|ICO_DATASOURCE_USE| disponible dans le menu contextuel. Les deux
+champs sélectionnés apparaissent dans l'arborescence de l'espace de
+travail:
+
+.. image:: images/xmed-userguide-example2-workspace.png
+   :align: center
+   :width: 800px
+
+La sauvegarde de l'espace de travail est faite au moyen de la commande
+"Save workspace" |ICO_WORKSPACE_SAVE| disponible dans la barre
+d'outils du module. Une fenêtre de dialogue invite l'utilisateur à
+spécifier le nom du fichier de sauvegarde:
+
+.. image:: images/xmed-userguide-example2-workspace-save.png
+   :align: center
+   :width: 800px
+
+Ce fichier ``result.med`` peut ensuite être rechargé dans le module
+XMED (ou les modules VISU ou PARAVIS) pour vérifier la présence des
+champs sauvegardés.
+
+.. BUG: plantage à l'utilsation dans XMED d'un fichier rechargé
+.. (invalid mesh on field)
+
+.. _xmed.userguide.exemple3:
+
+Exemple 3: Appliquer une opération mathématique sur des champs
+--------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * exécution d'opérations mathématiques dans la console TUI
+   * fonction "put" pour référencer un champ de travail dans la liste
+     des champs persistant.
+   * fonction "Visualize" depuis le TUI.
+
+L'usage le plus courant du module de manipulation de champs est
+d'exécuter des opérations mathématiques dont les opérandes sont des
+champs ou des composantes de ces champs.
+
+On se place dans une situation où les sources de données sont définies
+dans le "dataspace" (dans l'exemple ci-après, une série temporelle de
+nom ``Pulse``, contenant 10 pas de temps, définis sur un maillage de
+nom ``Grid_80x80``, le tout issu du datasource ``timeseries.med``).
+
+Comme vu précedemment, pour manoeuvrer un champ dans l'espace de
+travail, on sélectionne ce champ, puis on exécute la commande "Use in
+workspace" |ICO_DATASOURCE_USE| du menu contextuel. Dans le cas
+présent, un seul champ est sélectionné (contre deux dans l'exemple
+précédent) et la commande ouvre alors une fenêtre de dialogue qui
+permet de préciser les données sur lesquelles on souhaite
+effectivement travailler et comment on veut les manoeuvrer:
+
+.. image:: images/xmed-gui-datasource-useinworkspace-alias.png
+   :align: center
+   :width: 800px
+
+.. note:: En l'état actuel du développement, l'interface propose
+   uniquement de définir le nom de la variable sous laquelle doit être
+   manoeuvré le champ dans la console de travail (TUI). Dans une
+   version ultérieure, il est prévue de pouvoir préciser la ou les
+   composante du champs à utiliser et un groupe de maille pour définir
+   une restriction géométrique. Inversement, il sera également
+   possible de choisir une série temporelle complète pour faire des
+   opérations globales sur l'ensemble des pas de temps.
+
+Aprés validation, le champ est placé dans l'arborescence du
+"workspace" et une variable de nom ``<alias>`` est créée
+automatiquement dans la console de travail pour désigner le
+champ. Dans cet exemple, ``<alias>`` vaut ``f3``, positionné ainsi par
+l'utilisateur pour rappeler que la variable correspond au pas de temps
+n°3:
+
+.. image:: images/xmed-gui-workspace.png
+   :align: center
+   :width: 800px
+
+La manipulation peut commencer. Dans l'exemple ci-dessous, on crée le
+champ ``r`` comme le résultat d'une transformation afine du champ
+``f3`` (multiplication du champ par le facteur 2.7 auquel on ajoute
+l'offset 5.2)::
+
+ >>> r=2.7*f3+5.2
+
+On peut poursuivre la manipulation du champs avec une variété
+d'opérations qui sont détaillées dans les spécifications du module
+(cf. :ref:`Spécification des opérations<xmed-specifications>`):
+
+ >>> r=f3/1000     # les valeurs de r sont celles du champ f3 réduites d'un facteur 1000
+ >>> r=1/f3        # les valeurs de r sont les inverses des valeurs de f3
+ >>> r=f3*f3       # les valeurs de r sont celles du champ f3 élevées au carré
+ >>> r=pow(f3,2)   # même résultat
+ >>> r=abs(f3)     # valeur absolue du champ f3
+ >>> ...
+
+Les opérations peuvent utiliser plusieurs opérandes de type champs. Si
+``f4`` désigne le pas de temps n°4 du champ ``Pulse``, alors on peut
+calculer toute combinaison algébrique des deux champs::
+
+ >>> r=f3+f4
+ >>> r=f3-f4
+ >>> r=f3/f4
+ >>> r=f3*f4
+
+Avec au besoin l'utilisation de variables scalaires::
+
+ >>> r=4*f3-f4/1000
+ >>> ...
+
+Dans ces exemples, la variable ``r`` désigne un champ de travail qui
+contient le résultat de l'opération. Par défaut, ce champ de travail
+n'est pas référencé dans l'arborescence du workspace. Si on souhaite
+tout de même le référencer, par exemple pour qu'il soit pris en compte
+dans la sauvegarde, alors on tape la commande::
+
+ >>> put(r)
+
+La fonction ``put`` a pour but de marquer le champ en argument comme
+persistent, puis de le ranger dans l'arborescence du "workspace" afin
+qu'il soit visible et sélectionnable. En effet, parmi tous les champs
+qui pourront être créés dans la console pendant la session de travail,
+tous n'ont pas besoin d'être sauvegardés. Certains sont même des
+variables temporaires qui servent à la construction des champs
+résultats finaux. C'est pourquoi, seuls les champs rangés dans
+l'arborescence du workspace sont enregistrés lors de la demande de
+sauvegarde du workspace.
+
+Les variables définies dans la console ont d'autres utilités. Tout
+d'abord, elles permettent d'imprimer les informations concernant le
+champ manoeuvré. Pour cela, on tape simplement le nom de la variable
+puis retour::
+
+ >>> f3
+ field name (id)        = Pulse (3)
+ mesh name (id)         = Grid_80x80 (0)
+ discretization         = ON_NODES
+ (iter, order)          = (3,-1)
+ data source            = file:///home/gboulant/development/projets/salome/MEDOP/XMED/xmed/resources/datafiles/timeseries.med
+
+Elle peut également être utilisée comme argument des commandes de
+gestion disponibles dans l'interface textuelle (dont la liste
+détaillée est décrite à la section :ref:`Documentation de l'interface
+textuelle<xmed.userguide.tui>`). Par exemple, la fonction ``view``
+permet d'afficher la carte scalaire du champ dans le viewer::
+
+ >>> view(f3)
+
+Donne:
+
+.. image:: images/xmed-gui-workspace-view.png
+   :align: center
+   :width: 800px
+
+.. note:: On remarquera ici qu'il est facile de comparer deux pas de
+   temps d'un champ, par exemple en calculant la différence ``f3-f4``,
+   puis en affichant un aperçu de la carte scalaire résultat au moyen
+   de la fonction ``view``::
+
+    >>> view(f3-f4)
+
+On peut enfin tout simplement afficher les données du champs par la
+commande ``print``::
+
+ >>> print f3
+ Data content :
+ Tuple #0 : -0.6 
+ Tuple #1 : -0.1 
+ Tuple #2 : 0.4 
+ Tuple #3 : -0.1 
+ Tuple #4 : 0.4 
+ ...
+ Tuple #6556 : 3.5 
+ Tuple #6557 : 3.3 
+ Tuple #6558 : 1.5 
+ Tuple #6559 : 0.3 
+ Tuple #6560 : 0.2
+
+Il est important de noter que les opérations entre champs ne peuvent
+être faites qu'entre champs définis sur le même maillage. Il s'agit là
+d'une spécification du modèle MED qui interdit d'envisager les
+opérations entre champs définis sur des maillages géométriquement
+différents. Techniquement, cela se traduit par l'obligation pour les
+objets informatique *champs* de partager le même objet informatique
+*maillage*.
+
+Dans l'hypothèse où on souhaite utiliser des champs définis sur des
+maillages différents, par exemple pour manoeuvrer les valeurs des
+champs à l'interface de deux maillages partageant une zone géométrique
+2D, il faut d'abord ramener tous les champs sur le même maillage de
+surface par une opération de projection.
+
+.. note:: Même si ceci est techniquement possible avec la bibliothèque
+   MEDCoupling, cet type d'opération de projection n'est pas encore
+   disponible dans le module de manipulation de champs (prévu en
+   2012).
+
+Un autre besoin plus classique est l'utilisation de champs définis sur
+des maillages géométriquement identiques, mais techniquement
+différents, par exemple lorsqu'ils sont chargés de fichiers med
+différents. Pour traiter ce cas de figure, la bibliothèque MEDCoupling
+prévoit une fonction de "Changement du maillage support", dont
+l'utilisation au niveau du module de manipulation de champs est
+illustrée dans :ref:`l'exemple 4<xmed.userguide.exemple4>` ci-après.
+
+.. _xmed.userguide.exemple4:
+
+Exemple 4: Comparer des champs issues de différentes sources
+------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * Changement du maillage support "change underlying mesh"
+
+On se place ici dans le cas de figure où des champs ont été produits
+sur le même maillage, au sens géométrique, mais enregistrés dans des
+fichiers med différents. C'est le cas par exemple d'une étude
+paramétrique où plusieurs calculs sont effectués avec des variantes
+sur certains paramètres du modèle simulé, chaque calcul produisant un
+fichier med.
+
+Soit ``parametric_01.med`` et ``parametric_02.med`` deux fichiers med
+contenant les champs que l'on souhaite comparer, par exemple en
+calculant la différence des valeurs et en visualisant le résultat.
+
+Aprés le chargement des sources de données dans le module XMED,
+l'utilisateur se trouve en présence de deux maillages, au sens
+technique du terme cette fois-ci, c'est-à-dire que les champs sont
+associées à des objets informatiques maillage différents, bien que
+géométriquement identiques.
+
+Or, les fonctions de manipulation de champs ne permettent pas les
+opérations sur des champs dont les maillages supports sont différents
+(voir la remarque à la fin de :ref:`l'exemple
+3<xmed.userguide.exemple3>`).
+
+Pour résoudre ce cas de figure, le module de manipulation de champs
+met à disposition la fonction "Change underlying mesh" qui permet de
+remplacer le maillage support d'un champ par un autre à partir du
+moment où les deux maillages sont géométriquement identiques,
+c'est-à-dire que les noeuds ont les mêmes coordonnées spatiales.
+
+.. |ICO_DATASOURCE_CHG| image:: images/ico_datasource_changeUnderlyingMesh.png
+                        :height: 16px
+
+Dans l'exemple proposé, l'utilisateur sélectionne le premier pas de
+temps du champ ``StiffExp_01`` du "datasource" ``parametric_01.med``,
+puis l'importe dans l'espace de travail au moyen de la commande "Use
+in workspace" |ICO_DATASOURCE_USE|. Il sélectionne ensuite le premier
+pas de temps du champs ``StiffExp_02`` du "datasource"
+``parametric_02.med``, mais l'importe dans l'espace de travail au
+moyen de la commande "Change underlying mesh" |ICO_DATASOURCE_CHG|. La
+fenêtre de dialogue ci-dessous s'affiche et invite l'utilisateur à
+choisir le nouveau maillage support par sélection dans l'arborescence
+du "dataspace":
+
+.. image:: images/xmed-gui-datasource-changeUnderlyingMesh.png
+   :align: center
+
+Dans cet exemple, on sélectionne le maillage ``Grid_80x80_01`` support
+du champ ``StiffExp_01``, avec lequel on souhaite faire la
+comparaison. Après validation, l'arborescence du workspace contient le
+champ ``StiffExp_02`` défini sur le maillage ``Grid_80x80_01``:
+
+.. image:: images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png
+   :align: center
+
+.. note:: La fonction "Change underlying mesh" ne modifie pas le champ
+  sélectionné dans le "dataspace" (principe de base de fonctionnement
+  du dataspace), mais crée une copie du champ dans l'espace de travail
+  pour ensuite remplacer le maillage support. D'où le nom par défaut
+  pour le champ ``dup(<nom du champ sélectionné>)`` (dup pour
+  "duplicate").
+
+Il reste à associer une variable à ce champ pour le manipuler dans la
+console. Ceci peut être fait au moyen de la commande "Use in console",
+disponible dans le menu contextuel du workspace.
+
+En définitif, si ``f1`` désigne le champ issu du datasource
+``parametric_01.med`` et ``f2`` le champ issu du datasource
+``parametric_02.med`` par la procédure décrite ci-dessus, alors la
+comparaison des deux grandeurs peut être faite comme pour le cas de
+:ref:`l'exemple 3<xmed.userguide.exemple3>`::
+
+ >>> r=f1-f2
+ >>> view(r)
+
+.. note:: En remarque générale sur cet exemple, il convient de noter
+   les points suivants:
+
+   * l'égalité géométrique de deux maillages est établie à une marge
+     d'erreur prés qu'il est possible de définir techniquement, mais
+     qui n'est pas ajustable au niveau de l'interface du module de
+     manipulation de champs. Elle est fixée à une valeur standard qui
+     permet de traiter la plupart des cas utilisateur. On verra à
+     l'usage s'il est nécessaire de remonter ce paramètre au niveau de
+     l'interface.
+   * L'utilisateur doit faire la démande explicite de changer le
+     maillage support d'un champ, en prévision de la comparaison de
+     champs issus de datasource différentes. Il s'agit là d'un choix
+     fonctionnel délibéré pour que l'utilisateur garde trace des
+     modifications faites sur les données (pas de modification
+     automatiques à l'insu de l'utilisateur, même sous prétexte
+     d'amélioration de l'ergonomie).
+
+
+Exemple 5: Créer un champ sur un domaine spatial
+------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * initialisation par une fonction de la position spatiale
+   * initialisation sur un groupe de maille
+
+Le domaine géométrique de définition du champs à créer est spécifié
+ici par la donnée d'un groupe de mailles. Ce cas d'usage est
+typiquement prévu pour produire les conditions de chargement initial
+d'une structure, par exemple en définissant un champ sur une surface
+de la géométrie, identifiée par un nom de groupe de mailles.
+
+.. warning:: DEVELOPPEMENT EN COURS
+
+Exemple 6: Extraire une partie d'un champ
+-----------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * extraire une composante (ou un sous-ensemble des composantes)
+   * extraire un domaine géométrique (valeurs sur un groupe de maille)
+   * extraire un ou plusieurs pas de temps.
+
+.. warning:: DEVELOPPEMENT EN COURS
+
+   On doit illustrer ici les fonctions de restriction, qui
+   permettraient de récupérer certaines composantes uniquement. Le
+   principe est qu'on crée un nouveau champ qui est une restriction du
+   champ argument à une liste de composantes à spécifier (utiliser la
+   fonction __call__ des fieldproxy).
+
+Pour l'extraction des pas de temps, on peut se ramener au cas de
+l'exemple 2 avec une seule source de donnée.
+
+Exemple 7: Créer un champ à partir d'une image to[mp]ographique
+---------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * Création d'un champ sans datasource (ni maillage, ni champs), à
+     partir d'un fichier image
+
+En tomographie ou en topographie, les appareils de mesure produisent
+des images qui représentent une grandeur physique en niveaux de gris
+sur un plan de coupe donné. L'image ci-dessous représente par exemple
+une vue interne du corps humain faite par IRM:
+
+.. image:: images/xmed-irm.png
+   :align: center
+   :width: 600px
+
+Cette image est un ensemble de pixels organisés sur une grille
+cartesienne. Elle peut donc être modélisée sous la forme d'un champ
+scalaire dont les valeurs sont définies aux cellules d'un maillage
+réglés de même taille que l'image (en nombre de pixels):
+
+.. image:: images/xmed-irm-field.png
+   :align: center
+   :width: 600px
+
+Le module de manipulation de champ fournit un utilitaire appelé
+``image2med.py`` qui permet d'appliquer ce principe à la conversion
+d'un fichier image en fichier med contenant la représentation de
+l'image sous forme d'un champ scalaire (seul le niveau de gris est
+conservé)::
+
+  $ <xmed_root_dir>/bin/salome/xmed/image2med.py -i myimage.png -m myfield.med
+
+.. |ICO_IMAGESOURCE| image:: images/ico_imagesource.png
+                        :height: 16px
+
+Cette opération de conversion peut être faite automatiquement dans
+l'interface graphique du module au moyen de la commande "Add Image
+Source" |ICO_IMAGESOURCE| disponible dans la barre d'outils. Cette
+commande ouvre la fenêtre suivante pour inviter l'utilisateur à
+choisir un fichier image:
+
+.. image:: images/medop_image2med_dialog.png
+   :align: center
+
+Le nom du fichier med résultat est proposé par défaut (changement de
+l'extention en ``*.med``) mais il peut être modifié. Enfin, on peut
+demander le chargement automatique du fichier med produit pour ajout
+dans l'espace de donnée. Les champs peuvent alors être manipulés comme
+dans les cas d'utilisation standard.
+
+Par exemple, l'image ci-dessous affiche le résultat de la différence
+entre deux images, ajoutée à l'image de référence: si i1 et i2
+désignent les champs créés à partir des deux images, on représente ``r
+= i1 + 5*(i2-i1)`` où le facteur 5 est arbitraire et sert à amplifier
+la zone d'intérêt (en haut de l'oeil gauche):
+
+.. image:: images/xmed-irm-diff.png
+   :align: center
+   :width: 600px
+
+L'exemple ci-dessous est le résultat du chargement d'une image
+tomographique issue du projet MAP (Charles Toulemonde,
+EDF/R&D/MMC). L'image tomographique:
+
+.. image:: images/champ_altitude_MAP.png
+   :align: center
+   :width: 600px
+
+Le résultat du chargement:
+
+.. image:: images/medop_image2med_tomographie.png
+   :align: center
+   :width: 800px
+
+Exemple 8: Continuer l'analyse dans PARAVIS
+-------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * Export de champs vers le module PARAVIS.
+
+Les possibilités de représentation graphique des champs fournies par
+le module MED ont pour seul objectif le contrôle visuel rapide. Par
+défaut, le viewer de VISU est employé.
+
+Pour une analyse plus détaillées des champs, il est nécessaire de
+poursuivre le travail dans PARAVIS. Le module de manipulation de
+champs offre une fonction qui simplifie ce passage, en faisant le
+chargement automatique dans PARAVIS et en proposant une visualisation
+par défaut (carte de champs scalaire).
+
+Pour cela, il faut sélectionner dans l'espace de travail les champs à
+exporter, puis déclencher la fonction d'export depuis le menu
+contextuel associé:
+
+.. image:: images/medop_exportparavis.png
+   :align: center
+
+Les champs sélectionnés sont regroupés dans une entrée MED du
+navigateur PARAVIS, et le premier champ est affiché sous forme de
+carte de champ:
+
+.. image:: images/medop_exportparavis_result.png
+   :align: center
+   :width: 800px
+
+.. note:: La fonction d'export est une fonction de confort. La même
+   opération peut être faite manuellement en procédant d'abord à
+   l'enregistrement des champs sous forme de fichier MED, puis en
+   chargeant le fichier généré dans le module PARAVIS pour
+   visualisation.
+
+.. _xmed.userguide.tui:
+
+Utilisation de l'interface textuelle du moduel XMED (TUI)
+=========================================================
+
+Toutes les opérations menées au moyen de l'interface graphique peuvent
+être réalisées (avec plus ou moins de facilité) avec l'interface
+textuelle. Le module de manipulation de champs peut même être utilisé
+exclusivement en mode texte. Pour cela, on lance la commande::
+
+ $ <path/to/appli>/medop.sh
+
+Cette commande ouvre une console de commandes ``medop>``. Un fichier
+med peut être chargé et travaillé, par exemple pour créer des champs à
+partir des données du fichier.
+
+Que l'on soit en mode texte pur ou en mode graphique, un séquence de
+travail type dans la console peut ressembler au jeu d'instructions
+suivantes::
+
+ >>> load("/path/to/mydata.med")
+ >>> la
+ id=0    name    = testfield1
+ id=1    name    = testfield2
+ >>> f1=get(0)
+ >>> f2=get(1)
+ >>>   ls
+ f1      (id=0, name=testfield1)
+ f2      (id=1, name=testfield2)
+ >>> r=f1+f2
+ >>> ls
+ f1      (id=0, name=testfield1)
+ f2      (id=1, name=testfield2)
+ r       (id=2, name=testfield1+testfield2)
+ >>> r.update(name="toto")
+ >>> ls
+ f1      (id=0, name=testfield1)
+ f2      (id=1, name=testfield2)
+ r       (id=2, name=toto)
+ >>> put(r)
+ >>> save("result.med")
+
+Les commandes principales sont:
+
+* ``load``: charge un fichier med dans la base de données (utile
+  uniquement en mode texte pur)::
+
+  >>> load("/path/to/datafile.med")
+
+* ``la``: affiche la liste de tous les champs chargés en base de données ("list all")
+* ``get``: définit un champ dans l'espace de travail à partir de son
+  identifiant (utile plutôt en mode texte pur car l'interface
+  graphique permet de faire cette opération par sélection d'un champ
+  dans le dataspace)::
+
+  >>> f=get(fieldId)
+
+* ``ls``: affiche la liste des champs présent dans l'espace de travail ("list")
+* ``put``: met un champ en référence dans l'*espace de gestion*::
+
+  >>> put(f)
+
+* ``save``: sauvegarde tous les champs référencés dans l'espace de
+  gestion dans un fichier med::
+
+  >>> save("/path/to/resultfile.med")
+
+.. note:: On peut faire à ce stade plusieurs remarques:
+
+   * la commande ``load`` charge uniquement les méta-informations
+     décrivant les maillage et les champs (noms, type de
+     discrétisation, liste des pas de temps). Les maillages et les
+     valeurs physiques des champs sont chargées ultérieurement (et
+     automatiquement) dés lors qu'elles sont requises par une
+     opération. Dans tous les cas, les données med (méta-informations
+     et valeurs) sont physiquement stockées au niveau de l'espace
+     *base de données*.
+   * la commande ``get`` définit en réalité un *manipulateur de champ*
+     dans l'espace de travail, c'est-à-dire une variable qui fait la
+     liaison avec le champ physique hébergé dans la base de
+     données. Les données physiques ne circulent jamais entre les
+     espaces, mais restent centralisées au niveau de la base de
+     données.
+
+Les commandes TUI suivantes nécessitent de travailler dans
+l'environnement graphique:
+
+* ``visu``: afficher une carte de champ pour contrôle visuel rapide
+  (pas de paramettrage possible)
+
+  >>> view(f)
+
+
diff --git a/src/MEDOP/doc/sphinx/xmed-workingnotes-2010.rst b/src/MEDOP/doc/sphinx/xmed-workingnotes-2010.rst
new file mode 100644 (file)
index 0000000..724c9a8
--- /dev/null
@@ -0,0 +1,461 @@
+.. meta::
+   :keywords: maillage, champ, manipulation
+   :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2010
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Principes directeurs du développement
+=====================================
+
+En matière de développement:
+
+* On ne cherche pas d'emblée à s'inscrire dans la fabrication d'un
+  module SALOME diffusable dans la version d'exploitation 2010 (SALOME
+  6). La raison est double: (i) on souhaite au moins pour 2010 ne pas
+  devoir tenir compte des contraintes de temps SALOME et (ii) le
+  produit envisagé fin 2010 est une maquette qui cherche à éprouver
+  l'ergonomie générale d'utilisation et en aucun cas on ne peut
+  garantir la réalisation d'un module SALOME compatible avec les
+  exigences de mise en exploitation.
+* On ne cherche pas d'emblée à capturer tous les cas d'application,
+  mais à concevoir un développement qui acceptera les extensions de
+  périmètres dans des conditions raisonnables. Aussi, les
+  fonctionnalités développées seront celles qui sont nécessaires à la
+  réalisation des cas d'application de référence;
+
+En matière d'ergonomie:
+
+* L'interface utilisateur de référence (appelé espace de travail dans
+  le volet de spécifications fonctionnelles) est l'interpréteur
+  python. Les fonctionnalités doivent être pensées pour un usage
+  adapté à une interface textuelle (TUI) de ce type.
+* La création d'une interface graphique (GUI) peut être envisagée en
+  complément et comme un moyen de manipuler graphiquement les
+  fonctionnalités développées pour l'interface textuelle et pour aider
+  la préparation des variables dans l'interface python.
+* Le modèle d'un processus de manipulation de champs est:
+
+  - Préparation du jeu de variables U, V, ... représentant les champs
+    à manipuler. C'est à ce stade que l'on résoud la question de
+    sélection des données (dans un champ publié dans l'arbre d'étude,
+    par un module de calcul ou par chargement d'un fichier med)
+  - Utilisation des variables avec une sémantique la plus proche
+    possible du modèle conceptuel et des spécifications
+    fonctionnelles;
+  - Création des variables qui représentent les résultats des
+    fonctions de manipulation;
+  - Persistence (fichier med), visualisation (SALOME) ou export (vers
+    une structure qui peut être directement utilisable en numpy)
+
+Sur le plan technique:
+
+* On souhaite spécifier clairement le conteneur SALOME des fonctions
+  de manipulation de champs. Pour discussion:
+
+  - Il apparaît que les modules SALOME MED et VISU contiennent déjà
+    des fonctions qui peuvent faire partie des fonctions de
+    manipulations de champs (en particulier pour l'exploration des
+    structures MED, leur visualisation et la sélection des données à
+    manipuler).
+  - Dans la mesure où le module MED n'est pas utilisé à ce jour (en
+    tout cas pas sous sa forme de module SALOME) et compte-tenu du
+    caractère obsolescent du module VISU (amené à être remplacé sur le
+    plan fonctionnel  par le module PARAVIS), on pourrait examiner la
+    création d'un module dédié à la manipulation des maillages et des
+    champs par l'agrégation technique au sein d'un même module des
+    fonctions des modules MED et VISU.
+
+Au moins dans un premier temps, on se donne les limites suivantes:
+
+* Une opération ne peut pas combiner des pas de temps différents. Dans
+  l'hypothèse où cette limite venait à être levée, on doit spécifier
+  le pas de temps de la donnée résultat;
+* Le domaine d'application d'une opération pourra être défini
+  exclusivement par la donnée d'un maillage ou un groupe d'éléments du
+  maillage;
+* On ne traite pas le cas des champs qui prennent leurs valeurs aux
+  points de gauss ou aux noeuds par élément. Une particularité de ces
+  types de support est que le repérage de la position implique deux
+  indices (par exemple l'indice de la maille, puis l'indice du point
+  de gauss).
+
+Eléments de conception
+======================
+
+Plan général
+------------
+
+On peut par exemple imaginer une maquette du genre:
+
+* En C++ dans MEDGUI, charger un fichier med et donner une vue de la
+  structure des maillages et des champs dans l'arbre d'étude.
+* Sélectionner un élément (par exemple un pas de temps d'un champ) et
+  le menu contextuel permet d'exporter ce champ dans la console python
+  pour manipulation. Pour cela, s'inspirer de la fonction
+  ``XCADGUI::OnLoadScript()`` du XCADGUI pour manoeuvrer un objet
+  PythonConsole.
+* L'élément est marqué comme ayant été exporté, on peut imaginer une
+  récupération ultérieure.
+* Exporter un deuxième champ cohérent avec le premier (même pas de
+  temps et défini sur le même maillage avec le même support, on
+  s'arrange pour).
+* Dans la console python, faire les opérations sur les champs
+* Publication du champ résultat dans l'arbre d'étude pour sauvegarde
+  ultérieure. C'est a priori le gros morceau qui consiste à faire un
+  objet CORBA MED à partir d'un objet MED standard, en plus défini
+  dans la console python (sous forme d'objet python).
+
+Quand ce premier cas d'utilisation est au point, on peut envisager de
+le compléter par les opérations suivantes
+
+* exporter le résultat med dans un fichier
+* visualiser les champs produits
+
+Plan de développement:
+
+* Faire une maquette en MEDMEM pur d'abord, car quelque soit le choix
+  d'architecture, l'opération physique se déroulera en définitif au
+  niveau de MEDMEM pur.
+* Prévoir une implémentation des opérations sous forme de fonctions
+  informatiques, même les opérations algébriques (+,-,*,/). Pour ces
+  dernières et dans certaines conditions (quand on manipule
+  directement les strutures MEDMEM et non pas les objets CORBA),
+  l'utilisation des formes A+B, A-B, ... peuvent être rendues
+  possibles. Dans ce cas, voir la possibilité de combiner plusieurs
+  opérations algébriques sur une seule ligne: A+B-C*0.3.
+* On peut charger la structure MED sous forme d'objet CORBA publiable
+  dans l'étude, de sorte d'avoir accés aux méta-données et pouvoir par
+  exemple sélectionner les champs d'intérêt. De cet objet CORBA, on ne
+  récupère que les informations nécessaires au chargement d'un champs:
+  le nom du champs, le nom de son maillage associé, les identifiants
+  du pas de temps, au besoin une structure Field non chargée (par
+  exemple pour récupérer plus facilement le maillage).
+* Un mécanisme (à développer à partir du PyConsole par exemple)
+  pourrait alors permettre le chargement des champs sélectionnés dans
+  la console python et sous un nom facile à manoeuvrer. Prendre
+  inspiration sur XCADGUI::LoadIntoPythonConsole().
+* A priori, les données sont physiquement chargée dans le GUI. Au
+  besoin, il semble possible (cf. MED_i::init) de fabriquer une objet
+  CORBA field à partir d'un field standard (à tester).
+
+Une autre idée est de récupérer le pointeur CORBA MED dans la console
+python et de tirer les données à partir de là. Ajouter une couche de
+wrapping python pur pour gérer les cas de simplification (surcharge
+des opérations arithmétiques par exemple).
+
+Besoins complémentaires:
+
+* L'interpréteur doit contenir des éléments d'aide (par exemple un
+  help qui liste les opérations possibles sur les champs chargés)
+* prévoir quelques fonctions de visu et de persistence. Cela commence
+  probablement par des fonctions de publication dans l'étude des
+  champs créés par les opérations de manipulation. Les champs sont
+  physiquement ajouté automatiquement à la structure med par le MedOp
+  mais il n'est pas obligatoirement publié => fournir un moyen de
+  publication.
+
+Limitations actuelles (liées à la conception de MEDMEM):
+
+* les champs doivent être gérés par la même structure MED car ils
+  doivent partager le même support.
+* les opérations possibles dans MEDMEM sont entre champs pris sur un
+  pas de temps (Q: les pas de temps peuvent-ils être différents).
+
+
+Développements
+--------------
+
+Développement de classes proxy:
+
+* FieldProxy, FieldTimeSeriesProxy
+* Attention pour les éries temporelles, le SUPPORT med peut être
+  différent en chaque pas de temps (par exemple en cas d'extension
+  spatiale du champ au cours du temps).
+
+MEDMEM_MedDataManager:
+
+* FIX: test de l'implémentation C++ au travers de la fonction test() du
+  MedOperator ==> OK. Quand on fait la même opération depuis python
+  via l'interface SWIG ==> au deuxième appel de getFieldDouble, le
+  destructeur du champ semble être appelé. Pb de gestion des pointeurs?
+
+
+Evolutions à prévoir
+====================
+
+Concernant MEDMEM:
+
+* FIX: SALOME_MED::MED::getField devrait pouvoir être appelée
+  plusieurs fois de suite puisqu'on recycle la référence si elle est
+  déjà chargée.
+* IMP: MEDMEM::MED faire une gestion des chargements des champs (par
+  exemple avec un getField qui renvoie le champ s'il est déjà chargé
+  ou le charge et le renvoie sinon).
+* IMP: Récupérer le nom du fichier med à partir de l'objet MED, en
+  passant a priori par le driver associé. Plusieurs driver peuvent
+  être associés à une structure MED car les données peuvent être
+  chargées en plusieurs fois et de plusieurs fichiers. Il faut donc
+  étendre la structure MED pour avoir accés à la liste des driver puis
+  de cette liste déduire les noms des fichiers.
+* IMP: Opérations combinant des champs sur des support différents ne
+  peuvent pas être faites par l'API (une exception est levée en cas de
+  supports incompatibles), mais on peut imaginer le faire en
+  manoeuvrant les tableaux de données directement.
+* INF: faire le point sur les fonctions utilitaires autour de MEDMEM
+  et de son interface SWIG (ex: dumpMEDMEM.py, med_opfield_test.py).
+* IMP: dans MEDMEM::MED et SALOME_MED::MED, pouvoir enlever un champ
+  préalablement ajouté: une fonction removeField en complément de
+  addField.
+
+Concernant l'interface SALOME_MED:
+
+* IMP: Fonctions algébriques, qui seront implémentées au niveau de la
+  structure MED et requêtées au niveau des classes proxy en spécifiant
+  les identifiants des champs impliqués et les paramétres requis (pas
+  de temps en particulier).
+
+Concernant le module MED:
+
+* IMP: pourvoir exporter la structure med dans un fichier med (la
+  structure ayant pu être enrichie par la publication de champs créés
+  par les operations de champs.
+
+
+Historique des travaux
+======================
+
+20100726 : mise au point du schéma de conception
+------------------------------------------------
+
+Choix entre MEDMEM et MEDCoupling: on reste sur MEDMEM pour plusieurs
+raisons:
+
+* MED Coupling ne peut pas gérer des mailles de dimensions différentes
+  dans un même modèle (choix faits dans un soucis de performance dans
+  l'accès à une structure de donnée compact). On peut contourner le
+  problème en définissant deux champs pour traiter chacun des type de
+  mailles.
+* Un champ repose sur un maillage complet (pas de notion de profil,
+  mais cela peut être émulé en créant deux maillages)
+* Le concept de point de gauss n'existe pas (pas implémenté)
+
+TODO:
+
+* Idéalement, il conviendrait de faire un état des lieux du module
+  MED, en particulier des éléments MEDMEM (le coeur), les interfaces
+  CORBA associées (MED.idl implémenté dans le package source
+  MEDMEM_I), l'engine (composant SALOME d'interface MED_Gen.idl et
+  implémenté dans le package source MED) et le GUI (MedGUI.cxx
+  implémenté dans le package source MEDGUI).
+
+* Ergonomie TUI et modèle CORBA associé:
+
+  1. Charger un objet medmem (puis les objets métier mesh et field)
+     sur un domaine d'application donné.
+  2. En faire des variables disponibles dans l'interface TUI et que
+     l'on peut manipuler dans des opérations algébriques.
+  3. Pouvoir au besoin en faire des objets CORBA pour l'interface avec
+     les autres modules SALOME.
+
+* Compléter le diagramme de la structure informatique de MED (en
+  particulier l'implémentation des interface IDL).
+* Préparer un module de travail XMED (organisation d'une bibliothèque)
+
+Tests à réaliser:
+
+* Est-il possible de faire des opérations algébriques à partir des
+  objets SALOMEMED (objects CORBA MED)?
+* Création d'un objet MED_i à partir d'une objet MED pur préalablement
+  chargé en mémoire.
+
+A retenir:
+
+* Des opérations de champs sont possibles sur des champs à des pas de
+  temps fixés. Si l'opération doit être menée sur plusieurs pas de
+  temps, alors itérer sur chaque pas de temps. L'idée ici est
+  d'introduire le concept de série temporelle de champs en temps
+  qu'objet manipulable.
+* Pour deux champs différents de la même structure MED, la données des
+  identifiants dt et it ne correspond pas forcément au même instant
+  absolu (en tout cas rien ne le garanti, même si c'est tout de même
+  une pratique courante).
+
+20101005 : première maquette de démonstration de l'ergonomie en MEDMEM pur
+--------------------------------------------------------------------------
+
+XMED: svn révision 16
+Travailler avec le fichier de donnée testfield.med joint.
+
+
+20101007 : Vers une maquette CORBA
+----------------------------------
+
+Le contexte d'utilisation des opérations de champs est l'environnement
+SALOME. Le support de gestion des données est donc l'étude SALOME. Au
+plus bas niveau, les champs sont des objets MEDMEM instanciés dans une
+session SALOME (soit par un code de calcul intégré, soit par
+chargement des données à partir d'un fichier med). Ces objets sont en
+général référencés dans l'étude SALOME sous la forme d'objets CORBA de
+classe SALOMEMED::FIELD. Plus exactement, l'étude SALOME gère des
+SObject (Study Object) dont un attribut est une référence vers un
+objet CORBA de classe SALOMEMED::FIELD qui lui-même encapsule un objet
+MEDMEM::Field.
+
+On peut donc envisager une solution dans laquelle on donne à
+l'utilisateur des poignées de manipulation des objets
+SALOMEMED::FIELD, par exemple au moyen d'un modèle informatique de
+type proxy. Cela signifie que l'utilisateur ne manipule pas
+directement des objets MEDMEM mais des objets python qui font
+l'interface (à concevoir et implémenter, a priori avec un design
+pattern de type proxy).
+
+L'utilisation directe des objets MEDMEM aurait pu être une solution
+extremement pratique dans la mesure où ces objets en l'état peuvent
+être combinés dans des opérations de champs (c'est déjà
+implémenté). Par contre, ce procédé souffre de limitations importantes
+dans la gestion et la circulation des données pour les différents cas
+d'utilisation envisagés (visualisation, export, transfert à un autre
+module SALOME).
+
+L'avantage de la solution proposée est multiple:
+
+* Elle permet de travailler sur une structure MED cohérente pour
+  intégrer les résultats des opérations de calculs et combiner des
+  champs cohérents entre eux. Tout passe par des classes proxy qui
+  pourront s'assurer de la cohérence des opérations demandées et
+  exécuter automatiquement les fonctions de pré-traitement ou
+  post-traitement requises pour ces opérations. On peut imaginer par
+  exemple que les requêtes d'opération soient envoyées par les classes
+  proxy à la structure MED à laquelle les champs sont associés pour
+  piloter l'opération en MEDMEM pur.
+* Elle permet d'automatiser un certain nombre d'opérations
+  implicites. Par exemple si deux champs ne sont pas définis dans la
+  même unité, un changement d'unité peut être effectué automatiquement
+  par la classe proxy avant de commander l'opération au niveau
+  MEDMEM.
+* Elle permet de laisser les données sur le container SALOME et de
+  réaliser des opérations sans rappatrier les données en local (qui
+  peuvent être en trés grand nombre).
+* Elle permet d'étendre facilement l'ergonomie de manipulation des
+  champs, par exemple en définissant la notion de *série temporelle de
+  champs*, ou encore les concepts de *domaine de définition* évoqués
+  dans les spécifications fonctionnelles.
+* Elle rend immédiat la circulation des données entre modules SALOME,
+  puisque les champs restent accessble par des objets CORBA, en
+  particulier pour la visualisation ou l'export des champs produits
+  par les opérations.
+
+Elle a cependant des inconvénients et/ou limitations:
+
+* Elle nécessite l'implémentation d'une classe proxy pour encapsuler tous
+  les appels aux objets SALOME_MED (et donc MEDMEM). Cette interface
+  se limite a priori aux opérations de champs (les opérations
+  algébriques dans un premier temps).
+* Les champs à manipuler dans une opération donnée doivent être gérés
+  par la même structure MED.
+
+Il est à noter également que les interfaces de programmation de
+SALOMEMED (interface CORBA pour MEDMEM) devront être étendues pour
+permettre des requêtes de manipulations de champs (fonctions addition,
+soustraction, multiplication, ...). Pas de contrainte ici sur
+l'ergonomie puisque la manipulation par l'utilisateur se fera au
+niveau des classes proxy uniquement.
+
+
+Hypothèses:
+
+* On tente ici une maquette qui exploite dans la mesure du possible le
+  fonctionnement actuel du module MED, en particulier la gestion des
+  données dans l'étude.
+* Dans une deuxième version, on pourra examiner sérieusement la
+  révision de la gestion des données dans le module, quitte à la
+  spécifier et maquetter dans XMED pour intégration ultérieure dans
+  MED. Exemple:
+
+  - Pouvoir gérer plusieurs structures med dans l'étude.
+
+* Enfin, on exploite MEDMEM en l'état. Pour les besoins de la gestion
+  des données (gestion des chargements des champs en particulier,
+  références croisées pour retrouver le med à partir du champ par
+  exemple, ...), il pourra être nécessaire de faire évoluer MEDMEM. Il
+  faut pouvoir par ailleurs gérer indifféremment une structure med (et
+  les champs qui y sont associés) qu'elle soit créée en mémoire from
+  scratch ou chargée d'un fichier (donc attention avec les opérations
+  de lecture read(), sur les maillages comme sur les champs). La
+  structure med permet d'obtenir les méta données (meta-field par
+  exemple) mais ne permet pas de savoir si les données sont
+  physiquement chargées ou pas.
+
+
+Révisions:
+
+* XMED svn revision 21 + tarball MED_SRC-20101014-15h26m.tgz.
+  Première version qui permet d'importer un champ dans la console
+  python sous la forme d'un FieldProxy. Ne permet pas encore de faire
+  des opérations. Introduction dans le module MED de l'interface MEDOP
+  pour prendre en charge les opérations sur les champs.
+
+
+20101019 : Maquette de démonstration pour l'addition
+----------------------------------------------------
+
+Cette maquette implémente une solution technique de bout en bout (de
+l'interface python aux objets MEDMEM, en passant par le fieldproxy
+puis les servants CORBA pour les operations, ...) mais sur le
+périmètre de l'addition de champs sur tout leur domaine de définition
+et pour un pas de temps donné.
+
+Limitations:
+
+* gére l'addition de champs de type double uniquement (parceque le
+  reste n'est pas implémenté)
+
+Révisions:
+
+* XMED: svn révision 25
+* MED: cvs tag BR_medop_20101019
+
+
+20101020: Fonctions complémentaires
+-----------------------------------
+
+Cette version test la faisabilité des fonctions complémentaires pour
+accompagner la manipulation de champs. Cela comprend en particulier:
+
+* **la sauvegarde des champs produits** dans un fichier med (un champ ou
+  toute la structure med). Pour cela, on définit un med proxy comme
+  l'extention du SALOME_MED::MED (prévir plutôt d'implémenter ce type
+  de fonction au niveau C++ pour permettre un usage au niveau du GUI
+  C++?).
+* **la visualisation d'un champ** au moyen du module VISU.
+* **des fonctions d'aide interactives** pour assister l'utilisateur
+  dans la console de manipulation des champs.
+
+
+Questions:
+
+* peut-on sauvegarder un champ unique?
+* peut-on faire en sorte que ce soit l'affectation à une variable qui
+  provoque l'ajout du champ à la structure med (ou plus exactement qui
+  supprime tous les champs intermédiaires).
+
+
+Révision:
+
+* XMED: svn revision 31
+* MED: cvs tag BR_medop_20101025
+
+
+20110606: commit avant transfert dans git
+-----------------------------------------
+
+* XMED: svn revision 53
+
+Les parties de MED utiles à MEDOP seront reversées dans XMED
+dans une première étape, puis le tout dans MED 6 au final. 
diff --git a/src/MEDOP/doc/sphinx/xmed-workingnotes-2011.rst b/src/MEDOP/doc/sphinx/xmed-workingnotes-2011.rst
new file mode 100644 (file)
index 0000000..8ba8b80
--- /dev/null
@@ -0,0 +1,473 @@
+.. meta::
+   :keywords: maillage, champ, manipulation
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2011
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Cas d'utilisation métier
+========================
+
+On illustre par un exemple (Christophe Vallet, R&D/MMC, 1/7/2011)::
+
+ J'ai souvent des fichiers med de résultats de calcul, et j'aimerais y
+ ajouter de nouveaux champs issus de champs existants. J'aimerais
+ aussi pouvoir créer de nouveaux meds plus petits par extraction de
+ certaines composantes de champs, certains groupes ou certains pas de
+ temps.
+
+On peut exprimer le besoin sous la forme des cas d'utilisation
+suivants (use cases):
+
+* **UC1: combiner dans un même fichier med des champs issus de
+  plusieurs sources de données**. On peut par exemple charger un
+  premier fichier, puis ajouter à cette base des champs issus d'autre
+  fichiers ou générés par manipulation de champs, ou encore générés
+  par un module de calcul qui produirait directement du MEDCoupling.
+* **UC2: créer un champ contenant certaines composantes d'un autre
+  champ**. On pense ici aux fonctions de restriction, qui permettraient
+  de récupérer certaines composantes uniquement.
+* **UC3: créer un champ contenant certains pas de temps d'un autre
+  champ**. C'est un cas particulier des fonctions de restriction
+  évoquées ci-dessus.
+* **UC4: créer un champ comme la limitation d'un autre champ à un
+  groupe de mailles**. C'est un cas particulier des fonctions de
+  restriction évoquées ci-dessus. Notion de domaine spatial. A
+  priori la notion de groupe est définie dans MEDLoader.
+
+On peut ajouter également les UC identifiés pour la maquette 2010:
+
+* **UC5: comparer des champs issus de source de données différentes**,
+  par exemple des champs chargés de deux fichiers med différents et
+  qui s'appuient sur le même maillage (au moins conceptuellement).  Le
+  problème technique ici est de pouvoir changer le maillage d'un
+  champ, pour ramener tous les champs sur le même maillage (au sens
+  informatique). Ceci est une contrainte de MEDCoupling, les
+  opérations sur des champs A et B imposent que A et B soient définis
+  sur le même maillage, i.e. le même objet informatique.
+* **UC6: créer un champ de toute pièce sur un maillage**, ou un groupe
+  de mailles. Ce cas d'usage est typiquement prévu pour produire les
+  conditions de chargement initial d'une structure. Il s'agit ici
+  d'initialiser un champ à partir de zéro sur une surface prédéfinie
+  de la géométrie (par exemple spécifiée par un nom de groupe de
+  mailles).
+
+Pour UC5: les sources de données sont référencées dans l'object
+browser. On importe explicitement les données dans l'espace de
+travail. On peut détecter que les maillages sont identiques et on
+propose à l'utilisateur de transférer le champ sur le maillage déjà
+présent. Sinon, les champs devront être référencés sur des maillages
+distincts dans l'arbre de l'espace de travail.
+
+Analyses préliminaires pour le chantier 2011
+============================================
+
+On fait le choix pour le chantier 2011 de travailler à partir de la
+bibliothèque MEDCoupling (et non plus MEDMEM comme c'était le cas dans
+le démonstrateur 2011).
+
+Analyse de MEDCoupling et MEDLoader
+-----------------------------------
+
+MEDCoupling est l'implémentation du modèle de données MED (avec
+recherche de minimisation des dépendances logicielles) et MEDLoader
+fournit une ensemble de fonctions pour le chargement des structures
+MEDCoupling depuis un fichier ou inversement leur sauvegarde sous
+forme de fichiers.
+
+Dans l'implémentation MEDCoupling, un champ est l'ensemble des valeurs
+d'une grandeur physique sur un maillage pour un pas de temps donné. Un
+champ est caractérisé par:
+
+* un support spatial, le maillage
+* un type de discrétisation spatial, défini par l'emplacement des
+  valeurs sur le maillage (sur les noeuds, sur les cellules, aux
+  points de gauss, ...) et le mode d'interpolation spatial (P0, P1,
+  etc)
+* un pas de temps, défini par deux entiers (iteration, order) et un
+  réel (timestamps)
+
+Dans cette implémentation, il existe une association 1..n entre un
+maillage et un champ (alors que dans MEDMEM, la structure
+intermédiaire SUPPORT est implémentée).
+
+MEDCouplingCorba fournit un ensemble de servants CORBA pour manoeuvrer
+des structures MEDCoupling au travers du bus CORBA. L'interface à ce
+jour est délibérément réduite. Des classes dites "Cliente" sont
+fournies pour piloter les servants CORBA depuis un contexte
+client. Par exemple ``MEDCouplingFieldDoubleClient`` fournit une
+fonction de création d'une structure MEDCoupling à partir d'un
+pointeur vers un servant CORBA. La structure est créée localement
+(dans le contexte client) avec duplication des données issue de la
+structure encapsulée par le servant CORBA (récupération par la
+fonction de sérialisation).
+
+Aucune interface CORBA n'est défini pour MEDLoader.
+
+Questions:
+
+* Voir comment sont créés les servants, et surtout comment ils sont
+  récupérés (via le lcc?)
+* Comment peut-on définir un champ sur un groupe de mailles (et non
+  pas sur le maillage complet)? Comment peut-on extraire le champs
+  circoncit à une groupe de mailles pour des opérations.
+
+  - R: méthode changeUnderlyingMesh
+
+* Comment manipuler deux champs chargées de fichiers différents mais
+  construit sur le même maillage (conceptuellement). On peut forcer la
+  réassociation d'un champ sur un autre maillage?
+* Manipuler des champs de pas de temps différents? Différentes
+  composantes d'un ou plusieurs champs?
+* Comment importer un MedCoupling dans PARAVIS? (dans VISU?)?
+
+* mapper sur une image
+
+Improvments:
+
+* MEDLoader::Write should raise an exception if the filepath is not writable
+* MEDDataManager: développer une classe chapeau sur MEDCoupling et
+  MEDLoader pour  aider au chargement et la gestion de données MED
+  (orienté manipulation de champs). Cette classe serait associée des
+  structures légères FieldHandler et MeshHandler et des listes
+  correspondantes pour la navigation dans les méta-données.
+* Sur base du MEDDataManager, prévoir des ports med pour yacs par
+  lesquels pourrait transiter des handler.
+
+Nouveaux concepts à prendre en compte
+-------------------------------------
+
+Au démarrage du chantier 2011, on observe que les concepts suivants
+sont introduits dans le module MED: 
+
+* Le conteneur MED n'existe plus, utiliser MEDFILEBROWSER pour charger
+  les fichiers med et obtenir les informations générales sur le
+  contenu.
+* MEDFILEBROWSER: remplace le concept de driver et fournit les
+  fonctions précédemment fournies par la classe MED pour obtenir les
+  informations de structure.
+* Concept d'Extractor pour une lecture sélective des données de champs
+  (suivant un critère d'extraction)
+* Il n'est plus nécessaire d'appeler les méthodes read explicitement
+  sur les objets (MESH et FIELD) pour charger les données. Par
+  ailleurs, on peut définir deux fois le même champs (double
+  chargement a priori) sans lever d'exception).
+
+
+Analyse de conception pour le chantier 2011
+===========================================
+
+Composants SALOME (interfaces IDL)
+----------------------------------
+
+* MEDDataManager: défini une structure FIELD pour identifier un champ
+  dans les requêtes. Il s'occupe également de la récupération physique
+  des données, quelqu'en soit la source (fichier avec MEDLoader, autre
+  module SALOME comme PARAVIS avec une méthode à définir)
+* MEDCalculator: s'occupe des requêtes de calcul dont les arguments sont
+  les structures FIELD du MEDDataManager. Reprendre l'interface de
+  MEDOP.
+
+Use case à réaliser depuis un client python:
+
+* UC01: ajouter un fichier d'entrée et accéder aux informations
+  concernant les champs. Ex: récupérer une structure champs par la
+  donnée des paramètres primaires (nom identifiant, dt, it, nom du
+  maillage).
+* UC02: créer des champs et les ajouter au MEDDataManager
+* UC03: mener des opérations basique sur les champs en console python
+
+Interface Utilisateur
+---------------------
+
+L'interface utilisateur est composée des parties suivantes:
+
+* une partie GUI (appelée par la suite MEDGUI) qui s'occupe de piloter
+  le chargement des données dans l'espace de travail, au moyen d'une
+  interface graphique;
+* une partie TUI (appelée par la suite MEDTUI) qui s'occupe de piloter
+  la création de champs, au moyen de commandes exécutées dans la
+  console python.
+
+Le principe est que les champs sont préalablement chargés au niveau du
+composant SALOME au moyen de l'interface graphique (MEDGUI), puis
+manoeuvrés depuis l'application SALOME au moyen de variables proxy
+définies dans la console python (MEDTUI). Au chargement, les champs
+sont indéxés par le MEDDataManager, puis les index sont rendus
+accessibles au niveau du GUI au moyen d'une représentation
+arborescente de la structure MED. Les feuilles de l'arbre
+correspondent à des champs qui peuvent être sélectionnés et dont
+l'index peut être obtenu de la sélection.
+
+L'espace de travail est organisé autour du concept de
+"workspace". L'étude SALOME liste les datasource (les fichiers source
+des données med, mais peut-être aussi les référence vers des objets
+MED déjà existants ou chargé dans PARAVIZ). Une vue complémentaire
+permet de voir la structure fine d'une source de données.
+
+Concernant MEDGUI:
+
+* la représentation des données (les champs et les maillages associés)
+  doit permettre de récupérer par l'interface graphique les
+  identifiants des champs à manipuler (a priori les structures FIELD
+  définies par le composant MEDDataManager). Cela conduit à la mise en
+  place des composants suivants:
+
+  - MedDataModel hérité de TreeData. Il est peuplé avec les
+    méta-données décrivant la structure MED explorée.
+  - MedGuiManager qui permet l'implantation du doc widget de
+    présentation
+
+TODO:
+
+* specifier le concept de workspace (qui a une entrée dans l'étude?)
+  en bijection avec un datamanager
+* identifier des interlocuteur/utilisateur pour l'aspect ergonomie d'usage
+
+Concernant MEDTUI:
+
+* Il fournit les classes FieldProxy
+
+Questions:
+
+* Comment traiter le cas du travail sur des composantes ciblées, plus
+  généralement, comment introduire le concept de domaine
+  d'application?
+* Prévoir des fonctions génériques (initialisation d'un champ sur un
+  maillage avec une fonction analytique de la position, sauvegarder
+  les champs créés dans un fichier med)
+
+
+Tâches de développement
+=======================
+
+T20110622.1: Gestion des données internes
+-----------------------------------------
+
+**Status: terminé.**
+Suite: fonction de sauvegarde au niveau graphique également
+
+On vise les cas d'utiliation suivants:
+
+* UC1: intégrer dans le datamodel du gui un champ créé dans la console
+  python (et donc présent dans le datamanager du composant). Définir
+  l'utilité?
+* UC2: renommer un champ et plus généralement changer ses méta-données
+  (avec assurance de synchronisation entre toutes les données).
+* UC3: sauvegarder une sélection de champs. La sélection peut se faire
+  dans l'arbre du datamodel gui.
+
+WARN: robustesse de fieldproxy
+
+
+
+T20110622.2: UC Initialisation/Création de champs
+-------------------------------------------------
+
+**Status: à faire**
+
+Les cas implémentés à ce jour sont la création de champs à partir de
+champs existants et chargés d'un fichier med. On souhaite ici réaliser
+des cas 'utilisation autour de la création de champs "from scratch",
+s'appuyant tout de même sur un maillage chargé.
+
+UC01: Sélection d'un groupe de maille dans SMESH pour initialiser un
+champ (par exemple les conditions limites d'un problème de calcul).
+
+UC02: créer un champ avec des restrictions qui définissent le domaine
+d'application des opération de champs.
+
+UC03: créer un champ à partir d'une image (codes rgb utilisé comme les
+composantes du champs vectoriel ou niveaux de gris pour un champ
+scalaire. Attention, pour ça, il faudra a priori fiare une projection
+du maillage cartesien de l'image sur le maillage (quelconque) sur
+lequel on souhaite définir le champ.
+
+UC04: créer un champ à partir d'un tableau numpy
+
+De manière générale, ce type de création sera assisté par le
+MEDGUI. Au niveau MEDTUI, les fonctions pourraient être fastidieuses
+pour l'utilisateur.
+
+Par exemple, prévoir un menu contextuel qui propose les opérations
+possibles en fonction de la sélection (en plus de la fonction d'import
+dans la console python).
+
+TODO:
+
+* développer les fonctions d'initialisation, par exemple au moyen
+  d'applyFunc et du mécanisme de callable?
+
+T20110622.3: documentation contextuel
+-------------------------------------
+
+**Status: à faire**
+
+* Remettre toutes les commandes dans le même fichier (fusionner cmdtools
+  et fieldtools)
+* Faire un modèle générique de command (classe de base
+* Batir la doc des commandes sur cette base (lister toutes les
+  instances de type Command par exemple)
+
+T20110622.4: remontée des exception du composant MEDCalculator
+--------------------------------------------------------------
+
+**Status: en cours, compléter la couverture**
+
+Pour des messages contextuel sur les erreurs de calcul (ex: division
+par 0)
+
+* Poursuivre le travail fait sur getMedEventListener
+* Protéger tous les appels au composants effectués depuis la console
+  python (prendre example sur la commande save)
+
+T20110624.1: gestion des données GUI
+------------------------------------
+
+**Status: à faire**
+
+
+
+Le workspace a une entrée dans l'obrowser. Sur cette entrée on peut:
+
+* supprimer: supprime tout les champs associés
+* sauvegarder. Dans ce cas, on rappelle l'ensemble des champs pour
+  cocher ceux qu'on veut sauvegarder.
+
+Le gui data model est réservé aux opérations sur les champs et à
+piloter leur import dans la console python.
+
+TODO:
+
+* Spécifier les concepts de workspace, database, et datasource, espace
+  de gestion, ... et les associations. Simplifier avec l'appuie de use
+  cases.
+* Mécanisme de mise à jour du TreeView de XSALOME (aujourd'hui, seul
+  l'ajout addChild est implémenté
+* Clic droit sur objets de l'arbre: dans la notification TreeView ->
+  WorkspaceController, faire remonter l'évènement clic droit ainsi que la
+  liste des éléments sélectionné pour faire générer le menu contextuel
+  au niveau du WorkspaceController qui peut déterminer le contexte métier
+  (le TreeView ne le connaît pas).
+* Définir des DataObject pour les maillages, les séries temporelles et
+  les champs
+
+
+Spécification des espaces de données:
+
+* MEDDataManager dépend de l'étude (pour permettre la publication
+  d'information dans une étude SALOME).
+* créer "sourcid = MEDDataManager::addDataSource(filename)", suivie de
+  requetes getFields(sourceid), getMeshes(sourceid)
+* les espaces de données: dataspace, workspace. Un seul workspace par
+  étude, mais autand de datasources que l'on souhaite dans le
+  dataspace. Les datasources sont rangés dans l'étude (le dataspace)
+  et sont non modifiables après chargement (référence des sources de
+  données).
+
+
+T20110628.1: extention à d'autres objets SALOME
+-----------------------------------------------
+
+**Status: suspendu**
+
+On doit reposer la question de l'existance de l'arbre indépendant
+(DockWidget), d'une part, et l'extention aux autres objets (GEOM et
+SMESH en particulier) du principe de sélection graphique pour
+utilisation dans la console python, d'autre part.
+
+
+T20110628.2: visualisation d'un champ avec PARAVIS
+--------------------------------------------------
+
+**Status: terminé (pour une première version)**
+Suite: de nombreux défauts subsistent
+
+Questions/remarques:
+
+* Pb au démarrage du module: VisTrails fails to start
+* Peux-t-on piloter la vue 3D sans charger le module? (voir
+  myparavis.py)
+* Comment donner un nom au MEDReader1 dans l'arbre Pipeline?
+* Comment utiliser directement les objets MEDCouplingField?
+
+
+T20110706.1: documentation du module
+------------------------------------
+
+**Status: en cours (10%)**
+
+Documenter les commandes TUI puis l'utilisation générale de
+l'interafce graphique. Mentionner l'existance de la commande medop.sh
+pour travailler exclusivement en mode texte (utile pour les tests
+rapides).
+
+Documenter les modalités d'exécution des tests.
+
+T20110708.1: helper python pour MEDCoupling
+-------------------------------------------
+
+**Status: en attente (pas urgent)**
+
+Faire un helper python dans le package xmed qui permet de faire du
+medcoupling facilement (essentiellement pour simplifier le chargement,
+puis la sélection des données). Cela demanderait de faire un
+MedDataManager comme une class C++ pure (non CORBA). Cette classe
+travaillerait par exemple uniquement avec des id et des liste d'id, et
+fournirait des fonctions d'affichage (comme le ``ls`` et le ``la``)
+pour obtenir des meta-information.
+
+Le servant MedDataManager pourrait être une surcouche de cette classe
+c++ pure.
+
+T20110708.2: analyses et tests
+------------------------------
+
+TODO:
+
+* créer un fichier de test avec plusieurs pas de temps
+* créer un fichier de test avec des groupes de mailles
+
+
+T20110728.1: refactoring MEDDataManager
+---------------------------------------
+
+Refactoring pour une meilleur association entre FieldHandler et MeshHandler:
+
+* dans la mesure du possible utiliser les id plutôt que les handler en
+  arguments des fonctions d'appel des objets
+* A chaque champ (FieldHandler), on doit associer un meshid (et de
+  manière optionnelle un fieldseriesId, si le champ peut être associé
+  à une serie temporelle. A priori faisable uniquement au chargement
+  du datasource).
+* Pour cela, revoir les fonctions internes newFieldHandler et addField
+  ou prévoir de les compléter à chaque fois qu'elles sont appelée avec
+  les informations concernant le meshid.
+* addField est utilisée par le MEDCalculator
+* Attention au raffraichissement des données handler au niveau du
+  Workspace. Peut-être le mieux est que les fieldproxy contiennent
+  uniquement le fieldid, et qu'ils interroge le datamanager à chaque
+  fois qu'ils ont besoin d'une donnée. Voir aussi les notifications
+  via le MEDEventListener?  **Le plus simple est de faire la mise à
+  jour lors de l'appel à la méthode __repr__ du fieldproxy, i.e. quand
+  on essaye d'afficher les données**. Parceque sinon il n'y a pas de
+  problème puisque que le calculateur travaille à partir des id.
+
+
+Petites améliorations du DataspaceController:
+
+* Au OnUseInWorkspace, stocker (dans la mesure du possible) le nom de
+  l'alias python dans un attribut du sobject.
+* Dans DlgChangeUnderLyingMesh, expliquer que le champs sera dupliquer
+  est posé dans le WS. On peut donc proposer en option de lui associer
+  un alias pour manipulation dans la console
+
diff --git a/src/MEDOP/doc/sphinx/xmed-workingnotes-2012.rst b/src/MEDOP/doc/sphinx/xmed-workingnotes-2012.rst
new file mode 100644 (file)
index 0000000..011190e
--- /dev/null
@@ -0,0 +1,84 @@
+.. meta::
+   :keywords: maillage, champ, manipulation
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2012
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+
+Analyse preliminaire pour le chantier 2012
+==========================================
+
+La figure imposée pour le chantier 2012 est l'intégration du nouveau
+module de manipulation de champs dans SALOME 6.6 (objectif CEA), en
+préparation de la mise en exploitation dans SALOME 7 (objectif EDF).
+
+L'état actuel est:
+
+* Un module SALOME de nom MED intégrant les bibliothèques MEDCoupling,
+  MEDLoader, REMAPPER, mais aussi plusieurs packages logiciels
+  aujourd'hui obsolètes ou amener à disparaître pour l'échéance
+  SALOME7
+* Un module SALOME de nom XMED qui fournit les fonctions graphiques
+  pour la manipulation de champs.
+* Ce module XMED utilise le module VISU pour les vue de contrôle.
+
+La cible est:
+
+* Un module unique (nom à définir, par exemple MEDOP) débarrassé des
+  packages logiciels obsolètes et intégrant les fonctions graphiques
+  (GUI et TUI).
+* L'utilisation du module PARAVIS (au lieu de VISU) pour les vues de
+  contrôle.
+* L'intégration de MEDCoupling avec YACS (port MED dans YACS par
+  exemple).
+
+A examiner:
+
+* voir les attendus concernant les ports MED dans YACS
+* interface PARAVIS: utilisation du viewer (et de l'API python) sans chargement du GUI
+
+Tâches de développement
+=======================
+
+20120904: Migrer XMED dans MED
+------------------------------
+
+Plan de travail:
+
+* Migration des composants + test
+
+
+
+20120904: Nettoyage de XSALOME
+------------------------------
+
+:status: en cours
+
+* Supprimer les vieilleries de XSALOME:
+
+  - StdHelper -> Basic_Utils (KERNEL)
+
+20120829: mise en place du chantier 2012
+----------------------------------------
+
+:status: terminé
+
+L'objectif de cette première étape est de reverser le prototype 2011
+(module XMED indépendant) dans la branche V6_main du module MED. On
+peut procéder de la manière suivante:
+
+* update de XMED (et XSALOME utilisé par XMED) pour fonctionnement sur
+  V6_main
+* Eliminer la dépendance à XSALOME
+* Supprimer la gestion des multiversion SALOME5/6 au niveau de l'engine
+
+.. warning:: TODO: refaire le point sur les tâches initiées en 2011 
+
diff --git a/src/MEDOP/exe/CMakeLists.txt b/src/MEDOP/exe/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c02d834
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(appligen)
+ADD_SUBDIRECTORY(image2med)
diff --git a/src/MEDOP/exe/Makefile.am b/src/MEDOP/exe/Makefile.am
new file mode 100644 (file)
index 0000000..46d89fc
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SUBDIRS=appligen image2med
diff --git a/src/MEDOP/exe/appligen/CMakeLists.txt b/src/MEDOP/exe/appligen/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c73f77f
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(MODULE_NAME med)
+SET(prefix ${CMAKE_INSTALL_PREFIX})
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config_appli_model.xml.in ${CMAKE_CURRENT_BINARY_DIR}/config_appli_model.xml @ONLY)
+
+SET(MED_RESOURCES_FILES
+  ${CMAKE_CURRENT_BINARY_DIR}/config_appli_model.xml
+  appli-splashscreen.jpg
+  SalomeApp.xml
+  )
+
+INSTALL(FILES ${MED_RESOURCES_FILES} DESTINATION ${MED_salomebin_BINS}/med/appligen)
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/appligen.sh.in ${CMAKE_CURRENT_BINARY_DIR}/appligen.sh @ONLY)
+
+SET(MED_RESOURCES_FILES2
+  ${CMAKE_CURRENT_BINARY_DIR}/appligen.sh
+  )
+
+INSTALL(FILES ${MED_RESOURCES_FILES2} DESTINATION ${MED_salomebin_BINS}/med/appligen PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
diff --git a/src/MEDOP/exe/appligen/Makefile.am b/src/MEDOP/exe/appligen/Makefile.am
new file mode 100644 (file)
index 0000000..edb07c5
--- /dev/null
@@ -0,0 +1,54 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+appligenbindir = $(bindir)/@MODULE_NAME@/appligen
+
+appligenbin_DATA= \
+       envappli.sh \
+       config_appli.xml       \
+       appli-splashscreen.jpg \
+       SalomeApp.xml
+
+appligenbin_SCRIPTS=\
+       appligen.sh
+
+EXTRA_DIST += $(appligenbin_DATA) $(appligenbin_SCRIPTS)
+
+config_appli.xml: config_appli_model.xml
+       cat $< | sed \
+       -e s~__GEOM_ROOT_DIR__~$(GEOM_ROOT_DIR)~g \
+       -e s~__SMESH_ROOT_DIR__~$(SMESH_ROOT_DIR)~g \
+       -e s~__BLSURFPLUGIN_ROOT_DIR__~$(BLSURFPLUGIN_ROOT_DIR)~g \
+       -e s~__GHS3DPLUGIN_ROOT_DIR__~$(GHS3DPLUGIN_ROOT_DIR)~g \
+       -e s~__NETGENPLUGIN_ROOT_DIR__~$(NETGENPLUGIN_ROOT_DIR)~g \
+       -e s~__VISU_ROOT_DIR__~$(VISU_ROOT_DIR)~g \
+       -e s~__YACS_ROOT_DIR__~$(YACS_ROOT_DIR)~g \
+       -e s~__PARAVIS_ROOT_DIR__~$(PARAVIS_ROOT_DIR)~g \
+       > tmp; mv tmp $@
+
+envappli.sh:
+       $(srcdir)/genenv.sh envappli.sh
+
+
+mostlyclean-local:
+       rm -f @builddir@/config_appli.xml @builddir@/envappli.sh
diff --git a/src/MEDOP/exe/appligen/README.txt b/src/MEDOP/exe/appligen/README.txt
new file mode 100644 (file)
index 0000000..133e250
--- /dev/null
@@ -0,0 +1,25 @@
+This package contains a set of files that can be used to generate a
+SALOME application embedding the XMED module (field manipulation).
+
+The files are created in the directory:
+
+  <installdir>/bin/salome/<module_name>/appligen
+
+Where <installdir> is the installation directory of the XMED
+module.
+
+To generate a SALOME application, just change directory to go
+where you want to install the SALOME application and type the
+following command in a standard shell (the SALOME environment
+is not required, all paths are "hard" coded in the script):
+
+  $ <installdir>/bin/salome/<module_name>/appligen/appligen.sh 
+
+This script generates an application in a directory ./appli.
+Then type the following command to run a SALOME application
+embedding your module:
+
+  $ ./appli/runAppli -k
+
+You may used this appli to test the functions of XMED through the
+usage of the GUI module.
diff --git a/src/MEDOP/exe/appligen/SalomeApp.xml b/src/MEDOP/exe/appligen/SalomeApp.xml
new file mode 100644 (file)
index 0000000..9ed9fcc
--- /dev/null
@@ -0,0 +1,37 @@
+<document>
+  <section name="launch">
+    <!-- SALOME launching parameters -->
+    <parameter name="gui"        value="yes"/>
+    <parameter name="splash"     value="yes"/>
+    <parameter name="file"       value="no"/>
+    <parameter name="key"        value="no"/>
+    <parameter name="interp"     value="no"/>
+    <parameter name="logger"     value="no"/>
+    <parameter name="xterm"      value="no"/>
+    <parameter name="portkill"   value="no"/>
+    <parameter name="killall"    value="no"/>
+    <parameter name="noexcepthandler"  value="no"/>
+    <parameter name="modules"    value="KERNEL,GUI,GEOM,SMESH,MED,VISU,YACS,PARAVIS"/>
+    <parameter name="pyModules"  value=""/>
+    <parameter name="embedded"   value="SalomeAppEngine,study,cppContainer,registry,moduleCatalog"/>
+    <parameter name="standalone" value="pyContainer"/>
+  </section>
+  <section name="splash" >
+    <!-- Splash screen settings. This only works when using a SALOME application, -->
+    <!-- where the file appli-splashscreen.jpg has been copy into. -->
+    <parameter name="image"             value="${MED_ROOT_DIR}/bin/salome/med/appligen/appli-splashscreen.jpg" />
+    <parameter name="constant_info"     value="%A [ %V ]" />
+    <parameter name="text_colors"       value="#eeeeff|#555555" />
+    <parameter name="hide_on_click"     value="no" />
+    <parameter name="show_progress"     value="yes" />
+    <parameter name="show_message"      value="yes" />
+    <parameter name="show_percents"     value="yes" />
+    <parameter name="margin"            value="40" />
+    <parameter name="progress_width"    value="20" />
+    <parameter name="progress_flags"    value="bottom,left_to_right" />
+    <parameter name="opacity"           value="0.70" />
+    <parameter name="font"              value="Tahoma,12,normal" />
+    <parameter name="alignment"         value="top,left" />
+    <parameter name="progress_colors"   value="#3b3e5d|#d14949|v" />
+  </section>
+</document>
diff --git a/src/MEDOP/exe/appligen/appli-splashscreen.jpg b/src/MEDOP/exe/appligen/appli-splashscreen.jpg
new file mode 100644 (file)
index 0000000..2e3387b
Binary files /dev/null and b/src/MEDOP/exe/appligen/appli-splashscreen.jpg differ
diff --git a/src/MEDOP/exe/appligen/appligen.sh.in b/src/MEDOP/exe/appligen/appligen.sh.in
new file mode 100755 (executable)
index 0000000..10ad757
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+# 
+# This script installs or updates a SALOME application for testing the
+# XMED module. The application is installed in the
+# directory ./appli. The configuration file is supposed to be adapted
+# to your own environment (see config_appli.xml).
+#
+# To run this script, you should have first configure your
+# shell with the SALOME environment, i.e. source the files
+# prerequis.sh and envSalome.sh (or equivalent) that fit
+# your configuration. You can alternatively customize the env.sh file
+# to fit your SALOME environment and let the script do the job (see
+# source below).
+#
+# (gboulant - 3/2/2011)
+#
+
+here=$(dirname $0)
+
+# Finalize the configuration xml file
+
+
+#
+# Run the appli_gen.py
+#
+APPLIDIR="./appli"
+@KERNEL_ROOT_DIR@/bin/salome/appli_gen.py --prefix=$APPLIDIR --config=$here/config_appli.xml
+
+#
+# Copy customized configuration files in the application
+#
+cp $here/SalomeApp.xml $APPLIDIR/.
+
+# This write an executable program that run a medop text interface
+# (could be usefull for most of the tests and sometimes for real
+# works).
+write_medop_exe() {
+    echo '#!/bin/sh'
+    echo 'appliroot=$(dirname $0)'
+    echo 'logfile="/tmp/medop.log"'
+    echo '$appliroot/runAppli -k -t 2>$logfile'
+    echo 'xterm -e tail -f $logfile &'
+    echo '$appliroot/runSession "python -i $appliroot/lib/python2.6/site-packages/salome/xmed/medop.py"'
+}
+
+write_medop_exe > $APPLIDIR/medop.sh
+chmod +x $APPLIDIR/medop.sh
diff --git a/src/MEDOP/exe/appligen/config_appli_model.xml.in b/src/MEDOP/exe/appligen/config_appli_model.xml.in
new file mode 100644 (file)
index 0000000..1d32ba9
--- /dev/null
@@ -0,0 +1,17 @@
+<application>
+<prerequisites path="@prefix@/bin/salome/@MODULE_NAME@/appligen/envappli.sh"/>
+
+<modules>
+  <module name="KERNEL" path="@KERNEL_ROOT_DIR@"/>
+  <module name="GUI" path="@GUI_ROOT_DIR@"/>
+  <module name="GEOM" path="__GEOM_ROOT_DIR__"/>
+  <module name="SMESH" path="__SMESH_ROOT_DIR__"/>
+  <module name="BLSURFPLUGIN" gui="no" path="__BLSURFPLUGIN_ROOT_DIR__"/>
+  <module name="GHS3DPLUGIN" gui="no" path="__GHS3DPLUGIN_ROOT_DIR__"/>
+  <module name="NETGENPLUGIN" gui="no" path="__NETGENPLUGIN_ROOT_DIR__"/>
+  <module name="MED" path="@prefix@"/>
+  <module name="VISU" path="__VISU_ROOT_DIR__"/>
+  <module name="YACS" path="__YACS_ROOT_DIR__"/>
+  <module name="PARAVIS" path="__PARAVIS_ROOT_DIR__"/>
+</modules>
+</application>
diff --git a/src/MEDOP/exe/appligen/genenv.sh b/src/MEDOP/exe/appligen/genenv.sh
new file mode 100755 (executable)
index 0000000..0a77ddc
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# This script creates a source file that defines a SALOME shell
+# environment. We assume here that the SALOME environment has been
+# previously set, so that the env command get all environment
+# variables required for building and executing SALOME. We talk
+# about third party software programs and libraries. The environment
+# variables defining SALOME module are exluded (i.e. *_ROOT_DIR)
+# because they are automatically set when generating a SALOME application..
+#
+# The argument is the filepath to be created.
+#
+
+if [ $# == 1 ]; then
+    ENVAPPLI_SH=$1
+else
+    ENVAPPLI_SH=envappli.sh
+fi
+
+function header {
+    echo "#"
+    echo "# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
+    echo "# THIS FILE IS GENERATED from the shell environment used to build the SALOME module."
+    echo "# IT SHOULD NOT BE EDITED, it is generated for the need of the SALOME application   "
+    echo "# that embeds the module (for test purposes).                                       "
+    echo "# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
+    echo "#"
+}
+header > $ENVAPPLI_SH
+env | grep -v -e PWD -e SalomeAppConfig -e _ROOT_DIR | while read f; do
+    key=$(echo $f | cut -d"=" -f1)
+    value=$(echo $f | cut -d"=" -f2-)
+
+    # if the key is a path (LD_LIBRARY_PATH, PATH and PYTHONPATH) then
+    # we must extends the variable.
+    if [ $key == "LD_LIBRARY_PATH" -o $key == "PATH" -o $key == "PYTHONPATH" ]; then
+        echo export $key=\"$value:\$$key\"
+    else
+        echo export $key=\"$value\"
+    fi
+done >> $ENVAPPLI_SH
diff --git a/src/MEDOP/exe/image2med/CMakeLists.txt b/src/MEDOP/exe/image2med/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c75e747
--- /dev/null
@@ -0,0 +1,25 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(MED_PYTHON_SCRIPTS
+  image2med.py
+  xmedimages.py
+  )
+
+INSTALL(FILES ${MED_PYTHON_SCRIPTS} DESTINATION ${MED_salomebin_BINS}/med PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
diff --git a/src/MEDOP/exe/image2med/Makefile.am b/src/MEDOP/exe/image2med/Makefile.am
new file mode 100644 (file)
index 0000000..875dda1
--- /dev/null
@@ -0,0 +1,28 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+toolsbindir = $(bindir)/@MODULE_NAME@
+
+dist_toolsbin_SCRIPTS=\
+       image2med.py \
+       xmedimages.py
diff --git a/src/MEDOP/exe/image2med/image2med.py b/src/MEDOP/exe/image2med/image2med.py
new file mode 100755 (executable)
index 0000000..799b90a
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+#  -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+from optparse import OptionParser
+parser = OptionParser()
+parser.add_option("-i", "--imagefile", dest="imagefile",
+                  help="image file to convert", metavar="FILE")
+parser.add_option("-m", "--medfile", dest="medfile", default=None,
+                  help="output med file", metavar="FILE")
+(options, args) = parser.parse_args()
+
+import sys, os
+if options.imagefile is None:
+    print "The image file must be specified"
+    sys.exit()
+imagefile = options.imagefile
+if not os.path.exists(imagefile):
+    print "The image file %s does not exists"%imagefile
+    sys.exit()
+
+if options.medfile is None:
+    basename = os.path.basename(imagefile)
+    medfile = basename[0:len(basename)-3] + "med"
+else:
+    medfile = options.medfile
+
+print "Convert image file %s to a med field saved in %s"%(imagefile,medfile)
+from xmedimages import FieldBuilder
+builder = FieldBuilder()    
+builder.image2med(imagefile,medfile)
diff --git a/src/MEDOP/exe/image2med/xmedimages.py b/src/MEDOP/exe/image2med/xmedimages.py
new file mode 100644 (file)
index 0000000..ea434b2
--- /dev/null
@@ -0,0 +1,148 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# Author : Guillaume Boulant (EDF) 
+
+import MEDCoupling as MC
+import MEDLoader as ML
+
+from PIL import Image
+from PIL import ImageOps
+import numpy
+
+class FieldBuilder:
+
+    def image2med(self, imageFilepath, medFilepath=None):
+
+        # Load the image file in a numpy array using PIL.
+        img=Image.open(imageFilepath)
+        imgbw=ImageOps.grayscale(img)
+        # WARN: We keep only the grayscale. Maybe, it could be usefull
+        # to get the RGB scales each on one component of the field.
+        
+        # Creating a cartesian mesh with a grid of the size of the image
+        # The sizes defined the number of pixel in a direction, then the
+        # number of cells to create in the mesh in that direction.        
+        width,height=imgbw.size
+        mesh=self.createMesh("grid_%sx%s"%(width,height),width,height)
+        field=self.createField("imagefield",mesh,imgbw)
+        
+        # The MEDLoader can be used to save all the stuff in a med file. You
+        # just have to specify the field and the MEDLoader will save the
+        # underlying mesh.
+        createFromScratch=True
+        ML.MEDLoader.WriteField(medFilepath,field,createFromScratch)
+
+    def createMesh(self, meshname, sizeX, sizeY):
+        """
+        Creating a cartesian mesh with a grid of the size of the image.
+        sizeX and sizeY should be respectively the width and heigth of the
+        image.
+        """
+        # >>>
+        # WARNING: remember the problem of tics and spaces. The data values
+        # are considered as values defined on cells. With size values in a
+        # direction, we have to create size+1 mesh nodes in that direction.
+        # <<<
+        
+        # The mesh is created using MEDCoupling
+        cmesh=MC.MEDCouplingCMesh.New();
+        cmesh.setName(meshname)
+        
+        # We use an arbitrary step between cells (the value does not matter)
+        stepX = 0.1
+        nbNodesX = sizeX+1
+        arrX = [float(i * stepX) for i in range(nbNodesX)]
+        coordsX=MC.DataArrayDouble.New()
+        coordsX.setValues(arrX,nbNodesX,1)
+        
+        # For the Y dimension, we have to reverse the coordinates (the
+        # first pixel is at y=height and not at y=0).
+        stepY = 0.1
+        nbNodesY = sizeY+1
+        lengthY = sizeY*stepY
+        arrY=[float(lengthY - i * stepY) for i in range(nbNodesY)]
+        coordsY=MC.DataArrayDouble.New()
+        coordsY.setValues(arrY,nbNodesY,1)
+        
+        cmesh.setCoords(coordsX,coordsY)
+        print "Imagem mesh dimension: %d"%cmesh.getSpaceDimension()
+        
+        # WARN: In the current state of development of MEDLoader, only
+        # unstructured meshes are supported for writting function in med
+        # files. We just have to convert the cartesian mesh in an unstructured
+        # mesh before creating the field.
+        umesh=cmesh.buildUnstructured();
+        umesh.setName(cmesh.getName())
+        
+        return umesh
+    
+    def createField(self, fieldname, mesh, image):
+        """
+        Creating a scalar field on the mesh using image data
+        """    
+        # Create the field using MEDCoupling
+        field = MC.MEDCouplingFieldDouble.New(MC.ON_CELLS,MC.ONE_TIME);
+        field.setName(fieldname);
+        field.setMesh(mesh);
+        # OPTIONAL: We set an arbitrary time step for test purpose
+        field.setIteration(0);
+        field.setOrder(0)
+        
+        imagedata=list(image.getdata())
+        width,height=image.size
+        nbCells = width*height
+        dataArray=MC.DataArrayDouble.New();
+        nbComponents=1 # For a scalar field
+        
+        dataArray.setValues(imagedata,nbCells,nbComponents)
+        field.setArray(dataArray);
+        
+        return field
+
+#
+# ===================================================================
+# use case functions
+# ===================================================================
+#
+
+def getTestImagePath():
+    import os
+    MED_ROOT_DIR=os.environ["MED_ROOT_DIR"]
+    RESDIR=os.path.join(MED_ROOT_DIR, "share", "salome", "resources", "med", "medop_testfiles")
+    imgFileName="irm_test1.png"
+    imgFilePath=os.path.join(RESDIR,imgFileName)
+    return imgFilePath
+
+def TEST_pil():
+    imgFilePath = getTestImagePath()
+    img=Image.open(imageFilepath)
+    imgbw=ImageOps.grayscale(img)
+    
+
+def TEST_image2med():
+    imgFilePath = getTestImagePath()
+    builder = FieldBuilder()    
+    builder.image2med(imgFilePath,"image.med")
+
+# ===================================================================
+if __name__ == "__main__":
+    TEST_pil()
+    #TEST_image2med()
diff --git a/src/MEDOP/gui/CMakeLists.txt b/src/MEDOP/gui/CMakeLists.txt
new file mode 100644 (file)
index 0000000..bbc8a9a
--- /dev/null
@@ -0,0 +1,99 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(dialogs)
+
+INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/UseQT4EXT.cmake)
+
+SET(MEDOPGUI_SOURCES
+  MEDOPFactoryClient.cxx
+  XmedConsoleDriver.cxx
+  WorkspaceController.cxx
+  XmedDataModel.cxx
+  MEDEventListener_i.cxx
+  MEDOPModule.cxx
+  DatasourceController.cxx
+  factory.cxx
+)
+
+SET(MEDOPGUI_HEADERS MEDOPModule.hxx MEDEventListener_i.hxx WorkspaceController.hxx DatasourceController.hxx)
+
+QT4_WRAP_CPP(MEDOPGUI_HEADERS_MOC ${MEDOPGUI_HEADERS})
+
+INCLUDE_DIRECTORIES(
+  ${OMNIORB_INCLUDE_DIRS}
+  ${CAS_INCLUDE_DIRS}
+  ${BOOST_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
+  ${KERNEL_ROOT_DIR}/include/salome
+  ${GUI_ROOT_DIR}/include/salome
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/dialogs
+  ${CMAKE_CURRENT_BINARY_DIR}/dialogs
+  ${CMAKE_CURRENT_SOURCE_DIR}/../cmp
+  ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDGUI
+  ${CMAKE_BINARY_DIR}/idl
+  ${CMAKE_BINARY_DIR}
+)
+
+SET(MEDOPGUITS_SOURCES
+  MEDOP_msg_en.ts
+  MEDOP_msg_fr.ts
+)
+SET(COMMON_DEFINITIONS "${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+SET(COMMON_FLAGS 
+  ${CAS_KERNEL}
+  ${QT_MT_LIBS} 
+  ${OMNIORB_LIBS} 
+  ${PLATFORM_LIBS} 
+  ${BOOST_LIBS}
+  SalomeIDLMED 
+  MEDOPGUI_dialogs 
+  MEDOPFactoryEngine 
+  ${qtx}
+  ${suit} 
+  ${SalomeObject}
+  ${SalomeLifeCycleCORBA} 
+  ${SalomeKernelHelpers} 
+  ${SalomeApp} 
+  ${SalomeGuiHelpers} 
+  ${SalomeTreeData} 
+  ${OpUtil}
+  ${CAM}
+  ${LightApp}
+  ${PyConsole}
+  ${SalomeGuiHelpers}
+)
+
+#-D__WITH_MEDMEMGUI__ libMEDGUI.la
+IF(WITH_MEDMEMGUI)
+  SET(COMMON_DEFINITIONS "${COMMON_DEFINITIONS} -D__WITH_MEDMEMGUI__")
+  SET(COMMON_FLAGS ${COMMON_FLAGS} MEDGUI)
+ENDIF(WITH_MEDMEMGUI)
+
+ADD_LIBRARY(MEDOPGUI SHARED ${MEDOPGUI_SOURCES} ${MEDOPGUI_HEADERS_MOC})
+SET_TARGET_PROPERTIES(MEDOPGUI PROPERTIES COMPILE_FLAGS ${COMMON_DEFINITIONS})
+TARGET_LINK_LIBRARIES(MEDOPGUI ${COMMON_FLAGS})
+
+INSTALL(TARGETS MEDOPGUI DESTINATION ${MED_salomelib_LIBS})
+QT4_INSTALL_TS_RESOURCES("${MEDOPGUITS_SOURCES}" "${MED_salomeres_DATA}")
+
+FILE(GLOB COMMON_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
diff --git a/src/MEDOP/gui/DatasourceConstants.hxx b/src/MEDOP/gui/DatasourceConstants.hxx
new file mode 100644 (file)
index 0000000..77907f9
--- /dev/null
@@ -0,0 +1,5 @@
+
+// This constant strings are used to specify an attribute name for
+// AttributeParameter attributes associated to a SObject
+#define OBJECT_ID              "objectid"
+#define OBJECT_IS_IN_WORKSPACE "isInWorkspace"
diff --git a/src/MEDOP/gui/DatasourceController.cxx b/src/MEDOP/gui/DatasourceController.cxx
new file mode 100644 (file)
index 0000000..59f5e15
--- /dev/null
@@ -0,0 +1,401 @@
+
+// Author : Guillaume Boulant (EDF) 
+
+#include "DatasourceController.hxx"
+#include "DatasourceConstants.hxx"
+
+#include "MEDOPFactoryClient.hxx"
+#include "QtHelper.hxx"
+
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+#include <SUIT_FileDlg.h>
+#include <SUIT_Desktop.h>
+
+#include <QStringList>
+#include <QString>
+#include <QMessageBox>
+
+#include "DlgAlias.hxx"
+
+//
+// ==============================================================
+// Datasource controller
+// ==============================================================
+//
+DatasourceController::DatasourceController(StandardApp_Module * salomeModule) {
+  STDLOG("Creating a DatasourceController");
+  _salomeModule = salomeModule;
+  _studyEditor = new SALOME_AppStudyEditor(_salomeModule->getApp());
+  _dlgChangeUnderlyingMesh = new DlgChangeUnderlyingMesh(_studyEditor);
+
+  connect(_dlgChangeUnderlyingMesh,SIGNAL(inputValidated()),
+          this, SLOT(OnChangeUnderlyingMeshInputValidated()));
+
+}
+
+DatasourceController::~DatasourceController() {
+  STDLOG("Deleting the DatasourceController");
+  delete _studyEditor;
+}
+
+void DatasourceController::createActions() {
+  // 
+  // Main actions (toolbar and menubar)
+  //
+  QString label   = QString("Add Data Source");
+  QString tooltip = QString("Add a file data source (file providing med data)");
+  QString icon    = QString("datasource_add.png");
+  int actionId;
+  actionId = _salomeModule->createStandardAction(label,this, SLOT(OnAddDatasource()),icon,tooltip);
+  _salomeModule->addActionInToolbar(actionId);
+
+  label   = QString("Add Image Source");
+  tooltip = QString("Create a Data Source from an image file");
+  icon    = QString("image_add.png");
+  actionId = _salomeModule->createStandardAction(label,this, SLOT(OnAddImagesource()),icon,tooltip);
+  _salomeModule->addActionInToolbar(actionId);
+    
+  //
+  // Actions for popup menu only
+  //
+  // Expand field timeseries
+  label = QString("Expand field timeseries");
+  icon  = QString("datasource_expandfield.png");
+  actionId = _salomeModule->createStandardAction(label,this,SLOT(OnExpandField()),icon);
+  _salomeModule->addActionInPopupMenu(actionId);
+  
+  // Create a control view
+  label = QString("Visualize");
+  icon  = QString("datasource_view.png");
+  actionId = _salomeModule->createStandardAction(label,this,SLOT(OnVisualize()),icon);
+  _salomeModule->addActionInPopupMenu(actionId);
+
+  // Use in workspace
+  label = QString("Use in workspace");
+  icon  = QString("datasource_use.png");
+  actionId = _salomeModule->createStandardAction(label,this,SLOT(OnUseInWorkspace()),icon);
+  _salomeModule->addActionInPopupMenu(actionId);
+
+  // Change underlying mesh (note that this action creates a new field in
+  // the workspace that corresponds to a copy of the selected field
+  // modified by the change of the underlying mesh.
+  label = QString("Change underlying mesh");
+  icon  = QString("datasource_changeUnderlyingMesh.png");
+  actionId = _salomeModule->createStandardAction(label,this,SLOT(OnChangeUnderlyingMesh()),icon);
+  _salomeModule->addActionInPopupMenu(actionId);
+}
+
+/**
+ * This function adds the specified MED file as a datasource in the
+ * dataspace. Technically speaking, the engine loads the
+ * meta-information concerning med data from the file, gives this
+ * informations to the GUI, and the GUI creates a tree view of these
+ * data in the study object browser.
+ */
+MEDOP::DatasourceHandler * DatasourceController::addDatasource(const char * filename) {
+
+  MEDOP::DatasourceHandler * datasourceHandler =
+    MEDOPFactoryClient::getDataManager()->addDatasource(filename);
+
+  // We need a studyEditor updated on the active study
+  _studyEditor->updateActiveStudy();
+
+  // Create a datasource SObject as a father of the module root
+  SALOMEDS::SComponent_var root = _studyEditor->findRoot(QCHARSTAR(_salomeModule->moduleName()));
+  SALOMEDS::SObject_var soDatasource = _studyEditor->newObject(root);
+  _studyEditor->setName(soDatasource,datasourceHandler->name);
+  _studyEditor->setIcon(soDatasource,"datasource.png");
+  _studyEditor->setParameterInt(soDatasource,OBJECT_ID,datasourceHandler->id);
+  
+
+  // We can add the meshes as children of the datasource
+  MEDOP::MeshHandlerList * meshHandlerList = 
+    MEDOPFactoryClient::getDataManager()->getMeshList(datasourceHandler->id);
+  
+  for(CORBA::ULong iMesh=0; iMesh<meshHandlerList->length(); iMesh++) {
+    MEDOP::MeshHandler meshHandler = (*meshHandlerList)[iMesh];
+    SALOMEDS::SObject_var soMesh = _studyEditor->newObject(soDatasource);
+    _studyEditor->setName(soMesh,meshHandler.name);
+    _studyEditor->setIcon(soMesh,"datasource_mesh.png");
+    _studyEditor->setParameterInt(soMesh,OBJECT_ID,meshHandler.id);
+    _studyEditor->setParameterBool(soMesh,OBJECT_IS_IN_WORKSPACE,false);
+    
+
+    // We add the field timeseries defined on this mesh, as children
+    // of the mesh SObject
+    MEDOP::FieldseriesHandlerList * fieldseriesHandlerList =
+      MEDOPFactoryClient::getDataManager()->getFieldseriesListOnMesh(meshHandler.id);
+    
+    for(CORBA::ULong iFieldseries=0; iFieldseries<fieldseriesHandlerList->length(); iFieldseries++) {
+      MEDOP::FieldseriesHandler fieldseriesHandler = (*fieldseriesHandlerList)[iFieldseries];
+      SALOMEDS::SObject_var soFieldseries = _studyEditor->newObject(soMesh);
+
+      std::string label(fieldseriesHandler.name);
+      label +=" ("+std::string(XmedDataObject::mapTypeOfFieldLabel[fieldseriesHandler.type])+")";
+      _studyEditor->setName(soFieldseries,label.c_str());
+
+      _studyEditor->setIcon(soFieldseries,"datasource_field.png");
+      _studyEditor->setParameterInt(soFieldseries,OBJECT_ID,fieldseriesHandler.id);
+      _studyEditor->setParameterBool(soFieldseries,OBJECT_IS_IN_WORKSPACE,false);
+    }
+  }
+
+  return datasourceHandler;
+}
+
+
+void DatasourceController::OnAddDatasource()
+{
+  // Dialog to get the filename where the input data are read from
+  QStringList filter;
+  filter.append(QObject::tr("MED files (*.med)"));
+
+  QString filename = SUIT_FileDlg::getFileName(_salomeModule->getApp()->desktop(),
+                                               "",
+                                               filter,
+                                               QObject::tr("Import MED fields"),
+                                               true);
+
+  if ( filename.isEmpty() ) return;
+
+  this->addDatasource(QCHARSTAR(filename));
+  _salomeModule->updateObjBrowser(true);
+}
+
+#include "DlgImageToMed.hxx"
+#include <stdio.h>
+#include <stdlib.h>
+void DatasourceController::OnAddImagesource()
+{
+
+  DlgImageToMed dialog;
+  dialog.setAutoLoaded(true);
+  int choice = dialog.exec();
+  if ( choice == QDialog::Rejected ) {
+    // The user decides to cancel the operation
+    return;
+  }
+
+  QString imageFilename = dialog.getImageFilepath();
+  QString medFilename   = dialog.getMedFilepath();
+  bool autoLoad         = dialog.isAutoLoaded();
+  
+  std::string ROOT_DIR(getenv("MED_ROOT_DIR"));
+  std::string command(ROOT_DIR+"/bin/salome/med/image2med.py");
+  command += " -i "+QS2S(imageFilename);
+  command += " -m "+QS2S(medFilename);
+  int error = system(command.c_str());
+  if ( error != 0 ) {
+    QMessageBox::critical(_salomeModule->getApp()->desktop(),
+                      tr("Operation failed"),
+                      tr("The creation of med data from the image file failed"));
+    return;
+  }
+
+  if ( autoLoad ) {
+    this->addDatasource(QCHARSTAR(medFilename));
+    _salomeModule->updateObjBrowser(true);
+  }
+
+}
+
+void DatasourceController::OnExpandField()
+{
+  // We need a studyEditor updated on the active study
+  _studyEditor->updateActiveStudy();
+
+  // Get the selected objects in the study (SObject)
+  SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+  for (int i=0; i<listOfSObject->size(); i++) {  
+    SALOMEDS::SObject_var soFieldseries = listOfSObject->at(i);
+
+    // First retrieve the fieldseries id associated to this study object 
+    long fieldseriesId = _studyEditor->getParameterInt(soFieldseries,OBJECT_ID);
+    STDLOG("Expand the field timeseries "<<fieldseriesId);
+
+    // Then retrieve the list of fields in this timeseries
+    MEDOP::FieldHandlerList * fieldHandlerList =
+      MEDOPFactoryClient::getDataManager()->getFieldListInFieldseries(fieldseriesId);
+
+    // Finally, create an entry for each of the field
+    for(CORBA::ULong iField=0; iField<fieldHandlerList->length(); iField++) {
+      MEDOP::FieldHandler fieldHandler = (*fieldHandlerList)[iField];
+      SALOMEDS::SObject_var soField = _studyEditor->newObject(soFieldseries);
+      std::string label("it="); label += ToString(fieldHandler.iteration);
+      _studyEditor->setName(soField,label.c_str());
+      _studyEditor->setParameterInt(soField, OBJECT_ID, fieldHandler.id);
+      _studyEditor->setParameterBool(soField,OBJECT_IS_IN_WORKSPACE,false);
+    }
+  }
+  _salomeModule->updateObjBrowser(true);
+}
+
+void DatasourceController::OnVisualize() {
+  STDLOG("OnVisualize: To Be Implemented");
+
+  // We need a _studyEditor updated on the active study
+  _studyEditor->updateActiveStudy();
+
+  // Get the selected objects in the study (SObject)
+  SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+
+  // For each object, emit a signal to the workspace to request a
+  // visualisation using the tui command (so that the user can see how
+  // to make a view of an object from the tui console).
+  for (int i=0; i<listOfSObject->size(); i++) {
+    SALOMEDS::SObject_var soField = listOfSObject->at(i);
+    int fieldId = _studyEditor->getParameterInt(soField,OBJECT_ID);
+    MEDOP::FieldHandler * fieldHandler = MEDOPFactoryClient::getDataManager()->getFieldHandler(fieldId);
+
+    DatasourceEvent * event = new DatasourceEvent();
+    event->eventtype = DatasourceEvent::EVENT_VIEW_OBJECT;
+    XmedDataObject * dataObject = new XmedDataObject();
+    dataObject->setFieldHandler(*fieldHandler);
+    event->objectdata  = dataObject;
+    emit datasourceSignal(event);    
+  }
+
+}
+
+void DatasourceController::OnUseInWorkspace() {
+  // We need a studyEditor updated on the active study
+  _studyEditor->updateActiveStudy();
+
+  // Get the selected objects in the study (SObject)
+  SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+  if ( listOfSObject->size() == 1 ) {
+    // In this case we ask the name of the variable for the python
+    // console
+
+    // >>>
+    // _GBO_ Note that it works only for a single field but the
+    // XmedDataObject will be improved to deal with mesh, timeseries
+    // and single field in a futur version. We suppose here that a
+    // single field has been selected. 
+    // <<<
+
+    SALOMEDS::SObject_var soField = listOfSObject->at(0);
+
+    bool isInWorkspace = _studyEditor->getParameterBool(soField,OBJECT_IS_IN_WORKSPACE);
+    if ( isInWorkspace ) {
+      QMessageBox::warning(_salomeModule->getApp()->desktop(),
+                          tr("Operation not allowed"),
+                          tr("This field is already defined in the workspace"));
+      return;
+    }
+
+    int fieldId = _studyEditor->getParameterInt(soField,OBJECT_ID);
+    MEDOP::FieldHandler * fieldHandler =
+      MEDOPFactoryClient::getDataManager()->getFieldHandler(fieldId);
+
+    QString alias(fieldHandler->fieldname);
+    DlgAlias dialog;
+    dialog.setAlias(alias);
+    int choice = dialog.exec();
+    if ( choice == QDialog::Rejected ) {
+      // The user decides to cancel the operation
+      return;
+    }
+    alias = dialog.getAlias();
+
+    DatasourceEvent * event = new DatasourceEvent();
+    event->eventtype = DatasourceEvent::EVENT_USE_OBJECT;
+    XmedDataObject * dataObject = new XmedDataObject();
+    dataObject->setFieldHandler(*fieldHandler);
+    event->objectdata  = dataObject;
+    event->objectalias = alias;
+    emit datasourceSignal(event);
+    // Tag the item to prevent double import
+    _studyEditor->setParameterBool(soField,OBJECT_IS_IN_WORKSPACE,true);
+    // Tag the field as persistent on the server. It means that a
+    // saving of the workspace will save at least this field (maybe it
+    // should be an option?)
+    MEDOPFactoryClient::getDataManager()->markAsPersistent(fieldId, true);
+  }
+  else {
+    // In this case, we don't ask the user to specify an alias for
+    // each item, we just import the whole set of items.
+    for (int i=0; i<listOfSObject->size(); i++) {
+      SALOMEDS::SObject_var soField = listOfSObject->at(i);
+
+      bool isInWorkspace = _studyEditor->getParameterBool(soField,OBJECT_IS_IN_WORKSPACE);
+      if ( !isInWorkspace ) {
+       int fieldId = _studyEditor->getParameterInt(soField,OBJECT_ID);
+       MEDOP::FieldHandler * fieldHandler =
+         MEDOPFactoryClient::getDataManager()->getFieldHandler(fieldId);
+       DatasourceEvent * event = new DatasourceEvent();
+       event->eventtype = DatasourceEvent::EVENT_IMPORT_OBJECT;
+       XmedDataObject * dataObject = new XmedDataObject();
+       dataObject->setFieldHandler(*fieldHandler);
+       event->objectdata  = dataObject;
+       emit datasourceSignal(event);
+       // Note that this signal is processed by the WorkspaceController
+       
+       // Tag the item to prevent double import
+       _studyEditor->setParameterBool(soField,OBJECT_IS_IN_WORKSPACE,true);
+       // Tag the field as persistent on the server. It means that a
+       // saving of the workspace will save at least this field (maybe it
+       // should be an option?)
+       MEDOPFactoryClient::getDataManager()->markAsPersistent(fieldId, true);
+      }
+      else {
+       STDLOG("The field "<<_studyEditor->getName(soField)<<
+              " is already defined in the workspace");
+      }
+    }
+  }
+}
+
+
+void DatasourceController::OnChangeUnderlyingMesh() {
+  // We need a studyEditor updated on the active study
+  _studyEditor->updateActiveStudy();
+
+  // Get the selected objects in the study (SObject). In cas of a
+  // multiple selection, we consider only the first item. At least one
+  // item must be selected.
+  SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+  if ( listOfSObject->size() > 0 ) {
+    SALOMEDS::SObject_var soField = listOfSObject->at(0);
+    int fieldId = _studyEditor->getParameterInt(soField,OBJECT_ID);    
+    // _GBO_ : the dialog should not be modal, so that we can choose a
+    // mesh in the browser. Then we have to emit a signal from the
+    // dialog.accept, connected to a slot of the DatasourceControler
+    _dlgChangeUnderlyingMesh->setFieldId(fieldId);
+    Qt::WindowFlags flags = _dlgChangeUnderlyingMesh->windowFlags();
+    _dlgChangeUnderlyingMesh->setWindowFlags(flags | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint);
+    _dlgChangeUnderlyingMesh->open();
+  }
+}
+
+void DatasourceController::OnChangeUnderlyingMeshInputValidated() {
+  int meshId = _dlgChangeUnderlyingMesh->getMeshId();
+  STDLOG("meshId = " << ToString(meshId));
+  int fieldId = _dlgChangeUnderlyingMesh->getFieldId();
+  MEDOP::FieldHandler * fieldHandler =
+    MEDOPFactoryClient::getDataManager()->getFieldHandler(fieldId);
+  
+  // We don't modify the original field but create first a duplicate
+  MEDOP::FieldHandler * duplicate = MEDOPFactoryClient::getCalculator()->dup(*fieldHandler);
+  MEDOPFactoryClient::getDataManager()->changeUnderlyingMesh(duplicate->id, meshId);
+
+  // Request once more the duplicate to update the meta-data on this
+  // client side
+  duplicate = MEDOPFactoryClient::getDataManager()->getFieldHandler(duplicate->id);
+
+  // >>>
+  // WARN: the following is a temporary code for test purpose
+  // Automatically add in ws
+  DatasourceEvent * event = new DatasourceEvent();
+  event->eventtype = DatasourceEvent::EVENT_IMPORT_OBJECT;
+  XmedDataObject * dataObject = new XmedDataObject();
+  dataObject->setFieldHandler(*duplicate);
+  event->objectdata  = dataObject;
+  emit datasourceSignal(event);
+  // Note that this signal is processed by the WorkspaceController
+  
+  // Tag the item to prevent double import
+  //_studyEditor->setParameterBool(soField,OBJECT_IS_IN_WORKSPACE,true);
+  
+  
+}
diff --git a/src/MEDOP/gui/DatasourceController.hxx b/src/MEDOP/gui/DatasourceController.hxx
new file mode 100644 (file)
index 0000000..2848c10
--- /dev/null
@@ -0,0 +1,83 @@
+
+// Author : Guillaume Boulant (EDF) 
+
+#ifndef DATASOURCE_CONTROLLER_H
+#define DATASOURCE_CONTROLLER_H
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDDataManager)
+#include <StandardApp_Module.hxx>
+#include <SALOME_AppStudyEditor.hxx>
+
+#include <map>
+
+#include "XmedDataModel.hxx"
+#include "DlgChangeUnderlyingMesh.hxx"
+#include "MEDOPGUI.hxx"
+//
+// The DatasourceController defines data structures and classes to
+// manage the usage of objects in the data space. The data space is
+// technically the study, whose graphical representation is the
+// objects browser.
+//
+
+// A datasource event is used by the DatasourceController to notify a
+// job to the Workspace controller (Qt signal/slot pattern connected
+// by the main controller MEDOPModule). The setting of attributes and
+// usage of these attributes in the WorkspaceController depends on the
+// event type. For example, in the case of a IMPORT event, we just
+// have to transmit the object, while in the USE event we have to
+// transmit an object AND an alias.
+typedef struct {
+  enum EventType {
+    // 
+    EVENT_IMPORT_OBJECT, // Simply import the object in the workspace
+    EVENT_USE_OBJECT,    // Import in the workspace AND define a proxy
+                        // variable in the tui console to use it
+    EVENT_VIEW_OBJECT    // View with a salome viewer (SMESH/VISU/PARAVIS)
+  };
+  int eventtype;
+  XmedDataObject * objectdata;
+  QString objectalias;
+} DatasourceEvent;
+
+//
+// ==============================================================
+// Datasource controller
+// ==============================================================
+//
+class MEDOPGUI_EXPORT DatasourceController: public QObject {
+  Q_OBJECT
+
+public:
+  DatasourceController(StandardApp_Module * salomeModule);
+  ~DatasourceController();
+
+  void createActions();
+  MEDOP::DatasourceHandler * addDatasource(const char * filename);
+
+public slots:
+  // Callback connected to dialog box validation signals
+  void OnChangeUnderlyingMeshInputValidated();
+
+signals:
+  void datasourceSignal(const DatasourceEvent * event);
+
+protected slots:
+  void OnAddDatasource();
+  void OnAddImagesource();
+  void OnExpandField();
+  void OnVisualize();
+  void OnUseInWorkspace();
+  void OnChangeUnderlyingMesh();
+
+
+private:
+  StandardApp_Module * _salomeModule;
+  SALOME_AppStudyEditor * _studyEditor;
+
+  DlgChangeUnderlyingMesh * _dlgChangeUnderlyingMesh;
+
+};
+
+#endif
diff --git a/src/MEDOP/gui/MEDEventListener_i.cxx b/src/MEDOP/gui/MEDEventListener_i.cxx
new file mode 100644 (file)
index 0000000..2d5d631
--- /dev/null
@@ -0,0 +1,59 @@
+//  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#include "MEDEventListener_i.hxx"
+#include <Basics_Utils.hxx>
+
+MEDEventListener_i * MEDEventListener_i::_instance = NULL;
+MEDEventListener_i * MEDEventListener_i::getInstance() {
+  // _GBO_ we will certainly need to define one EventListener per
+  // DataManager or SALOME study and not one singleton for the whole
+  // session
+  if ( _instance == NULL ) {
+    _instance = new MEDEventListener_i();
+  }
+  return _instance;
+}
+
+void MEDEventListener_i::release() {
+  delete _instance;
+}
+
+MEDEventListener_i::MEDEventListener_i()
+{
+  LOG("Creating a MEDEventListener_i instance");
+}
+MEDEventListener_i::~MEDEventListener_i()
+{
+  LOG("Deleting MEDEventListener_i instance");
+}
+
+void MEDEventListener_i::processMedEvent(const MEDOP::MedEvent & event) {
+  LOG("Start processing event for field id="<<event.fieldid);
+
+  // This function must be executed as fast as possible because the
+  // CORBA request is a synchronous call. Then we just emit a Qt
+  // signal and exit. The Qt signal should be received by the
+  // WorkspaceController (connect to a slot of WorkspaceController).
+
+  emit medEventSignal(new MEDOP::MedEvent(event));
+  
+
+}
diff --git a/src/MEDOP/gui/MEDEventListener_i.hxx b/src/MEDOP/gui/MEDEventListener_i.hxx
new file mode 100644 (file)
index 0000000..89dcf3f
--- /dev/null
@@ -0,0 +1,71 @@
+//  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Authors : Guillaume Boulant (EDF) - 01/06/2011
+
+#ifndef _MED_EVENTLISTENER_I_HXX_
+#define _MED_EVENTLISTENER_I_HXX_
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(MEDEventListener)
+#include "SALOME_GenericObj_i.hh"
+
+#include "MEDOPGUI.hxx"
+
+#include <QObject>
+
+// Multiple inheritance requires QObject to be first
+class MEDOPGUI_EXPORT MEDEventListener_i: public QObject,
+                         public POA_MEDOP::MEDEventListener,
+                         public SALOME::GenericObj_i
+                         
+{
+  Q_OBJECT
+
+public:
+
+  // 
+  // ===========================================================
+  // Functions specified in the IDL interface
+  // ===========================================================
+  //
+  void processMedEvent(const MEDOP::MedEvent & event);
+
+  // 
+  // ===========================================================
+  // Other public functions (non available via CORBA)
+  // ===========================================================
+  //
+  static MEDEventListener_i * getInstance();
+  static void release();
+
+signals:
+  //void medEventSignal();
+  void medEventSignal(const MEDOP::MedEvent * event);
+
+
+private:
+  MEDEventListener_i();
+  ~MEDEventListener_i();
+
+  static MEDEventListener_i * _instance;
+
+};
+
+#endif // _MED_EVENTLISTENER_I_HXX_
+
diff --git a/src/MEDOP/gui/MEDOPFactoryClient.cxx b/src/MEDOP/gui/MEDOPFactoryClient.cxx
new file mode 100644 (file)
index 0000000..bf20354
--- /dev/null
@@ -0,0 +1,43 @@
+
+// Author : Guillaume Boulant (EDF) 
+
+#include "MEDOPFactoryClient.hxx"
+#include "SALOME_KernelServices.hxx"
+
+namespace MEDOPFactoryClient {
+
+  /*!
+   * This returns a singleton (static) instance of the XMED engine.
+   */
+  MEDOP::MEDOPFactory_ptr getFactory() {
+    static MEDOP::MEDOPFactory_ptr engine;
+    if(CORBA::is_nil(engine)){
+      Engines::EngineComponent_var component =
+       KERNEL::getLifeCycleCORBA()->FindOrLoad_Component( "FactoryServer","MEDOPFactory" );
+      engine = MEDOP::MEDOPFactory::_narrow(component);
+    }
+    return engine;
+  }
+
+  /*!
+   * This returns a singleton (static) instance of the XMED data manager.
+   */
+  MEDOP::MEDDataManager_ptr getDataManager() {
+    static MEDOP::MEDDataManager_ptr dataManager;
+    if(CORBA::is_nil(dataManager)){
+      dataManager = getFactory()->getDataManager();
+    }
+    return dataManager;
+  }
+
+  /*!
+   * This returns a singleton (static) instance of the XMED calculator.
+   */
+  MEDOP::MEDCalculator_ptr getCalculator() {
+    static MEDOP::MEDCalculator_ptr calculator;
+    if(CORBA::is_nil(calculator)){
+      calculator = getFactory()->getCalculator();
+    }
+    return calculator;
+  }
+}
diff --git a/src/MEDOP/gui/MEDOPFactoryClient.hxx b/src/MEDOP/gui/MEDOPFactoryClient.hxx
new file mode 100644 (file)
index 0000000..9d3f273
--- /dev/null
@@ -0,0 +1,47 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Author : Guillaume Boulant (EDF) 
+
+#ifndef _MEDOPFACTORY_CLIENT_HXX_
+#define _MEDOPFACTORY_CLIENT_HXX_
+
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDOPFactory)
+#include CORBA_CLIENT_HEADER(MEDDataManager)
+#include CORBA_CLIENT_HEADER(MEDCalculator)
+
+#include "MEDOPGUI.hxx"
+
+// This helper manages static variables binded on main objects of the
+// XMED context, so that they could be initialized once and shared in
+// the whole gui context. It prevents to defined an attribute in each
+// class while this instance are singleton instances.
+
+namespace MEDOPFactoryClient {
+  MEDOPGUI_EXPORT MEDOP::MEDOPFactory_ptr getFactory();
+  MEDOPGUI_EXPORT MEDOP::MEDDataManager_ptr getDataManager();
+  MEDOPGUI_EXPORT MEDOP::MEDCalculator_ptr getCalculator();
+}
+
+#endif // _MEDOPFACTORY_CLIENT_HXX_
diff --git a/src/MEDOP/gui/MEDOPGUI.hxx b/src/MEDOP/gui/MEDOPGUI.hxx
new file mode 100755 (executable)
index 0000000..cf21f07
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef MEDOPGUI_HXX_
+#define MEDOPGUI_HXX_
+
+#ifdef WIN32
+# if defined MEDOPGUI_EXPORTS
+#  define MEDOPGUI_EXPORT __declspec( dllexport )
+# else
+#  define MEDOPGUI_EXPORT __declspec( dllimport )
+# endif
+#else
+# define MEDOPGUI_EXPORT
+#endif
+
+#endif //MEDOPGUI_HXX_
diff --git a/src/MEDOP/gui/MEDOPModule.cxx b/src/MEDOP/gui/MEDOPModule.cxx
new file mode 100644 (file)
index 0000000..1afb278
--- /dev/null
@@ -0,0 +1,112 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Author : Guillaume Boulant (EDF) 
+
+#include "MEDOPModule.hxx"
+#include "QtHelper.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SALOMEDS)
+
+#include "MEDOPFactoryClient.hxx"
+
+MEDOPModule::MEDOPModule() :
+  StandardApp_Module(),
+  LightApp_Module("MED")
+{
+  // Note that the explicit call to the constructor of LightApp_Module
+  // is needed because the class LightApp_Module does not have
+  // canonical constructor (with no arguments).
+
+  // Note also that we can't use the getApp() function here because
+  // the initialize(...) function has not been called yet.
+
+  this->setModuleName("MED");
+}
+
+//
+// =====================================================================
+// This part implements the mandatory interface
+// =====================================================================
+//
+
+/*!
+ * Returns the engine of the XMED module, i.e. the SALOME component
+ * associated to the study root of the module.
+ */
+Engines::EngineComponent_ptr MEDOPModule::getEngine() const {
+  return MEDOPFactoryClient::getFactory();
+}
+
+/*!
+ * Returns the base file name of the image used for the icon's
+ * module. The file is supposed to be located in the resource
+ * directory of the module.
+ */
+QString MEDOPModule::studyIconName() {
+  return QString("MEDOP_small.png");
+}
+
+//
+// =====================================================================
+// This part add custom widgets (a dockwidget containing a tree view
+// in this example) and add special actions in the toolbox of the
+// module.
+// =====================================================================
+//
+
+/*!
+ * This function implements the interface StandardApp_Module. It
+ * creates the widgets specific for this module, in particular the
+ * workspace widget and the dataspace widget.
+ */
+void MEDOPModule::createModuleWidgets() {
+  _datasourceController = new DatasourceController(this);
+  _workspaceController = new WorkspaceController(this);
+  _xmedDataModel  = new XmedDataModel();
+  _workspaceController->setDataModel(_xmedDataModel);
+
+  connect(_datasourceController, SIGNAL(datasourceSignal(const DatasourceEvent *)),
+         _workspaceController, SLOT(processDatasourceEvent(const DatasourceEvent *)));
+}
+
+bool MEDOPModule::activateModule( SUIT_Study* theStudy )
+{
+  bool bOk = StandardApp_Module::activateModule( theStudy );
+  _workspaceController->showDockWidgets(true);
+  this->setDockLayout(StandardApp_Module::DOCKLAYOUT_LEFT_VLARGE);
+  return bOk;
+}
+bool MEDOPModule::deactivateModule( SUIT_Study* theStudy )
+{
+  _workspaceController->showDockWidgets(false);
+  this->unsetDockLayout();
+  return StandardApp_Module::deactivateModule( theStudy );
+}
+
+void MEDOPModule::createModuleActions() {
+  // Creating actions concerning the dataspace
+  _datasourceController->createActions();
+  // Creating actions concerning the workspace
+  _workspaceController->createActions();
+}
diff --git a/src/MEDOP/gui/MEDOPModule.hxx b/src/MEDOP/gui/MEDOPModule.hxx
new file mode 100644 (file)
index 0000000..8de56bf
--- /dev/null
@@ -0,0 +1,67 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Author : Guillaume Boulant (EDF) 
+
+#ifndef _MEDOP_MODULE_HXX_
+#define _MEDOP_MODULE_HXX_
+
+#include "StandardApp_Module.hxx"
+
+#include "WorkspaceController.hxx"
+#include "XmedDataModel.hxx"
+#include "DatasourceController.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_Component)
+
+#include "MEDOPGUI.hxx"
+
+/*!
+ * This class defines the gui of the MEDOP module.
+ */
+class MEDOPGUI_EXPORT MEDOPModule: public StandardApp_Module
+{
+  Q_OBJECT
+
+  // ===========================================================
+  // This part implements the standard interface of a SALOME gui
+  // ===========================================================
+
+public:
+  MEDOPModule();
+
+protected:
+  virtual Engines::EngineComponent_ptr getEngine() const;
+  virtual QString studyIconName();
+  virtual void createModuleWidgets();
+  virtual void createModuleActions();
+  virtual bool activateModule( SUIT_Study* theStudy );
+  virtual bool deactivateModule( SUIT_Study* theStudy );
+
+private:
+  DatasourceController * _datasourceController;
+  WorkspaceController *  _workspaceController;
+  XmedDataModel *        _xmedDataModel;
+};
+
+#endif
diff --git a/src/MEDOP/gui/MEDOP_msg_en.ts b/src/MEDOP/gui/MEDOP_msg_en.ts
new file mode 100644 (file)
index 0000000..d7a01e6
--- /dev/null
@@ -0,0 +1,116 @@
+<!DOCTYPE TS><TS>
+<context>
+    <name>@default</name>
+    <message>
+        <source>TOOL_XMED</source>
+        <translation>XMED</translation>
+    </message>
+    <message>
+        <source>TLT_MY_NEW_ITEM</source>
+        <translation>My menu item</translation>
+    </message>
+    <message>
+        <source>TLT_LOAD_DXF</source>
+        <translation>Load DXF file</translation>
+    </message>
+    <message>
+        <source>MEN_LOAD_DXF</source>
+        <translation>Load DXF file</translation>
+    </message>
+    <message>
+        <source>STS_LOAD_DXF</source>
+        <translation>Load DXF file</translation>
+    </message>
+    <message>
+        <source>TLT_GET_BANNER</source>
+        <translation>Get XMED banner</translation>
+    </message>
+    <message>
+        <source>STS_MY_NEW_ITEM</source>
+        <translation>Call my menu item</translation>
+    </message>
+    <message>
+        <source>MEN_FILE_XMED</source>
+        <translation>Xmed</translation>
+    </message>
+    <message>
+        <source>MEN_GET_BANNER</source>
+        <translation>Get banner</translation>
+    </message>
+    <message>
+        <source>MEN_FILE</source>
+        <translation>&amp;File</translation>
+    </message>
+    <message>
+        <source>STS_GET_BANNER</source>
+        <translation>Get XMED banner</translation>
+    </message>
+    <message>
+        <source>TLT_BUILDER1</source>
+        <translation>Create base vectors Vx, Vy, Vz</translation>
+    </message>
+    <message>
+        <source>TLT_BUILDER2</source>
+        <translation>Create connected edges (arcs and lines)</translation>
+    </message>
+    <message>
+        <source>TLT_BUILDER3</source>
+        <translation>Load a python script</translation>
+    </message>
+    <message>
+        <source>STS_BUILDER1</source>
+        <translation>Create base vectors Vx, Vy, Vz</translation>
+    </message>
+    <message>
+        <source>STS_BUILDER2</source>
+        <translation>Create connected edges (arcs and lines)</translation>
+    </message>
+    <message>
+        <source>STS_BUILDER3</source>
+        <translation>Load a python script</translation>
+    </message>
+    <message>
+        <source>MEN_BUILDER1</source>
+        <translation>Create base vectors Vx, Vy, Vz</translation>
+    </message>
+    <message>
+        <source>MEN_BUILDER2</source>
+        <translation>Create connected edges (arcs and lines)</translation>
+    </message>
+    <message>
+        <source>MEN_BUILDER3</source>
+        <translation>Load a python script</translation>
+    </message>
+    <message>
+        <source>MEN_XMED</source>
+        <translation>XMED</translation>
+    </message>
+    <message>
+        <source>MEN_MY_NEW_ITEM</source>
+        <translation>My menu item</translation>
+    </message>
+</context>
+<context>
+    <name>XMEDGUI_maquette</name>
+    <message>
+        <source>BUT_OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <source>QUE_XMED_LABEL</source>
+        <translation>Name Import</translation>
+    </message>
+    <message>
+        <source>QUE_XMED_NAME</source>
+        <translation>Please, Enter your name</translation>
+    </message>
+    <message>
+        <source>INF_XMED_BANNER</source>
+        <translation>XMED Information</translation>
+    </message>
+    <message>
+        <source>INF_XMED_MENU</source>
+        <translation>This is just a test</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/MEDOP/gui/MEDOP_msg_fr.ts b/src/MEDOP/gui/MEDOP_msg_fr.ts
new file mode 100644 (file)
index 0000000..905d9fc
--- /dev/null
@@ -0,0 +1,92 @@
+<!DOCTYPE TS><TS>
+<context>
+    <name>@default</name>
+    <message>
+        <source>TLT_MY_NEW_ITEM</source>
+        <translation>My menu item</translation>
+    </message>
+    <message>
+        <source>TLT_GET_BANNER</source>
+        <translation>Get XMED banner</translation>
+    </message>
+    <message>
+        <source>TOOL_XMED</source>
+        <translation>XMED</translation>
+    </message>
+    <message>
+        <source>STS_MY_NEW_ITEM</source>
+        <translation>Call my menu item</translation>
+    </message>
+    <message>
+        <source>MEN_FILE_XMED</source>
+        <translation>Hello</translation>
+    </message>
+    <message>
+        <source>MEN_GET_BANNER</source>
+        <translation>Get banner</translation>
+    </message>
+    <message>
+        <source>MEN_FILE</source>
+        <translation>&amp;File</translation>
+    </message>
+    <message>
+        <source>STS_GET_BANNER</source>
+        <translation>Get XMED banner</translation>
+    </message>
+    <message>
+        <source>TLT_BUILDER1</source>
+        <translation>Create base vectors Vx, Vy, Vz</translation>
+    </message>
+    <message>
+        <source>TLT_BUILDER2</source>
+        <translation>Create connected edges (arcs and lines)</translation>
+    </message>
+    <message>
+        <source>STS_BUILDER1</source>
+        <translation>Create base vectors Vx, Vy, Vz</translation>
+    </message>
+    <message>
+        <source>STS_BUILDER2</source>
+        <translation>Create connected edges (arcs and lines)</translation>
+    </message>
+    <message>
+        <source>MEN_BUILDER1</source>
+        <translation>Create base vectors Vx, Vy, Vz</translation>
+    </message>
+    <message>
+        <source>MEN_BUILDER2</source>
+        <translation>Create connected edges (arcs and lines)</translation>
+    </message>
+    <message>
+        <source>MEN_XMED</source>
+        <translation>XMED</translation>
+    </message>
+    <message>
+        <source>MEN_MY_NEW_ITEM</source>
+        <translation>My menu item</translation>
+    </message>
+</context>
+<context>
+    <name>XMEDGUI</name>
+    <message>
+        <source>BUT_OK</source>
+        <translation>OK</translation>
+    </message>
+    <message>
+        <source>QUE_XMED_LABEL</source>
+        <translation>Import Prénom</translation>
+    </message>
+    <message>
+        <source>QUE_XMED_NAME</source>
+        <translation>Entrez votre prénom, s&apos;il vous plait</translation>
+    </message>
+    <message>
+        <source>INF_XMED_BANNER</source>
+        <translation>Information XMED</translation>
+    </message>
+    <message>
+        <source>INF_XMED_MENU</source>
+        <translation>Ceci est un simple test</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/MEDOP/gui/Makefile.am b/src/MEDOP/gui/Makefile.am
new file mode 100644 (file)
index 0000000..0c66199
--- /dev/null
@@ -0,0 +1,125 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+SUBDIRS = dialogs
+
+#
+# ---------------------------------------------------------
+# Generation rules to create moc files from QObject headers
+# and form source files from ui files
+# ---------------------------------------------------------
+# WRN: this rules could be integrated in the make_common_starter.am.
+# For that, we first have to make the naming convention of Q_OBJECT
+# files be the same between MEDGUI (old GUI) and MEDOP/gui (new GUI).
+%_moc.cxx: %.hxx
+       $(MOC) $< -o $@
+
+%.qm: %.ts
+       $(LRELEASE) $< -qm $@
+
+EXTRA_DIST+=$(MOC_FILES:%_moc.cxx=%.hxx) $(nodist_salomeres_DATA:%.qm=%.ts)
+
+mostlyclean-local:
+       rm -f @builddir@/*_moc.cxx
+       rm -f @builddir@/*.qm
+
+# Libraries targets
+lib_LTLIBRARIES = libMEDOPGUI.la
+
+salomeinclude_HEADERS =          \
+       MEDOPFactoryClient.hxx   \
+       XmedConsoleDriver.hxx    \
+       WorkspaceController.hxx  \
+       XmedDataModel.hxx        \
+       MEDEventListener_i.hxx   \
+       MEDOPModule.hxx          \
+       DatasourceController.hxx \
+       DatasourceConstants.hxx \
+       MEDOPGUI.hxx
+
+dist_libMEDOPGUI_la_SOURCES =    \
+       MEDOPFactoryClient.cxx   \
+       XmedConsoleDriver.cxx    \
+       WorkspaceController.cxx  \
+       XmedDataModel.cxx        \
+       MEDEventListener_i.cxx   \
+       MEDOPModule.cxx          \
+       DatasourceController.cxx \
+       factory.cxx
+
+# MOC pre-processing
+MOC_FILES = \
+       MEDOPModule_moc.cxx          \
+       MEDEventListener_i_moc.cxx   \
+       WorkspaceController_moc.cxx  \
+       DatasourceController_moc.cxx
+
+nodist_libMEDOPGUI_la_SOURCES = $(MOC_FILES)
+
+OMNIORB_CXXFLAGS=@CORBA_CXXFLAGS@ @CORBA_INCLUDES@
+OMNIORB_LIBS=@OMNIORB_LIBS@
+
+QT_CXXFLAGS  = @QT_INCLUDES@ @QT_MT_INCLUDES@
+QT_LDFLAGS = $(QT_MT_LIBS)
+
+CAS_CXXFLAGS = @CAS_CPPFLAGS@ @CAS_CXXFLAGS@
+
+BOOST_CXXFLAGS=@BOOST_CPPFLAGS@
+
+libMEDOPGUI_la_CPPFLAGS =     \
+       $(QT_CXXFLAGS)        \
+       $(CAS_CXXFLAGS)       \
+       $(OMNIORB_CXXFLAGS)   \
+       $(BOOST_CXXFLAGS)     \
+       $(KERNEL_CXXFLAGS)    \
+       $(GUI_CXXFLAGS)       \
+       $(MED_CXXFLAGS)       \
+       -I$(srcdir)/dialogs   \
+       -Idialogs \
+       -I$(srcdir)/../cmp    \
+       -I$(top_builddir)/idl \
+       -I$(top_builddir)
+
+libMEDOPGUI_la_LDFLAGS  = \
+       -no-undefined -version-info=0:0:0                              \
+       $(KERNEL_LDFLAGS) -lSalomeLifeCycleCORBA -lSalomeKernelHelpers \
+       $(GUI_LDFLAGS) -lSalomeApp -lSalomeGuiHelpers -lSalomeTreeData \
+       $(QT_LDFLAGS)                                                  \
+       $(BOOST_LIBS)                                                  \
+       $(OMNIORB_LIBS)
+
+# Specify MED internal libraries to be linked in
+libMEDOPGUI_la_LIBADD  =                         \
+       $(top_builddir)/idl/libSalomeIDLMED.la   \
+       dialogs/libMEDOPGUI_dialogs.la           \
+       ../cmp/libMEDOPFactoryEngine.la
+
+if WITH_MEDMEMGUI
+libMEDOPGUI_la_CPPFLAGS += "-D__WITH_MEDMEMGUI__" -I$(top_srcdir)/src/MEDGUI
+libMEDOPGUI_la_LIBADD += $(top_builddir)/src/MEDGUI/libMEDGUI.la
+endif
+
+# resources files
+nodist_salomeres_DATA = \
+       MEDOP_msg_en.qm \
+       MEDOP_msg_fr.qm
diff --git a/src/MEDOP/gui/WorkspaceController.cxx b/src/MEDOP/gui/WorkspaceController.cxx
new file mode 100644 (file)
index 0000000..ccca4b5
--- /dev/null
@@ -0,0 +1,441 @@
+
+// Author : Guillaume Boulant (EDF) 
+
+#include "WorkspaceController.hxx"
+#include "QtHelper.hxx"
+#include "MEDOPFactoryClient.hxx"
+#include "XmedDataModel.hxx"
+#include "DlgAlias.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDEventListener)
+
+#include <SalomeApp_Application.h>
+#include <SALOME_LifeCycleCORBA.hxx>
+#include <SUIT_FileDlg.h>
+#include <SUIT_Desktop.h>
+
+/*!
+ * This class defines a DockWidget plugged in the SALOME application,
+ * and containing a tree view for rendering a hierarchical data
+ * model. This datamodel contains the objects used in the workspace.
+ */
+WorkspaceController::WorkspaceController(StandardApp_Module * salomeModule)
+  : TreeGuiManager(salomeModule->getApp(), "Workspace")
+{
+  _salomeModule = salomeModule;
+
+  this->tabifyDockWidgets(false);
+
+  // -------------------------------------------------------------
+  // Setup the MEDEventListener to manage notification from the
+  // python console.
+
+  // We create a MEDEventListener CORBA object inside this GUI class
+  // with the role of listening events coming from the python console
+  // (or even the components if needed). The events arising in the
+  // python console are send as CORBA request to this CORBA
+  // servant. Then this object can process the event by notifying the
+  // GUI of something to update for example (using signals and slots
+  // of course).
+  _medEventListener = MEDEventListener_i::getInstance();
+  MEDOP::MEDEventListener_ptr medEventListenerServant = _medEventListener->_this();
+
+  // We store the IOR inside the MEDDataManager to share this data
+  // with other parts of the application, in particular the python
+  // console that could retrieve this IOR using the
+  // getEventListenerIOR() function of the MEDDataManager.
+  SalomeApp_Application * salomeApp = salomeModule->getApp();
+  const char * medEventListenerIOR = 
+    salomeApp->orb()->object_to_string(medEventListenerServant);
+  MEDOPFactoryClient::getDataManager()->setEventListenerIOR(medEventListenerIOR);
+
+  // Connect the signals emitted from the MEDEventListener to slot of
+  // this class.
+  connect(_medEventListener, SIGNAL(medEventSignal(const MEDOP::MedEvent*)),
+         this, SLOT(processMedEvent(const MEDOP::MedEvent*)));
+  // >>> WARN:
+  // Note that this class must be mocked (Q_OBJECT + moc file
+  // generated from header file) so that to be able to connect a
+  // signal to a slot of this class.
+
+  // -------------------------------------------------------------
+  // Customize the treeview rendering the datamodel with specific
+  // action for the popup menu
+  this->getDataTreeView()->clearActions();
+  _actionIds.display    = this->getDataTreeView()->addAction(QObject::tr("Visualiser  (une carte scalaire)"));
+  _actionIds.useInTui   = this->getDataTreeView()->addAction(QObject::tr("Utiliser    (dans la console)"));
+  _actionIds.exportToPv = this->getDataTreeView()->addAction(QObject::tr("Exporter    (vers PARAVIS)"));
+  _actionIds.save       = this->getDataTreeView()->addAction(QObject::tr("Sauvegarder (dans un fichier med)"));
+  _actionIds.remove     = this->getDataTreeView()->addAction(QObject::tr("Supprimer   (de lespace de travail)"));
+  
+  // -------------------------------------------------------------
+  // Initialize the python console. Note that this must be done at
+  // last because the setup will try to initiate a connection to the
+  // event listener.
+  _consoleDriver = new XmedConsoleDriver(salomeApp);
+  _consoleDriver->setup();
+}
+
+WorkspaceController::~WorkspaceController() {
+  MEDEventListener_i::release();  
+}
+
+/**
+ * This creates the GUI actions for driving the Workspace. The
+ * WorkspaceController creates itself this actions and implements the
+ * connected slots. 
+ */
+void WorkspaceController::createActions() {
+
+  QString label   = QString("Save workspace");
+  QString tooltip = QString("Save the workspace (fields and meshes) in a med file");
+  QString icon    = QString("workspace_save.png");
+  int actionId = _salomeModule->createStandardAction(label,this,SLOT(OnSaveWorkspace()),icon,tooltip);
+  _salomeModule->addActionInToolbar(actionId);
+
+  label   = QString("Clean workspace");
+  tooltip = QString("Clean all data in the workspace");
+  icon    = QString("workspace_clean.png");
+  actionId = _salomeModule->createStandardAction(label,this,SLOT(OnCleanWorkspace()),icon,tooltip);
+  _salomeModule->addActionInToolbar(actionId);
+}
+
+/*!
+ * Implementation of the slot processItemList inherited from TreeGuiManager
+ */
+void WorkspaceController::processItemList(QStringList itemNameIdList, int actionId) {
+  if ( actionId == _actionIds.display ) {
+    STDLOG("WorkspaceController::processItemList: display");
+    this->_viewItemList(itemNameIdList);
+  }
+  else if ( actionId == _actionIds.useInTui ) {
+    STDLOG("WorkspaceController::processItemList: use");
+    this->_importItemList(itemNameIdList);
+  }
+  else if ( actionId == _actionIds.exportToPv ) {
+    STDLOG("WorkspaceController::processItemList: export");
+    this->_exportItemList(itemNameIdList);
+  }
+  else if ( actionId == _actionIds.save ) {
+    STDLOG("WorkspaceController::processItemList: save");
+    this->_saveItemList(itemNameIdList);
+  }
+  else if ( actionId == _actionIds.remove ) {
+    STDLOG("WorkspaceController::processItemList: remove");
+  }
+  else {
+    STDLOG("WorkspaceController::processItemList: ERR : action unknown ");
+  }
+}
+
+/*!
+ * This function import in the console all the fields associated to
+ * the model items of the specified list. "Import a fields" means
+ * "define a field proxy variable in the python context to manipulate
+ * the real field in the database".
+ */
+void WorkspaceController::_importItemList(QStringList itemNameIdList) {
+  LOG("WorkspaceController: signal received : display item list "<<itemNameIdList);
+  QStringList::const_iterator it;
+  for (it = itemNameIdList.constBegin(); it != itemNameIdList.constEnd(); ++it) {
+    QString itemNameId = *it;
+    this->_importItem(itemNameId);
+  }
+}
+
+/*!
+ * This function is the unit function used to import field in the
+ * console (see _importItemList).
+ */
+void WorkspaceController::_importItem(QString itemNameId) {
+  XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+  if ( dataModel == NULL ) {
+    LOG("No data model associated to this tree view");
+    return;
+  }
+
+  // We can request the dataModel to obtain the dataObject associated
+  // to this item (iteNameId is a TreeView id, Qt stuff only).
+  XmedDataObject * dataObject =
+    (XmedDataObject *)dataModel->getDataObject(QS2S(itemNameId));
+  
+  if ( dataObject == NULL ) {
+    LOG("WorkspaceController: WARN! No data object associated to the item "<<itemNameId);
+    return;
+  }
+  
+  // Then, we can request this data object to obtain the associated
+  // FieldHandler.
+  MEDOP::FieldHandler * fieldHandler = dataObject->getFieldHandler();
+  STDLOG("Field: mesh="<<fieldHandler->meshname<<" name="<<fieldHandler->fieldname);
+  
+  // Finally, we can import the field 
+  bool askForOptions = true;
+  _importFieldIntoConsole(fieldHandler, askForOptions);
+}
+
+/**
+ * This function import the specified field into the tui console. This
+ * means to define a field proxy variable in the python context to
+ * manipulate the field. We can raise a gui to specify some import
+ * options or simply specify the alias (i.e. the name of the python
+ * variable).   
+ */
+void WorkspaceController::_importFieldIntoConsole(MEDOP::FieldHandler * fieldHandler,
+                                                 bool askForOptions,
+                                                 const char * alias)
+{
+  STDLOG("alias="<<alias);
+
+  // By default, the alias is the name of the field
+  QString *effectiveAlias;
+  if ( alias == NULL ) {
+    effectiveAlias = new QString(fieldHandler->fieldname);
+  }
+  else {
+    effectiveAlias = new QString(alias);
+  }
+
+  // We can propose to the user to specify some additionnal
+  // informations concerning what must be imported.
+  // 
+  // In this version, we just ask the alias the field will be
+  // manipulated with. The default alias is the field name. This alias
+  // should be asked to the user to get a short name to manipulate.
+  if ( askForOptions ) {
+    DlgAlias dialog;
+    dialog.setAlias(*effectiveAlias);
+    int choice = dialog.exec();
+    if ( choice == QDialog::Rejected ) {
+      // The user decides to cancel the operation
+      return;
+    }
+    *effectiveAlias = dialog.getAlias();
+  }
+
+  //
+  // Then, the list of python commands can be written and executed to
+  // define the field in the console
+  //
+  QStringList commands;
+  commands+=QString("%1=xmed.fieldproxy.newFieldProxy(fieldHandlerId=%2)")
+    .arg(*effectiveAlias)
+    .arg(fieldHandler->id);
+
+  _consoleDriver->exec(commands);
+}
+
+/*!
+ * This function is a Qt slot connected to the signal medEventSignal
+ * emitted from the MEDEventListener. It processes events coming from
+ * the python console.
+ */
+void WorkspaceController::processMedEvent(const MEDOP::MedEvent * event) {
+  STDLOG("WorkspaceController::processMedEvent");
+  STDLOG("fieldid  :"<<event->fieldid);
+
+  XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+  if ( dataModel == NULL ) {
+    STDLOG("No data model associated to this tree view");
+    return;
+  }
+  
+  if ( event->type == MEDOP::EVENT_ADDNEW_FIELD ) {
+    STDLOG("add new field");
+    MEDOP::FieldHandler * fieldHandler =
+      MEDOPFactoryClient::getDataManager()->getFieldHandler(event->fieldid);
+    
+    XmedDataObject * dataObject = (XmedDataObject *)dataModel->newDataObject();
+    dataObject->setFieldHandler(*fieldHandler);
+    this->getDataTreeModel()->addData(dataObject);
+  }
+
+}
+
+/*!
+ * This function save a list of fields in a med file. The med file
+ * name is requested to the user using a file chooser dialog box 
+ */
+void WorkspaceController::_saveItemList(QStringList itemNameIdList) {
+  XmedDataProcessor * dataProcessor = new XmedDataProcessor(this->getDataModel());
+  dataProcessor->process(itemNameIdList);
+  MEDOP::FieldIdList_var fieldIdList = dataProcessor->getResultingFieldIdList();
+  delete dataProcessor;
+
+  QStringList filter;
+  filter.append(QObject::tr("MED files (*.med)"));
+  QString filename = SUIT_FileDlg::getFileName(_salomeModule->getApp()->desktop(),
+                                               "",
+                                               filter,
+                                               QObject::tr("Save selected fields"),
+                                               false);
+
+  if ( filename.isEmpty() ) return;
+
+  MEDOPFactoryClient::getDataManager()->saveFields(QCHARSTAR(filename), fieldIdList);
+}
+
+/**
+ * This function export the list of specified field item to PARAVIS
+ * module. This consists in create a med file gathering the selected
+ * items, then to import this file in PARAVIS, and finally to create a
+ * scalar map of the first item to start the job. 
+ */
+void WorkspaceController::_exportItemList(QStringList itemNameIdList) {
+  XmedDataProcessor * dataProcessor = new XmedDataProcessor(this->getDataModel());
+  dataProcessor->process(itemNameIdList);
+  MEDOP::FieldIdList_var fieldIdList = dataProcessor->getResultingFieldIdList();
+  delete dataProcessor;
+
+  // _GBO_ We use a temporary file to proceed with this export to
+  // paravis. I'm sure it could be better in a futur version or when I
+  // will get a better understanding of paravis API.
+  const char * tmpfilename = "/tmp/medop_export2paravis.med";
+  MEDOPFactoryClient::getDataManager()->saveFields(tmpfilename, fieldIdList);
+
+  // We import the whole file but create a scalar map for the first
+  // selected field only (it's just an export to continue the job in
+  // paravis)
+  XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+  if ( dataModel == NULL ) {
+    STDLOG("No data model associated to this tree view");
+    return;
+  }
+  QString itemNameId = itemNameIdList[0];
+  XmedDataObject * dataObject = (XmedDataObject *)dataModel->getDataObject(QS2S(itemNameId));
+  if ( dataObject == NULL ) {
+    LOG("WorkspaceController: WARN! No data object associated to the item "<<itemNameId);
+    return;
+  }
+  MEDOP::FieldHandler * fieldHandler = dataObject->getFieldHandler();
+  QStringList commands;
+  commands+=QString("from xmed.driver_pvis import pvis_scalarmap");
+  commands+=QString("pvis_scalarmap('%1','%2','%3',%4,%5)")
+    .arg(tmpfilename)
+    .arg(QString(fieldHandler->meshname))
+    .arg(QString(fieldHandler->fieldname))
+    .arg(fieldHandler->type)
+    .arg(fieldHandler->iteration);
+  _consoleDriver->exec(commands);
+
+}
+
+
+/*!
+ * This function sends a request to the SALOME data visualisation
+ * (module VISU or PARAVIS) for displaying a scalar map of the fields
+ * associated to the model items in the specified list.
+ * 
+ */
+void WorkspaceController::_viewItemList(QStringList itemNameIdList) {
+
+  // __GBO__: In this version, we consider only the first field in the selection
+  QString itemNameId = itemNameIdList[0];
+
+  XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+  if ( dataModel == NULL ) {
+    LOG("No data model associated to this tree view");
+    return;
+  }
+
+  // We can request the dataModel to obtain the dataObject associated
+  // to this item (iteNameId is a TreeView id, Qt stuff only).
+  XmedDataObject * dataObject =
+    (XmedDataObject *)dataModel->getDataObject(QS2S(itemNameId));
+  if ( dataObject == NULL ) {
+    LOG("WorkspaceController: WARN! No data object associated to the item "<<itemNameId);
+    return;
+  }
+  
+  // Then, we can request this data object to obtain the associated
+  // FieldHandler.
+  MEDOP::FieldHandler * fieldHandler = dataObject->getFieldHandler();
+
+  // And finally, we can create the set of medop instructions to
+  // generate the scalar map on this field.
+  QStringList commands;
+  commands+=QString("view(get(%1))").arg(fieldHandler->id);
+  _consoleDriver->exec(commands);
+}
+
+/**
+ * This slot can process the event coming from the
+ * DatasourceController. The connection between the datasource signal
+ * and this slot is realized by the main class MEDOPModule.
+ */
+void WorkspaceController::processDatasourceEvent(const DatasourceEvent * event) {
+  XmedDataModel * dataModel = (XmedDataModel *)this->getDataModel();
+  if ( dataModel == NULL ) {
+    STDLOG("No data model associated to this tree view");
+    return;
+  }
+  
+  // >>>
+  // __GBO__ To know what to do we should test the type, because the
+  // object could be a mesh, a timeseries or a single field. We test
+  // here the case of a single field. Moreover, there could have
+  // options such that "change the underlying mesh".
+  // <<<
+  
+  XmedDataObject * dataObject = event->objectdata;
+
+  if ( event->eventtype == DatasourceEvent::EVENT_IMPORT_OBJECT ) {
+    STDLOG("IMPORT object in workspace:\n"<<dataObject->toString());
+    // _GBO_ QUESTION: tag automatically the object as a peristant object ??
+    // We first add the data object to the internal data model
+    dataModel->addDataObject(dataObject);
+    // Then we request the tree view to consider this new object
+    this->getDataTreeModel()->addData(dataObject);
+  }
+  else if ( event->eventtype == DatasourceEvent::EVENT_USE_OBJECT ) {
+    STDLOG("USE object in workspace:\n"<<dataObject->toString());
+    // We first add the data object to the internal data model
+    dataModel->addDataObject(dataObject);
+    // Then we request the tree view to consider this new object
+    this->getDataTreeModel()->addData(dataObject);
+
+    // We define a proxy for this object in the tui console.
+    STDLOG("Define a proxy variable in the console with name : "<<QCHARSTAR(event->objectalias));
+    bool askForOptions = false;
+    _importFieldIntoConsole(dataObject->getFieldHandler(),
+                           askForOptions,
+                           QCHARSTAR(event->objectalias));
+  }
+  else if ( event->eventtype == DatasourceEvent::EVENT_VIEW_OBJECT ) {
+    QStringList commands;
+    commands+=QString("view(get(%1))").arg(dataObject->getFieldHandler()->id);
+    _consoleDriver->exec(commands);
+  }
+  else {
+    STDLOG("The event "<<event->eventtype<<" is not implemented yet");
+  }
+
+}
+
+void WorkspaceController::OnSaveWorkspace() {
+
+  // Dialog to get the filename where the workspace must be saved into
+  QStringList filter;
+  filter.append(QObject::tr("MED files (*.med)"));
+
+  QString filename = SUIT_FileDlg::getFileName(_salomeModule->getApp()->desktop(),
+                                               "",
+                                               filter,
+                                               QObject::tr("Save workspace data"),
+                                               false);
+
+  if ( filename.isEmpty() ) return;
+
+  STDLOG("OnWorkspaceSave: save the workspace in the file " << QCHARSTAR(filename));
+  QStringList commands;
+  commands+=QString("save('%1')").arg(filename);
+  _consoleDriver->exec(commands);
+}
+
+#include <QMessageBox>
+void WorkspaceController::OnCleanWorkspace() {
+  QMessageBox::warning(_salomeModule->getApp()->desktop(),
+                      tr("Not implemented yet"),
+                      tr("This function is not implemented yet"));  
+}
diff --git a/src/MEDOP/gui/WorkspaceController.hxx b/src/MEDOP/gui/WorkspaceController.hxx
new file mode 100644 (file)
index 0000000..d30b9a9
--- /dev/null
@@ -0,0 +1,74 @@
+
+// Author : Guillaume Boulant (EDF) 
+
+#ifndef _WORKSPACE_CONTROLLER_HXX
+#define _WORKSPACE_CONTROLLER_HXX
+
+#include "TreeGuiManager.hxx"
+#include "MEDEventListener_i.hxx"
+#include "XmedConsoleDriver.hxx"
+#include "DatasourceController.hxx"
+#include "MEDOPGUI.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDDataManager)
+#include <StandardApp_Module.hxx>
+
+#include <vector>
+
+/*!
+ * This class defines a DockWidget plugged in the SALOME application,
+ * and containing a tree view for rendering a hierarchical data
+ * model. This datamodel contains the objects used in the workspace.
+ */
+class MEDOPGUI_EXPORT WorkspaceController: public TreeGuiManager {
+
+  Q_OBJECT
+
+public:
+  WorkspaceController(StandardApp_Module * salomeModule);
+  ~WorkspaceController();
+
+  void createActions();
+
+public slots:
+  // Slots overiding TreeGuiManager
+  void processItemList(QStringList itemNameIdList, int actionId);
+
+  // Internal slots
+  void processMedEvent(const MEDOP::MedEvent * event);
+  void processDatasourceEvent(const DatasourceEvent * event);
+  void OnSaveWorkspace();
+  void OnCleanWorkspace();
+
+private:
+  XmedConsoleDriver * _consoleDriver;
+  StandardApp_Module * _salomeModule;
+  void _importItem(QString itemNameId);
+  void _importItemList(QStringList itemNameIdList);
+  void _importFieldIntoConsole(MEDOP::FieldHandler * fieldHandler,
+                              bool askForOptions,
+                              const char * alias=NULL);
+
+  void _exportItemList(QStringList itemNameIdList);
+  void _saveItemList(QStringList itemNameIdList);
+  void _viewItemList(QStringList itemNameIdList);
+
+  MEDEventListener_i * _medEventListener;
+
+  // This structure is intended to memorized in a bundle the whole set
+  // of integers identifying the actions of the popup menu associated
+  // to the TreeView embedded in this TreeGuiManager
+  typedef struct {
+    int display;
+    int useInTui;
+    int exportToPv;
+    int remove;
+    int save;
+  } ActionIdentifiers;
+
+  ActionIdentifiers _actionIds;
+
+};
+
+#endif // _WORKSPACE_CONTROLLER_HXX
diff --git a/src/MEDOP/gui/XmedConsoleDriver.cxx b/src/MEDOP/gui/XmedConsoleDriver.cxx
new file mode 100644 (file)
index 0000000..29bc88d
--- /dev/null
@@ -0,0 +1,66 @@
+// Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Author : Guillaume Boulant (EDF) 
+
+#include "XmedConsoleDriver.hxx"
+#include "Utils_SALOME_Exception.hxx"
+
+XmedConsoleDriver::XmedConsoleDriver(SalomeApp_Application * application) {
+  _pyConsole = application->pythonConsole();
+  if ( !_pyConsole ) {
+    const char * msg = "The python console can't be obtained from the SALOME application";
+    throw SALOME_Exception(msg);
+  }
+  _importXmedDone = false;
+}
+
+/*!
+ * This function sends instructions to the python console to setup the
+ * environment for med operations (in particular, it imports the medop
+ * commands). Even if the function is called twice, then the
+ * instructions are sent once.
+ */
+void XmedConsoleDriver::setup() {
+  
+  if ( !_importXmedDone ) {
+    QStringList commands;
+    // First import xmed to initialize the main objects, in particular
+    // the corba pointer to the event listener.
+    commands+="import xmed";
+    // Set the globals dictionnary so that the fields tools work properly.
+    commands+="xmed.setConsoleGlobals(globals())";
+    // Import the tools required for field operations
+    commands+="from xmed import load, get, put, dup, ls, la, save, view, doc, wipe";
+    // A last one to clear the console screen
+    //commands+="wipe";
+
+    this->exec(commands);
+    _importXmedDone = true;
+  }
+}
+
+/*!
+ * This function sends the specified list of commands to the console.
+ */
+void XmedConsoleDriver::exec(QStringList commands) {
+  QStringListIterator it(commands);
+  while (it.hasNext()) {
+    _pyConsole->exec(it.next());
+  }
+}
diff --git a/src/MEDOP/gui/XmedConsoleDriver.hxx b/src/MEDOP/gui/XmedConsoleDriver.hxx
new file mode 100644 (file)
index 0000000..bebc0ad
--- /dev/null
@@ -0,0 +1,44 @@
+// Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Author : Guillaume Boulant (EDF) 
+
+#ifndef XMEDCONSOLEDRIVER_HXX
+#define XMEDCONSOLEDRIVER_HXX
+
+#include <SalomeApp_Application.h>
+#include <PyConsole_Console.h>
+
+#include <QStringList>
+
+#include "MEDOPGUI.hxx"
+
+class MEDOPGUI_EXPORT XmedConsoleDriver {
+
+public:
+  XmedConsoleDriver(SalomeApp_Application * application);
+
+  void setup();
+  void exec(QStringList commands);
+
+private:
+  PyConsole_Console * _pyConsole;
+  bool _importXmedDone;
+};
+
+#endif //XMEDCONSOLEDRIVER_HXX
diff --git a/src/MEDOP/gui/XmedDataModel.cxx b/src/MEDOP/gui/XmedDataModel.cxx
new file mode 100644 (file)
index 0000000..1b770b0
--- /dev/null
@@ -0,0 +1,116 @@
+#include "XmedDataModel.hxx"
+#include <Basics_Utils.hxx>
+
+//
+// =================================================================
+// XmedDataObject implementation
+// =================================================================
+//
+
+XmedDataObject::XmedDataObject() : DataObject() {
+}
+
+/*! This function specified the localization of the object in the
+ * hierarchical organization
+ */
+string XmedDataObject::getPath() {
+  string path = 
+    string(_fieldHandler.meshname) + pathsep +
+    _getTypedFieldLabel();
+  return path;
+}
+
+void XmedDataObject::setFieldHandler(MEDOP::FieldHandler fieldHandler) {
+  _fieldHandler = fieldHandler;
+  this->setLabel(string("it = ")+ToString(_fieldHandler.iteration));
+}
+MEDOP::FieldHandler * XmedDataObject::getFieldHandler() {
+  return &_fieldHandler;
+}
+
+const char * XmedDataObject::mapTypeOfFieldLabel[XmedDataObject::NB_TYPE_OF_FIELDS] = 
+  {"ON_CELLS", "ON_NODES", "ON_GAUSS_PT", "ON_GAUSS_NE" };
+/*!
+ * This function implements the convention for displaying a fieldname
+ * characterized by its spatial discretisation type.
+ */
+string XmedDataObject::_getTypedFieldLabel() {
+  // A field name could identify several MEDCoupling fields, that
+  // differ by their spatial discretization on the mesh (values on
+  // cells, values on nodes, ...). This spatial discretization is
+  // specified by the TypeOfField that is an integer value in this
+  // list:
+  // 0 = ON_CELLS      
+  // 1 = ON_NODES      
+  // 2 = ON_GAUSS_PT   
+  // 3 = ON_GAUSS_NE
+  if ( _fieldHandler.type < 0 || 
+       _fieldHandler.type >= XmedDataObject::NB_TYPE_OF_FIELDS ) {
+    return string("UNKNOWN");
+  }
+  string label(_fieldHandler.fieldname);
+  label +=" ("+string(mapTypeOfFieldLabel[_fieldHandler.type])+")";
+  return label;
+}
+
+//
+// =================================================================
+// XmedDataModel implementation
+// =================================================================
+//
+
+/*!
+ * This function creates a XmedDataObject instance of DataObject and
+ * add the newly created instance to the model.
+ */
+DataObject * XmedDataModel::newDataObject() {
+  XmedDataObject * dataObject = new XmedDataObject();
+  this->addDataObject(dataObject);
+  return dataObject;
+}
+
+//
+// =================================================================
+// XmedDataProcessor implementation
+// =================================================================
+//
+void XmedDataProcessor::preprocess(QStringList itemNameIdList) {
+  int maxsize = itemNameIdList.size();
+  _resultingFieldHandlerList = new MEDOP::FieldHandlerList(maxsize);
+  _resultingFieldIdList = new MEDOP::FieldIdList(maxsize);
+  _objectIndex = 0;
+}
+
+MEDOP::FieldHandlerList * XmedDataProcessor::getResultingFieldHandlerList() {
+  return _resultingFieldHandlerList._retn();
+}
+
+MEDOP::FieldIdList * XmedDataProcessor::getResultingFieldIdList() {
+  return _resultingFieldIdList._retn();
+}
+
+void XmedDataProcessor::processDataObject(DataObject * dataObject) {
+  XmedDataObject * xmedDataObject = (XmedDataObject *)dataObject;
+  MEDOP::FieldHandler fieldHandler = *(xmedDataObject->getFieldHandler());
+  int fieldId = fieldHandler.id;
+
+  int newsize = _objectIndex+1;
+  _resultingFieldHandlerList->length(newsize);
+  _resultingFieldIdList->length(newsize);
+
+  _resultingFieldHandlerList[_objectIndex] = fieldHandler;
+  _resultingFieldIdList[_objectIndex]      = fieldId;
+  _objectIndex++;
+
+  // >>>>>
+  // Example (if needed) for creating the list of id from the lsite of handler 
+  /*
+  MEDOP::FieldIdList_var fieldIdList = new MEDOP::FieldIdList();
+  fieldIdList->length(fieldHandlerList->length());
+  for (int i=0; i<fieldHandlerList->length(); i++) {
+    MEDOP::FieldHandler fieldHandler = (*fieldHandlerList)[i];
+    fieldIdList[i] = fieldHandler.id;
+  }
+  */
+  // <<<<<
+}
diff --git a/src/MEDOP/gui/XmedDataModel.hxx b/src/MEDOP/gui/XmedDataModel.hxx
new file mode 100644 (file)
index 0000000..a9a70d6
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef _XMEDDATAMODEL_H_
+#define _XMEDDATAMODEL_H_
+
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(MEDDataManager)
+
+#include "MEDOPGUI.hxx"
+
+//
+// =================================================================
+// Definition of an atom in the data model as an implementation of
+// the virtual class DataObject
+// =================================================================
+//
+#include "DataObject.hxx"
+class MEDOPGUI_EXPORT XmedDataObject: public DataObject {
+public:
+  XmedDataObject();
+  virtual string getPath();
+
+  void setFieldHandler(MEDOP::FieldHandler fieldHandler);
+  MEDOP::FieldHandler * getFieldHandler();
+
+  static const int NB_TYPE_OF_FIELDS = 4;
+  static const char *  mapTypeOfFieldLabel[NB_TYPE_OF_FIELDS];
+
+private:
+  MEDOP::FieldHandler _fieldHandler;
+  string _getTypedFieldLabel();
+};
+
+//
+// =================================================================
+// Definition of the data model as an implementation of the virtual
+// class DataModel. It implements the DataObject factory.
+// =================================================================
+//
+#include "DataModel.hxx"
+class MEDOPGUI_EXPORT XmedDataModel: public DataModel {
+public:
+  XmedDataModel():DataModel() {};
+  virtual DataObject * newDataObject();
+};
+
+//
+// =================================================================
+// Base class for data processing
+// =================================================================
+// Howto use it? 
+//
+// 1) Create an instance, call the "process" function,
+// then get the result you are interested in, using the corresponding
+// "result*" function.
+//
+// 2) Alternativly, you can just call directly the suitable master
+// "get*" function to process and get the result you are interested
+// in.
+//
+#include "DataProcessor.hxx"
+
+class MEDOPGUI_EXPORT XmedDataProcessor : public DataProcessor {
+public:
+  XmedDataProcessor(DataModel * dataModel):DataProcessor(dataModel) {};
+
+  MEDOP::FieldHandlerList * getResultingFieldHandlerList();
+  MEDOP::FieldIdList * getResultingFieldIdList();
+
+protected:
+  virtual void preprocess(QStringList itemNameIdList);
+  virtual void processDataObject(DataObject * dataObject);
+
+private:
+  MEDOP::FieldHandlerList_var _resultingFieldHandlerList;
+  MEDOP::FieldIdList_var _resultingFieldIdList;
+  int _objectIndex;
+
+};
+
+
+#endif // _XMEDDATAMODEL_H_
diff --git a/src/MEDOP/gui/dialogs/CMakeLists.txt b/src/MEDOP/gui/dialogs/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0a0ca59
--- /dev/null
@@ -0,0 +1,91 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/UseQT4EXT.cmake)
+
+MACRO (QT4_WRAP_UI_XX outfiles )
+  QT4_EXTRACT_OPTIONS(ui_files ui_options ${ARGN})
+  FOREACH (it ${ui_files})
+    GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
+    GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
+    SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.hxx)
+    ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
+      COMMAND ${QT_UIC_EXECUTABLE}
+      ARGS ${ui_options} -o ${outfile} ${infile}
+      MAIN_DEPENDENCY ${infile})
+    SET(${outfiles} ${${outfiles}} ${outfile})
+  ENDFOREACH (it)
+ENDMACRO (QT4_WRAP_UI_XX)
+
+SET(MEDOPGUI_dialogs_FORMS
+  GenericDialog.ui
+  DlgAlias.ui
+  DlgUseInWorkspace.ui
+  DlgChangeUnderlyingMesh.ui
+  DlgImageToMed.ui
+)
+QT4_WRAP_UI_XX(MEDOPGUI_dialogs_FORMS_HEADERS ${MEDOPGUI_dialogs_FORMS})
+
+SET(MEDOPGUI_dialogs_FILES
+  GenericDialog.hxx
+  DlgAlias.hxx
+  DlgUseInWorkspace.hxx
+  DlgChangeUnderlyingMesh.hxx
+  DlgImageToMed.hxx
+)
+QT4_WRAP_CPP(MEDOPGUI_dialogs_HEADERS_MOC ${MEDOPGUI_dialogs_FILES})
+
+INCLUDE_DIRECTORIES(
+  ${OMNIORB_INCLUDE_DIRS}
+  ${CAS_INCLUDE_DIRS}
+  ${BOOST_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${KERNEL_ROOT_DIR}/include/salome
+  ${GUI_ROOT_DIR}/include/salome
+  ${CMAKE_CURRENT_SOURCE_DIR}/..
+)
+
+SET(MEDOPGUI_dialogs_SOURCES
+  GenericDialog.cxx
+  DlgAlias.cxx
+  DlgUseInWorkspace.cxx
+  DlgChangeUnderlyingMesh.cxx
+  DlgImageToMed.cxx
+)
+
+ADD_LIBRARY(MEDOPGUI_dialogs SHARED ${MEDOPGUI_dialogs_SOURCES} ${MEDOPGUI_dialogs_HEADERS_MOC} ${MEDOPGUI_dialogs_FORMS_HEADERS})
+SET_TARGET_PROPERTIES(MEDOPGUI_dialogs PROPERTIES COMPILE_FLAGS "${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDOPGUI_dialogs ${CAS_KERNEL} ${QT_LIBS} ${SalomeIDLKernel} ${SalomeGuiHelpers} ${OMNIORB_LIBS} ${qtx} ${suit} ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA} ${SalomeKernelHelpers} ${SalomeGuiHelpers})
+INSTALL(TARGETS MEDOPGUI_dialogs DESTINATION ${MED_salomelib_LIBS})
+
+#
+# ---------------------------------------------------------
+# Unit test programs
+# ---------------------------------------------------------
+#
+ADD_EXECUTABLE(dlgTester dlgTester.cxx)
+SET_TARGET_PROPERTIES(dlgTester PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(dlgTester MEDOPGUI_dialogs ${QT_LIBS} ${PLATFORM_LIBS})
+INSTALL(TARGETS dlgTester DESTINATION ${MED_salomebin_BINS})
+#ADD_TEST(dlgTester dlgTester)
+
+FILE(GLOB COMMON_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
diff --git a/src/MEDOP/gui/dialogs/DlgAlias.cxx b/src/MEDOP/gui/dialogs/DlgAlias.cxx
new file mode 100644 (file)
index 0000000..6551164
--- /dev/null
@@ -0,0 +1,41 @@
+#include "DlgAlias.hxx"
+
+#include <iostream>
+using std::cout;
+using std::endl;
+#define LOG(msg) cout << "[XMED - DlgAlias]::"<< msg << endl;
+
+
+DlgAlias::DlgAlias(QDialog *parent) : QDialog(parent)
+{
+  ui.setupUi(this); // A faire en premier
+  
+  /*
+    Personnalisez vos widgets ici si nécessaire
+    Réalisez des connexions supplémentaires entre signaux et slots
+  */
+  
+  // The slots accept() and reject() are already connected to the
+  // buttonbox (inherited features) 
+}
+
+void DlgAlias::accept() {
+  if ( this->getAlias().isEmpty() ) {
+    LOG("accept(): the alias can't be void");
+  }
+  else {
+    QDialog::accept();
+  }
+}
+
+//void DlgAlias::reject() {
+//  LOG("reject() is not implemented yet");
+//}
+
+void DlgAlias::setAlias(QString alias) {
+  ui.txtAlias->setText(alias);
+}
+
+QString DlgAlias::getAlias() {
+  return ui.txtAlias->text().trimmed();
+}
diff --git a/src/MEDOP/gui/dialogs/DlgAlias.hxx b/src/MEDOP/gui/dialogs/DlgAlias.hxx
new file mode 100644 (file)
index 0000000..81a3df0
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef DLGALIAS_H
+#define DLGALIAS_H
+
+#include <QtGui>
+#include "ui_DlgAlias.hxx"
+#include "MEDOPGUIdialogs.hxx"
+
+class MEDOPGUI_DIALOGS_EXPORT DlgAlias : public QDialog
+{
+  Q_OBJECT
+    
+ public:
+  DlgAlias(QDialog *parent = 0);
+
+  void setAlias(QString alias);
+  QString getAlias();
+  
+  private slots:    
+    void accept();
+  //void reject();
+  
+  private:
+    Ui_DlgAlias ui; // instance of the class defined in ui_DlgAlias.h
+};
+
+
+#endif // DLGALIAS_H
diff --git a/src/MEDOP/gui/dialogs/DlgAlias.ui b/src/MEDOP/gui/dialogs/DlgAlias.ui
new file mode 100644 (file)
index 0000000..595c08e
--- /dev/null
@@ -0,0 +1,505 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgAlias</class>
+ <widget class="QDialog" name="DlgAlias">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>477</width>
+    <height>241</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Sélection d'un alias pour le champ</string>
+  </property>
+  <layout class="QHBoxLayout">
+   <property name="spacing">
+    <number>6</number>
+   </property>
+   <property name="margin">
+    <number>9</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout">
+     <property name="spacing">
+      <number>6</number>
+     </property>
+     <property name="margin">
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="lblHelpAlias">
+       <property name="palette">
+        <palette>
+         <active>
+          <colorrole role="WindowText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Button">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Light">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Midlight">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Dark">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>127</red>
+             <green>127</green>
+             <blue>127</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Mid">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>170</red>
+             <green>170</green>
+             <blue>170</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Text">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="BrightText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="ButtonText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Shadow">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="AlternateBase">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </active>
+         <inactive>
+          <colorrole role="WindowText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Button">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Light">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Midlight">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Dark">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>127</red>
+             <green>127</green>
+             <blue>127</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Mid">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>170</red>
+             <green>170</green>
+             <blue>170</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Text">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="BrightText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="ButtonText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Shadow">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="AlternateBase">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </inactive>
+         <disabled>
+          <colorrole role="WindowText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>127</red>
+             <green>127</green>
+             <blue>127</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Button">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Light">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Midlight">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Dark">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>127</red>
+             <green>127</green>
+             <blue>127</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Mid">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>170</red>
+             <green>170</green>
+             <blue>170</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Text">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>127</red>
+             <green>127</green>
+             <blue>127</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="BrightText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="ButtonText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>127</red>
+             <green>127</green>
+             <blue>127</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Shadow">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="AlternateBase">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </disabled>
+        </palette>
+       </property>
+       <property name="font">
+        <font>
+         <family>Sans Serif</family>
+         <italic>true</italic>
+        </font>
+       </property>
+       <property name="text">
+        <string>Vous pouvez définir un alias pour manipuler le champ dans la console:</string>
+       </property>
+       <property name="wordWrap">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout">
+       <property name="spacing">
+        <number>6</number>
+       </property>
+       <property name="margin">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="QLabel" name="lblAlias">
+         <property name="text">
+          <string>Alias</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="txtAlias"/>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QLabel" name="lblInfo">
+       <property name="font">
+        <font>
+         <italic>true</italic>
+        </font>
+       </property>
+       <property name="text">
+        <string>(cette operation définit une variable de nom &lt;alias&gt; dans la console TUI. Tapez &quot;&lt;alias&gt;.help()&quot;  pour voir les fonctions à disposition, ou tou simplement &quot;doc&quot;)</string>
+       </property>
+       <property name="wordWrap">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>402</width>
+         <height>71</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="standardButtons">
+        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>DlgAlias</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>DlgAlias</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.cxx b/src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.cxx
new file mode 100644 (file)
index 0000000..215dbf1
--- /dev/null
@@ -0,0 +1,55 @@
+#include "DlgChangeUnderlyingMesh.hxx"
+#include "DatasourceConstants.hxx"
+
+#include <QString>
+#include <QMessageBox>
+
+DlgChangeUnderlyingMesh::DlgChangeUnderlyingMesh(SALOME_AppStudyEditor * studyEditor,
+                                                QDialog * parent)
+  : GenericDialog(parent)
+{
+  ui.setupUi(this->getPanel());
+  _meshId=-1;
+  _studyEditor = studyEditor;
+  connect(this->ui.btnSelectMesh, SIGNAL(clicked()), this, SLOT(OnSelectMesh()));
+  this->setWindowTitle("Remplacement du maillage support");
+}
+
+/** This reset the dialog for a new selection */
+void DlgChangeUnderlyingMesh::setFieldId(int fieldId) {
+  _fieldId = fieldId;
+  _meshId=-1;
+  this->ui.txtMesh->setText(QString(""));
+}
+int DlgChangeUnderlyingMesh::getFieldId() {
+  return _fieldId;
+}
+
+int DlgChangeUnderlyingMesh::getMeshId() {
+  return _meshId;
+}
+
+void DlgChangeUnderlyingMesh::accept() {
+  if ( _meshId == -1 ) {
+    QMessageBox::warning(this,
+                        tr("Data verification"),
+                        tr("You must select a mesh in the explorer and clic the button Mesh"));
+  }
+  else {
+    GenericDialog::accept();
+    emit inputValidated();
+  }
+}
+
+void DlgChangeUnderlyingMesh::OnSelectMesh() {
+  SALOME_StudyEditor::SObjectList * listOfSObject = _studyEditor->getSelectedObjects();
+  if ( listOfSObject->size() > 0 ) {
+    SALOMEDS::SObject_var soMesh = listOfSObject->at(0);
+    // _GBO_ TODO: we should test here if it is a mesh (attribute in
+    // the sobject)
+    _meshId = _studyEditor->getParameterInt(soMesh,OBJECT_ID);
+    const char * meshname = _studyEditor->getName(soMesh);
+    this->ui.txtMesh->setText(QString(meshname));
+  }
+
+}
diff --git a/src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.hxx b/src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.hxx
new file mode 100644 (file)
index 0000000..ab4bffb
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef _DlgChangeUnderlyingMesh_HXX
+#define _DlgChangeUnderlyingMesh_HXX
+
+#include <QtGui>
+#include "ui_DlgChangeUnderlyingMesh.hxx"
+#include "GenericDialog.hxx"
+
+#include <SALOME_AppStudyEditor.hxx>
+#include "MEDOPGUIdialogs.hxx"
+
+class MEDOPGUI_DIALOGS_EXPORT DlgChangeUnderlyingMesh : public GenericDialog
+{
+  Q_OBJECT
+  
+public:
+  DlgChangeUnderlyingMesh(SALOME_AppStudyEditor * studyEditor, QDialog *parent = 0);
+  
+  void setFieldId(int fieldId);
+  int getFieldId();
+  int getMeshId();
+
+signals:
+  void inputValidated();
+
+protected slots:
+  void OnSelectMesh();
+
+ private:
+  void accept();
+  int _meshId;
+
+  SALOME_AppStudyEditor * _studyEditor;
+  int _fieldId;
+
+  Ui_DlgChangeUnderlyingMesh ui; // instance of the class defined in ui_DlgChangeUnderlyingMesh.hxx
+};
+
+
+#endif // _DlgChangeUnderlyingMesh_HXX
diff --git a/src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.ui b/src/MEDOP/gui/dialogs/DlgChangeUnderlyingMesh.ui
new file mode 100644 (file)
index 0000000..2bd44ef
--- /dev/null
@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgChangeUnderlyingMesh</class>
+ <widget class="QWidget" name="DlgChangeUnderlyingMesh">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>479</width>
+    <height>429</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_2">
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QLabel" name="lblHelp">
+         <property name="palette">
+          <palette>
+           <active>
+            <colorrole role="WindowText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Button">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Light">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Midlight">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Dark">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>127</red>
+               <green>127</green>
+               <blue>127</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Mid">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>170</red>
+               <green>170</green>
+               <blue>170</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Text">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="BrightText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="ButtonText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Base">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Window">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Shadow">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="AlternateBase">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+           </active>
+           <inactive>
+            <colorrole role="WindowText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Button">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Light">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Midlight">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Dark">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>127</red>
+               <green>127</green>
+               <blue>127</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Mid">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>170</red>
+               <green>170</green>
+               <blue>170</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Text">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="BrightText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="ButtonText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Base">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Window">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Shadow">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="AlternateBase">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+           </inactive>
+           <disabled>
+            <colorrole role="WindowText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>127</red>
+               <green>127</green>
+               <blue>127</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Button">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Light">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Midlight">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Dark">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>127</red>
+               <green>127</green>
+               <blue>127</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Mid">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>170</red>
+               <green>170</green>
+               <blue>170</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Text">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>127</red>
+               <green>127</green>
+               <blue>127</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="BrightText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="ButtonText">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>127</red>
+               <green>127</green>
+               <blue>127</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Base">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Window">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="Shadow">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>0</red>
+               <green>0</green>
+               <blue>0</blue>
+              </color>
+             </brush>
+            </colorrole>
+            <colorrole role="AlternateBase">
+             <brush brushstyle="SolidPattern">
+              <color alpha="255">
+               <red>255</red>
+               <green>255</green>
+               <blue>255</blue>
+              </color>
+             </brush>
+            </colorrole>
+           </disabled>
+          </palette>
+         </property>
+         <property name="font">
+          <font>
+           <family>Sans Serif</family>
+           <italic>true</italic>
+          </font>
+         </property>
+         <property name="text">
+          <string>Sélectionnez un maillage dans l'explorateur:</string>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <widget class="QPushButton" name="btnSelectMesh">
+           <property name="text">
+            <string>Maillage -&gt;</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="txtMesh"/>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="QLabel" name="lblInfo">
+         <property name="font">
+          <font>
+           <italic>true</italic>
+          </font>
+         </property>
+         <property name="text">
+          <string>(L'explorateur donne une vue des sources de données med  (maillage et champs) référencés dans l'espace de données)</string>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>121</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/MEDOP/gui/dialogs/DlgImageToMed.cxx b/src/MEDOP/gui/dialogs/DlgImageToMed.cxx
new file mode 100644 (file)
index 0000000..ba58801
--- /dev/null
@@ -0,0 +1,83 @@
+#include "DlgImageToMed.hxx"
+#include "SALOME_GuiServices.hxx"
+
+#include <SUIT_FileDlg.h>
+#include <SUIT_Desktop.h>
+
+#include <QString>
+#include <QStringList>
+#include <QPixmap>
+#include <QIcon>
+
+DlgImageToMed::DlgImageToMed(QDialog *parent) : GenericDialog(parent)
+{
+  ui.setupUi(this->getPanel());
+  
+  QString moduleName = "MED";
+  QPixmap aPixmap = GUI::getResourcesManager()->loadPixmap( moduleName, "folder.png" );
+  QIcon icon(aPixmap);
+  ui.btnImageFileChooser->setIcon(icon);
+  ui.btnMedFileChooser->setIcon(icon);
+
+  connect(ui.btnImageFileChooser,SIGNAL(clicked()),
+          this, SLOT(OnBtnImageFileChooser()));
+  connect(ui.btnMedFileChooser,SIGNAL(clicked()),
+          this, SLOT(OnBtnMedFileChooser()));
+
+  this->setWindowTitle("Créer un champ à partir d'une image");
+}
+
+QString DlgImageToMed::getImageFilepath() {
+  return ui.txtImageFile->text().trimmed();
+}
+
+QString DlgImageToMed::getMedFilepath() {
+  return ui.txtMedFile->text().trimmed();
+}
+
+void DlgImageToMed::setAutoLoaded(bool autoloaded) {
+  if ( autoloaded ) {
+    ui.chkAutoLoad->setCheckState(Qt::Checked);
+  }
+  else {
+    ui.chkAutoLoad->setCheckState(Qt::Unchecked);    
+  }
+}
+
+bool DlgImageToMed::isAutoLoaded() {
+  Qt::CheckState state = ui.chkAutoLoad->checkState();
+  if ( state == Qt::Checked ) {
+    return true;
+  }
+  return false;
+}
+
+void DlgImageToMed::OnBtnImageFileChooser() {
+  QStringList filter;
+  filter.append(QObject::tr("Image files (*.png)"));
+  filter.append(QObject::tr("Image files (*.jpg)"));
+  filter.append(QObject::tr("Image files (*.pgm)"));
+  filter.append(QObject::tr("All files (*.*)"));
+  QString filename = SUIT_FileDlg::getFileName(ui.btnImageFileChooser,
+                                               "",
+                                               filter,
+                                               QObject::tr("Select image file"),
+                                               true);
+  if ( filename.isEmpty() ) return;
+  ui.txtImageFile->setText(filename);
+
+  QString medFilename = (filename.remove(filename.size()-3,3))+"med";
+  ui.txtMedFile->setText(medFilename);
+}
+
+void DlgImageToMed::OnBtnMedFileChooser() {
+  QStringList filter;
+  filter.append(QObject::tr("MED files (*.med)"));
+  QString filename = SUIT_FileDlg::getFileName(ui.btnMedFileChooser,
+                                               "",
+                                               filter,
+                                               QObject::tr("Specify a MED file"),
+                                               true);
+  if ( filename.isEmpty() ) return;
+  ui.txtMedFile->setText(filename);
+}
diff --git a/src/MEDOP/gui/dialogs/DlgImageToMed.hxx b/src/MEDOP/gui/dialogs/DlgImageToMed.hxx
new file mode 100644 (file)
index 0000000..7b396f0
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef _DlgImageToMed_HXX
+#define _DlgImageToMed_HXX
+
+#include <QtGui>
+#include "ui_DlgImageToMed.hxx"
+#include "GenericDialog.hxx"
+
+#include "MEDOPGUIdialogs.hxx"
+
+class MEDOPGUI_DIALOGS_EXPORT DlgImageToMed : public GenericDialog
+{
+  Q_OBJECT
+    
+ public:
+  DlgImageToMed(QDialog *parent = 0);
+  
+  QString getImageFilepath();
+  QString getMedFilepath();
+  bool    isAutoLoaded();
+  void    setAutoLoaded(bool autoloaded);
+
+ protected slots:
+  void OnBtnImageFileChooser();
+  void OnBtnMedFileChooser();
+
+ private:
+  Ui_DlgImageToMed ui; // instance of the class defined in ui_DlgImageToMed.hxx
+};
+
+
+#endif // _DlgImageToMed_HXX
diff --git a/src/MEDOP/gui/dialogs/DlgImageToMed.ui b/src/MEDOP/gui/dialogs/DlgImageToMed.ui
new file mode 100644 (file)
index 0000000..490b5bd
--- /dev/null
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DlgImageToMed</class>
+ <widget class="QWidget" name="DlgImageToMed">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>690</width>
+    <height>439</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_2">
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout_5">
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_4">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <layout class="QVBoxLayout" name="verticalLayout">
+           <item>
+            <widget class="QLabel" name="lblImageFile">
+             <property name="text">
+              <string>Fichier Image:</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QLabel" name="lblMedFile">
+             <property name="text">
+              <string>Fichier MED:</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <layout class="QVBoxLayout" name="verticalLayout_2">
+           <item>
+            <widget class="QLineEdit" name="txtImageFile"/>
+           </item>
+           <item>
+            <widget class="QLineEdit" name="txtMedFile"/>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <layout class="QVBoxLayout" name="verticalLayout_3">
+           <item>
+            <widget class="QPushButton" name="btnImageFileChooser">
+             <property name="text">
+              <string/>
+             </property>
+             <property name="icon">
+              <iconset>
+               <normaloff>../../../../resources/XMED_load.png</normaloff>../../../../resources/XMED_load.png</iconset>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QPushButton" name="btnMedFileChooser">
+             <property name="text">
+              <string/>
+             </property>
+             <property name="icon">
+              <iconset>
+               <normaloff>../../../../resources/XMED_load.png</normaloff>../../../../resources/XMED_load.png</iconset>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="chkAutoLoad">
+         <property name="text">
+          <string>Charger automatiquement</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>40</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/MEDOP/gui/dialogs/DlgUseInWorkspace.cxx b/src/MEDOP/gui/dialogs/DlgUseInWorkspace.cxx
new file mode 100644 (file)
index 0000000..d988139
--- /dev/null
@@ -0,0 +1,6 @@
+#include "DlgUseInWorkspace.hxx"
+
+DlgUseInWorkspace::DlgUseInWorkspace(QDialog *parent) : GenericDialog(parent)
+{
+  ui.setupUi(this->getPanel());
+}
diff --git a/src/MEDOP/gui/dialogs/DlgUseInWorkspace.hxx b/src/MEDOP/gui/dialogs/DlgUseInWorkspace.hxx
new file mode 100644 (file)
index 0000000..0bf3160
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef _DlgUseInWorkspace_HXX
+#define _DlgUseInWorkspace_HXX
+
+#include <QtGui>
+#include "ui_DlgUseInWorkspace.hxx"
+#include "GenericDialog.hxx"
+
+class DlgUseInWorkspace : public GenericDialog
+{
+  Q_OBJECT
+    
+ public:
+  DlgUseInWorkspace(QDialog *parent = 0);
+  
+ private:
+  Ui_DlgUseInWorkspace ui; // instance of the class defined in ui_DlgUseInWorkspace.hxx
+};
+
+
+#endif // _DlgUseInWorkspace_HXX
diff --git a/src/MEDOP/gui/dialogs/DlgUseInWorkspace.ui b/src/MEDOP/gui/dialogs/DlgUseInWorkspace.ui
new file mode 100644 (file)
index 0000000..73c22d4
--- /dev/null
@@ -0,0 +1,99 @@
+<ui version="4.0" >
+ <class>DlgUseInWorkspace</class>
+ <widget class="QWidget" name="DlgUseInWorkspace" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>340</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" >
+       <property name="margin" >
+        <number>0</number>
+       </property>
+       <property name="spacing" >
+        <number>6</number>
+       </property>
+       <item>
+        <layout class="QVBoxLayout" >
+         <property name="margin" >
+          <number>0</number>
+         </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <item>
+          <widget class="QLabel" name="label" >
+           <property name="text" >
+            <string>Pression :</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_2" >
+           <property name="text" >
+            <string>Température :</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <layout class="QVBoxLayout" >
+         <property name="margin" >
+          <number>0</number>
+         </property>
+         <property name="spacing" >
+          <number>6</number>
+         </property>
+         <item>
+          <widget class="QLineEdit" name="lineEdit" />
+         </item>
+         <item>
+          <widget class="QLineEdit" name="lineEdit_2" />
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <spacer>
+       <property name="orientation" >
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" >
+        <size>
+         <width>20</width>
+         <height>121</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/MEDOP/gui/dialogs/GenericDialog.cxx b/src/MEDOP/gui/dialogs/GenericDialog.cxx
new file mode 100644 (file)
index 0000000..9b84566
--- /dev/null
@@ -0,0 +1,29 @@
+#include "GenericDialog.hxx"
+
+GenericDialog::GenericDialog(QDialog *parent) : QDialog(parent)
+{
+  ui.setupUi(this); // A faire en premier
+  
+  /*
+    Personnalisez vos widgets ici si nécessaire
+    Réalisez des connexions supplémentaires entre signaux et slots
+  */
+  
+  // The slots accept() and reject() are already connected to the
+  // buttonbox (inherited features) 
+}
+
+QFrame * GenericDialog::getPanel() {
+  return ui.centralPanel;
+}
+
+QDialogButtonBox * GenericDialog::getButtonBox() {
+  return ui.buttonBox;
+}
+
+
+#include <QDebug>
+void GenericDialog::accept() {
+  qDebug() << "accept() is not implemented yet";
+  QDialog::accept();
+}
diff --git a/src/MEDOP/gui/dialogs/GenericDialog.hxx b/src/MEDOP/gui/dialogs/GenericDialog.hxx
new file mode 100644 (file)
index 0000000..ee94661
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef _GenericDialog_HXX
+#define _GenericDialog_HXX
+
+#include <QtGui>
+#include "ui_GenericDialog.hxx"
+
+class GenericDialog : public QDialog
+{
+  Q_OBJECT
+    
+public:
+  GenericDialog(QDialog *parent = 0);
+
+ protected:
+  QFrame * getPanel();
+  QDialogButtonBox * getButtonBox();
+  
+ protected slots:    
+    void accept();
+  //void reject();
+  
+ private:
+  Ui_GenericDialog ui; // instance of the class defined in ui_GenericDialog.h
+};
+
+
+#endif // _GenericDialog_HXX
diff --git a/src/MEDOP/gui/dialogs/GenericDialog.ui b/src/MEDOP/gui/dialogs/GenericDialog.ui
new file mode 100644 (file)
index 0000000..1fe7ae9
--- /dev/null
@@ -0,0 +1,89 @@
+<ui version="4.0" >
+ <class>GenericDialog</class>
+ <widget class="QDialog" name="GenericDialog" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Dialog</string>
+  </property>
+  <layout class="QHBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
+   </property>
+   <property name="spacing" >
+    <number>6</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" >
+     <property name="margin" >
+      <number>0</number>
+     </property>
+     <property name="spacing" >
+      <number>6</number>
+     </property>
+     <item>
+      <widget class="QFrame" name="centralPanel" >
+       <property name="frameShape" >
+        <enum>QFrame::StyledPanel</enum>
+       </property>
+       <property name="frameShadow" >
+        <enum>QFrame::Raised</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox" >
+       <property name="orientation" >
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="standardButtons" >
+        <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>GenericDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>GenericDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/MEDOP/gui/dialogs/MEDOPGUIdialogs.hxx b/src/MEDOP/gui/dialogs/MEDOPGUIdialogs.hxx
new file mode 100755 (executable)
index 0000000..ef2bec2
--- /dev/null
@@ -0,0 +1,33 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef MEDOPGUIDIALOGS_HXX_
+#define MEDOPGUIDIALOGS_HXX_
+
+#ifdef WIN32
+# if defined MEDOPGUI_DIALOGS_EXPORTS || defined MEDOPGUI_dialogs_EXPORTS
+#  define MEDOPGUI_DIALOGS_EXPORT __declspec( dllexport )
+# else
+#  define MEDOPGUI_DIALOGS_EXPORT __declspec( dllimport )
+# endif
+#else
+# define MEDOPGUI_DIALOGS_EXPORT
+#endif
+
+#endif //MEDOPGUIDIALOGS_HXX_
diff --git a/src/MEDOP/gui/dialogs/Makefile.am b/src/MEDOP/gui/dialogs/Makefile.am
new file mode 100644 (file)
index 0000000..991c193
--- /dev/null
@@ -0,0 +1,140 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+#
+# ---------------------------------------------------------
+# Generation rules to create moc files from QObject headers
+# and form source files from ui files
+# ---------------------------------------------------------
+#
+%_moc.cxx: %.hxx
+       $(MOC) $< -o $@
+
+ui_%.hxx: %.ui
+       $(UIC) -o $@ $<
+
+QT_CXXFLAGS  = @QT_INCLUDES@ @QT_MT_INCLUDES@
+CAS_CXXFLAGS = @CAS_CPPFLAGS@ @CAS_CXXFLAGS@
+OMNIORB_CXXFLAGS = @CORBA_INCLUDES@ @CORBA_CXXFLAGS@
+BOOST_CXXFLAGS=@BOOST_CPPFLAGS@
+
+QT_LDFLAGS = $(QT_MT_LIBS)
+OMNIORB_LIBS=@OMNIORB_LIBS@
+
+#
+# ---------------------------------------------------------
+# Declaration of form files generated by UIC and MOC files
+# as BUILT_SOURCES to be used in the building process.
+# ---------------------------------------------------------
+#
+UIC_FILES =                            \
+       ui_GenericDialog.hxx           \
+       ui_DlgAlias.hxx                \
+       ui_DlgUseInWorkspace.hxx       \
+       ui_DlgChangeUnderlyingMesh.hxx \
+       ui_DlgImageToMed.hxx
+#
+MOC_FILES =                       \
+       GenericDialog_moc.cxx     \
+       DlgAlias_moc.cxx          \
+       DlgUseInWorkspace_moc.cxx \
+       DlgChangeUnderlyingMesh_moc.cxx \
+       DlgImageToMed_moc.cxx
+
+BUILT_SOURCES = $(UIC_FILES)
+
+#
+# ---------------------------------------------------------
+# Declaration of sources files to the building process
+# ---------------------------------------------------------
+# MOC files and UIC files should be added to the list of undistributed
+# source files with something like (where <MyLibrary> should be
+# replaced by the name of the product declared by the directive
+# lib_LTLIBRARIES):
+#
+lib_LTLIBRARIES = libMEDOPGUI_dialogs.la
+
+nodist_libMEDOPGUI_dialogs_la_SOURCES = $(MOC_FILES) $(UIC_FILES)
+
+dist_libMEDOPGUI_dialogs_la_SOURCES = \
+       GenericDialog.cxx            \
+       DlgAlias.cxx                 \
+       DlgUseInWorkspace.cxx        \
+       DlgChangeUnderlyingMesh.cxx  \
+       DlgImageToMed.cxx
+
+libMEDOPGUI_dialogs_la_CPPFLAGS = \
+       $(QT_CXXFLAGS)           \
+       $(CAS_CXXFLAGS)          \
+       $(OMNIORB_CXXFLAGS)      \
+       $(BOOST_CXXFLAGS)        \
+       $(KERNEL_CXXFLAGS)       \
+       $(GUI_CXXFLAGS)          \
+       -I$(srcdir)/..
+
+libMEDOPGUI_dialogs_la_LDFLAGS = \
+       -no-undefined -version-info=0:0:0 \
+       $(QT_LDFLAGS)                     \
+       $(GUI_LDFLAGS) -lSalomeGuiHelpers \
+       $(OMNIORB_LIBS)
+
+salomeinclude_HEADERS =              \
+       GenericDialog.hxx            \
+       DlgAlias.hxx                 \
+       DlgUseInWorkspace.hxx        \
+       DlgChangeUnderlyingMesh.hxx  \
+       DlgImageToMed.hxx  \
+       MEDOPGUIdialogs.hxx
+
+#
+# ---------------------------------------------------------
+# Unit test programs
+# ---------------------------------------------------------
+#
+
+bin_PROGRAMS = dlgTester
+
+dlgTester_SOURCES = \
+       dlgTester.cxx
+
+#nodist_dlgTester_SOURCES = $(UIC_FILES)
+
+dlgTester_CPPFLAGS = \
+       $(QT_CXXFLAGS)
+
+# WARN: for the building of binary executable programs, you must use
+# the LDADD option instead of the LDFLAGS used for library. The impact
+# is in the expression of dependencies between the executable program
+# and the library it relies on. In parallel construction (e.g. make
+# -j8), the makefile try to generate the program while the library
+# (file .la) is not generated.
+
+dlgTester_LDADD = \
+       libMEDOPGUI_dialogs.la \
+       $(QT_LIBS)
+
+
+mostlyclean-local:
+       rm -f @builddir@/*_moc.cxx @builddir@/ui_*.hxx
+
+EXTRA_DIST += $(UIC_FILES:ui_%.hxx=%.ui)
diff --git a/src/MEDOP/gui/dialogs/dlgTester.cxx b/src/MEDOP/gui/dialogs/dlgTester.cxx
new file mode 100644 (file)
index 0000000..72f5b64
--- /dev/null
@@ -0,0 +1,53 @@
+//
+// This program can be used for unit test of dialog box.
+// You just have to include the interface file (*.h) and
+// use the dialog class as illustrated in the functions TEST_*.
+// (gboulant - 12/10/2010)
+//
+#include <QApplication>
+#include <QtGui>
+
+#include "DlgAlias.hxx"
+
+#include <iostream>
+using std::cout;
+using std::endl;
+#define LOG(msg) cout << "[XMED - dlgTester]::"<< msg << endl;
+
+
+
+void TEST_dlgAlias_show(int argc, char *argv[]) { 
+  QApplication app(argc,argv);
+
+  DlgAlias dialog;
+  dialog.setAlias("vitesse");
+  dialog.show();
+
+  app.exec();
+}
+
+void TEST_dlgAlias_exec(int argc, char *argv[]) {
+  QApplication app(argc,argv);
+
+  DlgAlias dialog;
+  QString alias = "vitesse";
+  dialog.setAlias(alias);
+  int choice = dialog.exec();
+  if ( choice == QDialog::Accepted ) {
+    LOG("Clic on OK");
+  }
+  else {
+    LOG("Clic on Cancel");
+  }
+
+  //app.exec();
+}
+
+
+int main(int argc, char *argv[])
+{
+  
+  //TEST_dlgAlias_show(argc, argv);
+  TEST_dlgAlias_exec(argc, argv);
+  
+}
diff --git a/src/MEDOP/gui/factory.cxx b/src/MEDOP/gui/factory.cxx
new file mode 100644 (file)
index 0000000..40c29e2
--- /dev/null
@@ -0,0 +1,68 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// Author : Guillaume Boulant (EDF) 
+
+/*!
+ * IMPORTANT NOTE: this file implements the factory interface required
+ * to specify the SALOME GUI part of a module.
+ *
+ * The GUI part of a module is an implementation of the generic class
+ * CAM_Module and must be returned here by a factory function called
+ * createModule().
+ *
+ * The function createModule can be designed to switch between several
+ * configurations, but generally the configuration is statically
+ * defined (at build step). The default configuration could be DefaultGui. The
+ * configuration below is MEDOPModule.
+ */
+
+#include <MED_version.h>
+#include "MEDOPModule.hxx"
+#include "MEDOPGUI.hxx"
+
+#ifdef __WITH_MEDMEMGUI__
+#include "MEDGUI.h"
+#endif
+
+extern "C" {
+
+  /*! This function is the factory for the GUI Module */
+  MEDOPGUI_EXPORT CAM_Module* createModule()
+  {
+    CAM_Module * medModule;
+
+#ifdef __WITH_MEDMEMGUI__
+    medModule = new MedGUI();
+#else    
+    medModule = new MEDOPModule();
+#endif
+
+    return medModule;
+  }
+
+  /*! This function specifies the version of the module to be displayed in the about dialog box */
+  MEDOPGUI_EXPORT char* getModuleVersion() {
+    return (char*)MED_VERSION_STR;
+  }
+
+}
diff --git a/src/MEDOP/gui/test/README.txt b/src/MEDOP/gui/test/README.txt
new file mode 100644 (file)
index 0000000..751cbf4
--- /dev/null
@@ -0,0 +1,12 @@
+
+This is a simple Qt framework to test the dialog widgets.
+
+To build the project:
+* specify the sources files in the .pro file
+* run qmake, then make
+* run guiTester
+
+To clean the project:
+* run "make clean"
+* remove binary and Makefile
+  $ rm guiTester Makefile
diff --git a/src/MEDOP/gui/test/guiTester.pro b/src/MEDOP/gui/test/guiTester.pro
new file mode 100644 (file)
index 0000000..51f1f87
--- /dev/null
@@ -0,0 +1,13 @@
+######################################################################
+# Automatically generated by qmake (2.01a) mer. oct. 6 14:46:48 2010
+######################################################################
+
+TEMPLATE = app
+TARGET = 
+DEPENDPATH += .
+INCLUDEPATH += . ../dialogs
+
+# Input
+HEADERS += ../dialogs/DlgAlias.h
+FORMS += ../dialogs/dlgAlias.ui
+SOURCES += ../dialogs/DlgAlias.cxx ../dialogs/dlgTester.cxx
diff --git a/src/MEDOP/res/CMakeLists.txt b/src/MEDOP/res/CMakeLists.txt
new file mode 100644 (file)
index 0000000..aecdf94
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(testfiles)
+
+IF(MED_ENABLE_GUI)
+  SET(MED_RESOURCES_FILES
+    MEDOP.png
+    MEDOP_small.png
+    datasource_add.png
+    datasource.png
+    datasource_mesh.png
+    datasource_field.png
+    datasource_expandfield.png
+    datasource_view.png
+    datasource_use.png
+    datasource_changeUnderlyingMesh.png
+    image_add.png
+    workspace_save.png
+    workspace_clean.png
+    )
+  INSTALL(FILES ${MED_RESOURCES_FILES} DESTINATION ${MED_salomeres_DATA})
+ENDIF(MED_ENABLE_GUI)
diff --git a/src/MEDOP/res/MEDOP.png b/src/MEDOP/res/MEDOP.png
new file mode 100644 (file)
index 0000000..85079c1
Binary files /dev/null and b/src/MEDOP/res/MEDOP.png differ
diff --git a/src/MEDOP/res/MEDOP_small.png b/src/MEDOP/res/MEDOP_small.png
new file mode 100644 (file)
index 0000000..1c367d6
Binary files /dev/null and b/src/MEDOP/res/MEDOP_small.png differ
diff --git a/src/MEDOP/res/Makefile.am b/src/MEDOP/res/Makefile.am
new file mode 100644 (file)
index 0000000..ee1be10
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# Author : Guillaume Boulant (EDF) 
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+SUBDIRS = testfiles
+dist_salomeres_DATA= \
+        MEDOP.png \
+        MEDOP_small.png \
+        datasource_add.png \
+        datasource.png \
+        datasource_mesh.png \
+        datasource_field.png \
+        datasource_expandfield.png \
+        datasource_view.png \
+        datasource_use.png \
+        datasource_changeUnderlyingMesh.png \
+        image_add.png \
+        workspace_save.png \
+        workspace_clean.png \
+       folder.png
diff --git a/src/MEDOP/res/datasource.png b/src/MEDOP/res/datasource.png
new file mode 100644 (file)
index 0000000..d503fef
Binary files /dev/null and b/src/MEDOP/res/datasource.png differ
diff --git a/src/MEDOP/res/datasource_add.png b/src/MEDOP/res/datasource_add.png
new file mode 100644 (file)
index 0000000..75f90c7
Binary files /dev/null and b/src/MEDOP/res/datasource_add.png differ
diff --git a/src/MEDOP/res/datasource_changeUnderlyingMesh.png b/src/MEDOP/res/datasource_changeUnderlyingMesh.png
new file mode 100644 (file)
index 0000000..fe6c8b6
Binary files /dev/null and b/src/MEDOP/res/datasource_changeUnderlyingMesh.png differ
diff --git a/src/MEDOP/res/datasource_expandfield.png b/src/MEDOP/res/datasource_expandfield.png
new file mode 100644 (file)
index 0000000..07c8b0b
Binary files /dev/null and b/src/MEDOP/res/datasource_expandfield.png differ
diff --git a/src/MEDOP/res/datasource_field.png b/src/MEDOP/res/datasource_field.png
new file mode 100644 (file)
index 0000000..af3f6f5
Binary files /dev/null and b/src/MEDOP/res/datasource_field.png differ
diff --git a/src/MEDOP/res/datasource_mesh.png b/src/MEDOP/res/datasource_mesh.png
new file mode 100644 (file)
index 0000000..93401f4
Binary files /dev/null and b/src/MEDOP/res/datasource_mesh.png differ
diff --git a/src/MEDOP/res/datasource_use.png b/src/MEDOP/res/datasource_use.png
new file mode 100644 (file)
index 0000000..0d1ab63
Binary files /dev/null and b/src/MEDOP/res/datasource_use.png differ
diff --git a/src/MEDOP/res/datasource_view.png b/src/MEDOP/res/datasource_view.png
new file mode 100644 (file)
index 0000000..4189144
Binary files /dev/null and b/src/MEDOP/res/datasource_view.png differ
diff --git a/src/MEDOP/res/folder.png b/src/MEDOP/res/folder.png
new file mode 100644 (file)
index 0000000..a0b8dc9
Binary files /dev/null and b/src/MEDOP/res/folder.png differ
diff --git a/src/MEDOP/res/image_add.png b/src/MEDOP/res/image_add.png
new file mode 100644 (file)
index 0000000..8e221bf
Binary files /dev/null and b/src/MEDOP/res/image_add.png differ
diff --git a/src/MEDOP/res/testfiles/CMakeLists.txt b/src/MEDOP/res/testfiles/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c546f83
--- /dev/null
@@ -0,0 +1,45 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+SET(MED_FILES
+  testfield.med
+  smallmesh_varfield.med
+  smallmesh_constfield.med
+  bigmesh.med
+  fieldlena.med
+  timeseries.med
+  parametric_01.med
+  parametric_02.med
+  enceinte-axis-E500000.med
+  enceinte-axis-E600000.med
+  entaille.med
+  padderoutput.med
+  )
+
+INSTALL(FILES ${MED_FILES} DESTINATION ${MED_salomeres_DATA}/medop_testfiles)
+
+SET(MED_IMG_FILES
+  irm_test1.png
+  irm_test2.png
+  # extra
+  README.txt
+  champ_altitude_MAP.pgm
+  )
+
+INSTALL(FILES ${MED_IMG_FILES} DESTINATION ${MED_salomeres_DATA}/medop_testfiles)
diff --git a/src/MEDOP/res/testfiles/Makefile.am b/src/MEDOP/res/testfiles/Makefile.am
new file mode 100644 (file)
index 0000000..f05e2ff
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# Author : Guillaume Boulant (EDF) 
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+mysalomeresdir = $(salomeresdir)/medop_testfiles
+
+dist_mysalomeres_DATA= \
+       $(medfiles) \
+       $(imgfiles)
+
+medfiles=\
+       testfield.med \
+       smallmesh_varfield.med \
+       smallmesh_constfield.med \
+       bigmesh.med \
+       fieldlena.med \
+       timeseries.med \
+       parametric_01.med \
+       parametric_02.med \
+       enceinte-axis-E500000.med \
+       enceinte-axis-E600000.med \
+       entaille.med \
+       padderoutput.med
+
+imgfiles=\
+       irm_test1.png \
+       irm_test2.png
+
+EXTRA_DIST += README.txt champ_altitude_MAP.pgm
diff --git a/src/MEDOP/res/testfiles/README.txt b/src/MEDOP/res/testfiles/README.txt
new file mode 100644 (file)
index 0000000..b9db2b8
--- /dev/null
@@ -0,0 +1 @@
+This folder contains data files for testing the MEDOP functions
diff --git a/src/MEDOP/res/testfiles/bigmesh.med b/src/MEDOP/res/testfiles/bigmesh.med
new file mode 100644 (file)
index 0000000..2fb93b1
Binary files /dev/null and b/src/MEDOP/res/testfiles/bigmesh.med differ
diff --git a/src/MEDOP/res/testfiles/champ_altitude_MAP.pgm b/src/MEDOP/res/testfiles/champ_altitude_MAP.pgm
new file mode 100644 (file)
index 0000000..000975e
--- /dev/null
@@ -0,0 +1,251 @@
+P5
+#image written by MAP/c_image_3d_altitude_thickness
+800 471
+255
+~~~~\81\81\85\85\8b\88\85\81\81\85~ztwzz~\81\85\81\85\81\81~zwtmfiffimimmmpmptwtw~~~~\85\85\8b\92\96   §££   \9c\99\96\96\99\96\92\92\8f\8f\8f\8b\8f\92\8f\8b\8f\88\88\88\88\85\85\88\85\85\88\8f\92\99\92\96\92\92\8f\92\96\9c\9c£ª´±»Âž¾Â»¸¸´±±´´´±­±±±±±±­­ªª§ª§§£££§£\9c\99\9c   £ £    \9c\99\96\99\99\9c\9c    \9c    \9c\99\99\99\96\96\96\99\9c\99 \9c\9c\96\99\92\92\8f\8b\8f\8b\8b\88\88\85\88\8b\85\8b\88\88\88\88\8b\8f\8b\8b\8f\8b\8b\8f\8f\92\92\8f\92\8f\8b\8f\8b\81~~pmiff\_XXXURRNDDAA===:==:=:ADDDKUGfifpmt~\96\92\96\99 \9c\96\92\8f\8b\85\81\81~~zzttif_ccf£\9c§ª§§ ££   \9c\9c\9c£ £££§ªª­ª­­­§§£ \9c\99\99\9c \9c\9c \9c\9c \9c\99\99\96\96\96\8f\8f\8f\8b\8b\88\8b\85\81\81~~pif__\XXXUXRRRNNNNNRRKRNRRKDD:==6300,,,,),,306,,66060300000,,,,,))06:=6:::A=A:=:AAGDDGGKKKGGNNRRNKGD,%\1f\1f\1f\e\18\14\18\11\ e\14\11\14\e\18\e%)=GGGNKNR\96\8b\8f\8b\8b\88\8f\88~~zwwwmmfimiipmimii\\\X\_\\\X\X\X\UURUKNRNURKRXXNX\\_\iiffipimiimff_c_\_X\__c\cffffcfcfifcfc__\X\RRKKDDA:630",,""\1f%"\1f%\1f%%,%\1f,%%%%,,",\11\1f,\1f\eRNXX\RX\XXUUXRUKKRGGD:==
+:
+\11,\ e\1f%%\11"""\1f"\e)"\11\ e\ e6A
+====ADA==KNGDKNRNNRRUX\\\X\_XXURNN££K£GN££NGKAG\81\85\92\92\96\92\96££\96XUNRNNNRXXXUURRNNKKKDAAAA===:630303::=DKRiippttwwz~~~~z~zzttttpt~\81\81~\81\85\81\85\88\88\81\81\81\81zwptwz~~\81~\81~~zwwpicicfmiimmmppppwwz~zzz\81\81\88\8f\92\9c\9c ££   £\9c\96\96\96\99\92\8f\92\8f\8b\92\8f\8f\92\92\8f\8f\88\8b\88\85\81\85\88\81\81\88\8b\92\96\92\96\92\92\92\92\99\9c §­´´¾ÂÅž¾¾¸¸´±±±±´±±­­±±±±­ª­§§ª§§§££££ \9c\99\9c\9c\9c\9c££   \9c\9c\99\99\99\9c\9c\9c \9c\9c  \99\9c \9c\9c\99\99\96\96\96\96\96\96\99\99\9c \9c\92\96\96\8f\92\88\8b\8b\8b\88\88\81\88\8b\88\88\85\88\88\88\8b\8b\8b\8b\8f\8b\88\8b\8f\8f\8f\8f\92\8f\8b\8b\88\85zztpfccX\UUURNNKAA==:==:==::=AADDGRDcfittz\81\96\96\96\9c\9c\99\96\92\92\8b\88\85\85~z~zwpii_ccf c£§ªª£§§£     ££££§§ª­­­­­±§ª§  \99\9c\9c\9c \9c  \9c\9c\99\99\96\96\96\96\92\8f\8f\8b\88\88\8b\85\81\85~\81mfc_c_UXURUURRRRRRNRRNURRRGDD6=:360,00,,),)003),3633,000000,,0,00,36==:AA=A=A:AADGKDGGKGGKGGKRNRNKDD0)""\e\18\14\18\e\14\11\11\11\14\e\e\18"%:DKGKKKN\96\8f\8b\88\88\88\8f\88\81\81~wwwmmiiiiimiiifiX__\\_\\\\_\\\\URNRNKNRRRGNUXRX\\_Xiffiipmifimff_f\\_\__\c_ccccfccfcffcc__\\XXRNKKGAA=300),,%%")%"%"%"))"))""),)%0"))),NR\X_X\\XXXXXUUNGNGDA6A=666333300333333333333:A6::=:DAAA=KKKGGKNRNRRXUXX\\\\\XUURN  N DN  NGKDG\81\88\92\92\92\8f\92\96 \92UURRRR\UXX\UUUUNKKNGDAAA===:6:630,36=:DG_mmptttzz~\81\81\81~~z~ztttptpz\81\81~~\85\85\85\85\85\81\81~~wtmptw~z~~~~zztwmfcffiiiiimimmpttwwzzz~~\81\88\8f\8f\99\99\9c£  ££ \9c\99\99\96\99\92\92\92\8f\8b\92\8f\8f\92\92\8b\8f\8b\8b\8b\88\81\85\85\81\81\88\8b\92\96\92\96\92\92\96\96\99\9c£§­´¸¾Åž¾¸¸¸±´±±±±±ª­±±±­­ªª§ª§§§££§££ \99\9c\99\99\99\9c  \9c £\9c\9c\99\99\9c\99\99\9c \99\9c \9c\99\9c \9c\99\99\99\92\92\92\96\92\92\96\99\99\9c\99\96\99\92\8f\8f\85\88\88\88\88\88\85\85\8b\88\88\88\88\88\88\88\88\8b\8b\8b\88\88\88\8b\8f\8f\8f\92\92\8f\8b\88\85~wtmc__UXXUR=KKG==::==::=:::==AAGDNARcRpw~\81\96\99\96\9c\99\99\96\92\92\8b\85\85\85\81~~zttmicccf£c§£ªª§ª§££££££§§§£§§ªª­­ª­­ªª§£ \9c\9c      \9c\9c\99\99\92\96\96\92\92\8f\8b\8b\88\85\88\85\81\88\81\81if_\_\RXUNUURUUUUXUUURXURRGGD6=6360)00,,%,)000%,36300,,0000)),0333::=DADDDAGGADDNKNKKGKGKKGGKNRNNKAA3,"\1f\1f\18\18\e\e\18\14\14\14\18\e\e\18")6DKGKNNN\96\8f\8b\88\88\88\8b\85\81~zztwpmmiiiiiiifcfX___\c_____\_\\XRNRKNNRNNDKUXUXX__Xfciiimmiffiic_fX_____\_cfc_cc__f_fccc_c\_XUNRNKDDD:33,,),))%)"%%""%%)%,)%"))%)0%,,,0KUXX_\\X\XXXXUURNRKKKA=DA=6666633666666666666:D::::=ADAA=KNKGKKNRRUUUXXX\\___\\XUU\9c\9cN\9cNU\9c\9cRKGAN~\8b\8f\8f\8f\8bX\92\96fRURRRU_\\\_UXXURKKNKGAAD==::3:63,,36==DDcpptwwtz~\81~\81~~~~~~wtpppmz\81\81\81~\85\81\85\81\81\81\81zzwppmww~wzzzzwwttmffcffffffiiimpptzwzzzz~~\85\8b\92\96\96\99 \9c££§£ \9c\99\99\96\92\8f\92\8f\8b\8f\8f\8f\96\8f\8f\92\8f\8f\8b\88\81\85\85\81\81\88\8b\8f\92\8f\96\92\96\96\96\99\9c£§±´»¾Å¾»»¸¸±±±±±­­­­­­±­­ªª§§§£§££££  \99\9c\96\99\9c\9c£   £\9c\9c\9c\99\99\99\99\9c \99\9c\9c\9c\99\99 \99\99\96\96\8f\8f\8f\96\8f\92\96\99\9c\99\96\96\96\8f\8f\8b\85\88\88\85\88\85\88\88\8b\8b\8b\88\88\88\88\88\88\8b\8b\8b\8b\88\88\8b\8f\8b\8f\92\8f\8f\88\88\85~ppi_\XRUURG=6=D3666=::::::====ADDGDK6Npz\81\8f\96\96\96\99\96\96\96\96\8f\8b\85\85\85\81\81~zwwmffccf_c§§§­£§££§§£££§£££§£ª§­ªª­ªªªª£  \99  \9c\9c\9c \9c\9c\99\99\92\92\96\92\92\8f\8f\88\8b\88\85\88\85\88\85~ic___\UUUNXUUUXXX\\XXUUUURKKDA=6633,00))")),,)"0360300,000,)),36:==AAGDGGGRKKUUNXNRNKGKKKKGKKNNNKGAD3,"\1f\e\18\e\e\1f\e\14\18\18\e\1f\e\1f"):AGGKNRK\96\8f\8f\88\88\8b\88\88\81~~wtwpmpmifiiiifcf\_\_\c___c_cc\\XURRKKNRNNGNRUXUX__\cfiimmiiiiiifcf\\c\_\_c_fc_cf\\c_f_c___\\XURRNNDGD=6600,,,)%)\1f)"""")%%,,)%%),),)0003GRX\c__\\X\XXUUURUNNNKGGDD=====66:::::::::::::A::::A=AAAANKKGGKRNUUUXX\\\\ccc__\XX\99\99N\99R\\99\99\NKAf\81\8b\8f\8f\8f\8bU\8b\8f_UURRRXc____X\UURNKKKGAAD===:36:3,,36:=ADfttwzzwz~\81\81\81\81~~\81\81~ztptpm~~~\81\81\81~\81\81~~~zwwtpmttzwwwwwwtttmffccccccfffmmpppwwwzwwz\81\85\88\8f\92\92\96\9c\96 ££££ \99\9c\92\92\92\92\8b\8f\92\92\92\92\92\92\92\92\92\8f\85\81\85\85\81\85\8b\8b\8f\92\92\92\92\96\96\96\99\9c §­±»Âž¾»¸¸­±­´±±­­­­­­ªªª§£§§§§££££££\99\9c\96\99\99\9c£   £ \9c\9c\9c\99\99\99\9c\9c\99\9c\9c\99\9c\9c\9c\99\9c\99\96\92\92\8f\92\8b\96\92\99\99\96\92\92\92\8b\8b\8b\85\85\88\85\88\88\88\85\88\88\8b\8b\8b\88\8b\88\8b\88\8b\8b\88\88\85\88\8b\88\8b\8f\8f\8f\85\85\81zmmU_UKNDKAA:666336:=::6:6::::=AAADD=:DK~\85\92\96\92\99\9c\99\96\96\92\8f\8b\85\85\85\81\81~zwtmfff_c_cc§§ª££ £§§£££§£££££ªªª­­ª­ª§ª§  \9c  \9c\9c\9c \9c\9c\99\96\96\96\92\92\92\8f\8f\8b\88\85\85\85\85\85\81zf_\_c\XRXRXXXX\\\__\\XURUUNGGD=:630,00%%"%),))%,03,0,00,000,),0:=DADDKGKURiimfic\RURGKGNKGGKKKNNKGAA3)%\1f\1f\e\e\e\1f\1f\18\e\18\1f\1f\1f"",6DGKKNUX\96\8f\8f\88\88\88\88\85\81\81~zwwppppiiimiiccc___cf_c_cfcfc_\\XRUNKRRNRKRRRURX\c_cfffiiiimimmfcf__c_c_cc_c_ccc\\c_ccc\\\\XXXUURNDDDA::3,,)))),")%%%%,)%0,,)),0)0,A336:N\_c__\_X\XXUUUURRRRNKKGGDDAAA::=:::::::::::=D::====D=ADNKNGKKRRRRU\\___\fff_c_c\\99\99U\99U_\99\99zRNNi\85\8b\8f\8f\8f\8bN\8b\8b\UUUUU\fccc_\\\XURNKNGDAD==A:66:330366:=Ditwz~\81z~z\85\81\85\81\81~\85~~wwpttp\81\81~\81\81\81\81~\81~z~ztwtmmptwttwwtttppmcf___c__cffiipptttwwwzz\85\81\88\8b\8f\92\92\99\96 £££  \9c\9c\96\96\96\92\8f\92\96\92\92\96\92\92\92\96\96\92\88\88\81\85\81\88\88\8b\8f\96\8f\92\92\96\92\92\96\9c\9cª±´¸Â¾¾¸¸´±±±±±±­­­­ªªªªª§£§§§§£££££ \9c\9c\99\9c\9c ££    \9c\9c\9c\9c\99\99\9c\9c\9c \99\9c\9c\9c\9c\9c\9c\99\96\8f\8f\8f\8f\88\92\96\96\96\92\8f\8f\8f\88\88\88\85\81\85\88\88\88\88\85\8b\8b\8b\8b\8b\8b\8b\8b\88\88\88\88\85\85\85\8b\8b\8b\8b\8f\8b\8f\88\81~wifU\UKKA=:3666663:::::6:::6:::AAAAA=:=D\85\88\8f\96\96\96\9c\99\96\92\92\8f\8b\85\81\85\85~zzwppffc___cc§£§££ ££££££££ ££§ªª­ªªªªª§§£       \9c\9c\9c\99\99\99\92\92\92\92\8f\92\8f\8b\88\88\85\85\88\81\81mc_cc_X\UXXX\\\___cc__c\XUUNKKD==:00,0,"\e\1f"%,))))00,003300,30,33:DGGGKKNK__mmpimf_UXUKKDNNGGKKNNKNG==3%)\1f\1f\e\e\18"\e\e\e\e"\1f"%%)6DKNNRU\92\92\8b\8b\88\88\85\85\85~\81z~zwptmpmmipmiccc\_ccicfffffif_\XXRURNNRNNNNNNRUXXN_cffff_ffifiiccc_c_cf_cccc\f__\X___fc_X\_XXXRRRNGAAA::0,0,))%)%%%%%))),0,,),,3,0,D36::K\\__\__\\XXUUUURRRRRNNKKGGDDD==A==::::::::::G=====AAA=AKKRKNNNUNUUX__\_cfcc_fcf_\99\99X\99Xc\99\99\99\URm\85\8f\8f\8f\8b\88N\88\81\URUUU\ccfcc___\XURNNGDDDAAA=6:=66336::=Dmpwz~\85z~~\85\81\85\81\81~\81\81~zwmttt~~~~\81\81\81\81\85~zzwwttpmmttpwtttttmppcc_\\c__cffffmmpttwwwzz\85\85\88\88\8b\92\92\96\96\9c    \9c \99\99\96\96\92\92\92\96\92\92\96\96\96\92\96\92\92\8b\8b\81\85\81\8b\85\8b\8b\92\92\92\8f\92\92\8f\99\99\9cª±¸¸Â¾Â¾¾¾»´±±­­­­­­ª­­ªªªª§§§§£§£ £££   \9c\9c\9c\9c£   ££ \9c\9c\9c\9c\9c\99\9c \9c \9c \9c\99\9c\9c\9c\99\96\8b\92\8f\8f\8b\8f\96\92\8b\8b\8b\8b\8b\88\85\85\81\85\85\85\85\88\85\88\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\88\85\85\85\85\88\8b\88\88\8b\88\8b\85tzifcRNUN=66:633633366:::6:663:=:AADA==::A\88\8b\92\96\96\96\9c\96\92\92\8f\8f\8b\85\81\85\81~zztmmfc___ci§ª££ £ £££ £§£££££§ªª­ªªªª§£§£     \9c \99 \9c\99\99\99\92\92\92\92\8f\8f\8b\8b\88\85\85\85\88\81~mXffc_\_X\\\_\_cccffccf_\XURNNGAA630,,"\1f\e\e\1f"))%),3)0333003336066=GNKRNNR\cimpmmmicXURNKGKNKGKKKNNKKA=6)%\e\1f\18\e\e\1f\e\1f"\1f%"%%)%3DKNRUf\92\8f\8b\8b\88\8b\85\85\85~~zz~tttptmpmpmifcf\ccfmfiiiiifccXUURUURKNNKKNKKNXXRNc_ccc__ffmfffcfc\fcfccccc__c\c\X_\_c_c\X\UXURUUNRDDA::0,0,,)))""%)%))%0,00,0,003,G36==GX\____\\\XXUUUURRRRNNNNNKKGGGAAAAA=====:::=:K:A::=====AGGNKKNRRRXU\\\\cfcff_ffic\99\99\\99Ucc\99\99\99cX\8b\88\8b\8b\8b\88\8bR\85\85XUUURXX__c_f__c_\XURKKGDDADA=:=A::6===Dmmmpw~~\88~\81\81\81\85\85\85~\81\81~~zzpwwwz~\81\81\81~\81\81\85~zwtwtpmiippmtptttppmpcc___c__ccfifipptttttzz\81\88\8b\8b\8f\8f\96\92\96\99\9c\9c  \9c\9c\99\99\99\99\92\92\92\96\96\92\96\96\96\92\96\96\96\8f\8f\85\85\85\8b\88\8b\8b\92\92\92\92\96\92\92\96\9c §´¸»Â¾¾»¸±´±±­±­­­ª­­ªª­­ª§§££§ ££ £££\9c\9c   £   §  \9c\9c\9c\9c\9c\96\9c \99    \9c\9c\9c\9c\99\96\8b\92\8f\8f\88\8f\92\8f\88\85\85\88\88\85\81~\81\81\81\81\81\85\81\88\88\88\8b\8b\8b\8f\8b\8f\88\88\85\85\85\85\85\8b\88\88\88\8f\8b\88\81wwicUURRK::3:363663363:=:6:6666::AAD=:==6=\8b\8f\96\96\96\96\99\96\92\92\8f\8f\88\85\81\85~zwztmifc__\fm§§£    £ ££££§§§£££­­­ª§ª§§£§£\9c\9c\9c  \9c\9c\99\9c\9c\99\9c\96\96\92\96\8f\8f\92\8b\8b\88\81\85\88\88\81\81i\micc_cc\__\\\cffcfffic_\\UNRKAA630))\e\18\18\14\e\1f%%%,03,06663636::0::AKRNUUXccfmipimifcXUNNKDKKNKKKNNNKGDA6,)\18\1f\18\e\1f\1f\e"%\1f)%))),3DGRUX\8f\8f\8f\8b\8b\85\88\85\81\85\81~~zzpwttpmpptpmifi_ccimimmmmmifcUURRRURNKKG=KKKGUURKc\_c_cccfiificfc_c_c_cc_c_c_\cXX_\__\_XUXRUUUURXUGGD:6303,,,),""%%%%),303003,0006D6:A=DU\\\\\_\XXUUUUURRRRNNNNKKKKKGDDDAA=========:N:A:=:::::=DGKNNNNURUUX___fifiiffiiiww_\99Xcc\99\99\99i\99\99\88\8b\88\8b\81\8bU\88\88URURUUUX\_\c____\\XUNGGDGDGAA==DD=:ADKfppmpwz\81\88\81\81\81\81\88\88\85\81\81\85~~wwtzwz~~\81~\81\81\81\81\85\81~wwtppiffmmippptppmmmc___\cc_cfcifimmpptttwz\81\88\88\8f\8f\92\92\8f\92\92\99\99\9c   \9c\99\99\99\96\96\96\96\99\96\99\96\96\92\96\99\96\92\8f\88\8b\88\88\8b\88\8f\92\92\92\96\96\92\96\96\9c£ª±´¸¾Â¾¾Â¾¾´´±´­±±­­­­ª­ªª­­ªª§§££££££ ££ \9c \9c   \9c £££   \9c  \99\99 \9c£\9c\9c \9c \9c\9c\99\99\8f\92\8f\8f\8b\8b\8f\8b\85\85\81\85\81\81~z~~~~~\81~\85\85\88\8b\8b\8b\8b\8b\8b\88\88\81\85\81\85\85\8b\88\8b\88\8f\8b\85zwpi\XXNDG::360633636:6:=:::6666::A=A=:=:3:\8b\92\96\99\96\92\96\96\8f\8f\8f\8b\88\85\81\81twtwtpifc\__c££££\9c\9c   ££ £§££££§§­±­­ª§§§§§£ \9c\9c\9c \9c\99\9c\99\99\9c\9c\96\96\92\92\8f\8f\8f\8f\8f\88\85\85\85\85~\85iipmccccf_cc\__fifcfiiifcf_\RRND=:0,%"\1f\18\e\18\1f\e%"),0303:::6:3==A:=AKNUU\X_ffimimfifc_UURNGGKKNKNNRNKKDDA30)\e\1f\e\e""\1f%)\1f,%),)0:DNRX\\8f\8b\8b\8b\88\88\85\88\81\81~z~zwtwwtpmtpttpmficffimmmppmmffcUXURNRNKNAK=KGKDGRRK_X\_c_cccfffffifcc\_cc___\cX\_\\\X_\X\UUUNURUXN\XXKG=3003,,,),""%)%),0333330,033:A:=A=AXX___\\\XXUUUURRRRNNNNNKKKKGGGDDDAA======::=N:A=::=:::=ADGKNRRUUUUX___iiimmifiimtpc\99\fc\99\99\99m\99\8b\88\88\85\88\85\88U\8b\8fRRRRRURXURU_\\\_\XXURKGDGDKGDAGGGR=Xiiipmmpww~\85\81\85\81\85\88\88\85\81~\85\81zwwtzzz~~\81~\81\85\81\81\81\81~zzptmfcciiipmptmmmii_\\_\___cfciiimmppptptz\85\8b\85\8f\8f\92\96\92\96\8f\92\96\99\9c\9c  \9c\9c\99\99\92\96\99\99\99\99\99\96\96\99\99\99\99\92\8b\8f\8f\8b\8f\8b\8b\8f\92\92\96\99\96\99\99\9c§­±´¸¾Â¾»»¾»¾´´±´­±­­±±­ª­§ªª­§§§§££££      \99\9c\99\9c\9c\9c\9c   £     \9c\99\9c     £\9c  \9c\99\96\92\92\8f\8f\8b\88\8b\85\85\88~\81~zzwzwzzz~z\81~\88\8b\88\8b\88\8b\88\88\85\85\85~\85\88\8f\8b\8b\88\92\88\88~tmX\\UNDD6=333333636::::==::66:::==A==A:6=\8f\92\92\99\92\92\96\96\92\8b\8b\88\88\85\81\85ttptppifc___f§££ \9c\99 \9c £§£§§£££§§ªª­­ªª§ª§§§£ \9c\9c\9c\9c\9c\96\9c\99\99\9c\99\96\92\92\92\92\92\8f\8b\8f\88\88\88\81\81~\85wz\85\81iifcicf___ccficfimfffic_RRKG=:,)%""\e\e\e""%%)03300:====AAAGGGNNRUX__cfiimmmfff_\RRURKKKNKKNNNRNKDDA03%\e%\1f"%%"%)"0,,003GRUU_\8f\8f\8b\88\88\8b\88\81\85\81\81zzzzztwtwppwtwwtpiicfcmimmpmimfc_XXRUKNKGNAG=GDGAGRRG\UX\_\c__cciiificc_\c__\c\cXX\XXXU\XU\RRRRRRRXU_\\GKA3330,,,),""%%)),336336,,0666D6A=AAUXc__X\\\XUUUURRRRNNNNKKKKKGGGGGDDAA=====::AR:D:=::::::DAGKKRRRRXUU_ccmimppmfifppX_i\ccpp\99p~\88\85\85~\88\88\8bR\8f\92RNUUXXU\XRUUXXX\X\XUUNKGGGGKGDNK\Ucfmmmpmpptwz\81\81\85\85\85\8b\88\85\81~\81~wwztz~~\81\81\85\81\81\81\81\81~~zzzmppcc_cffppppmmmfc\X\\\__ccfcfiiimpmptttz\81\8b\88\8f\92\92\96\96\92\8b\92\96\92\99\9c\9c \9c \9c\9c\96\99\9c\9c\99\9c\99\99\99\9c\9c\99\9c\96\8f\92\92\8f\8f\8f\8f\92\92\92\96\99\99\9c\99 ­­´¸»¾¾¾¾»»»¾¸¸±±±­­±±±­­­§ªªª§§§££§£ £  \9c\9c\9c\9c\9c\99\9c\99\99\99 \9c   \9c\9c\9c\9c\99\9c  £££££  \9c\9c\99\96\92\8f\8f\8b\8b\88\8b\88\81\85z~ztwttmtpwzt~z\85\88\88\88\85\88\88\8b\85\85\85\81\88\8b\8f\88\88\88\96\85\85zpiX\\UKAA6:36300360666:=:==:6:6=:=A=:A==:A\8f\96\96\96\92\92\92\92\92\8f\88\8b\85\85\81\81tpitmmfcc__\f§£  \9c\99   £§££§§§§ªª­­­­­ª§ª§£§£ \9c\9c\9c\99\99\96\99\9c\99\99\99\96\92\96\92\92\92\8f\88\8b\88\88\88\85\81~\85z~\88\85mmifmficccffffcciiciiiccRRGGA=3)%%%\18\18\1f%%%%,3000:==AAADDDKKNRURU_ccfiiiiiifffc\URRRKKNRKKNKRNNGDAA33%\1f)\1f)%%",,%30003:KUX_\92\8b\8f\8b\88\88\88\88\81\85\81\81zzzwzwttwtttwwwtpmmcffiimmmiiicc\XUNRKKDAKDG:DAGAGNRDRU\UU_f_f_\mficiccc\c\_\_\c\XXXUUNRXRXNNNRNNNUXc___KD6363,0,),%%)))))33:3630033::A:AGDDR\_\_UXXXXUUUURRRNNNNKKKKKGGGGDDDDAAA===:::DR=G=:::666:G=DKKNRRRURU\cfifpmtpimcmm\_fXc__f~_p\81\81\81~\88\88\8fN\8f\99NNUX\_Xc\_RRRUU\XX\UXRNNNKRUNGfmmffimmmpppttww~\81\81\81\85\88\88\88\81~\81zztww~\81~~\81\85\81\81\81\81~~zwwwmmmccc_fcmppmiiicc\\_\\\cccccfimmmpmpppt~\85\8b\8b\8b\92\92\92\92\8f\88\92\92\96\99\99\99\9c \9c\9c\9c\99\99 \9c\99\9c\9c\9c\9c\9c \9c \99\92\96\96\8f\8f\8f\92\96\92\92\92\99\99\9c\9c£±±¸»»¾¾¾¾»»»¾\92´´±±±±´±´±±±ª­ªª§§§£ ££   \9c \9c\9c\99\9c\99\99\99\99\96\9c\99\9c  \99 \9c \9c   ££££££\9c\9c\9c\96\92\8f\8b\8b\8f\88\85\88\85~\81wwwpmppimmmfmzw\81\85\85\88\85\85\8b\8b\85\85\88\85\8b\8f\8f\8b\88\8b\96\81\81wicX\\RKD=:63300366366::=:==::=6A==DA:A=A==\92\99\99\96\92\92\92\96\92\92\88\8b\85\85~wtmfpimfffcc_i£ \9c\9c\9c\99\9c\9c £££§£§§ª­­­±±­ª§ªª§£§  \9c\99\99\99\96\96\99\99\96\96\99\96\92\92\8f\92\8f\8b\85\8b\88\85\88\88\81\81\81~\85\8b\85pzmipfifcccffc__fffmifccRRGGD:6))%)"\e%))%%,3,06=AADGGGGGNNRUXUXcfffifififcff_\XUNUNNRNNKKNNKKGDD=66,%0\1f,),000)63666DU\\8f\8b\8f\8b\8b\88\88\88\88\85~\85\81\81z~zwwwttttpttztwtmpfffffmmiiff__XXRGNGAGDGDD6A=DADARDRXXUN\c_i__iifcic_cX___\\\_\\XURUNRUNNKNNNNKRU\___\KD:36300,),%%)),,,66=3:03366:=A:=KDGRX\\\R\XXXUUUURRRNNNNKKKKGGGGGDDDADAA===:::AR=G:::::666GAGGKNNRURUX\cffimmpmfi_if\_cUcN\ft_mUtt~\88\88\8bK\8f\99RUXXctcmcfXRNRRXXXXX\XUUURUXXimppiimppmpppttwzz~\81\81\85\85\85\85\81~\81zzwzz\81\81\81~~\81\81\81\81~z~wwttpfifcc_ccmmppiff__X\_\_\__ccfffmmmppptwz\81\88\8b\8f\8f\92\92\92\8f\8f\88\8f\92\92\96\96\9c\99 \9c\9c\9c\99\99£\9c\9c \9c      \9c\96\99\99\8f\92\8b\8f\92\92\92\96\99\99\9c §´´¸»¾¾¾¾¾»»»»¸±¸´­±±´±´±±±­ª­­§§§£ £ \9c\9c \99\9c\9c\99\99\99\99\99\99\9c\96\99\96\9c  \99\9c  \9c ££££ §££  \9c\99\8f\8b\8b\8b\8b\85\81\85\81z~tttmmmmfcfifipt~\81\81\85\81\81\88\88\85\88\8b\88\88\92\8b\8b\88\88\92~ztc_X\XUND6:333330666::::=:===:=:==ADA=D=DA=\96\99\99\96\96\96\96\96\92\92\8b\8b\85\81zwtmfpiiffffcci \9c\99\99\9c\99\9c\9c ££££§ªª­±­±±±­­ª§ª£££\9c\9c\99\8f\96\96\96\96\96\96\92\92\96\92\8f\8f\8b\8f\8f\88\85\8b\85\81\88\88\81\85\85~\88\8f\88t~mmmcfc_c_ccc__cffimff_RNGGG::)))),))))%%0000=DGDGKKKKKNRUX\X\fifcicicffcfc_\\XRURRURRKNKNNGDAA=6:0)3%0,03330:3:::UX\8f\8f\8b\8f\88\88\88\88\85\85\85~\81\81~~~zwwtttptpttwtwtmpifc_cimifc_\\XUNDNKDKAADA::=D=GANGRUUXNXccmcimmcffc__\\_\\X\\XXXRNRKRRKKGKKKRKRRX__\\GG=630,,,),%)))0,06:=3=33636:AA=ANDDUUXX\U\XUURURURRNNNNNKKKGGGGDDDDAAAAA===:::=R:D66=:=:36KDKKKNRRRUXXXccciiimicf_f____\_NUfp__Rpwz\8b\85\8fK\8f\99U_ii\88zwztt\UNRNUUX\\_\XXcXfmmmpttmmppmppppptwwz~~\81\85\81\88\85\81~~~~wz~\81\81\81~\81\81\81~~~zzttppmfiiccccciimpicc_\\\_______cfffiipppttz~\85\88\8b\8b\8f\92\92\92\8f\8b\8b\8f\8f\92\92\96\9c\99\9c   \9c\99   £ £ £ ££\9c\99\9c\9c\92\92\8f\8f\92\8f\92\96\96\9c\9c ª±´¸¸¾»Â¾»»»¾¸¸´´´±±±±±´±­±±ªªªª§§£££ \9c \9c\99\99\9c\9c\99\96\96\99\96\99\96\96\92\99\9c \9c     £ §§£§£§£  \99\8f\8b\8b\8b\88\81~\81~wzpppimficccfffmpt~\81\85\81\81\88\88\88\88\8b\8b\8b\8f\8b\8b\85\88zwwf_\\_UURA::336333663::=:=::::=:===AD=AD=DA:\99\99\99\96\99\96\96\96\92\92\8b\8b\85~~wtmimmmifffpp\99\9c\99\99\99\99\96\99\9c\9c £ §§ªª­­±±±­­­ª§ª£\92\92\99\99\8f\8f\92\92\96\96\92\96\92\92\92\8f\8b\8b\8b\8b\8b\88\88\8b\85\85\88\88\81\88\85\85\8b\8f\88t~pmiccf__\_____\fcfici_URGKG=:6,),30,,),3003:GGKKGNNNNNRUX\\\_fff_fcffccffc__\\RRUUUURNNKNNDDAAA6:3,60,030363=:===\8f\8f\8b\8b\8f\8b\88\88\88\8b\81\85\85\81~~~~zzwwpttmpmppwtwwptmfcffiiicc\U\URNDNKDG=AAA==AD=DDNGRRR\RXcfmfmmicfcccc_\\\\UXXUUUNKNGNNGDGGGGNKUNX\\XXDG=36000,),%)),,,036=3A66:6:=D=AAKGGXRXU\XXXUURRURNNNKKKKKKGGGGGDDDDAAAA====:::6N6A66===:63KGNGKRRUNUUU\_c_iffif_\\cc\c\__RXfm_\Npt~\8f\81\92N\92\99cimw\8b\8bz~z\81t_RRRUUX_\c_\_ffmppptttpmpppptpppwww~~\81\85\81\85\88\85\81~~~\81z~~\81\85\85z~\81\81~zzwztppmiiiiccccfiiimfcc_\_\___c__cccfiimmpttz~\81\88\88\8b\8b\8f\92\96\8f\92\8b\8b\8b\8b\8f\96\96\99\9c\99 \9c \9c\9c£\9c  £§££££ \9c\9c \9c\96\92\8f\92\8f\8f\92\92\96\99 £ª­´´¸»¾¾»»¾¾»¸¸´±¸±±±´´´±­±­­­­­§§§£   \9c\9c\9c\9c\99\9c\99\99\96\96\96\96\96\99\96\99\9c\9c\9c  ££ §£§£§§£§§\9c \96\92\8f\8b\88\85\81\81~wwtppmimff_cc_ccimpz\81\85\81\85\8b\8b\8b\8b\8b\8b\88\8b\8f\88\81\85wttc\\\_UUN=:6636306666:::6=:6=6=:::==AADDDG==\99\9c\9c\99\99\96\92\92\8f\8f\88\88\81~zwtpipmpifii\92\96\96\92\96\96\99\99\99\99\9c\9c\9c£££ªª­­­±±´±±­ªª§£\92\92\92\92\8b\8f\92\96\92\96\8f\96\8f\92\8f\8b\88\85\88\88\88\88\88\88\81\85\8b\88\85\88\85\88\8b\8b\88t~mpmc_c_\R_\\\_\cciiff_XUNGG=::0)0630030:30:GKKNNKRNNNRNX\X_\cfcc\cccf__ccfcc__UUXXUXRRRKRKAADA=::66:360663:6AADGU\92\8f\88\8b\8b\88\88\8b\8b\8b\85\85\81~~~zzzzwwptpmmmppwttttwpificifi\c_UXRKNDNGAD:AD===AA=GGKGRRNXU\_fiimifcccf_c\\XXXRKRXRRKGKAKDDDDDGDKGRNU_\UNDD=03030,,,%),,,0333=6A::D:=AAAAAKKKURXXXUUXUURRUUNNNKKKKGGGGGDDDDDDAAA=====:::6N:A:6:=A=66GGKDKNRRNRUUX\_\f_cf__\_____\c\UUc_\UKmwN\8b~XR\99\99fmp\92\8f\88~\81~\85zz\UX_XXiiif_mptptttttptpmppptpptwwz~~\81\81\85\88\85\81\81~~~\81z~\81\81\85\81~\81~~~zzwwtpmiffifccfcfiiiiicc__c____c_c__cffmimttt~\81\85\88\88\8b\88\8f\92\92\92\8f\8b\88\8b\8b\8b\92\96\96\9c\9c\9c   \9c \99 £ §£  §\9c\99  \99\92\92\8f\92\8f\8f\92\8f\96\99 £§§±´¸»»»¾»¾»»¸´´´´´±±´´´±±±­±­­­§§§£    \99 \99\99\99\99\96\92\96\96\99\92\96\96\99\9c\9c\9c ££££§£§§£§£££££\92\92\92\8b\88\81\81\81~wwtpmmiicfcc__ccfmmz~\81\85\85\8b\8b\8b\8f\8b\8b\88\8f\92\85~\81tmf_X\X\RRK6666363333666666=:::3=6===ADAADGK=K\99\99\9c\99\96\92\92\92\8f\8b\85\85~zwwtpmpppimmi\92\96\96\8f\92\92\96\96\96\99\99\9c\9c £§§ª±±­±±±­±­­­ª£\96\92\8f\8f\8b\8b\8f\96\92\92\8f\92\92\92\8b\88\85\85\85\88\85\88\88\88\81\88\88\85\85\8b\88\8b\8f\88\8bt\81pmmc___\U_UXX\___fiiicUURGKG===36:63063D:DGNNNNRNRRNNRNU\X__ccc_\___c\__cifc__XXXXXXRNRNRNDDDA==:::=6=6::==:DDN\85\88\8f\8f\88\8f\88\8b\8b\8b\8b\88\85\88\85\81\81~z~~wttpppmimppttttwzpmfmffff__\UURNNDNGAD==D=A===AGGNGRNKURX_cffmmfc_cc\_\XUUUNKNURKGGGAGAADDDDDGDGRU\XRGDG:0030,,,0),,,00636=:=:=G=AADDAAGNKRRXXNUUXUURURUNNNKKKKGGGDDDDADAAA=A====:::66K6=63:AAA::GDGGGNNNKNRRUX\_c__c\\\\\___\_XXRf\\RGizKKNUNfcipt\8f\8f\85~\81\81\88~~t\fip_pmttpptwtwtpttptmppptttmpww~~~\81~\85\85\81\85\81\81\81~\81zz\81~\81~~~~~~zwwtppiifffi_cfcfimfif____ccc__c\_\_ccciimwtz\81\85\88\8b\8b\8b\8b\8b\8f\8f\8f\8b\88\88\8b\8b\8f\8f\92\92\99\9c\9c  \9c\9c \99££ £ £\9c£\9c\9c \9c\96\92\92\8f\92\92\92\92\92\99\9c ££ª­±¸»¸¸»¾»¸»¸¸¸´´±´±´´´­­­±­ª­ª§££££   \99 \99\99\99\99\96\96\99\96\96\96\99\96\99 \9c\9c £££££££§§§§£§§§ \92\8f\8f\8b\81\85\81\81wttppmiiffcf\\c_cmmw~~\81\85\88\8b\8f\92\8f\8b\8b\92\8f\85~zp_AUAXDXA6::36666030663363:::663=6:A=DDAAGKNDN\96\96\99\99\96\92\8f\92\8b\88\85~zzwwttmpppmpt\99\8f\92\92\8f\92\92\92\96\96\99\96\99\99 £§§§­­­±±­­­ª­ªª \96\96\8f\92\8b\8f\8f\92\92\92\8f\92\92\92\8f\88\85\85\85\88\85\88\88\88\85\8b\88\85\88\8b\88\8b\8f\88\88\85~pimc__c\X_UXUX\X_cfif_RRUKKKAAA=:A6:=DGGGNRRRRRURRRRRRNRXX_\_c__X___cXc_cffc__\UXUUURRRRNKGDAAAA6=6=:A:=AAA:GKR\85\88\8f\8b\8b\92\8b\8b\8b\8f\8b\8b\85\8b\85\85~\81z~~tttpppiimppttttwwppimiiicccXXXRRKDNDAA=AA:D:::DDGKGNNNUNU\_cci\fc_c_X__URKRKKKRNGAGGAD=DGAADAGGDUXX\NDAD:3000,0,0),,000636==::AKADDGAAAGRNURXUNRXXRRNXRRRRKNKNGGGGDDDDAAAA=====:::::66G33666=AA:6KGKGKKKNKKNNUUX\X\\\\XXXX\_\X\\\UcXXADANDGDKKNXfmw\8b\8bz~~\81\85\81\81zzttttttwwttwzwwtpwwmpmpmptttmpwwz~~~~\81\81\81\85~\81~z\81zz~z\81~~\81~~\81zwwtpmffffffcffffmiiff\\\\_cf__c\_\__ccimpzw\81\81\88\8b\8b\8f\8f\8f\8f\8b\8f\8b\8b\8b\88\88\8b\8b\8b\8f\96\9c\9c\9c \9c \9c\9c\9c£ \9c \9c£\9c£\9c\99\9c\99\96\96\92\92\96\96\96\96\96\99\9c\9c  §ª­´¸»¸»»¸¸»»¸´´¸´´´´´´±±ª±±ª­­ª£§££ \9c\9c\9c\9c\99\99\99\96\96\96\99\96\96\92\99\99\99   ££§§££§££§§£§§ª££ \96\92\8b\85\81~\81zwppppmmif_c__cccmpwz\81\85\81\8b\8f\8b\96\8f\8b\8f\8f\8b\85zpiR=6=6,30006633663303333336:63:6:6:==ADAAGKRNN\96\96\99\96\92\92\8f\8f\8b\85\85\81zzwwtpppptptw\99\92\96\92\8f\92\8f\92\92\96\96\96\99\99\9c £§ªª­±­­­­±­ªª§\9c\92\92\8b\92\88\8f\92\8f\92\92\92\92\92\92\8f\88\88\88\85\88\88\88\88\88\85\88\88\88\88\8b\88\8b\8b\85\88\81zmfic___\\\XUUUXU\_cfc\RURNNNDDDA=DAAANNRRRUUUURURRNRNNNNXU\\____\____X_\ccccc_\XUXRRNNNNKNKG=DD=:A:==D=ADDADKNU\81\88\8b\8b\8b\8f\8b\8b\8f\8b\8b\8b\88\8b\85\85\81\81zzztttpppmmmppttwtwwmpmpmfi_c_\XXUUNGRG===DA=A=::AAGGKRNRRNRK\_DfXc_\__R\\RRKNGGGKKDADDAAADGDDDDGKGUXRXKAD3:63000,)0,0,003366:===DGAGGKDDAGRNRNURNUUUUURUNUNNNRNNGKDDDDDAAAAA===:::::6666D633:6:=D:3KDKDKGGKGDGKRRRRUXXXXRNURX\XXUX\RNUN=)00"\1f%,AKUXitw\88w~\81~\81\81\81~~wwwwwwzzwtzzztttwwppmpmptttptwwz~\81z\81\81\81\81\85~~~~~zzz~\81\81~\81\81\81~~~zwtpmffiffccfffifiic\X\_ccfc_c____cccimp~w\88\85\8b\8f\8f\8f\8f\92\8f\8b\8f\8f\8b\88\8b\88\8b\88\8b\8f\96\99\9c     \99\9c \9c\9c\99\9c  £\99\9c\99\99\96\92\92\96\96\96\99\96\96\99\99\99  £§­´¸»¸»»»»»»´¸¸´´´´´´´±±­­±­­ª­§§££  \9c\9c\9c\9c\99\99\99\96\96\99\96\99\96\9c\9c\9c££££§§§££§£§£££ªª§§§£ \99\8b\88\85\81\85ztttppmmffccc_cccitz~\85\81\81\88\92\8f\92\92\8f\8b\8b\88\81wmRA6300%,0,,3666330000300363:36:366::=AAAADNU\\96\96\99\99\96\92\92\8f\8f\8b\85\85\85~wtwtmmpmptz\92\99\92\92\92\8f\8f\8b\92\92\92\96\92\96\99\9c £§ª­ª­­±±­±­ªª\8b\8f\8f\8f\8b\8f\88\8b\92\8f\92\96\96\92\96\96\8b\88\88\88\88\88\8b\88\88\88\88\88\88\88\88\88\88\8b\88\85\85wpicfc\\\\XXXRURRXXXcc_XUURRRNGGGDDGDDKRRUUUXXURNRNNKNNKNNUR\\\\_\X__c\X____cc__XURUNNKKNKNKNKAGD===6:ADAAGGDGNR\\81\85\8b\88\8b\8f\8f\8f\8f\8b\8b\88\88\8b\85\81\85\81~zwpttpppmpipmtptttwmppmmcfc_\\XURRNGNDAA=DA==:=:=AGKKRNNNKNGXRDDR_\X\_UXXNUKGGDDGAA=GD=6AAGADGDGKKRURUKDA36600000,000,03366::=A=DGAGKGGGNKRRRRUNRRXUUXRXRUKKNURRKNDDDDAAAAA====::::66633D330:36=A63GDGDGDDGKDDNNNKKRUUNUDKRNXXUUUUXNKK)))%%\1f\e"\1f)3RKfpttt~\81\81~\85\81\81\81zzzwzzz~wtzwztwtwttpmmpptwttwwwz~\81~\81\81\81\81\81\81~~~\81zzw~~\81\81\85\85\85\88\85\81\81zztpifffcccfcfiiffc\X_\ffffcc__\\_cciip\88\8f\8b\8f\8f\92\8f\8f\8b\8f\8f\8f\8f\8f\8b\88\8b\88\8b\8b\8b\8f\96\9c\9c\9c \9c \9c\9c\99\9c\9c\9c\99\99\9c\9c \9c\9c\99\99\96\96\92\99\96\99\9c\99\99\99\99\96\9c\9c §­´¸¸¸»¸»¾»»¸´¸´´´´´´´±±­­­­ªªª§£££  \9c\9c\9c\9c\99\99\96\96\96\99\96\96\96\99\99 £§§£§ª§£§££ª£££§­ª§§§£\9c\99\8b\88\81\85~zwttpmpfifffcccfmtz~\81\85\85\88\8f\92\92\92\92\88\85\85\81p=A=300"%),)0,33330,,0)0,00336366366:::===AAKU_\99\96\99\9c\96\96\92\8b\8f\8b\88\81\85\81wttpiimppt\8b\92\96\92\92\92\8f\8f\8f\92\8f\8f\92\8f\92\99\99  §§ªª­­­±±­­ª§\8b\8b\8b\88\8b\8f\8b\8b\8f\8f\96\96\96\96\92\96\8f\88\88\88\88\88\8b\88\88\8b\85\88\88\88\88\8b\88\88\88\85\81tpfcc_\\X\UXXRURUUUU__\UURNNRNKKKGGKGGNUUUXX\XUNNRKKKKNGKNURXXXX_\\\\_\X_\\_c__\XUKRKKGGKKKKKKDGDGA===DDD=GGNKX\\85\85\88\8b\8b\8b\8f\8b\8f\8f\8b\8b\8b\8b\8b\88\85\88\85zzppwppmpmpimipppttwmmmmiffc\\X\UUUNGRADAAD=======DGKNNNKNGKDNNDDRXUXX\URUNRKGDDDKAD:DA:6=ADAAKAKKNURRXKD=33330300,0,0000336::AD=DGDGKGKKRGRRRRXNRNXXR\UUUXNGRUUNNKGAAAA=====:::::6666633A630=03:=30DAGADA=DGAAKKK=GGGGDNDAGKURRRRRU=G,%%%"\e\18\18\e\1f)3DADDRNpz~\81\81\81\85\81\81~~zzzzz~ztwwzwwwzwtpmmpptwtwwwwz~~\81\81\81\81~~\81~\81~\81z~z~~\81\85\88\88\88\8b\88\85\85\81\85wwiffifffffffifcc\X__ffffcc__\\\ccimp\8b\92\92\92\92\96\92\8f\8f\92\8f\92\92\8f\8f\8b\8b\8b\8f\88\8f\8f\96\99\99\9c\9c \9c\99 \99\9c\99\9c\96\99\99\99\9c\9c\9c\96\99\96\96\96\99\96\9c\9c\9c\99\9c\99\96\99\9c\9c§­¸´¸¸»¸»»»»»´´´±´´´´±­±­­­­­­ª££  £\9c  \9c\9c\9c\99\96\99\96\96\96\96\92\96\9c££§£§§ª§£§££§£§§§ª§ªªª§ \9c\96\8f\88\88\81~zwwpppmiiiiffffmtzz~\81\81\85\92\8f\8f\92\8f~\~KN:6:30,%)))),,03000,),)0,0033:3363366:::::A=GU%\9c  \99\99\96\92\8f\8f\8f\88\81\85\81wppmffimtt\8f\8f\92\8f\92\92\8f\8b\8b\8f\8b\8b\8f\8f\8f\96\96\9c£§§ª­±ª­±­ª­§\96\8f\8b\8b\8b\8b\8b\8b\8b\8f\8f\96\96\99\99\96\96\92\8b\8b\8b\8b\8b\8b\88\85\8b\85\88\88\88\85\88\8b\88\88\81zpmcc_\\\XXR\XXXUURRN\XXRRNNNNNNKGKKNKKRRRRUXXURKKNDGKGKDKNRUXXXX_\__\__X\\\___\XXXNKGKDDKGKNNNGDGKDAAAGAG:KKRU\81\85\85\88\88\88\8b\88\8f\8b\92\8b\8b\8f\88\8b\8b\88\85\85\81wwpttmmppmpmmimmmpptiiimfffc\\\\XUUNKNDADDD=AA==A=ADGKNKKKDKAGGGDNKRXXXURNRRKGADAK=D6A=3:ADDAAKANKNUNRXGA:36330000,000330336::=GADGDKKGGNRGRNUUURRNXUNXXXXXKGUURRNGDAAAA====:::::66666333A303:,6630,A=D=A==AD=AGAD:==DADAA=DGRNNNN=G:0)%""\1f\e\e\14\18",0036=AKmwz~~\81\88\81\81\81~~~zzw~ztzwzzwwzwwmmppptwwwwwwz~~\81~\81\81\81\81\81\81\81~\81z\81z\81\81\81\85\8b\8b\8b\8f\8b\88\88\85\88~zmifiiffcfccfc___\__cfiic__\_\_c_ipt\8f\96\96\96\96\92\92\92\8f\92\92\96\92\92\8b\8b\8b\8f\8f\88\8b\8f\96\99\9c\9c\9c\9c\9c\99\9c\96\99\99\9c\99\9c\99\99\99 \9c\96\99\96\96\96\99\96\9c\99\9c\96\99\99\92\96\9c\9c£±¸¸¸»»¸¾»»»»¸¸±±¸´´´±­±­±­­±ªª§££     \9c \9c\9c\96\99\92\92\96\99\92\99\99££§£££§§£§§§ª§§§§ª£ªªªª£ \99\92\8b\88\85\81~z~wttpmipiimiippwz~\81\81\88\8f\8b\8b\8f\8bKKNA:3360,,))%),)),0,,,)),,,,000360360033:666:=:,t% ££\99\9c\96\92\92\92\8f\8b\85\85~wtpifffitz\8f\92\96\92\96\8f\8b\8f\8b\8f\8b\88\8f\8f\8f\92\99\9c££§ªª­­­­ªªª\99\92\92\8b\8f\8b\8b\8b\8b\88\92\8f\96\96\99\99\96\96\92\8f\8f\8f\8b\8b\8b\8b\85\8b\81\88\85\85\81\85\88\85\85~zmi_ccX\\\XU\\\XUXURNUNNNNKNNKKKGDKNKKKNNNNGUURNGGKDDGGGDKKRRUXXX_\\_\__\X\\\\\XUUUNKAKADGDGNNNGGGNDDDDDDK:GKU\\85\88\88\88\88\85\88\8b\8f\88\8f\88\8b\8b\8b\8b\8b\85\88\81~wwtptmmppmmimiiimptwiiimfcf_\X_\XXRKKRADDDDAAD=AAADADKKKKG=GADDDADKRUUNUNRRNKG:D=GAD6==6:DADDAGKNGKRRNUD=663330000,33366366:::AKAAGGKGDGRUKUNXUUUUR\RR\\XXUNDXUNRKKAAA===:=:::66663333363D3006033,),A=A==::=::=:=A6::A=A===:GNKKGG:A3,)%\1f\1f\e\18\e\14\e%),033:=G_twzz\81\85\81~\85\81~~zzzzzwzwzwwwwttmmppptwwtwwz~\81~\81\81\81\81\85\81\81~\81~\85~\81z\85\81\85\88\88\8f\8f\8f\8f\8b\8b\88\8b\81~mmimfifcfccf___\_c_ffifcc_\___ccmtz\96\96\99\99\99\99\96\96\92\96\92\99\96\92\8f\8f\8f\92\8f\8f\8f\8f\96\99\99\99\9c\99\99\99\9c\99\99\99\99\99\99\99\99\96\9c\9c\99\99\96\96\96\99\99\9c\96\99\96\99\96\8f\92\99\9c ­´»»»¸¾»»»»»´¸´±´´´±±­±­±­­­ªª§££ £      \99\99\99\96\8f\92\96\92\99\99  ££  £§£§ªªª§ª§ªª§­ªª§§£\9c\96\8f\8f\88\85\81~\81zwwtpptmmpmmtttwz\81~\85\8b\88\8f\8bNKD==30300))))%,)%%),,%)%))),),,3363330,0063336360p"££§\99\9c\96\92\92\96\8f\8f\88\85\81wpmccc_ft~\8f\92\96\92\92\92\8f\8b\8b\8f\8b\88\8f\8f\8f\92\99 £§ª§ª­­ª­ª§§\99\92\92\8b\8f\8b\8f\8b\8b\8b\8f\8f\92\92\96\99\99\96\92\92\8f\8f\8f\8f\8f\8b\85\88\81\85\81\81~\81\85\81\81zwmf\__U\__XX\\_UUUXRNRNKGGDNKKKGDDKKGNKKKGKGRRKDDGDDADGDDGKNNRXXX_\_____XX\\X\_URURKGAG=DDAGNNNKKKKNGGGGGK:GRXz\88\8b\8b\88\88\85\8b\8b\8f\88\8b\88\8b\8b\8b\8b\88\85\85\81~wwpmtpmppmmimmimppttmimiifc__X\\\\NGGNDGGGAAAD:DD=GDGKGGGDADAA=DADGRRRKRKRNNND:DAGDD66=:6DAGGDGNNKNUURRAA6333300000303336636==DKDDDKNKGDNXNURXUXUUUXNUXXXUXRGURKNKKA====:::::666633333660G603:,0,,,)=:=:::==:6:6:66:6:6=6:::DGDD==6:6,,"\1f\1f\e\e\18\14\1f"%),006:D\mtwz~\81~\81\85\81~~wwzwzwzwzzwtttpmmppptttpwwz~\81~\81\81\85\81\85\85\85\81\85\81\85\81\85\81\85\85\85\88\8b\8b\92\8f\92\8f\8f\8b\8b\85~mmmpiicfcccc\\__cccffifcc____ccfit~\99\99\9c\9c\9c\9c\99\99\96\99\96\99\99\92\92\92\8f\92\92\92\92\92\99\96\99\9c\9c\99\99\99\9c\99\99\99\9c\96\99\9c\99\96\9c\99\99\99\99\99\99\99\9c\99\96\96\96\96\92\92\92\96\99 ­´¸»»»»»¾»»»´¸¸±´´´´±­­±­±±­ªª§££££  \9c£  \99\96\99\96\8f\8f\92\92\99\99\9c\9c £ ££§§ª­§ªª­§ª­ª­ªª§ª£ \99\96\92\8b\88\85\81\85~zwwttwpptppttwww~z\81\88\85\8bzNGA::3030,%%)))))%%%))%%"%%),)),00300000,,30303330p§§£§  \99\92\96\99\92\92\88\81~wpicc__cw\81\8f\92\92\8f\8f\92\92\8f\8b\8f\8b\88\8f\8f\8f\96\99 ££ªª­ª­ªªª£ \9c\96\92\8f\8f\8f\8b\8b\8b\8b\8f\8f\96\8f\96\96\99\96\92\92\92\8f\92\8f\8f\88\85\85\81\81~~zz\81~twtmi\c___cc\X__\UXUXURNNGDGDKGKGGGDKKGKGDDDDDKKGDAD=A=ADAAKKNNNUU\_\\\_\\\XXXXX\XURKGGDGADDAGKKKNNNNRKKKGKKKRU_~\8b\8b\8b\88\8b\88\88\8b\8b\8b\8b\8b\8b\8b\8b\88\88\85w~~zwpptppppmmmmiimppttiimfifcc_X\_X\NDKNAGGDDDDD=DGDKDGGGKDAA:A=ADDDG=KKNRNRRNNG:KDGGA:::==DDKKGKNNKNXXNND=:333300003303063666==DKDGGKNKKGKUKUU\XXXXU\RXXUURXRDRNANGGA==:::6:6663633303066,D630:),,))):666:=::66636:363:3666:6AAA6=:0,3))%\1f"\e\1f\14\18\1f%),0,,33=X\ptzz\81z\81\81\81\81~zwwwwwzz~zwtptpmmpppptttwzz~\81~\81\81\81\81\88\85\88\85\88\85\85\85\85\85\88\85\85\88\8b\8b\8f\8f\8f\92\8b\8b\8b\85\81pppmmicf_ccf__cccccfiffff_c__cffmz\81\9c\9c\9c   \9c\99\99\9c\99\99\99\96\96\96\92\92\92\96\96\92\96\96\99\9c\99\9c\96\99\9c\9c\96\9c\9c\99\99\9c\9c\96\99\99\99\9c\99\99\99\9c\99\96\96\96\92\96\8f\92\92\99\99£­´¸»»»»»¾¾»»±¸¸´´´´´´±­±±±­­­ª§££££\9c \9c \9c \99\99\99\96\92\92\96\96\99\99 \9c  £ £§§ª­§ªª­§ª­ªªªª§ª§£\9c\99\96\8f\8f\88\85\85\81~~zwwzttptmpptttzz~~\81U_KDA63300,))%,)))))%"))%%"""%))),,,00,,,,))0,00030,£Kª§§££\99\96\99\9c\96\8f\8b~ztmf__\c_z\88\8b\92\92\8f\8f\92\8f\8f\8b\8b\8b\8b\8f\8f\8f\99\99\9c£§§§ªª­­­ª£ \99\99\92\8f\92\8f\8b\88\8b\8b\8f\92\92\92\92\96\99\96\96\8f\92\8f\8f\8f\8f\88\81\81~~ztwwwwmpmimcccccff____\X\XXURGKDDDDGGKGGDDGGGGGDAAAADD=A=AAA=AADAGKKNNUUX_\\\\\X\X\XXUXXURNKKGKDDGDDKGGNNRRRNGNGKGNUXc~\8b\8b\88\88\8b\88\88\8b\88\8b\8b\8b\8b\8b\8b\88\88\85wzzwwtttppppmmimimpppttifmfffc_c\\\\XKDGRGGDGDDADADGGGDGGGGD:A6===ADAG=GKKNNRURRKDNGGD=:::=AADGKGNKKGKUUKKD:6333330000330063366==DGAGKKKNKKKRGUX\\\UUUXRUURRUUNDA=AKDGAA:::66666333300303360D6636)))%%%63336:6636600:6636333063=A=6:03,3,%%\1f"\e\e\18\e")),,,,033GXipww~z~~\81~~zwwwwwzwzwwtpppmmppmpttwwz~~\81~\81\85\81\81\88\85\85\85\88\85\88\88\88\88\8b\88\88\88\8b\8b\8b\8f\8f\8f\88\8b\88\85\81tptimicfc_ccccffcffffifiicfcccffp\81\99 \9c\9c £ \9c\9c\9c\9c\9c\99\9c\99\99\96\92\92\96\96\96\92\96\99\99\99\9c\99\96\9c\9c\99\99 \9c\99\9c\99 \99\96\9c\96\9c\99\96\96\99\96\92\96\96\92\92\8f\8f\92\99\9c£±¸¸»¾¾»»»¾»»±¸´±´¸´´´´±±±±­±­ª££££       \99\96\96\96\92\92\92\92\99\99\9c\9c \9c  £££§­ª­ª­ªªª§ªªª§§§£ \9c\99\92\92\8b\88\8b\85\81\81zz~~wttpmpmppmpwfm_N\GA=3300%,))%,,,,)%%%%%%"\1f\1f"%)%%))),,)),,%%,)%,)0,)£Nªªª§£\9c\99\96\99\92\8f\88\81~pifc\__\z\8b\8f\8f\92\92\92\92\8f\8f\8b\8b\8b\8b\8f\8f\92\96\99\9c££§ªª§ªªª§§ \9c\96\96\92\92\8f\8f\8b\8b\8b\92\92\92\92\8f\92\96\96\96\92\92\92\8f\8f\8b\85~~zzwttttpmmmiifcfffcicc__\X\XXURGGDGDDGGGDGADGGGDDA=A===A:=:===:=ADDGKNRRRRX\\\XX\XXX\XXXRURRNKNDKGDGGGGDDNNURRRKRDNNRX\f~\88\8b\85\88\88\8b\88\88\88\8b\8b\8f\8f\8b\8b\88\85\81wzzwwttttpppmmipmpptpptmcmfif_\_XXXXUNGGNKGGKGGAGAADKGDDKDDA==::A:AAAD=AGGKNURUUNGRGDDA:::ADDDGGDNKGGGURDGD66333333303300,3636::=GKADKNNRKGNNKUXXX\UUUURRRNRRRKA==AGDDD==:663:3333300360003,D333,)%%""%300030330333363303033033:=:3600,00%)"\1f\e\1f\e\1f",)0,,,303DX_mttzz~\81~zzzwwwwtwwwttppmmmipmmpttttzzz\85~\85\85\85\85\88\88\85\85\88\88\8b\8b\88\88\8b\88\8b\85\88\88\88\8f\8b\8b\88\88\85\81~tppfifccf_ffcciffiiifmimififfffit\92\99  \9c£££  \9c  \9c \9c\99\96\96\92\96\92\96\96\96\96\99\9c\9c\99\99\99\9c\9c\99\9c \99 \9c\9c\9c\99\9c\92\99\96\96\92\99\92\92\96\92\8f\92\8f\92\92\96\9c ´¸¸»»¾»»»»»¸´´±´´´´¸±´´´´±±±­ª£  £££    \9c\99\99\92\92\8f\92\92\92\99\99\99   \9c £§£ªª­­ª­ªªªªªªª§§£  \9c\99\96\96\8f\88\8f\85\85\85\81~\81zzwwpimiiiiicci_NUGA=330,%)%)%)),,,)%)%"%%\1f\e\1f"%"")%%,)%%))""))%,)%0)§ªªªªª£ \9c\96\96\96\8f\85~~tff___\Uz\8f\92\92\92\96\92\92\92\8f\8b\8b\8b\8f\8b\92\92\96\9c  £§§§§§§ªª§ \9c\92\96\92\8f\8f\8b\8b\8b\8b\92\92\8f\8f\8f\92\99\99\99\96\96\92\8f\8f\8b\85wzpptppmpiiiiffifiiiffffcc\\\UUURKDGKDDGGKAGDGDDDAAA===:3:6:::=::=AAADKKRNRRXX\X\XXXXX\UXXUXUUNRRNNKGGDKKGGKRRRRRKRGNRUU\cz\88\8b\81\88\88\88\88\88\88\88\8b\8b\8b\8b\88\88\81\85wzzwtwtwtttppmipppttpptmfmiic__\X\XXUNKKNNKKKKKAGADDGGGDGAAA=:66=:=A=:AAKGGRRRUXRKRKAGA=:=DGGDGDDKNDDDUNGKA:663333330033300:33=:=GGAAGNRNKKRNKXX\\\XRRKURNKNNKK=::DGDGG=:66336300000033,,,0)A000%%%"\1f\1f"3,,%0,00,000336303000366:::66,000,)%\1f\1f\1f\1f\1f\1f"0,0000333=U\fipwwz~zzzwtwwwttwtppmmmiiippmpptptwwz\81~\85\85\88\88\88\88\88\85\88\8b\8b\8b\88\88\8b\88\88\81\85\85\88\8b\88\88\85\85\81~ztpmiiffcfcfffiiiiiiifimimiffifmm\81\96\9c\9c   £ ££ ££  \9c\96\96\96\92\96\96\96\96\99\99\99\99 \99\9c\99  \9c\9c\9c\9c\9c\9c\9c \9c\99\96\99\92\92\8f\96\8f\92\92\92\92\8f\8f\8f\92\92\9c±¸¸¸»¾»»¸¸¾»»´´±´´±´¸±´´±±±±­­ª£\9c\9c  ££    \9c\99\92\92\8f\8f\96\96\99\99\9c\9c\9c£\9c£§§§ª­ª­ª­ªªª§§ªª§§ £ \99\9c\96\96\92\8b\92\88\88\88\85\81\85wzwtmfifcfffc_c\NRD=A330,))%))%),,0,))%%%"\1f\1f\e\1f"\1f\1f%"")%""%%\1f"%%%))%0,ª§ªª§ª§  \99\96\92\8b\85~~pffc___X\8b_\92\92\96\96\96\92\92\92\8f\8b\8f\8f\8f\8f\92\99\9c\9c  ££ª£§§§­§ \9c\92\92\92\8b\8f\8b\88\88\8b\8f\8f\8b\8f\8f\92\99\99\96\96\92\92\92\8f\88itimmmmfiifffiifiimiiiffcfcX\\XXURKKGKDGGKN=DDGDDDA===:::66::6::::=ADADKGNNRUXUXX\\UXXUXUU\\XXXRURRRKKKDKGKKKNRNNNKRKNUXX\_w\88\88\85\85\88\8b\8b\88\8b\8b\8f\8b\8b\88\88\85\85\85zzzwtwtztpwtmmmmttpttptmimficc_\X\UUXNGKNNKKGNGADDAADDDDDA==:666A::A=3A=GDDRNUUUUNRK=D=ADAGKKGGDANNAAARKDK=:663333330330000:63=6:GGDDGNNKGNNKR\\_\XUUNGRNKGKKGG:=6ADGDDA=6300630,0,,,00,)),%D),%""""\1f\1f\1f0))\1f)%,,,)0,06:6333033666:6360,03,%"\1f"\1f\1f\1f"",03033333AR\_fiptwzzzzwtttttttpmmfiiiimpmpptppptzz~\81\85\81\88\88\8b\8b\8b\88\88\88\8b\8b\88\88\8b\88\88~~\81\85\88\85\85\81~zzwtpmmfffffcffimmmmiiiimmmpiimmmp\85\85\96  \9c£££££££££££ \99\99\96\96\92\96\96\92\96\99\99\9c \9c \99£\9c    \99\9c\9c \9c\99\99\9c\92\8f\8f\92\8f\8f\8f\92\92\8f\92\8f\92\96 ´¸¸¸»¾»»¸¸´¸¸´±´´´±´¸±´±±­±­ªª§£  \9c     ££\9c\96\92\92\8b\8f\92\96\99\99 \9c\9c  §§§§ªªªª§ª§§§§§ª§§£ £\9c\99\9c\92\92\92\8b\8f\8b\8b\8b\88\85\81twtp_c_c_ccc_\XGKGA:=630,,))))),,,,,),))""\1f\1f\e\1f\1f\1f\e"""%\1f""""\e"")%%%),0ªªªª£§£\9c\9c\96\92\8f\88\81\81zmiifcc_X\8fc\92\8f\96\96\96\96\92\92\8f\8b\8b\8b\8f\8b\92\96\99\99\9c\9c£ §£§§ªª§ \99\8f\8f\8f\88\8b\8b\85\88\88\8b\8b\8b\8b\92\96\96\96\96\96\96\96\8f\8f\8biifcfiifcffcfiifmmmiimiific\\\\XXRRNRNDKGKKADAGDDAA:==6=6:6=66:666=AAAGGKNRNRUXXXXXUUXRUUX__\\UUXRUUNNNDNKKNKRRNNRNNKKUUUX_c\85\85\81\85\85\88\88\85\88\88\8b\8b\8b\85\88\81\85\81~zzzwzwztpttpmmmttpttpwmimfffc_\\\XXUNGGNKKGDKD=AD=6=6AAA=::63:6=::A:6A:DDARKRUXRKRK6DADGDGGGGDADNKGADNGDK:666333333003,,,,6:6A66GKGGGKKKGNKGUXX\XXRRGGGKGK:GD:6:6=DDGA=A:333660,,,,),,))%%"A%%\1f\1f"\1f\1f\e\e\1f,%)\18\1f"))),,036::66666666::6033033,)""\1f\1f\e""%,3636666:ADX\cffptwwwwwwtttttpmifffifiipmmptppttzzz\81\81\81\88\88\8f\8b\8b\88\88\8b\8f\8b\8b\88\88\88\88zw~\81zz~zwttwttmmifffccffmppppmmimpmptmmppzz\8f\92\99 £  §£££ £££§££\9c\99\99\99\92\96\96\96\96\9c\99\9c   \9c§ ££ \9c\9c\9c \9c\9c\9c\9c\99\92\92\92\8f\92\8f\8f\92\92\8f\8f\8f\92\99ª´¸¸¸»»»¸»¸¸¸´¸±´±´±±¸±´­´±­­ª§§£\9c \9c\9c  \9c ££ \99\92\8f\8f\8f\92\96\99\9c \9c\9c ££££§§ª§§§§§§££ªª§£££  \99\99\96\96\8f\8f\8f\88\8f\8f\8b\85~ptp_\_\_\\__\XRGGD=::63000,,))),,),),)))"\1f\e\e\e\e\1f\e\e\1f"\1f"\e\1f\1f\1f\1f\1f\1f\1f%%"%),0ª§§ª£££\9c\99\92\8f\88\81\81\81zpmmiffpt\8f\92\92\92\99\99\99\96\92\8f\8f\8f\8b\8b\8f\8b\92\92\96\96\99\99  §§§ª­§§\9c\96\8b\8b\8f\88\88\88\85\85\85\88\8b\8b\8b\92\92\96\96\96\96\96\96\8f\92\88i_\_c_cc_cccffifimmimifmiff\\__X\UURURNNGNGDADDADA====6:3:6::36363:A==GDKKNNRUUUXXXRRURRU\cc_\\XXRUURRRDNNKRNNRKRUNNKKRRRX\_\81\81\85\81\85\88\85\85\88\85\88\8b\8b\85\88\85\85\81~zzzzwwwwtttppmppttttpwiimfffcc___XXURKGNGGD=GA:=A:6:33==0666366=66A6:A6ADDRKURURNRR:ADGDGGGKKGAGNGNAANDAG:6::333333003)),,3=:D36DNKKGGKNGNNNXUX\UXRUGKGGGG::=:66:6DAGDAA:63663,)),))%)%%""\1f="\1f\e\e\1f\e\e\18\18\e\1f"%\18\e\1f%%)0006:6=:===6666:6:6033360,,%"\1f\1f%")06:66:6:=DGUU_cfmptttwwwtttppmmmffiiciimppptttwww~~\81\85\85\85\8b\8f\8b\8b\8b\88\8f\8b\88\88\88\85\88\88wtwwtptwtttttpmmfffcfcfippttppmmptttttptw~\88\92\96\9c £££§££££§§§§§§ \9c\96\99\96\9c\96\99\99\9c\9c   \9c §£§££   \9c\99 \99\99\96\92\8f\92\8f\92\92\8f\92\8f\8f\8f\92\96\9c­±´´´»»¸»»¸»¸±´±¸´´´´´±±­±­ªªª££ \9c\9c \99  \9c   \9c\96\92\8b\8f\8f\96\96\99\99 \9c\9c\9c    £§§££££££ §ª§§££  \9c\96\99\99\99\92\8f\8f\8b\92\8b\8b\85zppiXX\XX\\\\RUNGDA:66:600,00,)),,)),,))%%\e\e\18\18\18\e\18\e\e\1f\1f\1f\1f\e\e\1f\e\1f\e""%%),00ª§§§££ \99\96\92\8f\88~\81~ztppiiitw\8f\92\92\8f\99\9c\96\96\96\8f\8f\8f\8b\8b\8b\8b\8f\8f\96\96\96\99  £§£ªª££\99\92\8b\8f\8b\88\85\88\81\85\85\85\88\88\8f\8f\92\92\96\96\92\92\96\8b\8fzf_\X\___\c__ciifmimimmiiiic_X\\\\UXUUURRKNGGDAGADAA===::3::::36333:AA=DDGKKNURRRXXXUUUNRU\ccc__\\RUXURRANRNRNRRNRRNNNNNNUU\\z\85\81~\81\85\81\85\85\88\88\88\88\85\88\88\81\85~~zwzzwtzwtptpimmtptpptiiiffccccccUURUNKRDD3:G:66633000,6,,3336::::=:6A36ADNNRUUNNRU:DGGGKGKNGRNNRURADRDAD=666633333003,,000A=D6:AKGGDDKNKKRRXUUXXURRGNGDDD::6663:3G=DD=A=:6360,%%)%%""""\1f\e\e3\e\18\18\18\e\18\18\14\14\18\1f\18"\e\e")))030:=6A=AAAA:6:::::633:3300%%"%)%,036:6::=ADKXU\_cimptttttpttppmmicfiifiiiptpwtwwzz~\81\81\85\85\85\8b\8f\8b\8b\8b\88\8b\8b\88\88\88\85\85\88tpmimpmpmtttttpmicfcfcimtttwttptttwwtwww~\88\8b\96\99   £££££§§ª§§ªªª££\9c \99 \99\9c\99  £££  ££§§   \9c\9c\99\9c\99\99\96\96\92\92\8f\92\8f\8f\92\8b\8f\8f\96\99 ­­±±±¸¸´¸¸¸»¸´´±¸¸´´´´±­±±ªªª§   \9c\99\9c\99\9c \9c\9c \9c\99\92\96\8f\8b\92\96\96\99\9c\9c\9c\9c\9c \9c\9c\9c\99££   £ £££§ª§§££ \9c\99\99\99\96\96\92\8f\8f\8f\8b\88\81pmf_XU\\X\XXUNNGD=::66:60,)0,,)),),),)))%"\18\e\14\14\18\e\18\e\e\1f\e\1f\e\e\14\e\18\e\1f%"%),:3ªª§§£  \9c\96\8f\8f\8b\88z~~wwppmmmtw\92\92\96\8f\99\9c\99\96\92\8f\92\8f\8f\8b\8b\8b\8f\8f\96\96\99\99  £§§§§  \8f\88\8b\8b\8b\8b\85\85\85\85\81\85\85\88\8b\8f\8f\8f\92\96\8f\92\92\88\85mc\\X\\\\\_\_ciffiimimiimimf_X\\\\X\XXUURNKKGGAGDDDA:A=::6:=::66663:AA=DGGKNRRRUR\XXXRRRNXX_ffcc_\XX\URRRNRRRRRNRRRRRKNNRUR\Xf\81~~\81\88~\81\81\85\85\85\88\85\85\88\81\85\81\81~zzzzwwttppmiimpptpppfffffcc_fcc\UUXNKN=A63D:3:3,0,)),),,0336:6:=0=6AG:=DNRNXURRUXGUKKKNGKNKURRUXUDGUAAD:::6333333003,0000=DD36=GD=ADGNGGUUXRXXXUNNDKGAAA=:666663GAAD:A==303,)%"%""\1f\14\1f\1f\14\11\18)\14
+\ 3\ 3\18
+
+
+\ e\14\e\e\1f\e\18"%,,,036=:AADDDDA==:===::6=:633)))))),036::66==GKUXX\ccimptpppmtpppmmiccifimmmptpwwwz~~\81\85\85\88\88\88\8b\8b\8b\8b\8b\88\8b\8b\8b\8b\88\88\85\85tmiimmifmpppptpmiffcffmptwzztwtwwwzzzzz~\85\8b\8f\96\9c \9c      ££§§§­­­§§ £ £\99 \9c££§££ £§£§§ £\9c\9c\9c\99\99\96\96\96\92\92\8f\92\92\8f\8f\92\8f\8b\8f\92\99£ª­±­­´´´¸¸»¸¸»´´¸´´¸¸´±­­­ª§§§ \9c \99\96\99\9c\99  \9c\9c\9c\99\96\96\8f\8f\92\99\99\9c\9c\9c\9c\9c\99\9c\99\99\9c\99  \9c \9c \9c £ £§££§§ \9c\99\9c\9c\96\92\92\8f\8f\8b\88\85~ticXUUXXXX\XUKKKG=::666300,,0,),,)),,)))%\1f\e\e\18\14\14\18\18\e\e\e\e\1f\18\18\14\18\18\e""%),,=GA§§££\9c\9c\99\92\8b\8b\88\85z~~zwttppmtw\8f\96\96\92\96\99\99\96\8f\8f\8f\8f\8b\8b\8b\8b\8b\8f\96\92\99\99\9c£ §ª§£\9c\96\8b\88\8b\88\8b\8f\88\85\85\85\81\88\88\88\8b\8b\8b\8b\8f\92\92\8f\8f\85\81icX\UX\XXX_\__fcfiiiiimimimic_\\_\\X\XXXUNKKGKADGGG=:A=666::=66::63==D=DGGKKNNUUU\\\UNNUN\Xcifff_\\XXXRRURURUUUKUUNNRKNNRRRXX\tzz\81\85\81\81\81\81\81\81\88\85\85\85\85\85\81\81~~zwwwttptmmfimpmppmmccfiif_ccc__XXXRGR==66A606,,,,,))),0,333666:0=3DK:GGRUNXRURUUUXKKKRGRRRXUUX\XX\XAAG6==663333333603300=GG336AD:=AGKGGXX\RUUURKADAD==::::63::6D=DA6A=:630,%"\1f"\1f\18\18\14\14\14\11\ e\14%
+
+\0\0\a\ 3\0\ 3\ 3
+\18\18\e\18\e%%)00006A=ADDGGGDAA=A:A==:A=:66,,0,),,36:6636:=KNU\\\_cfmmpmppptmppppifciimppptttwwz~~\81\81\85\85\88\88\8b\88\8b\8b\8b\88\88\8b\8f\8b\88\88\85\88\88pfffiimfmmmmpppmmiiiiittzz~~\81\85~zzz~~~z~\81\88\8b\92\96\9c\9c\9c  £\9c\9c\9c  £§§ªª­ªª£§£§ £ §§§ § §£££§££\9c\9c\99\9c\99\92\92\92\92\8f\92\92\92\8b\92\8f\8b\8b\92\8f\96 §ª±­­´±´´»»¸¸¸´¸¸´¸´´´±­­ª§§£§\9c\9c\9c\96\99\99\9c\99   \9c\9c\99\92\92\92\92\92\96\9c\99\9c\99 \99\96\99\99\9c\99\99\99\9c\9c\9c\99\9c\9c\9c   £  §§  \9c \99\99\96\96\92\92\88\85~tpf\UXUXXX\XUUKGGD:=66663300,0,),,,))),)%%\e\e\1f\18\18\14\14\18\18\e\e\18\e\18\18\11\14\14\e"%))0,:DAª§  \99\96\92\92\85\88\85\81~\81zztttttptt\8b\92z\92\92\96\96\96\8f\8f\8f\8f\88\88\8f\8b\8f\8f\96\8f\99\99   §§§ \9c\96\92\8b\8f\88\8b\8f\8b\88\85\88\85\88\8b\85\88\88\88\8b\8f\8f\92\8b\8b\81f__X\UU\XXU\\_\c_fffiffmfimpmccc_\\_\_XXURKNKKKAGDGDA:==6:6===:6==:6=AD=DDDGNKNXUX_\_\RUUR\\cffffc\_\XXUUXUXUUUUNUXRRRKRRRUUUX\mww~\81\81\81\81\81~\85\85\85\88\85\85\81~~~~zwwttpppmifiimimmim_\fificc_c_c\\\RKR=63::30,,,),))%)),,000,3360:0DK6KGUXRUUUUUUXURKNUNURU\XX\X\XXXDAD6A::66663333600030:KD336=A:A=DGGGXU\UURRNGAAAAA=::6:666::::A=3=:6600)"\1f\e\1f\18\18\14\14\14\14\ e\11\11\e
+
+\99\ 3\a\0\99\0\0\0\e\18\e\18\1f"%)0333:D=ADGKKKGDAAA=A=A:=D=::003000036:36366=KRX\X\\_cmimmmpppmmpptiifmmmtptwwwzzz~~\85\85\88\88\88\88\8b\8b\8b\8b\8b\88\88\88\8f\8b\85\88\85\88\85mffcffiimmmmmmpmmmmmmmww\81\96\88\85\8b\88\81\81~~~~\81~\81\85\8b\8b\8f\96\99   \9c£   \9c\9c £§ª­­ª­§ª§££§ §§ª£§£ª§£§£§£\9c\9c\99\99\96\8f\92\96\92\8f\92\92\8f\8b\8f\8b\8b\8f\8f\8b\92\9c §­­­±±´´»¸¸»¸´´¸´¸¸´´±ªª£§§§£  \99\96\9c\9c\9c\99   \9c\99\96\92\96\92\8f\92\99\99\9c\9c\9c\9c\99\99\96\96\99\99\96\9c\99\9c\9c\9c\99\9c\99\9c  \9c\99££££\9c\9c\9c\99\99\99\99\96\8f\8b~zpm_XUUUXX\XXRRNGGA:=6:6633,000,,,,,,,%)))"\18\e\e\e\18\14\18\18\14\18\18\18\18\18\18\14\18\11\e\1f%),,06A\­§  \99\96\96\92\88\88\88\81\81\81zwwwttpttt\85cz\8f\8f\8f\92\96\8f\8b\8b\8b\8b\88\8b\88\8b\8f\96\92\96\99  £§££ \99\96\96\8f\8f\8b\8f\8f\8f\8b\88\8b\88\88\88\81\88\85\88\88\8b\8b\8f\88\85c\\\UXXUXXXUX\_\c\cffffcicfppmiif_\____\\URNNKKKDGAGDA:==:=:=AA::===:=AD:DADDKGNXX\____UXUUX\_ccfc_\_XXXUX\U\UUUXUXXURUNRURXUUX_fttz~\81\81\81\81\81\85\85\85\88\85\81wzzzzwwtptmmmiffififiifi\_cfcfffc_c__\\UGN:60663,,,0),))),))),,,,003360AN3NNUXUXRUUXXURUNRURXUX\X\\XX\XUGAG6A:=66663333633033=GD3366==DAAGGGUUXURNGGDAAADD=:::66366636=:0:633,,%\1f\1f\18\18\18\18\14\18\14\11\ e\ e\11\1f\ e\a\0\a\ 3\99\99\99\99\99\18\14\1f\14"%))0633:A=DGGNNNKDDAAADAA=GGA==3:6333366603033=\X\_\\__ciiiimpppmipmtmiimppwwtwzwzzz\81\81\81\85\88\88\88\88\8b\8b\8b\88\88\8b\85\88\8b\8b\85\85\85\85\81mfififiimmippptmmpppmm~\9c\85\99\99\99\8f\92\85\85\81\81\81~\85\81\81\88\8b\8f\92\99\9c\9c\9c    \9c \9c   §ª­±­­ªª§§§ª£§ªª§ª§§§§£§££ \99\99\9c\96\92\8f\96\8f\8f\8f\8f\8b\8f\8b\8b\88\8b\8b\85\8f\9c££ª­­±±±´»»»»»¸´¸¸´¸¸±­­§£§§§£  \99\99\9c\9c\9c\9c\9c\9c \99\9c\96\92\92\92\92\96\99\99\9c\99\9c\9c\9c\99\96\99\99\99\99\9c\99\99\99\99\99\9c\99\9c\9c\9c\9c\99 £§£  \9c\9c\9c\9c\96\92\8f\88ztm_XUURUXX\XXURNGGA:=6:6:33,,0,,,0,,0,))%%\1f\e\e\18\18\18\14\e\18\14\18\14\18\18\18\14\18\18\11\18\e"),,,3AR­§  \9c\96\92\8f\8b\8b\88\85~~zzwwtttttpmfw\8b\92\8b\96\92\8f\8b\8f\88\8b\8b\8f\8b\88\8f\96\96\99\9c\9c£§§£§£\9c\96\99\8f\92\8f\8f\92\92\8b\8b\8b\88\88\88\81\85\85\85~\88\88\85~\81_\XXXUXUXXXU\X\X__ccccccfcfptpmmi__c___\XXURKGGKGDADDA=:A:==ADA=:AA=:==A:A=DAGGN\\__ccc\\XX\X\\_cc_\_\\\X\\X\XXX\XUUXRURRXUUUXXcfptz~~~\81\81\81\81\85\85\85\81~wwwzwttpmpimiffcffcccccf\\_fcfffc_fcc\_RGN::3::3,,,,),))%)))),,,,0033:3=N3RRXXX\UUR\XUUXRUXXXXX_\X\XXX\RGDK6=6A66633333606633=DG3366::AAADGKDUURRKGDAADDAA=:::6:333363:3,0300%,%\14\e\18\18\18\18\14\14\14\11\ e\ e\ e\e\ e\a\ 3
+\0\99\99\99\99\99\14\11\e\18")%006366=AAKKNNNNGGDDDDADAKNDNA6D:6663:6633036Afccc___cfiiiimpppmmpmppmipttwzzz~z~~z~~\81\85\88\88\8b\88\8b\88\8b\88\88\8b\85\88\88\88\85\81\85\85\81miififimmmmppttppmptpw\85 \9c\9c\9c\9c\9c\96\88\88\81\81\81\81\85\81\85\88\8f\8f\92\96\99\99\9c   £\9c\9c\9c\9c  §ª­±±­­ªª§§ª§ª­ªªª§§ª££§£ \9c\96\96\99\96\92\8f\92\8b\8b\8b\8b\88\8b\88\88\85\88\88\81\8f\9c££§ª­´±´¸»¸»¸¸¸¸¸´´¸´±±­§ª§§£§£ \9c\9c\9c \9c\9c\9c\9c \9c\9c\99\92\96\92\92\96\99\99\9c\99\9c\9c\99\99\99\99\99\99\99\99\99\96\99\99\96\99\96\99\99\9c\9c\99 ££££ \9c\9c\99\99\92\8f\8b~wpXXURRUUUU\X\XUNKKA=A6:::06,0,0,),00,,),%%\1f\e\e\14\14\18\18\18\14\11\18\14\18\14\14\14\14\14\14\18\18"%,0,,=Nª§  \9c\99\96\8f\8f\8b\8b\88zzzwwwttttpmmit\88\8f\8f\92\8f\8f\8b\8b\88\8b\8f\8f\8f\8b\92\92\99\99 \9c£§§§ª£ \99\9c\92\96\92\92\92\92\8f\8f\8b\8b\8b\8b\81\85\81\81~~\81\81pp_XXXUUURUUXU\U\X__c_ccccccfpwtppmccfcc\_XXXRKGGGGDAAD==:A=A=DD=A=DDA:AAA6=:A=DDK\___ccf__\XXXUX\c___\__\\\_\_\XX\\RUXUURU\XXXXUcfpwz~~z~\81\81\81\81\81\81~~wwwwwppmmmfifccccfccc___XXUccffcfcffc_\NKR:=66:0,,,0),))%%)))),,,0336=63K3RU\\\_XUN\UXUURU\\X\\_XU_XXXXKDDK:::=66663333633:63A=G666:66=AADDKDRRNNADGAAAAA==:::6:33003,0
+),0,%")%\18\e\14\18\18\18\14\14\14\11\11\11
+\e\ e
+\a
+\ 3\99\99\99\99\99\14\ e\18\e%,)33:6::==ANNRRNRGGDGAAAADRR\XA:_=::66:66666:3Aiifffcc_ffiffmmmmpmppptpmttwz~~~~~~zz~~\81\85\85\88\8b\85\8b\8b\8f\8b\8b\8b\85\88\88\88\85\81\81\81\85pimiiimmmppmmttttmw~w\99 £   \9c \99\8f\88\85\85\85\85\88\81\85\88\92\92\96\99\9c\9c £ £§ \9c\9c\9c\9c£§­­´±±­ªªªªªª­±­­­ªªª£§ª \9c\99\92\92\96\92\8f\8b\8f\88\88\88\88\85\88\88\85\85\85\85\81\8b\9c£§§ª­±´¸¸»´»¸¸¸¸»¸¸¸±´±ªª­§§£ª££ \9c\9c\9c\9c \9c\99   \99\92\99\96\92\96\96\96\9c\99\9c\9c\99\99\96\96\99\99\96\99\99\92\99\96\92\96\96\96\96\9c\99\99\9c £ £ \9c\99\99\96\88\85\88zc_RRRNNRRURXXXUURNKAAA:::63303,0,,,00,0%)%"\1f\18\18\11\11\14\14\14\11\14\14\14\14\18\11\14\14\11\14\14\e""),,0:Dª§£ \9c\9c\99\92\92\8b\88\8b~~wztttttppmiip\88\92\8f\8f\8b\8b\8b\8f\88\8f\8f\8f\92\8f\92\96\99\99  £££§ª§£ \9c\96\96\96\96\92\96\92\92\8b\8b\88\88\85\81\81~zzzzmc\UUUUURURRUXXXXX_\__c_c_cfimtpppmffccf_c\\\UNKGGGAAAD=A=A=DAGDADADDA==A=6::=:AAGX_ccfficcXXUURUX_\\___________\X_\URUUXUX\U\\\\cipw~~~~~\81\81\81\81\81~~~wtwwwmppiicf__c__cc__\\_KUU_ciccfcccccXKGN::6660,,,,,,))%%)))),00363:A63G3UX\X\_XUNXRURGRUX_\\X_\X\XXXUDAGK==6:63366666:63=36D:D6:6:66:==DDGANKKKAADAAAAA=====:666330,)
+%
+\ e)\18\e\11"\e\18\14\18\18\18\14\14\14\11\11\ e
+\18\ e\a\a
+\a\99\99\99\99\99\11\11\11\18)006666:===AKKNNNRDDGD====AUX\\\\f:=:::GAA::D=Appmmiifc_fiicfiimmpmpptttpwwwzz\81\81\81~~zz~~\81\85\85\88\8b\88\8b\8b\8f\88\8f\8b\88\88\88\85\81~~\81\81tmmiimmppppppttwttz\81\99\9c  ££ \9c \9c\96\8b\88\88\85\88\8b\85\88\8b\8f\8f\96\99\9c\9c££££§£    £§­±´´±­­­­­ª­­±±±ª­ª§ §§\9c\99\96\8f\8f\92\8f\8b\88\85\85\81\85\85\81\85\85\81\85\85\85~\88 £ªª­­±±¸»»¸¾¸»»´»´¸´´´±­­±§§§ª£££\99\9c\9c  \9c\9c\9c£ \9c\99\99\96\96\96\99\96\99\99\9c\9c\99\96\96\96\99\99\99\99\99\96\96\92\92\92\92\96\96\99\96\99\99\9c   \9c\99\96\96\8f\85~ip\\NNKKKRNURUXUUURNNDAD=:=:33033300,,0),%%%\1f\1f\14\18\14\11\11\11\11\14\11\18\14\18\14\14\14\14\11\11\14\18\1f\1f,)036A­§§  \9c\99\92\92\8f\88\8b\81\81zzwtpptpppmmm\8b\92\8f\8f\8b\8b\8b\8b\88\8f\8f\8f\96\92\92\96\99\9c ££§§§ªª££\9c\99\99\99\99\96\96\96\92\8f\88\88\88\88~\81~ztipcXXURRRRNUNUUUXXUX\\\___c_ccimpppmmicfff___\_URNKDDADAAAAADADDKDDDDGDA==A:636:6=:GK\__cff__UURRNRU\XX\________c\\\\\UNUUUUXXX\\__ffpw~~~~\81\81\81\81\81\81\81~zwptttimmfccc\__\\__\\X\\KUUc_f_cfcfc__XGKR=:36630,,,0,),)%%),,0,,360=A60K0X\\\_\XXNXRRNKRUU\XXX\XX\XXXRDADK==33:3666666:63=3:D6G666666::=AGDAKGGADAAAA====A=:==::6630,,
+%
+\ e\ e\ e\18\11\1f\18\14\14\18\18\18\14\14\14\11\ e\11
+\14
+\a\a
+\a\99\99\99\99\99\ e\11\14\e%33::::6AA==GGNKKNAADA::::=X\____ifA=:=iifiimppttppmmiccfiiffiiiimmptwwwtwzz~z\81\81\81~~~z~~\81\81\88\88\8b\88\8b\8b\8f\8b\8f\8b\88\85\85\85~~~\81\85wpmmmmmpppttttwwwz\96\92\99\9c\9c\9c££ \9c\9c\99\99\8f\8b\8b\88\88\88\88\88\8b\8b\8f\96\99\9c §§§§§§  £££ª­´´´±­±­­­­±­­´±­­§£\9c££\99\96\92\8f\8b\8f~zz\81~z\81\81~\81\81~\81\81\81z\85 §§­±­´´»»¾¾¾»»»´»´¸´´´´±ª´ªªª­£££\9c  \9c\9c\9c  £  \9c\9c\96\99\96\99\96\99\99\9c\9c\9c\96\99\99\9c\99\99\99\99\96\92\92\8f\8f\8f\96\96\96\96\96\9c\9c  \9c\99\96\92\88\85mz_fXNKNGKKNRURRXURRRNNGDDA==:63636630,00,)%%%\1f\1f\14\18\14\14\11\ e\11\11\11\18\14\18\14\14\14\11\11\14\14\18\e\1f)",066­§£  \99\99\92\92\8f\8b\88\81~zwzttmpptpptw\88\92\8f\8f\8f\8b\8b\88\8b\8f\8f\92\99\96\99\99\9c £££§§§­­§§§\9c\9c\9c\99\96\99\99\96\92\88\8b\88\85\81~\81ztim_URRNRNNKRRUXRXUUXXXX__\_\cciimpmimffiff_c_\_XURNGDADA=ADAGDGGGGGDDDDA=:=633366==DGN_\_fc\\URRNNRNXXXX\\\__c___\_X\\UURURRXX\\\_ciitz~\81~\81\81\81\85\81\81~\85zzwptptiiifc_\_\\XX\\X\X\\KXXc_cccc_f_\UUGKN==3363,,,,0,))%%%))),,,0:3:=:3N0UX\X_\XURXURKNNRRRXU\\XXXXXURGDDG=:6366666666::6A3=G6D:66666=:=AKDAGDDAA=DAA=A=AA=::::63330,,))
+\ e\ e\ e\14\11\18\14\14\14\18\18\18\14\14\14\11\ e\ e
+\18
+\a
+\a\a\99\99\99\99\99\11\11\11\e"36==:==DD==ADKGG6,":33030=Xffcccmimmmmmmimmptttwttppmicfiififiiimpmttzwwwz~\81z\81\81\85~\81~~z\81\81\81\88\88\8b\8b\8b\8f\8f\8b\8f\8b\88\88\88\85~\81\81~\81wptppmppptwtttwzz~\96\96\99\99   ££ \9c\9c\9c\92\8b\8f\88\88\8b\88\88\88\8b\8b\96\99\99\9c§ª§ªªª££§§§ª±´±´±­±±­­±±±±´­±ª£ \99\96\92\8f\92\8b\8b\85\85ttwzttw~zw~z~~~z\81\9cª­±´±´¸¾»¾¾¾»»¸»¸´´¸´¸´±ª´ªª§­§ £\9c\9c\9c \9c   £££ \9c\99\99\96\96\96\99\96\99\99\9c\99\99\99\9c\99\99\99\99\99\96\92\92\8f\92\99\96\96\99\99\9c  \9c\99\96\92\8b\85zmf_XUNKKGKKNRUURURRRRNNKGDAADD66:::6630300)"%"\1f"\18\18\11\14\11\ e\11\14\11\18\18\18\18\14\14\11\11\14\18\18\e\1f%%),60­§£££\9c\9c\96\96\8f\8f\88\85\81~zwtwptmwptz\88\8b\8f\8f\8b\8f\8b\8f\8b\8f\8f\92\96\96\99\9c\99 £§§£§ªª±±ªªª  \9c\99\99\9c\99\99\8f\8b\8b\8b\85~z~wtfi\URRNRKKGRNRUNUXUXXUX\\\\\__ffmmififiiifcf___\UURGGDGD=DDGGGKGGKKGGDDD=6:303636==DKN\X\c_XXUNNKKNNNUXR\\X_\_\\\\_X\\XXRUNNUXX__c_imtz~\81\81\81\81\81\85\85\81~\81zwwttppfffcc\X_\XUUX\UXX_XGU\c_fc__\c\URRDGR:=00600,0,,,,,)))),)0,,3=6=:66K6XXXX\\URNXRUGKKGKRURX\XUUUXRRKGDD=66663666666::6D6AG6:=6666:::=DGGD=A=A=AA=AA===A:=::6633300,,)
+\ e\ e\ e\11\11\14\11\18\14\18\18\18\14\14\14\11\11\ e
+\18
+\a\a\a\ 3\0\99\99\99\99\11\11\11\18\1f3::A=AADG:=:==A,0)"%%,,%3=_iifiippppppppmpmptwtwwwtppmfiiififffimpptt~zzz~~\81~~\81\81~\81~~~\81\81\85\85\88\88\8b\8f\8f\8f\8f\8b\88\85\85\88\85\81~~z~zwwttttwttwwwzz~\88\99\99\99\9c\99\9c  £ \9c\99\9c\9c\96\8f\8f\8b\88\88\88\8b\88\8b\8b\92\96\99 £§ªª§ª §§§ª­±´´´±­±±ª±±±´´´­­§ \9c\96\92\88\8b\8f\81\88~ptmtwtpttwwwwzzzwz ª±±´´¸¾¾¾»»»»¸¸´´´¸¸¸¸´­§±§§ªª£  \99\99\9c\9c\9c   §§   \96\99\96\99\99\99\96\99\9c\99\9c\9c\99\99\96\99\99\9c\9c\96\96\96\92\96\99\99\99\99\96\99\9c\9c\99\92\8b\88\88\81mic\XUNKKKKNUUXXUUURRRRRNKGGDGGA:==:=:63630)%%\1f\e"\e\18\11\14\ e\ e\11\14\14\18\18\14\18\11\18\14\14\18\e\e\1f"")))3)­ª££§ \9c\96\99\92\8f\8b\85\81\81~zwwtppttw\85\8b\8f\92\92\8f\92\8f\8f\8f\92\8f\96\99\99\9c \9c£§ªª­ª­ª­­­­ª£  \9c\9c\9c\99\96\92\8b\8f\8b\85~wttpc_XUUURNKGDNKNRNXUXXXXXX\X\X__cciifcfcfffccfc__XUUUGKAGDKGGKKKKKKNNKGDAD::6603366:ADKRXUX_\XURNKGGKNRRURXX\\\\XXXX\\\_X\RRRNRXU_cfcmpwz~\81\81~\85\81\81\85\85\81\81~wttppmfcc__X\\XUXUUXUUX\\KU\__fc\\\XGRRAADN::30300,,0,,,,),,),,0,06=:=A66GXXUUUXXRUNUNRDGGGNNUUUXURURUKNGDDD=3::66666666=66D6AKD6A6:6::::=ADDA=D==AAD==DA===::::6663300,,,
+%%\ e\11\11\11\11\18\14\18\18\18\14\14\14\11\ e\ e
+\18
+\a\ 3
+\a\ 3\99\99\99\99\11\ e\ e\14\e06:==ADAD6:6:63)))"%%%))3Kippmppttpttptpppmttwtwwtwtppiiiiciffffiptww~zz~~~\81\81~~\81~\81~~~\81~\85\85\85\88\88\8b\8b\8f\8b\8b\88\85\85\85\85\81~~z~~zzwzwtzwzzzz~\81\88\8b\9c\9c\99\9c\99     \9c\9c\9c\99\96\92\8f\8b\88\8b\8b\88\88\8b\8b\8f\96\99\9c£§ª§£§£§£ª­­­±±±±­±­­±­±±±±­ª£\9c\92\92\8f\88\8b\85~\85tmpmptpmpptttptzwww\9cª´´¸±¸¸»¾»¸»¸¸¸´´´´´´¸±ªª­§§ª§££ \9c\99\99\9c\99   §£  \9c\99\99\99\99\99\99\99\9c\9c\99\99\9c\9c\99\96\96\99\9c \99\96\99\96\96\99\99\99\99\99\99\99\99\96\8b\8b\88\85wmf_XXURKKNNNXXXXXRUURRRURNKKGKKD=AAAA=:3:30%)%"\1f\1f\e\18\14\14\14\11\11\18\14\18\18\18\18\14\18\18\18\e\e\e"""),%3,­ª££££\9c\99\99\92\8f\8f\85\85\81~ztwwtttwz\8f\8f\8f\92\92\92\8f\8b\8b\92\8f\92\96\99\9c \9c §ªªª±­­­­­ªªª£  \99\9c\99\96\92\92\8b\8f\8b\85ztmpm__XUXUNKGGGKKNKNXUUUUXXX\U\\_\ccffccf_fffccc__c\UXUKKAGDNKNNNKNNNKKGDA=A::3603366=DGGNURX\XXNNNKGGKNUNRUUXXXXURUUUXXX_\_URURUXU\_ffptw~~\81\81\81\85\81\85\85\88\81\81~wttmpic_\\_XXXXUURUURUUX\GU\\_c_XX\UGRNDDAN::0033,,0,,,,,,)0,),,,33A6AG=3GXURRRXURRRURRDDKGNNRURURRRRRKKDDAD:0=:666:3666:::G6=GG:A:=:=:::=AAAA=A====A==DA:===:::66633300,,))%%"\11\11\18\14\14\18\18\18\14\14\14\11\ e\ e
+\18
+\a\0\a\a\a\99\99\99\99\11\ e\11\14\e,36::=DAA36363,,))"""%),6Nmttptttwpptttttppppttwwwwwtpmiimffifiiipttzzzw~~~\81~~z\81~~zzz~~\81\85\81\88\88\8b\88\8b\88\88\85\85\85\85\85\81~zz~\81~\81~~zz~~~~z~\85\88\8f\8f\99\99\9c\9c\99£   \9c\9c\99\99\99\92\8f\8f\8f\8b\8b\8b\88\8b\8b\88\8f\92\96\99 §§§§£§£§§ªª­±­±±­±­­­­­­±­ª§ \99\92\92\8f\85\88\81~zppppptpppmpttppwttz~ª´¸¸´¸¸¾¸»»»¸´´´´±´±±´±§§§§ª§£  \9c\99\96\96\99\9c\9c\9c §£££ \99\99\99\99\9c\99\99\9c\9c\9c\9c\9c\99\9c\99\99\99\99\9c\9c\99\99\96\96\96\99\96\96\96\96\96\96\92\8b\88\85zti\\XXURKNNNU\\\\\XXXURRURNKNKNNNDDGDD=:6630%)"\1f"\1f\e\18\18\18\18\14\14\18\18\e\18\e\e\18\18\e\18\e\1f\1f%%",0)6,ªª§££§ \9c\99\96\92\92\88\88\85~~wzzttwww\92\96\92\92\96\92\8f\8f\8b\8f\8f\96\96\9c   £§­­­±±­ª±­ª§§ \9c \99\99\99\96\92\92\8b\8b\8b\85wpimi__XUXUNNDGGGNNKKUUXUUXU\XRX\_\c__c__c_ccfcfcc__\XXUNKGKKRNRRNNNRNKKGD=:=:636333::=AGGNRRUURXRRKGKGKKURNRRUUNUURRRUUXX_X_XUXRUUX\_fftwz~~\81\85\85\81\81\85\85\85~\81zwtpimfc__X\X\UURRNRUNUUX_DX\_\_\UXXRGRNGDAN:630330,,,),)),,0,,,,,33DAGKA3KURNKNURURNURRDGGGKNNUURKNRRNKGDD=D63=:33666666:::GGADG=====::::=AA==:=====AA=A====A:::666633000,,))%%\1f\11\e\14\14\18\18\18\14\14\14\11\ e\ e
+\14
+\a\99\ 3\a\a\99\99\99\99\ e\ e\11\14\18),336:A==,3)300)%)"%%",0=mpwwtwwtwtpwppttpmppttwzzzwtppimmiimmiiipttwwzwzzz~zzw~~~zww~~\81\81\81\85\88\88\88\88\85\85\81\85\85\85\81~zzz~\85\85\85\81\81~~\81\85\81\85\88\85\8b\8b\92\92\96\96\99\9c\96 \9c\9c\9c\99\99\96\96\96\92\8f\8f\8f\8b\88\88\88\8b\88\8b\8b\92\99\9c\9c£££§£££££ªªª­­±­±±­­±­­­±­§£\96\96\8f\8f\8b\85\85~zzmtppmtpmmmpppttttwz\81ª±¸´´¸´¸´¸¸¸´´±±±­´±­±­§ª§§§£ \9c\9c\99\96\92\92\96\99\99\99\9c££££ \9c\99\99\9c\99\9c\99\9c\9c \9c\99\9c\99\99\99\99\99\99\99\99\96\99\96\96\96\99\92\92\92\96\92\8f\88\85\81wpf_XUUUURRUXX_____\\UUUUURRNNNRRRKGKGGA=6630))%""\1f\1f\e\e\e\e\18\18\e\e\1f\e\e\18\e\e\e\e\1f"")),0,,:Dªª§£§§  \9c\96\96\92\8b\8b\88~~zzzwwwwz\96\99\96\96\99\96\92\8f\8f\92\92\96\96\9c\9c  §ª­±±±±±­­­ª££\9c\9c \99\99\96\96\92\92\8b\88\88\81mmfff_\XXXRNNGGGKKRGKUX\XUXXXXRXX\\_\__\\c___c_c____XX\XRKKNNRRUURRRRNNKGD=:::636363::AAGKRKNRUNURRKKNGNNUUGNRURNUURNRRRXX_X_\X\UXX\\\iiwzz\81~\81\85\81\81\85\85\81\85z~zwppfifcc_XXUXUUURNNRNRRU\DU\cXRXUXURKRNGAAN:360303,,,,0,)00000,AA06GDKNU3NRKR=KRKRRNRNNGKGKNNNUUNNKUNKGDAD=D60:63366::66:=:GKAAD=:AA==:::=====:::==:ADAA:A===::::666333000,,))%""\1f\14\14\18\18\18\14\14\14\11\ e\ e
+\14\ e\a\99\ 3\ 3\a\99\99\99\99\11\ e\11\11\18%)0"33=:,"))%,,,))%,))3=mmtwwwwwtzwttptptppttttwzzzzwptptpmmppmmmpppttwtwwwzwwtzzzwttzz~~\81\81\85\85\88\88\85\81\81\81\85\81\81~~zz~\88\88\88\85\85\85\81\85\88\85\88\8b\8f\8f\8f\96\96\96\96\99\99\99\9c\9c\99\9c\96\96\8f\92\92\92\8f\8f\8b\88\88\88\85\88\88\88\8b\8f\99\99\9c   £ £ £§§ªªªª­­­­ª­­±­­­ª£\9c\96\99\8f\8b\88\81\81zwwmptpmpmimppmmppwwt~\8fª±¸¸´´´´±»´¸´±±­±­±±±±­ª§£££\9c \99\99\96\92\92\8f\8f\96\96\96\99 £££ \9c\9c\99\9c\9c \9c\99\9c\9c\9c\96\9c\99\96\99\99\99\9c\99\99\99\96\96\99\92\96\88\8f\8f\92\8f\8b\85\81~tcc_\XXUUURX_\_ccc\_\UUUUUUNRNRURUNNNNKA=3:60,)%"""\1f\1f\e\1f\1f\e\e\1f\e"\1f\1f""\1f\1f\1f\1f"",)030,:Dª§§£§§££ \96\99\92\8f\8f\88\81~~~zwwtw~\99\9c\96\99\9c\9c\96\92\92\8f\96\92\92\9c\99  £§­±±±±´±±­§\9c \99\99\9c\99\99\99\96\96\92\88\88~~ifccc_\XXXRNKGGDGNRKNXX_\XXX\XUX\\\\\\XX\_\\\_\___\_\X\XUNNNRNRRXURRNRRKDAA:=::6:36:=:DDKKRNNNURUNRNKNNRRRRKNRURRRRRRRRUU\_\c_\_X\\\\_imz~~\81~\85\81\81\81\85\81\81\81wzwtpmificc_X\XUURURRKNRRRU\GU_cURURURUKNNGA=N:63030600,,,,,,0,33DDD0KNURRXUNNNRANRGRRRRRNKGKNNKRRRRKKUKGGGAA=A:06:3336:=66:A:DGA:D:===:::=:=====:::::=DADA=A=:=666:663333300,,,))%%"\1f\1f\18\18\18\14\14\14\11\ e\ e
+\14\ e
+\99\a\0\ 3\99\99\99\99\11\11\11\11\14\18\1f"\1f%%),"""%%,)),))0,,:pmmttwwwtwwwwwttmppmtwtwwz~z~ztwtwtppttppmppppptptttwpttwwwwptwwz~~\81\85\81\85\85\81\81\81\81\81\81~\81\81~~~\8b\8b\88\88\88\88\8b\88\8b\88\8b\8f\92\92\92\99\96\96\96\99\96\96\99\99\96\99\96\92\92\8b\92\8f\8f\8b\8f\8b\88\88\85\88\88\88\8f\8f\96\99\99\9c  £  £ ªªªªª­­­­­ª­­­ªªª§£\9c\92\99\8b\88\81~~wwwpptpmpmipmpppmptwz\81\92ª±´´±±´´±¸´´´´±±±­±±±±­§£   \99\9c\96\96\92\8f\8f\8b\8b\96\96\92\99\9c £ £\9c\9c\99\9c\9c\9c\9c\99\9c\9c\9c\96\9c\99\96\99\99\99\99\99\96\96\92\92\96\8f\92\88\8b\88\8f\8b\81pptmc_\\XXUXXUccccfcf\c\\XUXUURRRUXUURRRRNN=06:,)%)""%\1f\1f\1f\1f\1f\1f\1f\e\e"\1f\1f%%"""\1f%,03336:=Dª£§§§£££\9c\99\9c\92\92\8b\8b\85\81~\81~zwttzz\9c\99 \9c \96\96\8f\8b\92\92\92\99\99\9c\9c £ª­­´±±±­ª£ \9c\96\96\99\96\96\99\96\92\8f\85\85~zf____\\\XXRNGKGGKRNNRUX__\X\\UXUX\XXXXXX\\X\\X\___\_\X\XURRNRNNRXURRRRNGG=D==:::::==AAGGNNNKNNURRRRNKURURUNNNRURRNNRRUXXX\c_c__c\____cmpz~~~\81\81\81\81~\85~\81~wwtpmmmfffc\\\XXUUURNNNRNNRXDUc_XRUNRNUKNNDD:N=66330:,0,)0,003336GDG0NRXUUURKNKNDNNKRRRUNRNKNNNKRRRRNKRNGGGAD=A=366666:6A66=A:DGD:D====:==::=====::::=ADAD=AA=:=66666333330000,,,,)%%""\e\18\18\14\14\14\11\ e\ e
+\18
+
+\0\a\ 3\0\99\99\99\99\11\11\ e\ e\11\11\e\18\e"\e\1f%"\1f\1f")),,,),300=mmpttzwwtwtwtwpppppptwtwzzzz~zwzwzwttttpppmmmmpppptmtpppttttptttw~\81\81\81\81\85\85\81\81\81~~\81\81\81~z~~\8b\8f\8b\8b\8b\8b\8f\8b\8f\8b\8f\92\96\96\96\99\96\96\99\99\92\92\96\96\96\96\92\8f\8f\8b\92\8f\8b\8b\8f\8b\8b\88\88\88\8b\8b\92\8f\92\96\99\99\9c  ££££§§ª­­­­­­ªªªªªª§§ª \99\96\99\8f\8b~~~wwwpptppppmppmmpptpw~\85\96§­±±±±±´±¸±´´´±±±­±­­­ª£ \99\9c\99\96\99\92\92\8f\8f\8b\8b\88\92\92\8f\96\99\9c   \9c\9c\9c\99\9c\99\9c\9c\9c\9c\99\96\9c\96\96\96\96\99\99\96\96\92\8f\8f\92\8b\8f\88\85\81\88z~pipic_\\\\XXXXffffififc_c_U\\XUUUXXXUUUUUURN36:0,%)%%"\1f""\1f"""\1f\1f"\1f"))%%"%)036==:=AGª££ª££££\9c\9c\9c\96\92\8f\8b\88\81\81\81~zwppww \9c£ £\99\99\8b\8b\8f\92\8f\96\99\99\9c §ªª±±±±­­§ \9c\8f\8b\8f\96\92\92\96\92\92\8b~\85~__X\\_X\\XXRNKNKGKURRUXX__\\\XXXUX\\XUUU\\XU\_X\_\\\\\\\\XUURRRRRUUURRNNGGAD=====:=DDDDKGNRNGNRUNUURXUXUXUUNNRUUURKRUUX\\\\ccfccc_ccccfmmwz~\81\81\85\81~\81\81z\81zwtpmmiifcf_X\\XXXXRRRRRNNNNXAX_\\UURRKUKNKDA:NA6:033=00000,30066:KGGURUXXUUNNKGKGKNNRNNXNURNRNRNNRNNRKRKKGGAGA==3:3::::3D::==:AGG=D=A:==:=::==:==:::=:AAAAAAD=:=66666333330000,,,,)))%%\1f\e\18\14\14\14\14\ e\ e
+\e
+
+\ 3\ 3
+\99\99\99\99\99\ e\11\ e\11\ e\11\14\18\e\e\e\e\18\1f\e\e\1f)%,,,,)336mpmtttzwwtwpwttpppptttwtzzzz~zzzzzzwwwtttpmmiiimmmmpmmmmmppppptttwz~~\81\81\81\85\81\81~~~~~~~zz~\8f\8f\8f\8f\8b\8f\92\8f\8f\8f\92\96\92\99\99\96\96\96\96\96\92\96\92\92\92\92\8f\8b\8b\8b\8f\8b\8b\8b\8b\8f\88\88\88\8b\8b\8f\8f\92\92\96\99\99 \9c£ £§§ªªª±­±­ªªªª§§­§§£ª \99\92\96\92\88\81zzwwtptppptppmpppmtttz\81\88\96ª±±±±±±´´¸´¸´´±­±­´±ªª§ \99\96\96\99\96\92\8f\8f\8f\8b\8b\8b\8b\92\8f\92\96\99\99\9c\9c\9c\9c\9c\99\99\99\96\99\99\99\9c\99\92\99\96\92\99\92\96\96\92\92\8f\8b\8b\8b\88\8b\85\81~\81zzpimifc_\\\\\\_iiifiimiicfc_c_\X\X\X\XUXXUXUN6::3),,,)%%%"""""""%%%,))%)0,:ADAADAGG§££§£££§\9c\99\99\96\8f\92\8f\88\85\81\85\81zwtpttw §£ \96\99\8f\8b\8b\8f\8f\96\99\9c\9c££ª§­­±­ªª \9c\8b\8f\88\8f\8f\92\92\92\92\92\8b\81\85~_\U\X\\\XXURRNNNGNUUUXXX\\\\X\UUUUXXXRXUX\XU\\\\c\\X\X\X\UURRNRRRUUUUURNKDADAAA=DAGKGRRNRRURNRUUNXUU\X\X\XURRRUUXRUUXXX_\_ccfffffccfffipmz~~~~\81\81\81\81\81z~ptpmiiffc_c\UX\XXXUURRRRRRRRUDX_XXXURNNUNNKGD=ND::336=:6330)033:::NKNXUXUURRKKGA:GGKKNK=UKURNNRURNNRNNNNKNGDADA=:::6:66:6A6=:::=GGAD=A::A=::=A:=A====A:=D==DAD:::66666633330000,,,,))))%"\1f\1f\e\e\14\11\ e\ e
+%
+\a\ e\a\ e\99\99\99\99\99\ e\ e\ e\ e
+\11\11\18\e\e\18\e\e\1f\18\e\1f)),)),,03:ptppttwwwwztwtptpptwptwwzzzz~~z~w~zwzztwttmmiiiiiimmmiiimmmpmppttwz~z~\81\81\81~\81~z~~zz~zw~\8f\8f\8f\92\8f\8b\92\8f\92\8f\96\96\92\96\96\99\96\92\92\92\92\92\8f\8f\8f\8f\8b\88\85\8b\8b\88\8b\8b\8b\8f\8b\88\88\8b\8b\8b\8f\92\92\92\9c\9c\9c £££§§ªª­±±±­­ªªª§§ª§§§§\9c\99\96\96\92\8b\85wztwtpppmptpttptptwww~\85\8b\96­±±±±±±´´¸´´´±±­±­´­§§£\9c\96\96\92\96\92\8f\8f\8b\8b\88\88\8b\8b\8f\8f\8f\92\96\99\99\99\99\99\99\99\99\99\92\96\96\99\99\96\92\96\96\8f\96\92\92\92\8f\8f\8b\88\88\8b\85\85\81zzzwtmimiff___X__ciifmffmpmmfmiimmc\_\\\_\XX\X\URNG:33000,,))%%"%%)%))%,))0,3:=DGDKGARD£  £§§§£\9c\9c\99\96\92\92\8f\8b\88\85\81\81wwwpwww£§ £\96\99\8f\8f\8f\92\92\96\99\99\9c£ §§ªª­ª§§\99\99\8b\8b\88\8b\8f\92\8f\92\92\92\8f\88\88~_XX\XX\\XXXUUNKKGRRXXX\XXXXXX_RRRRUUUNXXUXXU____c_\XXXXXXUUNRRNRRUURUURNKGAAADDAGDNNRUXRUUXURRUXU\UX\\_\\X\UURUXUUXX\Xf\_ciifiiiiffiiimppw~z~\81\81\81~~~zztiffff_c_\XXRUXUXXUURUUNRRRRXDU\XUXXURRUNNNGGAND=:3=:==:66,,300=66NKRXX\RRNRGG=D=GDKGK==RGRRNRRURNRRNKRKKNDGAA====66::363A6=::=ADDDDAAA:DA==:=:AA:AAAA=AA:=AAA:=::66666333330000,,,))))%%""\1f\1f\18\14\ e\ e
+)\ e\a\11
+\11\99\99\99\99\99\ e
+
+
+\a\11\ e\18\e\18\14\e\18\e\e\1f\1f)%)))),06Dptpptpttttwttwmtppwwtwww~~z~zzzzz~zzwwwtppmiiffiifiiiffiifimmmmpttw~~z\81~\85~~zz~zwzzzw~\8b\8b\92\92\92\8f\8f\92\92\92\96\92\92\96\92\96\92\8f\8f\92\8f\8f\8f\8f\8b\8b\88\85\85\88\88\85\8b\88\88\8b\88\8b\8b\8b\8f\8f\8f\92\92\96\99\9c\9c\9c ££§£§­±±±±­­­ª§§§ª£§£§\9c\9c\96\96\92\8f\88z~twttptptttwwtttwwzz\81\81\8b\96­±±´±­´¸´¸´´´±±±´­±ª££ \99\92\92\92\92\92\8b\8b\88\88\88\88\8b\8b\92\8f\8f\92\96\96\96\99\96\96\96\96\96\96\92\8f\92\96\96\92\92\92\92\8b\8b\8f\8f\8f\8f\8b\85\88\85\88\81\81~wwttppipiiicc_\ccfmmiiiimpippppttwmicccc_\\\\\\XURRDA6363300,%)))),,,0),,330D=DGGKNNA\G  £££§§   \9c\96\96\92\8f\8b\88\85\85~wwwtzz£§ª£ \99\99\8b\8f\8b\8f\92\96\99\99\99 £§ªª­ª§££\8f\8f\8b\8f\85\88\8f\8f\8f\92\96\92\92\8b\88\81f\X\\_\\XXXURKNKKRUUUXXUXUUU\\NRNRRRURXXUUXU_cccc\_XXXX\URRRNNNRNUUUUUURNKDDADGKKGUXU\\UXXXUURU\XXX\\\c__X_XXUR\XX\Xc\mimimmpmmmmiimmipptz~~~\81\85\85zzzwwtiffc_\_XXUUNRURUUUURUURRRNR\GXX\XXXUURUNNNGKDNGAD:DADA==::,333=:3KGUUUXRNKNDD:DADDKDD==NGNUNURRRNUNRNNNKKAG=AAA=A:666333A:=::=ADAKADAD6AAA=:A===:AAADAD==:AD==:::666666333330000,,,))))%%%""\1f"\e\ e
+,\11
+\14
+\11\0\99\99\99\99\11
+\ e
+
+\11\11\18\18\18\18\e\e\e\e"\1f%)%))))03Nmtpmttpptptpttppppwtwwzz\81~~~~wzwzzzzwttpmpiffffffcfffcfffffiiimmptwzzz~~\81~~zzzwwzwwz~\8b\8f\8f\92\8f\92\8f\92\92\92\92\8f\8f\92\92\92\8f\8b\8b\8f\8b\8b\8b\8b\88\88\85\85\85\85\81\81\88\88\85\88\88\88\8b\8f\8f\92\92\92\92\96\9c\99\9c\9c  £§§ª­±´´´±­­ªª§ª§ §§£\9c\9c\99\92\96\8f\8b\81~tttptptttwwzwwwzwz~\81\85\8b\92±±±´±±¸¸´¸´´´±±´±­­§  \9c\92\8f\8f\92\8b\8f\88\88\88\85\8b\88\8b\8f\8f\92\92\96\96\96\96\99\92\96\92\92\92\92\92\8f\92\96\92\92\92\8f\8f\8b\8b\8f\8b\8f\8b\88\81\85\81\85~~ztppmmmfmmiicfc_ffimpmmimmmmptttwwzwptfifc__\___\URUND:=::::6330,,00=03,3A:G3GDKKNRRR\ K£ £££££  \9c\9c\96\96\92\8b\88\88\85\85\81wzwtw~§§­§£\99\99\8f\92\8f\8f\8f\99\99\99\9c\9c£§ª§­££\9c\92\88\8b\8b\8b\85\88\8f\8b\92\96\92\8f\8f\8f\88\85\85X_c_c\\X\XXRKNNKRUURXXUURRRXXRNKURRURXXUR\U_cc__\_XXXXXURRRNNNNNRURXXXNNKGGDGKNU\c\___X\\XXUUX\___\_cfcc\c\X\\_X\cXfipmptpptppppmmppmpttzzz\81\81\85\81~~wtwwffcc\XXURNNRNNNRRURRRRURUNR_D\X\XUUURRRRNNKGDNKDGKGDGD=A:=6663=:AGKURRURNGK:A=ADGDGGDAAKGNUKUNNNRUKRRNKGG=GAAAD:A==66306A6AA==DDDNGGAG6AAA::=:=:==DDADG6=6AGDA==:66666633333300000,,,,))%%%""%\1f\1f
+0\14\ e\11\a\14\ 3\99\99\0\99\11\a\ e\a
+\11\11\14\e\e\18\e\e\e\e""%)))%)%,3ppppmptptpptttptttpwtww~~\81~~~~zwwwwwwtttpmpiffffcfcffc_fccfffffimmptzw~~\81\81~~~zzwzwtwwz\8b\8b\8b\8f\8b\8f\8f\8f\92\8f\8f\8b\8f\92\8f\8f\8b\88\88\8b\88~\88\88\85\85\81\81\81\81\81~\85\88\88\88\88\88\8b\8f\92\96\92\92\92\99\9c\9c\9c\9c£ §ªª­­­´´´±­­­§£§££££   \99\96\96\8f\8f\85\81\81wwpttwttwwzzzzzz~~\81\85\8b\8f±±±±±´´»¸¸´±±±±´±ªª£ \99\96\92\8b\92\8f\8b\8b\88\85\85\85\88\88\8b\92\92\8f\92\92\96\92\92\96\8f\92\8f\8b\92\8f\92\8f\92\96\92\92\8f\8b\8f\8b\8b\8b\88\8b\8b\85~\81~zzztttpmmmiipmmffcciimmpmimmpppttwwzz~ztwmmifc_\c___XUURNGADDAAA=6:0:KAA660GNGNDNGNURU§£        ££ \9c\99\9c\96\96\92\88\88\85\85\85\81zzwtw~§§ª££\99\96\8f\8f\8f\92\92\96\99\9c\9c\9c£§§§ª \99\99\8f\88\88\88\88\85\88\8b\88\8f\92\8f\8b\8b\8b\8b\88\85zpmcf__\\\XUNRRKRUUNUURUNNNXUURKRUNUR\URUXX_f_____XXXUURNURRNNKNRRRU\UNNKGGGKNX\cfccc_\__\\\U\_ccc_cfifc_c_\__cc_ffmmtptwtttttppmmtpptww~~z~\81\81\81~~wwwzff__XUUNNNKNNNNNNUNNNRRRRRU_A\\\XXUURRRNRNNKDRKGKNKGKGGD=A:::3:6DDNUNGRNKDG6D:DDDADDDA=KGNRKRNRRRUNRRNGGGAG=A=D:A=A6330:=:ADA:DGDRKKDK6KAD:6==A:=DGGGGG6A:AKGDA==63666663333300000,,,,,)))%%%%""\1f3\14\11\11\ 3\11\a\99\99\ 3\99\14
+\11\ 3\ e\14\14\18\1f\18\18\e\1f\1f\1f\1f"%)%%"%%03mppppptptttpttpptttwwww\81~\81z~~\81ztwttwttppmmmiffff_fcffc_fccfccfffmmmtwt~\81\81\81\81~zwzzzwtwwz\8b\88\8b\8b\8f\8f\8f\8f\92\8b\8b\8b\8b\8f\8b\8f\88\85\85\85\81z\81\85~\81\81\81\81\81\85\81\81\88\88\88\8b\8b\8b\8f\92\92\96\96\96\99\99\99    £§ªª­ª±´±±­ªªª§££££ \9c£\9c\96\96\96\92\92\88\85\85zzwwtwwttw~~~~~z~z~\81\88\8b­±±´±´´»¸¸¸±´±±±­§§ \9c\99\96\92\88\8f\8b\88\81\85\81\85\88\85\88\88\92\92\92\92\96\96\92\8f\92\92\8f\8f\8f\92\8f\96\92\96\92\92\8f\8f\8f\92\8b\8b\8b\8b\88\88zz~zwwwwpppmmmimmmiifcfffiipmmpippttwzz~~~~wzppmifccf_c_XXUUUKGGKGDDGGDGDNRRXUUURURGRNRXiX££\9c\9c\9c\9c\9c\9c    \9c\9c\96\99\96\92\8f\8b\85\81\85\85~wwwwwz§ª§§£\96\96\92\92\8f\96\96\96\99\9c\9c  £ªª§\9c\96\8b\88\85\88\88\88\85\85\88\88\8b\8f\8b\8b\8b\88\8b\85\85~tpfic_\\\XURNRNRRRKRRRUGRK\RURNRURXU\UUU\\_fcccc_XXXUUUNRNRNNDKNRRRXXRNKRKKNU\cfffcfc_cc_____cfffcfiifcccc_ccffimmppwttwtwtttptppttptwz\81~~~\81\81\81z~wwtwif\_XKRNKKKKNNKNNRNKKNNRNRU\DXX_\XXUUUUDURNNGNNKNNNGKKKGAA=====ADAKRKGNKKDG6D:ADDAAADD=NGNNNRKRRRRRNRRDGGADAD=A:==D660:6==AGD=GKDRN6GK6NAD:6AAD==GKKKGGGD6ANKG=::633633333333300000,,,,))))))%%%"0\e\e\e\ 3\ e\a\0\a\a\99\18\14\ e\a\11\18\14\18"\1f\e\e""""""%"%%%)0pmpppmptptttttttppwwwwwz\81~\81z~~~zwtpptpptpmimiffffficffc_ccccccccfmmpttwz\81\81~\81~wwzzwwtttw\88\88\88\88\8b\8b\8f\8f\8f\88\88\8b\88\8b\88\8b\88\81\81\81~~~\81~\81\81\81\81~\81\85\85\88\88\8b\8b\8b\8f\8f\92\92\92\96\99\99\9c\9c\9c\9c  £§§ªª­±´±±ª­­§ª££££    \99\99\96\92\92\8f\8f\88zz~wzwtwtwz~~~~~z~z~\85\85­±´´´´´¸¸»´±±­±­ª££ \99\99\96\96\85\8f\85\85\81\85~\81\85\81\88\88\8f\92\96\96\99\96\92\8f\8f\8f\8f\8f\8f\92\92\92\92\96\92\92\92\8f\8f\92\8f\8b\8f\88\8b\88z~zzwwwwttmmpiiimiiifcfffiipimmmpmtttzz~~~zw~ttpmiffffcc\\XXXURKNKURNKURNX\___\X\XURURU\m   \99\9c\9c\96\99\9c\9c\9c  \9c\99\96\99\92\8f\8b\88\81\85\85\81~zwtwtw§ª§£§\96\96\92\8f\92\96\92\99\99\9c\9c \9c§§ª£\99\8f\88\85\85\85\85\88\85\81\88\88\88\8b\8b\88\88\85\8b\85\81~wtiifc\\\XXRNRNRNNGNRNRGUN\RURRRRU\X\X\XX_ccfccc_X\UUUURNNRNKGGKNNNUXUNXUNXN__fififfffcfcccfcfiifffiffffcfccfiimppttzwtttttttpptttttwwz\81~~\81\81\81\81w~ztptfcX\UNNNKKNNNKNNNNNKKKKRRNUXGX\__X\UXUXDXURNGRXKRRNGNGNKDAAAAA=DGDKNAKNNGDD:DDDDD==DGGANDNNNRKNRNURNNNDKDADDG=D=:=A360=6AAAKAAKKGRR3KG33DGKDDGKAAKGKRKKUK6G6NKA=663333333330000000000,,,,))))%)%%3\1f\1f\1f\e\14\ 3\ 3
+\ 3\0\18\18\11\14\18\e\e%%"\1f""%%%%"%%"%%,0ppppmpptppttttwttpzwwzw~\81\81\81~\81~~~ttppppppmififcfcmpmcfff_cffc_c_cfimttwzz~~~~~wzwztwtttw\88\85\88\88\88\88\8b\8b\8f\88\88\88\88\88\85\88\85~~~~z\81\81\81\81\81\85~\81\85\81\85\88\88\8b\8b\8b\8f\8f\92\92\96\96\99\9c\9c\99\9c\9c  ££§§ªª­±­­§ªª§ª§§£§ ££\9c\9c\99\99\96\92\92\92\8b\81\85\81z~wwwwwzz~~~~~~z~\85\85­­´´´¸´»¸»¸±±­±­§§  \9c\96\99\96\88\8b\85\85\85\85~\81\85\81\85\88\8b\8f\96\99\96\96\92\92\8f\8b\8f\8f\8b\92\92\92\92\99\96\92\92\8f\8b\92\8f\8f\92\8b\8b\88~\81zzzwwtwtppmifiifffffcccimpimmmmptpwwzz~~zzzwttmmiiiicf__\_\X\cRU_cU\_\c__ffc___\XUXUU_p  \9c\99\99\99\96\96\9c\9c\9c\9c\9c\99\99\96\96\96\8f\8f\85\81\81\81~zztttpt£ª£££\99\96\92\92\92\96\92\99\99\99\9c\9c\9c£§§ \8f\8b\85\85\85\85\81\88\85\81\85\85\88\8b\88\85\85\85\88\85~zwpmif___\\XRRRKNKNKNRNRKUR\XURUURX\\_\_\\cfficcc_\_UUUXUNNRNKKKKKKNNUUX\U__ccfimimifiiiiiffiffmmiccffcccfifcfmmpttttzwtttttpppptptwtwz~\81\81\81\81\81\81~w~zpppc_U\RKNRKNNNNNNNNNNKKKKNRKR\GX\\_U\XXRXDXUUNKU\NURNUNNNGGADDD=:GDDNRGNKNKAG=DGAGGADGGGDKGNNNRKNNRRRNNNGKDAADGAG==:D6:0AD=DDKA=GGKNR3GD60AKNGGKNADNRUUX\XU=K6NG==:66633333330000000000,,,,,,))))%%0"""\1f\e\e\e\14\14\ 3\18\e\14\18\1f%)0%%"%%)%))%%)%"))0mmpmmpptttttwwwtttzwwzz~~\81\85~~~\81~twptptmmiifff_cfptpcmif_ccfc_cccffitwwz~z~zzzwwwwtwttww\85\81\85\85\85\85\88\88\8b\88\88\88\88\85\81\85\85z~z~z~\81\81\81\85\81\81\85\85\85\88\88\8b\8b\8b\88\8f\8f\92\96\96\96\99\99\9c\9c   ££§£§§§­±­­ª§§§§§ª§§£§  \9c\9c\99\99\96\96\96\8f\8f\88\85~\81wzwwwwzz~~~zz~\81\81\88ª­±´´¸´»¸¸»´±­­ªª££ \9c\96\96\96\8b\8b\85\85\81\85\81\81\85\81\85\88\88\8f\92\96\92\92\92\8f\8f\8f\8f\92\8b\96\8f\96\96\99\99\96\96\8f\92\92\92\8f\92\8b\8b\8b\81\85~zzwwwwwppmffffcccffcffiimiimmpppttwzw~~zzzwpwppmmmmii__cc_\cfmipmifmimtwztmccc_\X\\fm  \9c\9c\99\9c\99\99\92\99\99\99\9c\9c\99\99\96\99\96\8f\8f\88\85\85~~zwtptpt£§   \96\99\8f\92\92\92\96\99\99\96\99  £££\96\8b\88\85\85\88\88\81\88\85\85\88\85\88\88\85\81\81\81\85\81~wwppic__\\\XURUKKNNKNNKRNUUX\RRUXUUX\c_c\\_fcifcc\_\XUUXRNNNKKGKGGGKNRX\c_ccffimmmiifmmmmpiimffpmiccccf_cfiimipttwwttwtttpttmppptpwwttzz\81\81\81\81~\85\81z~ztpmc_UXRKNNNNNNNNNNNNNKKKKNRNR\KXX\\UXXXRUNUUUUNX_RX_UXURRKKADGDAADGGKNKNGNKDDAADGKKDGGKDGNGNNNRKNRNNRRNNKKGAAGGAG:A:A660AG=GGG=:D6GKN3DA30=NKKGNR=RNUX\\_\XXN6RD=A::6333333330000000000,,,,,,,)))))0%%%"\1f\1f\1f\e\e\18""\18%%0,3,))),,),,%,%))%)immpppmttwwwwzzztwwzwzz~~~\85\85\81~~\81zwztpmtmiiifcc\_ctwtmpfc\__ffcc__cfipwwz~z~~~ztttzwtttww\81~\85\81\81\81\85\85\88\85\85\88\88\85\85\85\85~zzzz~\81\81\81\85\81\81\85\85\85\88\8b\8b\8b\8f\88\8b\8f\8f\92\92\96\99\9c\9c\9c   ££££§£§­±­ªª£ª§§ªª§§§ª££  \9c\9c\99\96\96\92\92\8b\88\81\85~~zzwzzzz~~~~\81\81\8b§ªª±¸±¸¸»¸¸¸¸­­ª­§ §  \96\92\92\8b\8b\81\85\81\88\81\81\85\81\81\85\85\8b\8f\92\8f\8f\92\8f\8f\8f\8f\8f\8f\92\92\92\96\99\9c\99\99\92\96\96\92\92\92\92\8f\8f\85\88\81~~wwwtwttiicffc_cfccfcfmiiipmtptttwzwz~~z~wtwtpppppmiffffffftwwwwpppzww~~~tpmc__\__ip\9c  \9c\99\9c\96\99\96\99\99\9c\9c\99\99\99\99\99\96\8f\8f\8b\85\81~~wttpptt£§ \9c\9c\96\99\92\92\8f\96\96\99\9c\96\99\9c    \92\8b\8b\88\85\88\85\88\88\85\88\8b\88\88\88\81~~~\85\81~zwtmifc_\\\XURRKKRNKNNNNNUUU_UUXXXXX_c_c\Xcicfcfc\\_\XXXRRKKGGDGDDGKNU\_ffffiimmmmimimpppttipmmmiicc\cfcciippmzwtzwtwwptppptimmpttwwwwzz\81\81\81\81\81\81\81~~~wtpf_X\RNNNNNNNNNNNNNNKKKKNNNR\NXUX\UUUURURXXUXRXc_\cX\XURNNGGGGADGGKKNNNGKGDGAGGKGNDNKNGGNGRRKRNNRRKNNNNGKKDAGGDG=D=A3:6AGGGDG=6A6DDD36A30=RKKDKN:URX\__c_\XK6NA=DA=:030003330000000000,,,,,,,))))),%%%%"""\1f\1f\e,%",3636633,03),,)0%30cffimmppptwwzzw~zzwzwzzzz~\81\81\88\85\85\81\81\85~zzttmtmiiifc_\X_pwtptcXX\\cfccc_cfiptzw~~~zzztwwzwpptww\85z\81~~~z\81\85\85\81\85\85\88\85\85\85~wzzzz\81\81\81\81\81~\81\85\85\8b\8b\8b\8f\8f\88\8b\8f\8f\8f\92\96\9c\9c\9c\9c£  £   £ §ª­ªªª§§§§§§§§ª§§§£  \9c\99\99\99\96\96\8f\8b\85\88\81z~zwzzz~~~~\81\81\88\8f§­­±´´¸¸»»»´»±±§­ª § £\96\92\8f\88\88\81\88\81\85~\81\81~~\81\81\88\8b\8f\8b\8f\8f\8f\8f\8f\8b\8b\8f\92\96\92\99\99\9c\9c\9c\96\99\99\99\96\99\96\92\92\85\85\85zzwwtpwtwif_ccc_cccffcfiimmpitttwttwwz~~z~zwtwtttttpppiimmmiwzzzzww~\81\81\81\81\81\81\85\85\85~i_ccf\92\99\9c \9c\9c\99\99\96\99\96\99\99\9c\9c\9c\99\99\9c\96\99\92\8f\8b\85\81\81~wttppptwt \9c \99\96\96\92\92\96\99\99\99\99\96   \9c\8b\8f\8b\8b\8b\88\8b\81\8b\88\88\8b\8b\85\85\85~~~~\81~~zwtpmfcc_\XXXRRNNRNKKRNRRURR_XU\U\\\_fcc_\ffci_fc___XXXXRNKKGDDDAAGKRU_ciiiimimmmmimmipttwwtpppmii_c\_cccipttp~zwzwpwtmpmmmpimiptwwzwww~\81\81\81\81\81\81\85z~~ztti_X\RNNNNNNRNNNNNNNKKKNNNRR_RXXX\UUKRRRUU\X\\cfcffc_\URRNKGGKDGKGNGKKNKNDAKKKKNKRRRNRKKNKRRNRRNNRKNNKNDKGGAKDGG=AAD:=:DDKDA0:6::3AA63=30:N:G0:R6UU\\ccccXUG6K:AGD=6030000000000000000,,,,,,,,,)))0))%%%%"""\1f0)3:6:::A663:630,)3,6:cccimmppttwz~zz~~zwwwwz~~~\81\85\85\85\85\85\85\85\81~ztwppmiiic_\\XX\\wtwXRURU_c__ccffmpwwzz~~~zwtwzwtpptwz\85z~zzwzz\81\81~\81\85\85\88\85\85\81wzzz~~~~\81\81\81~\85\85\8b\8b\8b\8f\8f\8b\8b\8f\8f\92\96\99\9c\9c    ££  \9c£££§ª§­§£§§£§§§§§§§§ \9c  \9c\9c\99\99\99\92\8f\88\8b\85\81\81\81z~zz~\81~\81\81\88\8f£ª­±±±´¸¸»»»´»±´ª­§££\9c£\96\92\8b\88\88\81\85\85\81~~\81zz~~\85\85\85\88\8b\8b\8b\8b\8b\8f\8f\8b\96\92\92\99\99   \99\9c\9c \9c\9c\99\96\96\81z\81wzttpmtttmicfcc_cccccfifmmimitttwttwww~~zz~zwztwwwwtttmipwptz~~~~~z\8b\85\88\88\85\85\85\88\88\88\88\8fpmf\92\92\9c\9c \99\99\99\9c\96\99\96\99\99\9c\9c\9c\99\99\99\96\99\96\92\8b\81\81~zwptmpmptp\9c\9c\9c\99\96\99\96\96\99\99\99\99\96\99   \96\8b\88\8f\8b\8b\88\8b\85\8f\88\8b\8b\8f\85\85\85~~~\81~~~zzwtpmfc__XUXRRNNRNKKNKNURNR\\XXUX\\cfccf_ffcfcfcc\_\XXXRNKGGDGAAAGNNX_fimmmmimmmiiimiptwwwwpttmifcc\_c_cmtztz~zzwwpwpmmiiipimmptwzzwwz~\81\81\81\81\81\81\85z~zwppic\\UNRNNRRRNNNNNNNKKNNNRUU_NXUUXRRKNRRUR\\__fffiffc\XUUNNGDKKKNKNGKGNNRKGKNNKNNNUURUNGRNNRRRURRRKNNGNGGGDKNGGD:DDADA=AAGA63:3363:=63:300A0D36N6RX\\____UUA6G==DG:6300000000000,,,,,,,,,,,,,,,)))0))))%%"%""336=:===D:=:==636306:__ccmimppwwz~~zz~zzzwwzz~~z~\81\81\88\85\85\88\81\85~wwwppmfffcc\\XX\X\\\XRRRU\_\_cciippwwz~~~~~twtwwttptzz\81zwzttwzz~~~\81\85\88\88\85~zw~zz~~~~~\81\81\81\85\88\8b\8f\8f\8f\8b\8b\8b\8f\92\92\99\99\99 ££ ££ \9c    £ª§ª§££§£§§§§§§§§£\9c£\9c \9c\99\99\99\96\92\88\8f\81\85\81\85~~zz\81\81\81\85\88\8b\92§§­±´´´¸»¾¾»¸»´´­­£££  \92\92\88\88\8b\85\81\81\81~~~wwzz\81\81\81\85\81\88\8b\88\8f\8f\92\8f\96\96\96\96\9c\9c £   £  \99\99\96~wwtwpimippppiff_ccffcffcifmmmpippttttwttzzz~~zzzwttzwwwwtwwzwz~\81\81\81\88\85\8b\8f\8f\8b\8b\88\88\88\8b\8b\8b\8b\8f\8f\8fi\8f\96\99\9c \9c\9c\9c\9c\96\99\96\96\96\9c\9c\9c\99\99\99\99\96\92\92\8b\81\81zwtmpimipmt\99\9c\9c\99\99\99\92\92\99\99\9c\99\96\9c\9c  \8b\8b\8b\8b\8b\8b\88\88\88\8b\88\8f\8f\8f\88\88\85\81~~~\81\81~~wzttpifcc_\\UURNNRNKNKNRRNNXXXUR\XXcffficfc_fffcc___XXUURGGGAGADDGNKX\cfiimiiiiimmfiimpwztztttmmiff\\ffcpw~w~~~zttptiimifimfmmttww~wz~\81\85\85\85\81\85\81\81~\81~zpmic_\XRURRRRRNNNNNNNKKNRRUXX_K\RRXUNKNRURNX__ciiiifif\\UURNNKKNNRNRDGGNRNNKRRNNNRKRXUUNKURRRUUURRRKKKGKDDGDNKKKA6DGDGAAA=D=636003366636000=3A06K6N\XX\\_\RR:6==:AD::600,,0000000,,,,,,,,,,,,,,,))),)))))%%%%"66:AANDAKDG=AA:6===__c__fmimpptwz~\81~z~z~wwwzzz~z~\81\85\88\85\85\85\81\88\81zttmpiffcc_\\X\\X\X\XURRURU\ccfmitpzwz~z~~~wwpwwttttwz\85~wztttwzzz~~\81\85\85\85~~w~zzz~~z~\81\85\81\85\85\8b\8b\8f\8f\8b\8b\8b\8f\8f\92\99\9c\9c £ ££   \9c £ £ªª§£§££ £££§£§£££  \9c\9c\99\99\99\99\99\92\8b\8f\85\88\85\88~~~~\85\85\85\85\8b\92\9c§§±±¸´¸¸»¾¸»»»´±­ª£ £ \9c\92\92\88\85\88\85\81\81\81z~ztwwwz~~\81\81\85\88\8b\8f\92\8f\92\96\92\96\96\9c\9c£§£££§££\9c\9c\92zzwwtmiimimmpmiififiicifffipmppimptttwtttwzzzzzwzwwtzzwzzwzz~z~\81\85\81\8b\8b\92\92\96\92\92\8f\8b\8b\8b\8b\8b\8f\8f\8f\8f\8f\92\8f\96\96\9c\9c\9c \9c\9c\96\99\96\96\96\99\9c\99\99\96\99\9c\96\92\92\88~~wtppmimmpp\9c\9c\9c\9c\99\96\96\96\96\9c\99\99\9c\99\9c\9c  \8b\8f\8f\8f\8f\8b\88\88\8b\8b\8b\8b\8b\8f\8b\8b\88\81~~z\81~~zwzwwtifcfc__XUURRRRNRNNRRKKUUURRXUX_cfimfcf_ffccc___\\XURGGGADDGGGNGXX_cffmffiiiiiiimmptwtwwwwppmii_cfmttz\81z\81~~zttptcfiifiifmmttwwzwz~\81\85\85\88\85\85\85\81\81\85z~ppmcc\URRRRRRRNNNNNNNKKNUUX\X_N\RRXRKNKNUNNU_cfiiiiifc_\UXRRRNNRRNNUGDKNRKRNUUURRNNUURRNNURUUURRRRRNGKGNA=GDKNNK=:NKKKAA,:A:333,,0003333003:0=0633KXUUXX\UGN6:==6=A=:6303,,,,,,00,,,,,,,,,,,)))))))))))))%%%%%3:=DDUG_c\_RDD=A\D\c___cimmitpww~z~~z~z~wwzz~w\81z~\81\81\88\85\88\81\81\88\85~ttpmicffc___\\_X\RXUURRRRRX_ffpmttzzzzz~~zwwpttwtwwwz\85zwwtttwwwwz~\81\81\81\85~\81zzzzzz~z\81\81\85\85\85\85\88\88\8b\8f\8f\8b\8f\8f\8f\96\99\9c\99 £ £     \9c  £§ª§§££ ££  £ §£ £\9c\9c\99\99\99\96\96\96\96\92\8f\8f\88\8b\88\85\81\81\81\81\85\88\85\88\8f\9c §ª±±¸¸¸»»»¸¾»¸¸­ª§§  \9c \96\8f\88\85\85\85\85\85~z~tttttzz~~~\81\85\88\8f\92\8f\96\99\92\99\99\9c\9c£§§§§ª££  \81wwttpiiiiimitpmiimiiiiiiffimptpmppttpttttwwzzwwtwwwwzzzz~z~~~~\81\81\88\8f\8f\92\96\96\99\96\96\92\8f\88\8f\8b\8b\8f\8f\8b\8f\8f\92\8f\92\96\9c   \99\9c\99\9c\99\96\99\99\9c\99\96\99\96\99\96\92\92\85\81~tppmmmmpmp\9c \99\9c\99\96\96\96\99\9c\99\99\9c\9c\99   \96\92\8f\8b\8f\8f\8b\8b\8b\8b\8f\8b\8b\8f\8f\88\88\81~~w~z~zzzwztmffifcc\XUUUURNURNRNNNNRRRNUR\\cfmifcfcfc_cc\____XUNGKKAGDGDKKGU\__fciciififiimmmmpttwwtwtmiiifmmpww~\85z~~~zwtttmimicfiipmttwwzzz\81\81\85\85\85\85\88\85\85\81\81zztpic__XRRRRRRRRNNNNNNKKRUX\X\\R\RRURNKNNRNNU_cffmiiii_c_XUURURRUURKRGAKRRNRKXUXURRRRRNNRKRNUUXRRRNNNKNGNDAGDKKRGK=RNNNAA,:6600)0),,0003000000:0333ANRNUU_RDG:6:=3:::63036,,,,,,,,,,),,,,,,,,))))))),)))))%%%%%36=GGX_cf_c_\\X__U_c__\cfmmittww~zz~z~wzwwzz~z~~~\85\81\85\88\88\85\85\85\88ztwpmmfficcc____\\UXXXRNURNU\fitpwwwzwwwz~zwtpttzwwwwz\85zwwtptwzwzw~\81\81\81\81\81~z~zz~~~~\81\81\88\85\85\85\88\8b\8b\8f\8b\8b\8f\8f\92\96\96\9c\99  £ £ \9c \9c  ££§§§§££££ \9c\9c \9c££  \9c\99\99\99\96\96\99\96\96\92\8f\92\8b\88\88\88\85\85\85\85\88\88\88\88\96 £ª­±´¸¸»¾¾»»¸¸´´ª§££\9c£\9c\9c\99\92\88\88\85\81\85\81\81~ztttttww~~\81\81\85\8b\8f\92\92\92\99\96\99\96\9c\9c§ªªª§ª§§£ \85wtpppimiifiipmmmmpiimmimfimppptpttpttwtptttwwttptwwtwzz~\81~\81\81\81\81\81\88\8b\92\92\96\99\99\9c\99\99\96\92\8f\8f\8f\8f\8f\92\8f\8f\8f\8f\8f\96\99\9c  \9c\99\9c\99\9c\99\92\96\9c\99\9c\96\99\96\96\92\92\92\88\85~zwpmmippmw\9c\9c\99\9c\99\99\96\96\99\99\99\99\9c\99\9c \9c\9c\99\92\92\8f\8f\92\8f\8f\8b\8b\8f\8f\8b\8f\8f\8b\88\81~~zzz~zwwtwtpiiiicc_\XXXURRURKNKKKNNNNKRNXXcfpifffcfc_cf\__c_XURNRNNKGKKKKGU\__ccfcfififfimmpmiptwwttwpmiiipptzz\81\81z~~~zzpwtpmmiffimpmtttwzz~~~\88\85\88\88\88\85\85~~wzttfc_\XRUUURRRNNNNNNNKNUX\\\\\R\RRRRNKNKRKRR__cfmmiiicfc\URRURUXURNRGDGNNKRNXX\XNUUNNRGNNNNRUURNUANKKNKKADGDKGRKNRRRRN==,)33,0),,,,,,000300,,60000AKNKRN\NG=:6:=60666000:,,,,)),,)))))))),))))))))))))))%%%%%%6:=KG\cficfccc\c\Xcc_c_cfmmitwzwz~w~z~wzwtzzz~~~\81\85\85\88\8b\88\88\85\85\88ztwpppmiifcc_____XXXXUURURRRXfmptwwwztzz~~wwttwwwwwtwz\85~wwwptwzwwzz\81\81\85\81~~~~zzz~~~\81\85\85\85\88\85\8b\8b\8b\8f\8f\8b\92\92\96\96\96\9c\9c   \9c£ \9c \9c  £ §§§££§  \9c\99\99     \9c\99\99\96\96\96\96\99\96\96\92\92\92\8f\8b\88\8b\88\88\88\85\88\88\88\8f\9c££ª±±´¸¸¸»¾¾»´´´±§§  \9c \9c\99\96\8f\88\88\85\81\81~\81~wtptpttw~~\81\81\85\8f\92\92\92\96\96\96\99\99\9c §ª­§§§£££\9c\85wptmmiifffmmpptpptppppmmmmpppppppppptttppppttppiptttzz~~~~\81\85\81\85\88\8b\8f\96\96\99\99\99\99\9c\9c\96\92\92\92\8f\8f\8f\8f\8f\8f\92\92\92\96\99  \9c \9c\9c\9c\9c\99\96\96\9c\9c\99\96\96\96\96\96\96\92\8b\88\81~zpppmpmt\9c\9c \99\99\96\99\92\96\96\9c\9c\9c\9c\99  \9c\9c\9c\96\96\92\92\92\92\8f\8b\8f\8b\8f\8b\8f\8f\8f\88\85\81~~zzzzwtptppmmiiff__XXXXRUURGRKGGKDKKKRRUXccmffffccfccc___c_\XURUNURKRNNNRU\___ccccfffifmmmpmimttttpttpmmmttwz~\81~~\81~~zwmwttpmiiimmpptttwzzz\81\81\85\85\88\88\88\88\85zztzppcf_XUUXXXUURRNNNNNKGRUX\\_\\R_RRRRKKNKRNUU__cfiifim_cf_XUUXUXXUURRKGKKKGRRUXXXRUUKRND=NKNRURRKR:NAGKGG=DGAGDNNRURUNK::,)00,,)),)))),,,3,0,,30000=GKGNKXKD==6:=60366)3,60)))%%)))))))))))))))))))))))))%%%%%%66:G\_fiffifff___\cccccciimmwwzww~z~z~wzwwzzw~\81~~\85\85\85\88\88\85\85\88\85~twttppmiifc__c__\\XXUXRUURNUippttwwzwwzz~wwwwwwwwztww\81zzwzpwwzwzzz\81~\85\81~\81~~zzz~~~\81\88\88\85\88\85\88\88\8b\8b\8f\8f\92\92\92\96\99\9c\9c\9c     \9c\9c \9c  £§££  ££\9c\9c\99\9c\9c££ \9c\9c\99\99\96\96\96\96\99\96\96\96\96\92\8f\8f\8b\8f\8b\88\8b\85\8b\88\8b\96 §§­´±¸¸»»»¾¾»´±´­§£  \9c\9c\99\92\92\8f\88\8b\85\85\81~~~wtptttwwz\81\85\85\88\8f\92\96\92\99\99\96\9c\99\9c££ª­ª££   \99\88\88wpimmfiiiimttwttwtwttpmppptpttpptptpttpptpppifiippw~~\81~\81\81\81\85\85\88\8b\8f\92\99\99\9c\99\99\9c\9c\99\99\92\96\92\92\8f\8f\92\92\92\96\96\96\96\99   \9c\9c\99\9c\9c\9c\99\99\9c \99\99\96\96\96\96\96\92\8f\8b\88\81\85~ttpt~  \9c\9c\99\99\99\99\92\96\99\9c\9c\9c\9c\99\9c \9c \99\99\96\96\92\96\92\92\8f\8f\8f\8f\8b\8f\8f\92\8b\88\85\81~~zzztpppmpiiiiif__\\XXUXUUKNGDDGGAAGRRUX__mifff__fccc\___\\\\UXNXUUURRRUX__c\____fiiiimmmpmppttwtpttpmppwwz~\81\85\81~~\81~wwpwwwtpiimpptttwwz~zz\81\81\88\85\88\88\88\85\81~~wwmmfc_XUUX\\XXURRNNNNKGNU\\_c\_U_RRRRGKKKRRXX___fficfi\cf\XXXXXXXUURUGGNNNGNUUUKXURRKUKGAKKKNRNNGN=KAGKGGAAD=D:DKNRNRK6:6)),)))))))),),,,00,,,03000:DGDKGG=A:=:::303:3)6330))%%%%%%%%%%%%%%%%%%))%%%))))%%%%%%)33:DK_cfccfcii__c____cccffmpwtwzw~zzz~zzwwwzz~\81~~\81\85\85\85\85\81\88\85\81~twwwttpmifcccc_c_\\\XXNUUURXmpmpwtwwwtwzzwwwwwwttwpwt\85~zwwtwwwwz~~\81~\85\81\81\81~~z~~~\81\81\81\88\88\85\88\88\88\88\8f\8b\8f\8f\92\96\92\96\96\9c\99\99\9c \9c\9c \9c\9c\9c\9c  §§£££   \9c \9c\99\9c    \99\99\96\99\96\96\99\99\96\96\96\96\92\92\92\8f\8f\8f\8b\88\88\8b\8b\92\99£ª­±´´¸»¸»»¾¾»¸­±§£ £\9c\99\99\99\96\92\92\8b\88\88\81\85\81~ztwpwwwzz~\85\88\88\8b\8b\92\96\96\9c\9c\99\9c\9c  §§ª§  \99\9c\9c\99\8b\8bzptpiiiifiptwzzzzwzwwtptpptttttttttttpptppmpiciiptw~~\81~\81\81\85\88\8b\92\96\92\96\9c\9c\9c\9c\9c\9c \9c\99\96\92\96\92\92\92\92\96\96\96\96\99\99\9c£ £\9c \9c \9c\9c\99\9c\9c\9c\99\99\96\96\99\92\99\92\92\8f\8b\8b\88\81zwtt£  \99\9c\99\9c\99\99\96\96\99\99\9c\9c\99\9c\9c \9c\9c\99\99\96\99\92\96\92\96\92\8f\8f\8f\8b\8f\8f\92\8f\8b\88\81\81\81~~zppmmmmiifffcc_XXXUUURRGKD=DDD=ADNRXX__mifcccccccf\___\\\_Xc_cXXX\UXX\c_cX_\__cmmimmppppttttttpwppmptzwz\81~\81\81z~\81zzwtwwwttmimttwwwzwz~~~~\81\88\88\88\88\88\85\85~~wtmff__XXXX\_\\XUUNRNKKGKR\__c__U_RRRRGKGKRRU\\_\ffffffXccX\\XXXUXURRUKKRNRGKRXRGUXNRNRKKDNKKNNKKGKAGDGKGGD=A:A:DGKNKNG)63))%))%),)))))),,,,,,,,0,,,666AGDD::6=666633:0%3603%)%%%%%%%"%%%""%%"""%%%%%%%%%%%%%%%%006AG\_c_fccff_c_c__cc_ciimtttwww~z~z~zzwwwzzz~~~\85\85\85\81\85~\88\85\81~twzzwtpiiicfcccc_\\\\\RUUXU\ipppttwtztwwzwwtwwwptwptt\88~zzzwwwwzz~~\81\81\85\85~\81~zz~\81\81\85\85\85\85\88\88\85\88\88\88\8b\8b\8b\8f\92\96\96\99\96\99\9c\99\99\9c\99\9c\9c\9c\9c\9c\9c\9c ££§££ £ \9c \99\9c £   \9c\96\96\99\96\96\99\96\99\99\99\96\96\96\92\92\92\8f\8f\8b\8b\8b\8b\96\9c§­±´´¸¸»»¾»¾¾»¸ª­§£  \9c\9c\99\99\96\92\96\8f\8b\8b\81\85\81\81wwwpzzz~~\81\88\8b\88\8b\8f\92\92\96\9c \9c \9c  ££§£\99\99\99\99\99\99\8f\8f\88pwpmmmmimptz~~~~z~zzwtpptpttwttpttwtttttpmmi_iimpwz\81\81\81\85\85\88\8f\96\99\99\96\99\9c \9c \9c\9c\9c\9c\99\99\96\96\96\92\92\92\96\99\96\99\9c\9c ££§ £   \9c\9c \9c\9c\9c\99\96\96\96\96\96\96\92\92\8f\8f\8b\85~z£ £\9c\9c\9c\9c\9c\9c\99\99\92\96\9c\99\9c\9c\9c\99  \9c\9c\99\99\99\99\96\96\96\96\96\92\92\92\8f\8f\92\8f\92\8b\8b\81\85\85z~ztpimimfffff__\XUURRRNNDKA=DAD=DDKNXU__iifcccffccc__\c_\\c\mcfcf__U_\_c__X__c_ciimmmpmppwtwtwwtwtwppwzz~\81~\81\81~~\81~zzwwzwwtptptwzwzwzz~~~\81\81\88\88\88\88\88\85\81~zwppfi\_\\\X\_\\XXXRUNKKKKR\__cccUcNRRRGNKNRNR\X\_ffffc\U_f_\_\\XXXURRRNNUNRGDRURKRUGNNNNKGKGGNNGDDG=DDGGDDD==6==D0AAAK=),,%%%%%),,)),))),,,,0,,,0,,,3000::A:6::66333363%3:06))"""""""""""""""""\1f"""""""""""""""%0333DX\c\f_cccccc_c_cccciimtwtwwz~~~w~zzwzwzz~~\81~\81\85\85~\85~\85\85\81~zw~~wttimmfffcccc_\\\\UXX\\fmmpmppttztzwwwwtwwttptptt\85\81z~~zzzwzz~\81\81\85\85\81z\81~~~~\85\85\85\88\85\88\88\85\85\88\8b\8b\8b\8b\8f\8f\8f\96\99\99\96\99\99\99\99\99\9c\9c\9c\9c\9c\9c\9c ££§£§  £   \9c\9c  £  \9c\99\96\99\96\92\96\96\96\99\96\96\96\96\92\96\92\92\92\8f\8f\92\99\99§­±´´¸¸»¸»¾»¾¾»´­ª§££ \9c\9c\99\9c\92\96\96\8f\8b\8f\85\85\81~twttzzz\81\81\85\8b\8b\8b\8f\92\8f\96\96\99 \9c  \9c\9c \9c\9c \99\92\99\99\99\96\8f\8b\8b~zzmmmmmmtwz\81\81\81\81~\81~wtwpptpttttttttwwtttppmiicffimtz\81\81~\85\85\88\96\9c\9c\9c\99\9c\9c \9c\9c\9c \9c\9c\9c\99\99\96\96\92\96\96\96\99\96\99   §§§£££ £   \9c \9c\9c\99\99\96\99\96\96\8f\92\92\92\8b\85\81z£ £\9c\9c\9c\9c\99\9c\99\99\96\99\99\9c\9c\9c\9c\99    \9c\99\99\99\99\99\96\96\96\96\96\92\92\8f\92\92\92\8b\88\85\85\85~~wpmimiiffccc\\XURRNGDGKAG:=D=AADAGKXX_ciiifffiicccc___c_\_fpfiiifffc_cc__\\___ciipmppitpttwwwzwztzttwz~\81\81\81\81\81\81~\81\81z~zw~ztttwtwzzz~zzzz~~\81\81\88\85\85\88\85\85\81\81zwppim__\\\\\__\XX\RUNKKKNUX\c_cfXcKRRRKNNRRRUX\__ccfc_\X\ic_c_\XUUUURRNRXRRKGNXRKRRNNKKNKGKKDNKDDAD:AADDADA:666AD0:==::),%%))%)%,,,))))),,,,,,,,0,,,0003063666:663063:3)0603,)"""""\1f\1f\1f"\1f\1f\1f\1f"\1f\1f\1f\1f\1f\1f\1f\1f\1f"\1f\1f\1f\1f"\1f\1f\1f\0"0003ARX_Xcc___c__ccccccfimppttww~\81~~z~z~wwwzzz~~~\81\81\81~\81\81\85\81\81~~wz~zwtpmmiifccf____\\U\\__immpptpttzwwwtwtpttttppptw\81~~~\81~z~zzz~~\85\85\81\81z~~~~~\85\85\85\85\85\85\88\85\85\88\88\88\8b\8f\8b\8b\92\99\99\99\99\99\99\9c\99\9c\9c\9c\9c\9c\9c\9c  §£§§§£\9c£ \9c\9c   £§££\9c\99\99\96\96\96\92\92\96\99\99\96\99\96\92\96\96\92\8f\92\92\96\9c\9cª±±±´¸¸»¾¾¾¾¾¾¸¸±­ª§§  \99\9c\9c\96\96\96\92\8f\8f\88\85~zwwtw~z\81\85\81\88\8b\8f\8f\8f\92\8f\96\96\96  \9c  \9c\9c\99\96\99\96\92\96\96\96\96\8f\8f\8b\81z~ppmmmptz~~\85\85\81\81~\81wwtttppppppttwtwwtttpmmifcfiimpz~\81\81\81\85\8b\9c   \9c    \9c\9c\9c\9c\99 \9c\99\99\99\96\96\99\99\99\99   £§§§§£§£§   \9c£\9c\9c\99\99\99\9c\99\96\92\92\8f\8f\8b\81~w£\81 \9c\9c\99\9c\99\99\99\99\96\99\96\9c\9c\9c\9c\9c\9c \9c \9c\9c\9c\99\99\99\99\99\99\99\96\92\96\92\8f\92\96\8f\8b\88\85\85\81zwpmiififc___UXURNNKDAD:=D=AD==AGDGNXXccimfcfiiiccccc_c_c\_itpmmmpiiffffc_\\__cfmmppppmtptwwzwzzzw~tw~~\81\85\81\85\81\85\81\81\81\85~~zw~wwtwzww~zz~~~~~z~~\81\88\85\85\88\88\85\85\81\81zzpmmmc\____\_\\\\UURNKNNRX\ccffXcNUUNNNNNRRUU\__ccfc__\Xff_c_\XXUUXRNXUXUURKKUNKUURNKKKGDNKDKN:D=A:=AAD=AA:666=A0:=::0),%%))%%"),,),))),,,,,,0,0,,,,030003336:660)3060,36,0)%""\1f\1f\1f\1f\1f\1f\1f\1f\1f\e\e\1f\1f\1f\e\e\1f\e\e\e\e\1f\1f\e\e\e\1f\e\e\e\0\1f,,,3ANU\X_______\cccccfcfmmmptzt~\81~~z~z~wzzzzzz~~\81\81~~~\81\81\81\81\81\81zz~zwwtppififcc_\c\\\XX\_cmmmppttttwwwttttppttpppppt\85\81\81\81\81~z~~z~~~\81\85\85\85~\81\81~~\81\85\81\85\85\85\85\88\88\85\85\88\8b\8b\8f\8b\8b\92\99\9c\9c\9c\99\99\99\99\99\99\9c\9c\9c \9c £§§ª§£    \99\99 \9c\9c ££ \99\9c\96\92\96\96\96\92\99\96\99\96\99\99\96\99\96\96\92\92\96\99 §­´±±´´¸¸¾¾¾¾¾»¸¸±±­§§££\99 \9c\99\96\96\92\8f\8b\85\88zzwwwz~\85\85\85\88\8b\8f\8f\92\92\92\92\92\96\99\9c\9c\99   \9c\96\96\96\92\8f\92\92\96\92\8f\8b\8b\85~~tppmippwz~\81\85~\81z~wtptppmmmmmppwwwttpttpmiicimmppwz~\85\85\85\8f ££    £\9c \9c\99\9c\9c\9c \9c\9c\9c\99\99\9c\99\9c\9c£££§§§§§§££§ \9c\9c\9c \99\9c\99\99\9c\9c\99\99\96\92\8b\8b\88\81ztt~ \9c\9c\99\99\99\99\99\99\96\99\99\9c\99\9c\99\99\99\9c\99\9c \9c \9c\99\99\9c\99\9c\99\96\92\92\92\8b\92\92\8f\8b\88\85\81\81wtpmiiffc_\\\NNRNDGGA:A3===AAAADDADKUUf_fifffiffcfc_c_c_c\_mptppptmmmiifcc____cfmpppppmpptwz~z~~~w\81~z\81\81\81\88\81\85\85\85\85\81\81\81\81~zz~zwww~zz~~~~\81z~\81~z~\81\88\81\85\88\85\88\85\81\85~~tpmppfmffc\c\_\\XXURNNRR\\ifii\cRXURNRRNURXX__cfffccc\Xifccc_\XURXRc_\\\\\RKRRGXXURGKKDAKKGKK=A======A===6666==0::::)))%%%)")%))),)))),,,,,,,,000,,0000033336660,033,,33))%%\1f"\1f\1f\1f\1f\e\e\1f\e\e\e\e\e\e\e\e\18\e\e\18\18\18\e\e\18\18\18\e\e\18\18\0\e)%)6=KUUU\____\_\c_cccfffmimptwwz\81~~z~~~w~z~z~zz~~~~~z~~\81\81~\81~~\81zzzwttmficcc_\_\\\XX_cfmimmptwttttttppppppppppppp\88\81\85\81\85\81~z~~z\81\81\81\85\88\85~\81~~~~\85\81\85\88\88\88\8b\8b\85\85\88\8b\8f\92\8f\8f\96\99\99\9c\99\9c\96\99\9c\99\99  \9c  £§§§ª£§£ \9c \9c\99 \99\9c  £ \99\9c\99\96\96\99\96\92\96\96\96\96\96\99\96\99\99\99\96\96\96\9c£ª­´±±´´»»¾¾¾¾¾»´¸±±­ªª££\9c\9c \96\92\96\92\8b\88\81\85wwwzz~\81\88\88\88\8b\8b\8b\8f\96\92\92\96\92\96\99\9c\99\99\9c\9c\9c\9c\99\92\92\8f\92\92\92\92\8f\8f\88\88\85~~tttmmpptwz~\81z~wzzwmpmmiiiiipttttwwttpmpmifmppttwz~\81\85\88£££§£££££  \9c\99\9c\9c \9c\9c \9c\9c\9c \9c  §££§§ª§§§£££\9c\99\99\9c\9c\96\99\96\96\99\99\96\96\92\8f\88\88\85\81ttt~\9c\99\99\99\99\99\96\99\96\96\96\99\9c\99\99\9c\9c\9c\9c\9c £  \99\99\99\99\9c\9c\9c\99\92\92\8f\8b\8f\8f\8b\88\85\85\81\81ttmmfffcc\\XXKKGG==D=:=3:A:===DDAAGKURc\cfifficfcfc_c___c\ciptmtpwpppmifcc_c_cfimpptpppttwwz~z\81\85\88\81\81\81\85\85\85\85\88\81\81\85\85\88\85\81\85\85~wz~~wzw~~~\81\81~\81\81~~~~~~\85\85\85\85\88\85\85\85~\88\81\81zzwttmpiimfc\\\\XUXUNNRU__mimp\fX\UURUURURX\_ccffffcccXffffc_\\RU\cfc_\c__\NRRKUXRUGGKGAKKDKGAA===::3===:6636:6066:6,)%%%%)%)))))))))),,,,,,,,03,,,0330000363360)00,)000%%""\1f\1f\1f\1f\e\e\e\e\e\e\e\18\18\e\e\e\18\18\18\18\18\14\14\18\18\14\14\14\18\18\14\14\0\18%%%3=NUXUX\\_____c\cccccimipppwwz\81\81z~~~~z~~\81z~zw~zz~~z~~\81~z~~\81\85zzzzwtmiffccc\__\XX\_fimfmmptttppptpppptptpppmpmp\8b\85\85\85\88\85\85~\81z~~\85\85\85\88\81\81\85~~~\81\85\81\85\85\88\88\8b\8b\88\88\8b\8f\92\92\92\92\99\9c\99\9c\99\9c\99\96\9c\99\9c   ££§ª§ª§§£  \9c\9c\9c\9c\9c\96\99\9c   \9c\9c\9c\96\96\96\96\96\99\92\96\96\99\99\99\99\99\99\96\96\99 §ªª´´±´¸»»¾¾¾¾»»´´±±±­ª§£   \99\96\92\8f\88\85~\81wzz~~\81\85\88\88\8b\8f\8f\8f\92\92\92\8f\96\96\99\99\99\99\99\99\99\99\99\96\8f\8f\8b\8f\8f\8f\8f\8f\8b\88\88\88zztptppppttw~~zzwtwtmmmmifficmpppttwtptppmiippmttwz~~\88\8f§§§§§§£§££ \9c\9c\9c\9c\9c\9c\9c     \9c £§§£ª§ª§§££  \99\96\96\99\99\92\96\92\96\96\96\92\92\8f\8b\88\85\81~www~\92\96\99\96\96\99\96\99\92\96\92\96\99\9c\99\9c\9c\9c  ££££\9c\9c\99\9c\9c\9c\99\96\92\8f\8b\8b\8b\8b\88\85\81\81~~wtmiccfc_\XUUKKGA:=A=6:6===A=AAAADKNXUc_cimiiififcfcfc_cc\fipwtwtwtttpmfffcffffiptttpptwtzwz~~\81\88\8b\85\88\81\88\85\88\85\85\81\81\81\85\88\88\85\88\81~zz~zzzwzz~~\81~\81\81~\81\81z\81\81\81\85\85\85\88\85\85\85~\88\85\85~~zzwttptpif_X\\UXXURNRX\cpmmt\i\\XXUXUNXNX__ccffiifffccciff___UU_fiffffcc___UKXXUXKKKKDKKDGG==::::66:::33663663:66:))))%"%)%%)))))))),,,,,,,,000,,3000000063330),,%)0,,"\1f\1f\1f\1f\1f\e\e\e\e\18\18\18\18\18\18\18\e\e\e\18\18\18\14\14\11\ e\14\14\11\ e\ e\14\14\ e\ e\ 3\14\1f"%0:RXXXXX\_\\\c__f_ccfimmmmpwzz~~zz~~~zzz~z~zwzzzzzw~\81~zzz~\85\81z~z~wtpmiifcc\_\\UUXcfipmmpptttmtptmpmmpptpptppmp\88\88\88\85\8b\88\88~\81~\81\81\85\85\88\88\85\81\81\81~\81\81\81\85\85\85\88\88\88\8f\8b\8b\8f\8f\96\92\96\96\99\9c\9c \9c\9c\9c\99\9c\9c  ££§§§§ªªª§£\9c\9c \9c\9c\99\99\92\96\99 \9c    \99\99\99\99\99\99\96\92\96\99\99\99\99\96\99\96\99\9c£§ª­´´´´»¾»»¾¾¾¾»¸´±±´±­ªª £ \9c\96\92\8b~w~zw~~~~\81\85\8b\8b\8b\92\92\92\96\96\92\92\96\96\99\99\96\99\99\99\96\96\99\92\8b\8b\8f\8f\8b\8b\8f\8b\88\85\85\85wwtttmmmmpptzwwwwttppmmifc_fcifmmppwwttpmmiimtpttwzzz\85\92ªªª§§ª§£§  \9c\9c\9c\9c\9c  \9c     £§£££§§§§£ £ \9c\96\92\92\96\96\8f\92\8f\92\92\92\92\8f\8f\8b\85\81~~wwz~\88\99\96\96\96\96\92\99\92\92\96\96\96\99\99\99\9c\9c \9c£§§£  \99\9c\99\99\96\92\8f\8b\88\88\85\88\85\81~~~ztpmiffc_\XURUKKDA=A=::=::=A=AA=AADGNXXccciiiiiimicicfcccc\immzwzwwwtttmpiiimifcmptttpttwwzz~~\81\8b\8b\8f\88\8b\85\8b\85\85\81\81\81\81\81\85\88\85\88\88\81\81~~~~~zzzwzz~~~\81~~~z~~\81\85\88\85\88\88\85\88\81\85\85\85\81\81~~zwwtwtmic\\_UUXUUNRX\_mppwXi_\_XX\XNUK\c_c_fffiiiifXfifi_cfUUciiiiiiffcccXK\XXUNKNKGKKDKG===:::6:::660333360633:,)%)"""%"")))))))),,,,,,,,00,,,0030300333330)0,%),""\1f\1f"\1f\e\e\e\e\e\18\18\18\18\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\a\a\a\ e\e\1f",6RX\\\X\_\X\c_cccfccfmpppttwz~zzzz~\81zzz~z~zzzzzzwwz~zwwzz\81~zzz~zwtmmiicc__\XXUX_cimpmpmtppptmppmmmmppppppppp\88\8b\88\85\8b\8b\8b\85\85\81\85\85\88\88\88\88\85\81\81\81\81\81\81\81\85\85\85\85\88\8b\8b\88\8f\8f\8f\92\96\96\99\99\9c  \9c \9c\9c\9c   £§ªª§ª­§ª£§ \99 \99\99\9c\96\96\99\99 \9c  £ \9c\9c\9c\9c\99\99\99\96\99\99\99\99\99\99\96\99\9c £§ª­´¸¸¸¾¾»¾¾¾¾¾¾´´´±±±±ª­§££\99\96\8f\85zwzzz~~\81\81\85\88\88\88\8f\96\92\92\96\99\96\92\92\99\99\99\96\96\9c\96\96\92\99\8f\8b\8b\8b\8b\88\88\8b\88\85\81\81\81ttpppiimimmpwtttwwptmmmmif_c_ff\fmmttwtpmmmmppppwzzz~\88ªªª­§§ª§§£     \9c \9c\9c   ££ ££   ££££ \9c \9c\99\92\8f\8f\92\92\8b\8b\8f\8f\8f\8f\8f\8b\8b\88\85\81\81~wwz~\88\99\96\99\92\96\96\96\92\92\96\92\92\99\99\99\99\9c  ££§£  \9c \9c\99\92\8b\8b\81\85\85\81\81\81~zzzwtmiiffc\XXRNRGGA=A=:::==6=D=AA=D=AGKUXccfiimmmmpifmffcccfimmpzzwzzzwwtmtmmmpmmmmpttwpwttzz~\81\85\88\8f\8f\92\8b\8f\88\88\85\81\81~~\81\81\81\85\81\88\88\81\81\81~~~~zzwwwwzzz~~~~zz\81\81\88\85\85\85\88\88\8b\85\81\88\85\85\85\81\81~zzwztpif_\\URURRRRUX\iptzXm_\c\\\\NRK__cfccffiiiic\ffim__iiRcmmmmmmiicff\\_UUURNRNDKKDGGA:::::6:::33003033036060%))%"\1f"\1f\1f)))))))),,,,,,,,0,,,,000300003633,,,)%%)""\1f\1f\1f\e\e\e\18\18\18\18\14\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\ 3\0\99\a\18\1f%0UU\\\\\\\\\\ccfffffcfmppptwtwzzwzz~~z~z~z~zzzzwzwwzzwwwww~zwzwzzztmmmifccc_\XU\_cimtppppppmpppmmmmmpptpppppp\8b\8b\88\85\8b\88\8b\88\85\85\88\88\88\88\88\88\85\81\81\81\81~\81\81\85\85\88\85\88\8b\8f\8b\92\8f\92\96\96\96\99\9c  \9c\9c\9c \9c\9c£ £§ªª­ª­­ªª§§£\99\9c\99\99\9c\92\96\99\9c £  §§£  \9c\9c\99\9c\99\9c\9c\99\99\99\99\96\99  ££­­´¸¸»¾¾»¾¾¾»¸»±¸¸´´±±­±ª£§\9c\96\8b\85wzz~z~~\85\85\85\8b\8b\8b\8f\92\96\96\92\96\96\92\96\96\96\99\99\96\99\96\92\8f\96\8f\8b\8b\88\88\85\85\88\81\81~~zwwmmmifiiiifppiptttpppiiiicc_cc_cfipptwpppippptttzz~\81§ªª­ª§§§§§££   \9c £  £  §£ £ \9c\9c\9c  \9c \9c\99\9c\99\96\8f\8b\88\8b\8b\8b\88\8b\8f\88\8b\8f\88\8b\85\85\85~~wwz\81\88\96\96\96\96\96\96\96\92\92\92\8f\92\96\96\99\99\9c\9c ££§£££  \99\96\8f\88\88\81\81~z~~wzzwppmmicccXUURNNDDA=A=::===:AAAAAAA=AGKRU_ciiimppmpiimiiffimmpmp~zzzz~wwttwtpptpppptwwwpttw~~\81\85\88\8b\92\92\96\8f\8f\88\88\85\81\81~~~~~\85\85\88\85\81\81\81\81~\81~wzwwpwwwz\81~~z~~~~\88\85\88\88\88\88\8b\88\85\8b\85\88\88\85\81~~~zwwtmc_X\RRRRRNRUURftwzXmc_f__\XRR\__ff_ffiiimff_ffiii\mmmfipmpppmifcc___UXXUNRNDNKDDDD::6:=3:6630300030036,30%))""\1f\1f\e\1f)))))))),,,,,,,,0,,0,000030033333,,,)%"""\1f\1f\1f\1f\e\e\18\18\18\18\14\14\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\0\99\96\0\e\1f"3XX\\X\\\\\____fcccccfimpptwwwzzzwzzz~zz~z~zzzzwzwwwzzwtwtzwtwtwzztppiiffcc__XX_cfmptpttpptmmmpiiimmmmtpmpmmp\8f\8b\88\88\8b\8b\88\8b\85\88\88\88\88\8b\88\85\85\85\85\81\81\81\81\85\85\85\88\88\8b\8b\92\8f\8f\92\96\96\96\99\99\9c  \9c\9c \9c    £ªªª­­ª­ªª§§§\9c \99\9c\99\96\99\99\9c£§§ª§ªª§ £\9c\9c\9c\9c\9c\9c\9c\9c\9c\99\99\99\9c\9c  ª­´¸¸¸¸»»¾¾¾¾¸¸´¸´´´´±­­­§£\99\92\88\81zz~~~\81\81\85\85\85\8b\8b\8f\92\92\92\92\96\96\96\96\99\96\96\99\99\92\99\96\8f\8f\96\8b\88\88\85\85~\81~z~zzwttmiifcffficmifmfpttppifmfc__cc_cfipptttpmmpttttz~~\81ª§­§­§§£££§§£  £  ££ §££§  £\9c\99\99\99\9c\9c\9c\9c\99\96\96\96\8b\8b\88\88\85\8b\8b\88\8b\8b\88\88\8b\88\88\85\81\81~zww~\85\88\92\96\96\99\99\96\96\92\92\8f\8f\92\92\96\99\9c\9c  £§§£§   \96\92\8b\85\85~~~wzzwwwtpmmifcc_UXRNNG=DA===::A:=:A=D=DAA=DDKNR\_ffimtmptmmmmmimmpppmp~~~z~\81wwwwwwzwwtttttwwwttzz\81\81\81\88\8b\8f\96\96\96\92\8f\8b\88\85\85\81~\81\81~~\85\85\88\88\85\81\81\81\81~zwwwwptwww~zzzz~z~\88\85\88\88\88\88\88\8b\88\8b\88\88\88\88\81~\81~~wztm__UXRRRRRRRRUUcwtzXifcfcc\XUU\\cfccifiiimcfcfffimcmpmiipppmppiiffcc\X\XXXRKDNNGDDA:66::663300300000066,00)%%""\1f\1f\e\1f)))))))),,,,,,,,0,,,,,000000033330))))"""\1f\1f\e\e\e\18\18\18\14\14\14\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\9c\9c\99\99\e"\1f3X\\\\X\\__c__cc_c_ccfiimppwzzzzwwzzzzww~z~zwzwwzztwzzwttwwtpwpwzwwttmmif_c__\Xcffptttwtpptmmmmimmmmmippmmmmm\92\8f\88\8b\8b\8b\88\88\88\8b\88\88\85\88\88\85\85\85\85\85\81~\85\85\85\88\8b\8b\8f\8f\92\92\92\96\92\96\99\99\9c\9c   \9c   ££ §­ª­±­­±­ªªª£ £\99\99\9c\99\99\9c£§ªª­ª­­ª§§£  \9c\9c\9c\9c\9c\9c\99\99\99\9c\9c £§­±´¸¸¸»¾¾¾¾¾¸¸´»±´´±­­­ª£ \99\8f\88\81~z~~\81\85\85\88\88\88\8b\8b\8b\92\96\92\92\96\96\92\96\96\92\96\96\96\92\96\92\8f\92\92\88\85\85\85\85~z~zzwzwpppffcccccf_iccffmptptmipiccc_cc_fimptwwtpptwtwz\81\81­­­§ª§ª§£ §£££££££  ££ £§§§£  \9c\9c\96\99\99\99\99\99\96\92\8f\92\88\88\85\88\85\88\8b\88\88\88\88\8b\8b\85\85\85~~zwtw~\88\88\8f\96\99\99\96\96\92\96\8f\8b\8f\8f\92\96\99\9c\9c£ £§§§£  \9c\92\88\88~~zzztwwtttttmmff_c_XUUKKDAD==::===AA==AAADAAADAKKR\\fcfipipppppppmpptptpt~\81~z~\81zwzz~z~zzwwwwwwzzzz~\81\81\85\88\8b\8f\92\99\99\96\96\8f\8b\8b\81\85\81\81\81\85~z\85\81\85\88\81\85~\81\81\81zwztwtpwwtzz~~z~~\81\88\88\88\85\88\8b\8b\8b\8b\88\8b\8b\88\85\85\81\81z\81tzpi_\XURRRRRRRRUX\Uwz\fifcc_\UUX___c__fffif\ffciiffmfmpiiimXpmmpffff_c\\_X\\UNDNKKDDA:::::66603030,,,00630,3%%%"""\1f\e\1f)))))))),,,,,,,,0,,,,,,,0000063330)%%%""\1f\1f\1f\e\e\e\18\18\14\11\14\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\9c\9c\99\99\e\1f\eXXX_\\\_\c_c_ccfcccffiiiippwzzzwzwzzzwzz~z~zwzzwzztwzzwwwwwtptttwwwttppmf_cc__\ciiptttwtttpmmmmiimmmmmpmmipmp\96\8b\8b\8f\8b\8b\8b\88\8b\8b\85\88\85\88\88\85\85\85\85\81\81\81\85\85\85\8f\8b\8f\8f\92\92\92\92\96\96\99\99\9c\9c\9c  \9c\9c\9c\9c\9c£§£ª­­­±±±±±´­­ª§§   \9c\9c §ª­­±­±±­ªª§££\9c \9c  \9c\9c\99\9c\9c\9c £§ª±´¸»¸¾¾¾¾»»¸»´¸±´´­­­ªª \9c\96\8f\85\81~z~~\81\88\88\88\88\88\88\8b\8b\92\92\92\96\99\96\92\92\92\92\96\92\92\92\92\96\92\8f\96\88\85\88\81\81~zzwzwwtppmif_c\__c_fcc_citwttpmpifffcffccimppwtttttzzz~\88±±­ª§ª£§£ \9c£  £  ££ ££££ £££  \9c\99\99\96\99\96\96\96\92\8b\85\88\8b\81\85\81\88\85\88\88\85\85\88\8b\88\88\88\81\81zwwzww~\88\8b\8b\99\96\96\92\99\96\92\8f\8b\8f\8f\8f\92\96    §££§£ \9c \8f\88\81zzwwwptttpmppiifcc_\\UUGNDAD:=::==ADAAADDDD=ADDDKGNXXc_cfmftmptpmmmttttwtp~\81~\81z~~z~~\81~\81~~zzzzzzz~~~\81\85\85\88\8b\8f\92\96\99\99\96\99\92\8f\8b\81\85\85\81\81\81z~\85\81\85\85\81\81z~~\81ztwttpmttpzw~~~~~\85\88\8b\88\88\8b\8f\8b\88\8b\88\8b\8b\8b\85\85\81\81z~pwff_XURRRRRRRRRRUUUwz_iifc_c_RXX_\\c\_fccff\ifcfffiiiimmfmi\mmimcccc__\_\U\XXKDRKKGDA=::::6::33300,,,30:00,0%%%%%""\1f")))))))),,,,,,,,0,,,,,,,,00003333,))%%"""\1f\1f\e\e\18\18\14\14\ e\11\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a \9c\99\99\1f\1fXX\X_\_\_\c_c_cffffffiiimiptwzzwwzwwzzwzz~z~~tzzwzwwzz~zzzwwwttppttwttpmiicfccc_fmmtwwwwwwwtppmpmiimmmptmmmppt\96\8f\8f\8f\8b\8b\8b\88\8b\8b\85\88\85\85\85\85\81\85\81\81\85\85\85\88\88\92\8f\92\92\96\92\92\92\96\96\99\9c\99\9c £  \9c   §ª§§­ª­±±´´´¸±­­ªª£££  §ª­­­±±±­ª­­ª£§ £ \9c  \99\99\9c\9c\9c £§ª±´¸»»¾¾¾¾¾»»¸´´­±±ªªª§§\9c\99\92\8b\85~\81~~\81\81\88\88\8b\88\88\88\8f\8b\92\96\96\96\96\96\96\96\96\96\96\92\96\92\8f\96\8f\8b\96\85\85\85~~zzwzwwtwpmifc___c________cptwtpppmiifffffcimppwtwww~\81\85\8f\81±­±­ªª§ £ \9c\9c         ££ £££££\9c\9c\99\99\99\92\96\92\8f\8f\85\85\85\81\85~\81~\85\85\85\88\81\81\88\8b\88\85\88\81~zzw~zw~\88\88\92\96\92\96\92\96\96\92\8f\8f\8f\8f\92\96\99  \9c££ ££§\9c\99\9c\8b\88~wwttpptptpmmpiffcc_\_URKKDAA=:==:=DGGDDDDDD:ADDGKKKUURURciftmppmmmpppttztp\81~\81\85\81\81\81~\81\81\85\81\81\81\81~~z~~z~\81\81\81\85\88\85\8b\8f\92\96\96\96\99\96\99\96\92\88\85\85\85\81\81\81~\81\85\81\81\81~~wzz~wwtptpppptwtzzzz~\85\88\88\88\88\8b\8b\8b\88\8b\8b\8f\8f\8f\88\88\81~~tiicc\XXRRRURRRRUUUXUtw_mfff_f_N\U\\\c__f__cc_fffffiiifmRifm_\\ifK___f_c\\_U\XUKDUNNKG=A:6=::6:36300,0,30600),)%))%""\1f")))))))),,,,,,,,0,,,,,,,,000033330,,))%""\1f\1f\1f\e\e\18\18\14\ e\11\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\0\9c\99\99"UXUX\___\__ccccffiiifffimmippwwzzwzwwzwwwwzw~~wzzzzwwz~\81~zzwzwwtpptptttppmicifffcipptzzwwwzttppmmmimmiiptpmpttw\96\92\92\8f\8b\88\8f\88\8b\88\85\85\81\85\85\85\81\85\81\81\85\85\88\8b\8b\96\92\92\8f\92\92\92\92\96\96\99\99\99 \9c      £§§ªª±­±´´¸´¸»´±±­­§ª§££ª­±±­±´±­­±±ª§§£§£\9c\9c£\99\99\9c\9c £§§ª±±¸¸»¾»¾¾¾¾»´±±­­­§§§ £\99\8f\88\88\85\81\81\81\81\85\85\88\8b\8f\8b\88\8b\8f\8b\92\96\96\99\99\96\92\92\96\92\92\92\92\8f\92\92\8f\8b\96\85\81\85zzzwwwzwwtmpfi_c_c___\\\__\cfpttppppiifiiiifmmmtwtwz~\81£´\92\88±±­ªª§£  \99 \9c\9c\9c\9c \9c\9c\9c\9c  ££ ££  \9c\99\96\96\96\8f\92\8f\88\8b\85\81\81w\81zwz\81\81\81\85\85\81\88\8b\88\88\85\81\81~~w~zw\85\8b\8b\96\96\96\99\92\96\92\92\8f\8f\8f\92\92\99\96\9c       £\99\92\99\88\85~wtmppppppmmmmfffcc__\URKGDA==:=:=ADGKGGDDGG=DGDGGKGNGNRRR\cpmpmmmpptptpwwz~\81\85\88\85\85\85\81\85\85\88\85\85\85\81\81~z\81~~\81\81\85\85\88\8b\88\8f\8f\92\92\96\92\99\96\99\96\92\88\88\88\85\85\81\81\81\85\85\81~\81~ztwzzttptpmmmmptpwzwz~\81\88\88\85\85\88\8b\8b\8b\8b\8b\8f\8f\8f\85\8b\81~ziicc\XXXUUUURRRUUUU\Upt_iccf_f_R\R\_\f_\c_\cf_cfccffiifmRfci\\XRcG\__c_c_X_X\\XKGUNRNGAA=::6::63633300033300,,,))%%""\1f")))))))),,,,,,,,0,,,,,,,,00000333,,,)))%"""\1f\e\e\18\18\14\ e\11\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\ 3\9c\99\9cUUXRX__c__cccffffiimiiifimmmppwwwzwwzzzzwwzzz~~zzwz~zzz\81\81~z~w\81wwtpttmttwtppifiiiffmtttz~wwwzttttmmimmmmmmppptwwz\99\96\96\92\8f\8b\8f\88\8b\8b\88\81\81\85\81\85\81\85\85\85\85\85\8b\8f\8f\96\92\96\92\96\92\92\92\92\96\99\9c\9c \9c£££  £§§ª§­­±´±´¸¸»»¸´´±±ª­§§ª­­´­±­±­±­­­ª£§§§  \9c£\9c\9c\9c\9c\9c ££§±±¸¸»¾»¾¾»¾»´±­ª§§£ £\9c\96\92\8f\8b\8b\85\85\81\81\85\88\8b\92\8f\92\8b\8b\8f\8f\8b\92\92\92\96\96\99\96\92\96\92\92\92\92\92\96\92\8f\8f\96\81~\81wzwwzzzzwtptiicccf_\\\_\\\U_cmpppppmmmimiiiimmptttzz\81 §±­­­­ªª§§§  \9c\9c\99\99\99\99\9c\9c\9c\9c\99\9c    £ \9c\9c\99\96\92\92\92\8b\8b\88\85\85\81wtwtwtt~~\81\85\81\81\85\88\85\88\85\81\81z~z~zz\8b\8f\92\99\96\96\99\92\92\92\8f\8b\8f\8f\96\92\96\96\99\9c\9c\9c \9c\9c\9c \96\8f\8b~zztmmpmmpmmimmiffffc_c_URKKDA======DGKNGGGGDGADGDDGGDKGKKNRXX\immmmmpttwmtz~\81\85\85\88\88\88\88\85\88\85\88\88\85\85\85\85\81~\81~\81\81\81\85\88\88\8b\8b\8f\8f\96\96\92\92\99\96\99\96\96\88\8b\88\85\85\81\81\85\85\85\85~~~wptztptipmimimcpmtwwzz~\85\88\85\85\88\8b\8b\8b\8b\8b\8f\8f\8f\85\88\85zwfmfc\\XXUUUURRUUUUX\Xipcf_cc_c_U\U\__fcXc\Rff_cc_ffciffiU__UXXXRRAX\\_\__X_UX\\NKRKRRKDD:==:::666630033333,3,,0)))%""\1f")))))))),,,,,,,,0,,,,,,,,00000003,,,)))%%%""\1f\1f\e\e\18\ e\14\11\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\ e\ e
+\a\a\a\a\a\9c\99\9cURUUU_\__cccfifiiimmmmiimmmmpttwzzzzzwzzwwzzz~zzzzwz~z~\85~\81\85\81~\85~wtpttpttwtptmiimiiimtwwzzwwwzttwpmmimmmmpmppttwzz\9c\99\99\96\92\8f\8f\88\8b\88\88\81\81\81\81\85\85\85\85\88\88\88\8b\92\92\96\92\96\96\96\96\96\92\96\96\96 \99\9c   £ £££ª­§­±±±­±¸¸¸»»¸´±±­±ªª­±±±­±­±­­ª­­§ ££§ \9c    \9c\9c\9c §£ª­±¸¸¸¾»¾¾»¾»±­ª§££  \9c\99\92\92\8b\88\8b\85\85\85\8f\88\8f\92\96\92\92\8f\8f\92\8f\8f\92\8f\96\92\96\96\99\96\92\92\8f\8f\92\8f\92\8f\8b\8f\92~~~zzwzzzwwtptwmmffccc_\\_XX\U\\fcmmmpmmmmmiimimmmtww~~\85£ª±ª­­ª­§££££ \99\99\96\96\99\99\99\99\9c\99\9c\9c\9c\9c\9c  \9c \99\96\92\8f\8b\85\88\88\85\81\81~wttptppzz~\81~\81\81\88\85\85\85\81\85z~\81~~~\8f\8f\96\96\99\92\99\92\92\92\8f\8f\8f\8f\96\96\99\96\96\9c \99\9c\99\9c\99\96\92\8b\85zzzpmmpiimiifiifffiff__\URKKDDA=:===DGNNKKKGDGDGDDADGADDGDKNUUXfiimimmtttmwz\81\85\85\88\85\85\88\85\85\88\85\88\88\88\85\85\81\81\81\85~\81\85\81\85\88\88\8b\8b\92\8f\96\96\8f\96\99\96\96\92\96\8b\88\88\85\88\81\81\85\85\85\85\81zzwtpwpttfppmmmmfmitttww~\85\88\85\88\88\88\8b\8b\88\8b\8f\8f\8b\85\88\85zwfmif_\\\UUUURUUUUUX_\ipcf\cccc_XXX___fc\cXRfc_ffciififc_R_\UUNUNNDKXXX\\\\\RXX:RGNGURNGGAA=:=::::6000666663360,,%))%"\1f")))))))),,,,0,,,0))),,,,,00000000,,,)))%%%%""\1f\1f\1f\e\18\14\14\11\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\11\ e
+\a\a\a\a\ 3\9c\9c RRUXX\_\___ffiiimmpmmimmpmmptttwww~zwwzzwzwwz~zz~zz~~~\81\88\81\85\88\85\81\88\81wzttppptwtttpmmiiimptwz~wwzzwtpwpmmimpmmpptttwzzz \96\99\99\96\8f\92\8b\8b\88\85~\81\81\81\81\85\85\88\88\88\8b\8f\92\92\96\96\96\96\99\96\96\96\92\96\99\9c\9c\9c  £§£§§§§­ª­­­´±´¸¸»¾¸¸´´´­±­­±±´±±­­­ªª§­ª££  £ \99 \9c\9c\9c\9c\9c  §§ª±±´¸¸»»»¾»¾¸­ª§  \99\99\9c\92\92\8f\8f\88\85\88\88\88\8f\92\92\92\96\99\96\96\92\92\92\8f\92\96\92\92\8f\96\96\96\96\8f\8f\8b\92\92\8f\8f\8f\88\8b\88zzzzzw~zzzzwttwpmmiffcc\\\XXXU\\_\ciimpmmiiiipmmppwwz~\81\85§ª±§­­­ª£££  \9c\99\96\96\92\96\96\96\96\99\99\9c\99\9c\9c\99\9c \9c\9c\96\92\8f\85\88\85\85\85\81~~wttpptptz~z~~~~\85\81\81\81\81\81z\81\85\81~~\92\92\99\99\99\92\96\92\96\8f\8f\8f\8f\92\92\96\96\92\92\99\9c\96\99\96\99\96\92\8b\85\81z~ztpmmffiffcffiffffc_\XRRKGDD=:=:==ADNKKGGDDDADAAAADAAADDKKKRUcfimfpmttpmwz\85\88\88\88\85\81\85\85\85\85\88\85\85\85\81\85\85\85\85\88~\85\85\81\85\88\88\88\8b\8f\8f\92\92\8f\96\96\92\92\92\92\8b\88\88\88\8b\85\85\85\85\85\81~~zwtpwtttmmpimmifmipttzw~\85\88\85\8b\8b\8b\8b\88\88\8b\8f\92\8b\81\85\85zzimmic\\\XXUXUUXUUXX__fm_i_cc__\\\X\\_cc_cXRc_ccfcmfiifc_N_\RRNRKDDNURUXUXXXNUN:NDKDURNKGDAA:A=6:::30:666:663:300%)%%""%)))))))))),,,,,,0,)))),,,00000000,,,))))%%%%""\1f\1f\1f\e\18\18\14\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\14\ e
+\a
+
+\a\ 3\9c\9c RRUX\__\__cifiimmptppmmmppmptwwtww~zwwwzwztzz~~z~~~~\81\81\81\85\85\88\8b\88\8b\88\85w\81wttpmpwtwttpimmmmpwwwzzzzzwtttmppiptmptttwttzzz\9c\96\99\99\96\8f\92\8b\8b\88\88~\81\81\85\85\88\85\88\8b\8b\8b\92\96\92\92\96\96\96\99\99\96\96\96\96\99\9c     ££ª§ªªªª­­­±´´¸»¸¾»¸¸´±±±±±±´´­±±­­§§ ª§££\9c\9c \9c\99 \99\9c\9c\9c\9c  §§ª­±´¸»»»¸»¸»´ª   \9c\99\96\99\92\92\8b\8f\8b\88\88\8b\8f\92\96\96\96\99\9c\99\99\92\8f\92\8f\8f\92\8f\8f\92\92\96\92\92\8f\8f\8f\8f\92\8f\8b\8f\8b\8b\85~zz~zz\81zzzwwtwwtppiifcc_\_\\UU\XUX\c_immmmmmmpppptzz~\85\8f\99§ª­ªªªª§    \9c\99\99\92\96\92\96\96\92\92\96\96\99\99\9c\99\99\99\9c\99\99\8b\8b\8f\85\85\81\81~~~zwtppmpptwzwzzzz\81\81~~\81~w\81\88\85\81\8f\96\96\9c\99\9c\96\96\96\96\92\8b\8b\92\8f\92\92\99\8f\8f\96\92\92\8b\92\96\92\8f\8b\85z~zztpmmific__ffmfcffc_\URRNKDGD=A==A=AKGGDDAAD=A====AAA=DGGKKNN_iimfmiptimzz\88\8b\88\88\85\81\85\85\81\85\85\81\81\81\81\85\85\85\81\85\81\81\88\85\85\85\85\88\8b\8b\8f\8f\92\8f\92\92\92\96\92\8f\8f\88\8b\88\8b\88\88\85\85\85\81z~zwwtwtptpmpmmifciimppzzz\85\85\85\8b\8b\8b\8f\8b\88\8b\8f\8f\8b\85\85\81zwiimfc_\\\XX\XXUUXXX\_fi\fccc__\_X\X__c__c\UcXc_c_icffc__X_XRRNNGGGRGRRUUXUUKGG:KA:GRUNKDGDDAAAA=:=3:=:::=::6=030))%%%"%)))),)))))0)00,,0,)))))),00000000,,,))))%%%%"""\1f\1f\e\e\e\18\14\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\14\ e\ e\a\a\a\a\a\9c\9c RRXX\c__ccfifiimiptpppimttptttwtwwzzwwzzwwwz~z~~\81~~\81\81\81\81\88\88\88\8f\88\99\88\88\85\88ztwtmpttwttpfmmmptwtwzz~zzwwwtpppmttpttttwwtzzz \99\99\96\92\8b\8f\88\8f\88\8b\81\85\81\85\88\8b\88\8b\8b\8f\8f\92\96\96\96\99\99\96\9c\99\96\99\99\96\99\9c\9c \9c £ §ª£­­ª­ª±­±±¸¸»¸»¸´´±´­´´±±±±ª­­ªª§§ §£  \9c\9c\99\9c\99 \99\99\9c\9c  £§§ª­±´¸¸¸¸´´´±±§  \9c\9c\9c\92\92\92\92\8f\92\8f\88\88\92\92\96\99\99\99\9c\9c\99\96\96\8f\8f\8f\8b\8f\8f\8b\8f\8f\92\92\8f\8f\8b\8f\8b\8f\8f\8b\8b\8b\88\85\81z~\81~~\81~zztzwwttttmmiifc__\\RUXXXXX\\ciiiimmmpmttw~z\81\88\99§§§­­§ªª§ \9c\9c \99\9c\99\96\92\8f\96\92\92\92\92\92\96\96\99\99\99\96\99\99\8f\8b\88\8b\85\81~~z~zwwtmpmppttwwwwzw~~zz~zt~\88\88\85\92\99\9c\9c\99\99\99\96\96\96\92\8b\8f\92\8b\92\8f\96\8b\8f\92\8f\88\88\8f\92\8f\8f\88\81zzwwtpppmff___cficcccc\XUURRKKKGA====:=GADA===A:=:::=6=AAADGGGNK_fiifmfmwfm~w\8b\8f\88\85\81~\85\81~\81\81~z\81~\81\88\85\85\85\85\85\88\85\88\85\88\88\8b\8b\8f\8f\8f\92\92\8f\92\96\8f\8f\8f\8b\8f\8b\8b\8b\88\85\85\85\81~\81zwwwwwmptmpmiffcffimpzzz\85\85\85\8b\8b\8b\8f\8b\8b\88\8f\8b\8b\85\85\85zwiimcc_\\\\\\UUUUUUX\\cf\cccc__G_U\U__cc_c_UcX__cci_ccccc\\URNNRGGGRKNNRRURRADA:DA6GNRNKGGDDDDADA==:=A:=:A6::=,60,%)))%))))),,,),,0)3,003))))),,,0,,00000,,,,,)))%%%""""\1f\1f\e\e\e\18\14\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\14\ e
+\a\a\a\a\ 3\99\9c NNUXXc_cffffimimiptpptmppttwwtwwzzzwwwwwwwt~~~~~\81\81~\81\81\81\85\88\88\88\8b\99\99\99\99\88\8b\81wwzptttwptpfpiipwwwwzz~~zzwtttppmtttwtwwzwwzzz \96\96\92\8f\8b\8f\88\8b\85\8b\85\85\85\88\8b\8b\8b\8f\8f\8f\8f\92\96\99\99\99\99\96\9c\99\99\99\9c\99\9c\9c\9c\9c\9c  £§§§ª­ªª§­­­´´»¸¸»»¸±±´±±±±­±±ªªªª­§£ £   \99\9c\99\9c\9c\9c\99\99\99  ££§ª­­±±¸¸´´±´±­ª£ \9c\9c\9c\99\92\96\92\96\8f\92\92\8f\92\96\96\99\9c\99\9c\99\99\96\92\92\8b\8b\8f\8b\8b\8f\8f\8f\8f\8f\8f\8b\8b\8b\8b\88\8b\8b\8b\8b\8b\88\81~~\81\81\81~\85~~~wwwwwwttppimifc__\UXU\XUXXX\_ffimpppttwz\81\81\85\8b\9cª§ªª­ªªª£\9c\9c\99£\9c\9c\96\92\92\8b\92\8f\92\8f\8f\92\8f\92\96\9c\9c\92\92\96\8f\8b\88\88\85\81~zzzztwpmppmpppttztzzzzwwzttz\85\85\88\8f\9c \9c\9c\99\99\96\96\96\92\8f\8b\8f\8b\8f\8b\8b\88\8f\8f\88\88\88\8b\8f\8b\8b\85\81~zwwwpppiifc___cfc____XURRRRNNKKAAAA:::D3==:6:=6:6:6:6:A=ADDGGNK_cffiiffcct\81\85\8b\8b\8b\81~~\81~~~~~z\81z\81\88\85\88\81\85\88\85\85\88\85\85\88\8b\8f\8f\8f\92\92\92\92\92\92\8f\8f\8f\8f\8f\8f\8f\8b\85\88\88\85\81\81\81~wwzwzpptimiiffficimmwz~\88\88\88\8b\88\8b\8b\8b\88\88\8b\8b\8b\85\85\81ztmtmffc___\\\XUUUXXX\_cf_c_cc__G\XXU\__c_c_RcX\_c_i\f\c___XRUKNRGGGRKKKNNRND=AA=A=:GKNNGDDDDGDDGDA=AADAA=D6:=A)3,,)))))))))),,,,,003633000,,))0,0,,3,00300,,,)))))%%%%"""\1f\1f\1f\e\e\18\14\14\18\18\e\e\e\18\18\18\14\11\11\ e\14\ e
+
+\a\a
+\a\99\9c\9cRURU\ccfiffimmimiptpppppttwwwwwwzwwwwwwzwwt~\81\81\81\81\85\85\81\81\81\85\85\85\85\88\8b\99\99\99\99\99\8f\85\88z~tttptppmfmiipwwzwz~z~zwtttpppptptwwzwzwwzzz\9c\92\92\92\8b\88\8b\88\88\88\88\85\85\88\88\8b\8f\8f\92\92\92\92\96\99\96\9c\99\9c\99\9c\9c\9c\9c \9c \99\9c\99\9c   £§§§­ªª£­ªª±±¸´»¸¸´­±´±±±­±±­ª§ªªª££££ \9c \9c\99\9c\9c\9c\9c\9c\99\9c ££§§­­±´±¸´±±±±±ªª£ \99\9c\9c\99\92\96\96\96\92\92\96\92\96\99\96\96\9c\96\99\96\96\92\92\92\88\8b\8b\88\8b\8f\8f\8b\8b\8b\8b\81\88\88\88\85\88\88\88\88\88\85~z~~\81~\81\85z~ztzttzwttttmpmifc__XXXXXXXURR\_cfipptwwzz\85\85\85 §ª§­ª­ª§§  \9c\9c \9c\99\96\92\8f\8b\8f\88\8f\8f\8b\8f\8f\8f\92\99\99\8f\92\92\8f\88\88\88\85\81~zzwzttpimmimmmppwtwzwwptwttw\81\81w\8b £  \99\99\99\92\96\92\8f\8f\8f\88\8b\88\88\85\8b\88\85\85\85\8b\8b\85\88\85~~zwwwpptmmffc_\_cc_\\\XRURRRNRNKDAA=66:=36:66366636663:A=DDAKKRNccfcmfXf_fw\85\88\8b\88\88\81z~~~~~z~w~w\81\85\85\85\81\85\88\88\85\85\85\88\88\88\8f\8f\92\92\92\92\92\92\92\8f\92\8f\92\8f\8f\8f\8f\8b\8b\88\81\81~\81\81wwwtwpppfiiffcffcimitz~\88\85\88\8f\8b\8f\8f\8b\88\8b\8b\88\88\85\85\81~wpwpiif_c\\\\XUUXX\\\ccf_c_____G\XXU\__c_fcRcX\cc_i\i____\XUUNNNGKGNGGKDGDAA:==:=::KDGKKAGGDGGGKGDNNGKNN=G=DDD)60,),,)),))),,,,,0036:6633300),,03)06,333030,,))))))%%%%"""\1f\1f\1f\e\e\18\18\18\18\e\e\e\18\18\18\14\11\11\ e\18\ e\ e\a\a
+
+\ 3\99\9c\99UXUX_cfiifimmimmmptmppmptwzzwztwwtwwtwwzwww~\81\85\81\85\85\81\85\85\81\85\85\88\85\8b\88\99\99\99\99\99\8b\88\8b~\81wtwpppmmiiimmtzzwzzzzzwttttptttttwwzzzzzwzz\9c\8f\8f\8f\8b\88\88\88\85\85\85\88\85\88\8b\8b\8f\8b\92\92\92\96\99\99\99 \99 \9c     \9c\9c\9c\9c\99\9c\9c\9c ££§ªªªª§ªª­±ª¸´¸´´±±­´±­´­±±­ªªª§ª§£££\9c \9c \99\9c\9c\99\9c \9c  £§ªª±±´´´¸´±±±­­§§£ \9c\99\99\99\92\92\92\96\92\96\96\96\99\96\96\96\99\96\96\92\96\8f\8f\8f\88\88\88\88\8b\8f\8b\88\88\88\88~\81\85\85\81\85~\85\85\85\85~z~~\81~~\81z~wtztwwtpptpmppiifc_\\\\XUXXUNUNXcfpppzzzz\88\88\9c§ªªªªª­ªª§£\9c \9c \99\96\96\8f\92\8b\8b\88\8b\8f\8f\8f\92\8f\8f\96\96\92\8f\8f\8f\8b\8b\85\88\81~zwwwttpiimmifmmptptwptmtpptpmww\85\9c   \96\9c\96\8f\92\92\92\8f\8b\85\88\85\85\81\88\81\81\81\81\88\88\85\85\81~~~zwwpptmmifcc__c_\UUXURUNRRRURNGDDA33600,633333)033:06=ADDDKNUR_fc\icXf\cz\88\8b\8b\8b\88\81~\81zzzzwzwzz\81\81\81\81\85\88\88\85\85\85\81\85\88\85\8b\8f\92\92\92\92\92\96\92\8f\92\8f\92\92\8f\8f\92\8f\8f\88\85\85\81\81\81twwwwppmfficcffccii_pz\81\88\88\88\8f\8b\8f\8f\8f\88\88\8f\8b\85\81\85\81zwtwtmmfcc\_X\XXXXX\__ccf_c_\__\G\\XU_c_ccicRfUXc_\f\icc_c\URRNKKGKKKKGGDDD:::=:::66KGGGKDDGDGDKNKGRRUNRRKKAGGD6:3))0,)),,),,,,,,003::::66603),003,3:0360003,0,,)))))%%%%%""\1f\1f\1f\e\e\e\18\18\e\e\e\18\18\18\14\11\11\ e\e\ e
+\a\a\ e
+\0\99\99\99X\XX_cfiifimmmmmmmpppmppptwwwwtwwwwtpttztww~~\85\81\85\85\85\81\85\85\85\85\88\85\88\88\99\99\99\99\99\8b\88\8f\81\81zwztppmmmifmmtzzwzzzzwwwwttpwwwwtwzzzzzwwzz\99\8f\8b\8b\8b\88\88\88\85\85\85\88\88\88\8b\8f\8f\8f\96\92\96\96\9c\9c\9c \9c  £££\9c£  \9c\9c\9c\9c   ££§ª§ª§£ªª­­ª´±¸´±­­ª±±­±­­­ªªª§£§££ §  \99\9c\9c\9c \9c\9c   £§ª­­±±´´¸»´­±±­ª§§£\9c\9c\99\99\9c\96\96\96\96\96\96\96\96\99\99\96\92\96\92\92\8f\92\8f\8b\8b\88\85\85\88\8b\8b\88\88\81\81\85zz~\81~~z\81\81\81\85~z~\81\85zz~~zzpwpttptmpmpmmifffc\__\\XUURKNNNR\\ptwz~z\85\8b§ªª­­­­±ª­£§\99  \9c\96\92\96\8b\8f\8b\88\88\8b\8b\8f\8b\8f\92\8f\92\92\92\92\92\8f\8f\8b\88\88\85\81~wzwtwtpmmpffmipmpptppmtpppmittp_£ \9c\99\99\96\92\92\8f\92\8b\88\81\81~\81z~~~z~\85\85\85\81\81~~~zwwpppmmiiff_\_\XRRRURRRRRUURRKDDA60,,,,0,0000),33636=AADKNNXR_ccX_XXfcc~\8b\8f\8b\8f\88\81\81\81wzwzzwwwz~~~\81\85\88\88\81\85\85\81\85\88\88\88\8f\92\92\92\96\96\92\92\92\92\92\92\92\8f\92\92\92\8f\8b\88\85\85\81~tzwzwppiicif_ffccif_pw~\88\88\8b\8b\8b\8b\8b\8b\8b\88\8b\88\88~\81\81~zwzwpmifc__\\\\XXU_cfcciccc\__\_\_X\c_cffifUiUXcc\f\f_f__XRNNNKGKKKDGDGAAA:::=:=:::GGGKGGDGDGAKNNGRRXRUUNNDKKG::3),3,,,00,,,,000003:=::3:636,03363663360,00,0,,)))))%%%%%"""""\1f\e\e\e\e\e\e\e\18\18\18\14\11\11\ e\e\11\ e
+
+\11
+\ 3\99\99\99\_\\_cfiiiiiimimimmpppmtttwwttpttwtptttzwwwz~\81\85\85\85\85\81\81\85\85\88\88\88\88\88\99\99\99\96\96\8b\88\8f\85\85zzwwtpmmifiiiwzzwzzzzwzwzttpwwwwwwzzzzzwz~z\96\8f\88\8b\8b\88\88\85\85\85\85\88\8b\88\8b\8b\8f\92\96\92\99\99\9c\9c\9c\9c   £ £ §££  \9c\9c    ££§§­§£§ªª­­´±´´­­ª§­­­­­ªªªª§§££§££§ \9c\9c\9c\9c\9c \9c\9c £££§ª±­±±¸¸¸¸´­­­ª§§££ \9c\99\99\99\96\96\96\96\99\92\99\96\96\99\96\8f\92\92\92\8f\8f\8f\8b\88\85\85\85\85\88\88\85\85~~ztptwtzwz~\81\81~~\81\81\81z~zzwwmtmpimpimipiifcfcf___\\URRNGKNNNU\mtwwzz\8b\8f­­­±±­­±­ªª§  \9c\99\92\8f\96\8f\8b\88\8b\88\8b\8b\8b\8f\8f\92\8f\8f\8f\8f\92\92\8f\8f\8b\8b\88\85\85z~~wzzwtpmmifmmppppppppppmmicpim_  \9c\96\99\92\8f\92\8b\8f\88\81\81~~zwwzzwz\81\81\81\81\81\81~zzwtppppmmmii_\\URRRRRRNURUUXRRNAA=3),)),,,,,0)))0366:=ADGNKUXU__cX_UXff\8f\81\8b\8f\8b\8b\85\81\81~wwtwwwztz~~~\81\81\8b\88\81\85\85~\85\85\88\88\8f\92\92\92\92\96\96\96\92\92\8f\92\92\8f\92\92\92\8f\8b\88\85\81\81~wzwwtpmmfciccfcfcifcpz~\88\85\88\8b\8b\8b\8b\88\88\85\88\88\88\81\85\85\81~z~zptmfff___\XX__imiiimcc__c__\_cc_ccffifiXfUU_c\ificc__UNNNKKGKGGDDGD===::::::::=GDDKGGDDDGAGNKKRNURRUNNGKNK==6,,600000,0,,,30306==::6::660336666:0363,300,,,)),))))%%%%%"""\1f\1f\1f\1f\e\e\e\e\18\18\18\14\11\11\11\e\ e
+
+\ e\ e
+\a\99\9c\99__\_cffffififmfmimmpppmpppwtptpppttppttwwwwz~\81\85\85\81\85\81\81\81\85\85\8b\8b\88\8b\96\99\99\92\92\8b\8b\8f\88\85zzzzwpmmfimmmt~zzzzzzzzwzwwtwzzzzwzzzzzz~~z\96\8f\85\88\8b\88\8b\88\85\85\85\88\88\8b\8b\8f\8f\8f\92\96\99\99\99  ££££ £££§£££  \9c \9c   £§ªª§§ªª­­±´­´´ª­§£ªªªª­§§§§£££££ £§\9c\9c\9c\9c\9c £ \9c £££§ª­­­±¸¸¸´´­­­ª§££  \9c\9c\99\9c\99\99\96\99\96\96\99\99\96\96\96\92\92\92\92\8f\8b\8b\8b\85\81\81\85\85\85\85\81\81~zztptttwwzz\81~z~\81~~~zwwtt6D\_DRKfifmcfc_fcfcc_\XRNNKGGKNGR\Xttz~~\8f­±­±´´´±­­ª­§££ \9c\8f\8f\92\8f\8b\8b\8b\88\8b\88\8f\8b\8f\92\8b\8f\8f\8b\92\8f\8b\8f\8b\8f\88\88\88\81\81\81~~zzwwppifmimmppppppppmiccicp_\9ct\99\96\96\92\8f\8f\88\8b\85~~zzwtwtttww~~\81~~zwwwptpppppmif___URNRNRNKRUUXXRRK==:0))%)),)",,))),06:6=ADKRUX\X\_cX_XXci\8f\81\8b\8b\88\88\85\81~~wwwtwwztz~z~\81\81\8b\88\85\85\85\81\85\85\88\8b\8f\92\92\92\8f\96\96\92\92\92\92\92\92\92\92\8f\92\8f\8b\88\85\81\81ztwttppmmificffccfiiptz~\88\85\88\8b\8b\8b\8b\88\88\85\85\85\85\81\85\85\81~~\81~twtiiiifc\\\cimpmmmpfc\ccc___cfc_ffiiii\iUU_f_miifc__URRKKGGKGGDAD:::::::::::::DDAGGDAGADDKKNNNNRNNRKKDGNGAA6,063030,)0),00,33:AA==:::6633333:363333,0,0,,,,)))))))%%%%%%""""\1f\1f\e\e\e\18\18\18\14\11\11\14\1f\11\ e
+\ e
+
+\ 3\99\99\9c\\\cfffffffiiiiifmmpmpmmmpwptpmpmptptwtwwtwzz\81\85\85\81\85\81\85\81\85\88\8f\8f\8b\8f\96\99\99\92\92\8f\8f\8f\85\85zzzzztpmiimppwzzzzzzzzzzzzzwwz~~zwz~zzzzzzz\92\8b\88\8b\8f\8b\8b\88\88\88\85\85\88\8b\8b\92\92\92\92\99\99\9c\9c££§££££ ££§§§£  \9c£  \9c £ª§ªª§ªª­±±´±´´­ª§£§ª§§­££££££££££ £   \9c\9c  \9c   £§ªª­­­±´´´­±±­­ª§§£££  \9c\99\9c\9c\99\99\99\99\9c\99\99\96\92\92\92\8f\8f\8f\8f\88\88\85\81~\81\81\81\85\81~~wwppppttwzz~z~~\81zzzwtR3=3=3A=ADKNDi____cccfc__XURNKDGGKGN\\pw~\81\81\92±´±´´´¸´´±±±ª§£\9c\99\92\92\8f\8b\88\8f\88\8b\8b\88\8b\8f\8f\92\8f\92\92\8f\92\8f\8b\8f\8b\8f\8b\88\88\85\85\85\81\81~~zzttpimimimmtmttpmifc__cm_\88t\96\99\92\8f\8b\8b\85\88\81zzzwpptpppttwz~z~zwwwttppptpmif__\URRRNRRKUUXXXNNG::6,))%%%)%"),%))),6=3DDKNUX\\XX\c\c\XXf\8f\8f\8f\88\88\85\81~~~wwwttwwwwzz~\81\85\88\88\85\81\85\85\81\85\88\8b\8f\92\96\96\92\96\92\96\92\92\96\8f\8f\8f\8f\8f\8f\8b\88\85\85\81~wptppmmiiffififcciiittz\81\88\88\88\8b\88\8b\8b\85\85\88\85\85\81\81\81\85\81~~\81\81wzwwmpwifftttwttppptfc\_cc____cf\fciffffmUmcf_piii_\\XRNKKGGKDGAAA::::::::::===AADDGD=GAAANGKNNKNKKNGGADKD==:0333063))0),,0006=A==A=66336360060600030,)0))),,,,))))))%%%%%"""""\1f\1f\e\e\e\18\14\11\11\14\e\11\ e
+\ e\a
+\ 3\9c\9c ____cffffffiimmiimmpmpmmmptptpmmmpppptwwttzzz\81\85\85\85\85\81\85\85\85\88\8f\92\8b\8f\96\99\99\96\92\8f\8b\8b\81\85zwzwzttmmmptttwzzzzzzz~~~z~zz~~~~zz~z~zzzwz\96\8b\8b\8b\8f\8b\8b\88\88\85\85\85\88\8f\8f\92\92\92\96\99\9c\9c §§ª§§§£\9c£ ££§££\9c\9c    £§ª§ª§ªª­ª­±´´±´­§§§§§££ª£ £  £ £ £ ££      \9c£ £££ªª±­­±´±´­±±±­­ª§££££  \9c  \9c\9c\9c\9c\9c\9c\99\99\92\96\92\92\8f\92\8f\8b\88\81\81~~\81~\81~~~ztpptptwwwwzz~z~wwwfR=0603036=AGGDGU\\\c__c_\\UURKGDGGKKG\ctz\81\88\8b\96´´´¸¸¸»¸¸´´±­§£\9c\9c\92\96\8f\8f\88\8b\88\8b\8b\8b\88\8f\8b\92\8b\92\8f\8b\92\8f\8b\8f\8b\8f\8b\8b\8b\88\88\88\85\85\81\81~~wttmpmpmimtpttmpmff___i_it\92\99\8f\8f\88\88\85\85zzzwtmitpmpmptz~z~~wzzwtttptpmmfc_\URRRKNRNUXXXUKKA:30)%)"%")""))")%))3:=GGNRX\\\U\X___\cXf\8b\92\8f\85\88\85~~~zwtwtwwtwtwwz\81\88\88\88\85\81\85\88\85\85\88\88\92\96\96\99\96\96\96\92\92\92\92\8f\8f\8b\8b\8b\8b\8b\88\85\85~~wppmmfimiicffifffiiipw~\81\88\88\88\8b\85\8b\88\88\85\85\81\81\81~\81\85\85~~\81\81z~zzzzzw~wwwwzwwwpttff_c_c__\\_c\c_icccimXpcffpiffc\XUNNKKGGGGGADD=:::::========ADDGDAD==DKGGKRGKAGKDDAA::::63306,30))0,),,0,6:=::=:66066030,3,3,,000,),)))))))))))))))%%%%%%"""\1f\1f\1f\1f\e\18\18\14\14\e\ e
+\a\ e
+
+\a\9c\99\9c_\__ffcfffcifiimimpppmpmmppppmimmpmmpptwtww~~\81\85\85\88\85\81\85\85\81\88\8b\8f\8b\8b\92\8f\96\92\92\8f\8f\88~\85zwwwztwptptttpwwwzz~~z~\81~z~z~\81~\81\81~z~zzzzzwz\92\8f\8b\8f\8b\8b\8b\88\88\85\85\81\88\8b\8f\96\96\96\99\9c ££ªªª§ª££  \9c  £££ \9c  £££§ªª­ª­ªª­±´¸±´´±ªª££§£§§££§\9c £££££££           ££§§­­­­´±±­±±±­±ª§£§§§ £  £      \9c\9c\96\96\92\96\8f\8f\8f\8b\88\81\81~\81~~\81~~~ztttttpwtwtwwzwzttUA::00,3006:=DADGGNUX_\__\XXRRNKGDGDGGG\wt~\85\8b\8f\96¸¸¸´¸»¸»»¸¸±±­£\9c \96\99\92\8f\8b\8f\88\8b\8b\8b\8b\8b\8b\92\8f\8f\92\8f\92\8b\8f\92\8b\8f\8f\8f\88\88\88\8b\88\85\85\85z~wzwptmmpiptttpmpiic_ccfcmt\96\96\8b\8f\88\85\85\81zwwwtpipmmpmppw~wzzzwwwttwptpmmic\XXRUUNRUNRXXXUK=:600))%\1f"\1f%%%%%"%%%%06AKGRU\__\X\X\__\\85Xf\8f\8f\8b\85\88\85zz~zwtwtwwtwtwzw\81\85\85\85\81\85\85\88\85\88\8b\8b\92\96\92\96\96\92\96\8f\92\8f\92\8f\8f\8b\88\88\88\88\85\81\81~~wtpmmifmficiiffiiipttzz\81\88\85\88\88\88\8b\88\88\81\85~~\81~~\81\81~z~\85~\81~~~~~z\81zzzzzzwztttiicf_c__\U\__c\fc__imfmfiimmiff_XUNNKKGGGDGAADA=============ADADDDDAADGDAGNAK=6DAA==::66630,3,00),,0),,,,36:66:6:6)66300,,00),,0,)))))))))))))))))))))%%%%%""""\1f\1f\e\e\e\e\e\ e
+\a
+
+\a\a\9c\99\99\X\ccffccffiiffmiipptpmppppppiiimpfmmppttww~\81\81\85\85\88\88\85\85\85\81\85\88\8b\8b\88\8f\8b\92\92\92\8f\8f\88~\81~twtwtwtwttttptttzz~~z~\81~~~~\81\81\81\85\85\81~\81z~z~zwz\8f\8f\8f\8f\8f\8f\8f\8b\88\88\85\85\88\8b\8b\96\99\99\9c £§§ª§ª§§ £ \9c\9c   £ £ £££§§§ªª­ªª­­±´´¸±¸´­­ª§§£££££££    ££      £    \9c£ £ §§­­ª­±­­­±±­±­ª§§ªª§£££££££££££  \99\96\96\96\92\8f\8f\88\8b\85\85\81\81~\81\81\81~\81zwttwtttptppmwpppmR:6300)0,066:AAAGGNRU\X\UXXURRNNGGGDGGR_tw\81\8b\8f\8f±´¸»¸»»¸»¸´¸´´±§  \99\96\92\8f\88\8b\8b\8f\8b\8f\8f\8b\8f\92\92\92\92\92\92\8f\8f\8f\8b\8f\8f\8f\8b\8b\88\8b\8b\88\85\85~\81z~wttpppiptwttppmfc\__fcmp\92\96\8f\8f\88\85\81\81wtwzttimmppimptzwwzzwztwpwptppiic_\\RUUNUXUUX\XXG:63,0),%"%""%%"%")%%%06DKKUXX_c_\_X\__\\88Xc\8b\8f\8b\88\85\81~zzwwpwptwtttzzz\81\88\88\85\85\81\85\85\88\88\8f\8f\96\96\92\96\96\96\92\8f\92\8f\8f\8b\8b\8b\85\85\85\85\81~~~zttmimmiiffcimiiimitwtzz\81\85\85\88\88\88\88\85\85\81\81\81~\81~~~~zz\81\85~\81~\81~\81\81~\81~z~zz~z~wtwiiff___\\U\\__Xc_\ciiiiimmmiffi_\URNNKGGGDGA=A===============AADDDDAAA6DADK=GA:====:6:63303,0,,0,),,))00033636:366,3333,0),,),),)))))))))))))))))))))))))%%"""""\1f\1f\1f\1f\1f\1f\18\14\14\11
+\a\ 3\99\96\99\UX__cfccffiiiimmmmpwtpppppmmimfipimpppttww~\81\81\85\85\88\88\88\88\88\85\85\88\88\88\85\8b\88\92\96\92\8f\8f\88\81\81~wzwzwwtzzwtwttwwzw~z~~~~\81~\81\85\85\85\81\85\81\81~zzzzzwz\8f\8f\8f\8b\8f\8f\8b\8b\8b\88\88\85\85\8b\8b\99\9c\99 £§ªª­ªª§§  \9c \99 \9c£ ££ §§£§ªª§­­­ª±­­´¸»´»¸±­ªª§£ ££    \9c\9c  £\9c \9c     \9c  \9c    §§ªªªª­­­­±±±±­­±ª­ªª§§§§§§§§§§§££\9c\9c\96\96\96\92\92\8b\8b\88\88\85\85\81\81\81\81~\85~zwtwwttpppmmmppm=A30,00),,036:ADADGKKNRURRNURRRNKKKGDKKUcpz\85\8f\96\92´±¸¸´¸»¸»»´»´±´ª££\99\96\96\8f\8b\8f\8f\8b\8f\92\8f\8b\92\8f\92\92\96\92\92\92\8f\92\8f\8f\8b\8f\8b\8b\88\8b\8b\8b\88\88\81\81~\81wwttttpptwwwmmicc\_\cfmp\8f\92\8b\8f\88\88\85\85twzwwpmmmppimmpwwtwwtwwwpttttpmmf__\XXXRUXXX\\UUG=6300,,)%)%\1f)%")%)%),3:GNRXXX_c_\__\ccp\8bX\8f\8f\8f\8f\88\85~zzzttptptttttwz~~\85\85\81\81~\85\85\88\8b\92\92\92\96\96\96\96\96\92\92\92\8b\8f\8b\88\88\81\81\85\81\81w~zzppmmmmmmiifimimimmwwwwz~\85\81\88\85\85\88\85\85~~~z~z~z~zz\81\81\81\81~\81~\81~z\81zwzz~~~~zwwmiif__\XXXX\__X_\\_fiifiiimifcf__RNKKKGGDDDD==================DAADDA=D:A==A=DA6=::=06:6,0,0,,000,)00,)0333,,03606300)00,,),)%)%)))%%%%%))))))))))))))))))%%%%%%%"""""\1f\e\e\e\18\11\a\ 3\0\96\96\X\_ccfcciiimmimppptttptppmmmfiimmimmppttwt~~\81\85\85\88\85\88\88\88\88\85\88\88\85\85\85\85\92\96\96\8f\8b\88\85~~z~zzzzw~~zwwwwwzzw~w~~~~~~~\85\85\85\81\81~~z~zzzzw~\8b\8f\8f\8b\92\8b\8b\8f\8b\8b\88\85\88\8f\8f\96\9c\9c££§§ª­­ªª£    \9c\9c\9c£ £ ££§§§ªªªª­­­±±±¸¸¸¸¸»±­­§§££  \9c\9c  \9c\9c \9c£\99  \9c\9c\9c\9c\9c\9c\9c\9c\9c\9c\9c\9c ££§ªªª­ª­­­­­­­±´­±ªª§§§§ª§§§ªªª§§  \99\99\99\92\96\8f\8f\8b\8b\88\81\85\85\85\88\81\81\81~wwztttmpmmpimmi:0),,,,,),,33:=DADGGGDKNKKKURRRNKKKGGKNUctw\81\92\99£´´´¸¸¸»»¾»¸¾¸´´­§§  \99\96\8f\92\92\8b\92\92\8f\88\8f\8f\8f\96\99\92\96\96\8f\96\92\8f\8f\8f\8f\8b\8b\8b\8b\8b\88\8b\85\85\81\81zztwwtttwztwpif\___U_fmp\92\8f\8b\8b\8b\8b\88\85wwwwwtppmpmimipttpttpttttwttttpmic\\\\XUXU\\\\URD=33000)))%"%))")%)%)066KNU\_cccc_cc_ic\85\8b\\8f\92\8f\8b\8b\85z~zwppptpptpttwzzz\85\81\81~~\85\85\88\8b\92\96\92\92\96\96\92\96\92\92\8f\8f\8f\88\88\88~~\81\81\81z~wzpmmpmpmmmmiiimmmmpwwwwwz\81\81\85\85\81\85\81\85~z~wzwzw~zz~~~~~~~~~z~zwz~~~\81~zzwmiicc_XUUXU\_\\\U\\cffciffiffccccXKNKGGGDDDDAAAA=============AAAAAAA=A===:::=A3:=6:3363,)0,,,,,0))00,,030000,03030,,),,,)%)%"%""%%%%%%%%))))),,,,))))))))))%%%%%"""""\1f\1f\1f\1f\e\18\18\11\11\0\96X\\\cccfcfiimpiptttwwtppmmimififmpmpmpmtttwz~\85\81\85\88\88\88\88\85\8b\85\88\88\85\85\81\81\8f\96\96\92\88\88\88~~~~zzzzz\81\81~zwzzzzzwzw~~~~~\81~\81\85\81\81~~zz~zzwww~\88\8f\8b\8f\8f\8f\8f\8f\8b\8b\8b\88\88\8f\92\9c  ££§§ª­ªªª££\9c   \9c\9c \9c \9c §§§§ªªª­­­±±´´¸¸»´¸»´­ªª§££\9c      \9c\9c\99 \96\9c \9c\9c\9c\99\99\99\9c\99\9c\99\99\99\9c  £§ªª­ªª­ª­­­ª­±­­ªªªªª§ª§ª§§ª§ªª££\9c\9c\99\96\99\92\8f\8b\8b\8b\85\85\85\85\8b\88\8b\85\81zzzwtwptmpmimif60,)),,))),006:A=AGDGGGDDGGRRRNNKKKGGKNU_tt~\8f\9cª´¸¸¸´¸¸¾»¾»¾»´´ªª§££\9c\99\92\96\92\92\92\92\8f\88\8f\8f\8f\99\96\96\99\96\92\99\96\8f\92\8b\92\8f\8f\8b\8b\8f\8b\8b\88\85\85\81~ztwzwwtz~wttfc\__\X_cmp\8f\8b\8b\8f\88\88\85\81zzwztwpppmiimmpppmppmpppptttwtpmif_____X\X_\\\UND=3300,),)"%))%0)))),3:ANNX_cffffiff_tc\88\88\\92\8f\8b\8b\88\88z~wttpmtppttwttwzz\81~\81~~\85\85\8b\88\92\92\92\96\96\96\96\96\96\92\8b\8f\8f\85\88\85~~\85~~~~wztimpmpmimmmmmmmpmttwwwtz~\85\81\81\81\81\81\81\81z~zzzwwzwwzzzzzz~zzwzzzzz~~~~~zwiii_c_XXXXXX\XXXU\\Rcfcfcc\cc___f\KRGGKKGDDDDDDAA===AAAAA=====ADAA=AAA==:=:::=%::666333),,,,),,,)),00)300030,,,030),))0)%"%%\1f\1f\1f\1f"%%%%%))))))))),,,,,,,)),,,)))))%%%%"""""\1f\e\e\e\e\e\11X\X__cfffffiptmpttwtwwtmmmfiififmpmpmpptptwz~\81\81\85\88\88\85\85\81\88\85\85\8b\85\81~~\8b\92\96\8f\88\88\85\81\81~\81zz~~z\81\81~~w~z~zzw~w~~~~z~~\81\81~\81~zzwzwwtzw\81\8b\8b\8b\8f\8f\8f\8f\8f\8f\8b\8f\88\8b\92\96 £ §£§£§ª§ª§§§   \9c \9c   \9c£ª£££§§ª­­­´´¸¸»¸»¸»¸´­­§ª££\9c    \9c\9c\99\99\9c\9c\99\9c\9c\9c\9c\99\96\99\9c\9c\96\99\96\96\9c\99\9c £§ªªªªªª§ªª­­­­­­­ªªªªª§§ª£§§ªªª££  \9c\99\99\92\8f\88\8b\8b\88\88\88\8b\8f\8b\8f\8f\85\85~~zwwtpmpmiifA3,,,)))%%%,0,36=:DDDDDADDGDNRRNNKKKKKNRX\pm~\85 ­¸¸»¸¸¸»»¸¾»»¸¸±§ªª§£ \9c\96\99\96\96\96\8f\8f\8b\8b\8f\8f\96\96\99\99\99\96\9c\96\92\96\8b\92\8b\8f\8f\8f\92\8f\8b\8b\88\88\81\81zwwwzzw~~zppf___\_X_cmz\8f\8b\8b\8b\88\88\88~~~zzwwtpppiimmppmfmmimmmmpppwttpmiccccc\_\_\\\UKG:66030,,,%)0,%3),,,,3=DKU\ffmtm\81mifczw\8b\88_\8f\8f\8b\8b\88\88~~tpwtmtppttwwttzz~~\81\81\81\85\88\8b\88\8f\8f\8f\96\96\92\92\92\96\92\8f\8f\8b\88\88\85\81~\85z~~~zwwmptptpmpmppppppptpttwpw~\81\81\81\85\81~~\81w~zzzztzttwwtwwwzwzwzzzzz~\81~~zwziffc_\UXUX\\\XX\X\_N_ccc__\c__U\f_NUGGNNGDDGDDAAAAAAAAAAA===A==AAA=AA=AA:A==::0::6,3030),),,))),),0,,,6,0,03,,,,0,%)%),%"\1f""\e\e\e\18\1f""""%%)))))))),,,,,,,,,000,,,,,)))))"""""\1f\1f\1f\1f\1f\eX\X\__cfffiitpptttwwwtpipmffiimimpptppppptwz~\81\81\81\88\85\81\85\81\85\85\85\8f\85~~~\88\8f\99\8b\88\88\85\81\85~\81z~~\81~~\81~\81z~~~zzwzw~z~~zzz~~~~zwztwtttzz\81\8b\8f\8f\8f\8f\8f\8b\92\8f\8f\8f\88\8f\96\99£§ £££§£ª§ª§§§£ \9c \9c ££  £§§§§£§ªª±±´¸¸»»»¾¸»´¸±­ªª   \9c\9c\9c\9c  \9c\99\9c\9c\99\99\9c\9c\99\9c\99\96\9c\99\96\96\96\96\99\99\9c ££§§§ª§§§§§­­ªª­±­ª­ª­ªªªª§ªª§§ª£  \9c\99\9c\96\92\8f\8b\8b\88\8b\88\8b\8f\92\8f\92\92\8b\8b\81\81zwwwpmpmiif60,)))%%"""),)0006AADDAAAADAKNNNKKKNKKNRXXmpz\85£±¸¸¾¸»»»¸»»¸»´´­£§ª£££\9c\99\9c\99\99\92\8b\8b\88\88\8b\92\92\96\99\99\9c\99\9c\99\96\96\8f\92\8f\8f\8f\92\8f\8f\8b\8b\8b\85\85\81~zwzzzz~~wpmi__\_\Xc_m~\8f\88\88\8b\88\88\85\81\81~~zzwtttpmiimmmfciffifiiffmtpttpmcffcf\\__\\XUKD=6:333,003,3003,0,03:AGG\_iip\81\85\85\88\8b\8b\8b\8b\81\8b\8b\8b\92\8b\8f\8b\85\85~~wtwtpttpttwwwtwzz\81\81\81\85\85\88\8b\8b\8f\8b\8f\96\92\92\8f\92\96\92\8f\8f\8b\88\88\85\81~\81z~~zztwppwpptppmppmttppwtwttpw~\81~\81\81~~z\81z~wzzzt~tpwwttwtwwww~wwzzz\81~~wtwfccc_\UUX\\XXXX\U__NX_cc\XX_X\U\c\KXKKKNKGAGADDAAAAAAAAAA===AAAAADAAAADA:A==:0366300,0,)))))))),),,0,,600,00,,,,0)%%"%)"\1f\e\e\1f\14\14\11\14\11"""%%%%))))),,,,,,,,,,,00000000,,,,,)))))"""""\1fX\\X_c_fcifitptwtwtwtwmimmiimmpmptttpmppttwz~~~\85\85\81\85\81\85\81\85\88\8b\85\81\81\81\85\8b\92\8f\8b\8b\85\81\88~~~z~\81~\81\81~\85z\81~~zzzwwzwz\81~zzz~~zzwwwwtttzz\81\8f\8f\8f\8f\8f\8b\8f\8f\8f\8f\8f\88\8f\96\9c££ ££ ££ªªªª§£££\9c£  £££££§§§§§§ªª±­±´¸¾»¾»»»¸´±±­ª£  \9c  \9c  \9c\9c\9c\9c\99\9c\9c\99\96\99\99\96\99\96\96\96\96\92\9c\9c\9c\9c £§£§§§§§§§ª­§­ª±±­­­­­ª§­§ª§§§§  \9c\99\96\99\92\8f\8f\8b\8b\85\88\88\8f\92\96\92\96\96\8f\8f\85\85zzwttppmifc0,))%)\1f"\1f\1f\1f%)%,,,3=:AA=AAAADGKKKNKKKKGRRX\fmz\81´´¸»¾»»»»»¸¾¸¸±±ª££§   \99\9c\99\9c\96\8f\88\88\8b\88\88\92\92\96\99\9c\9c\9c \99\99\99\8f\8f\92\8f\92\96\8f\92\8b\88\88\88\88\85\81~zz~z~~\81wpmm___c_\fpm\8f\8b\85\88\88\85\85\85\85\81\81\81~~zwwttmiimiic_fcU_cc__cfpmpptpfiffc_\_\X\XUNDA:=3:60:3:0:03363,06ADKGcim\85\81\88\88\88\8b\8f\8f\8b\8f\85\8b\8b\88\8f\8f\8f\8b\85\81~~zttpptppwtwwttt~z\81\85\81\88\88\88\8b\8f\8f\8f\8f\92\92\8f\8f\92\92\92\8f\8f\8f\88\85\85\81z\81z~~zwwwpptttwptpppmtttptttppmt~~~~~~~w\81z~z~zwwztpttpptttwww~wtzwz~zztwtc____XUKUX\X\XU_U\_UX\c_\XX\\_UXXXNUNNNRGDDDDDADADAAAAAAA===DDDDDDDADAA==A::=066603,),,))))))),,)))0,,330,000,,,0))%""%\1f\e\18\14\e\11\11\ e\a\11\1f\1f\1f""%%%%)))),,,,,000000000000000000,,,00)))))"\XX\_c_iffimptptwwwwttmmpmiipmppttttpppttptz~~z\85\81\81\85\81\81\85\85\88\88\85\81~\85\85\88\88\8b\88\88\85\81\85~~~~\81~\81\81\81\81\85z\81~~~zzwtwww~zz~zzzwwttttpttzz~\92\8f\8f\8f\8f\8f\8f\8b\8f\8f\8b\8b\8f\96 £§ §§  £§§§ª£  £ £££§§££££§§§§§ª­±ª´´¸»»¾¸»¸»¸´­­ª§££     £\99\9c \9c\99 \9c\99\99\99\96\96\96\96\96\96\96\96\9c\9c\9c\9c££££§££££§§§ª§ªª­±±±±­­ªªª§§§£§£\9c\9c\99\96\92\96\8f\8b\8b\88\88\81\85\85\8b\8f\96\96\99\99\92\92\88\81~~zwwpmmi63,,%%"%\e\1f\e\e\e"%")),,:6==:A=ADDGKKGKKNKNGRNX_cmz\85±´»¸¾»¾»»»¸»¸­­­§£ £\9c\9c\9c\96\99\96\99\92\8b\85\85\88\88\85\8f\92\96\99\99\9c\9c\9c\99\9c\99\92\92\96\92\92\92\92\92\8b\8f\88\8b\8b\85\85\85~~\81\81\81~\81zpim_cccc_itm\8b\81\88\85\85\88\88\88\85\85\81\85\81\81wzwwpmiiif_\\_XRU\\X\\_cimmpmimfccc__\X\URNGD==3=:3=:=0=363:630ADGURfpm\88\85\8b\8b\8b\8f\92\92\8f\8b\88\8b\8b\8b\8b\8f\8f\8b\81~~zwpttmpptwtwtttpzz\81\88\81\88\8b\8b\8b\8f\8f\8b\8f\8f\8f\8b\8b\92\8f\8f\8f\8b\8f\88\85\85\81~\81~zzzwzttttwwtttppmppppmpptmpitzzz~z\81\81z~zzz~~zwwtpppmppptwwtzttzwzzzwttp_c\_\UXKUU\XXXX\XX_XU___\XU\X\UXXURRKNRNKGADADDDADAAAAAAA==ADDAADAAAAAA::=:::3333,3)))),))))))),)),00,033,,,00,,0)%%%\1f"\e\18\14\18\11
+
+
+
+\11\1f\1f\1f"""%%%%))),,,,,0000033303333333330003300000)\X\\__cfffmppttpwttttpmimpmmpptptwwtptptwtt~~\81~\81\81\81\88\81\81\81\81\88\85\88\85\81\85\85\85\88\88\85\85\85\85\85~\81~\81~\81\81\81~\81\81~\81~z~zwwwwwwzwwzzwzwwtptppttwzz\8f\8b\8f\8f\92\8f\8f\88\8f\8f\8f\8b\92\99 ££ §£ £§§§§§£\9c £ £££££§£§£§£§£ªªª­­´´´¸»»¸»¸»´±­ª§ª§§£ ££ £\9c\9c\9c\99\99\9c\99\9c\9c\99\99\96\99\99\96\96\96\99\99\9c\9c\9c    £££  £§£§§ª­±´´±±±­­­­ª§§££ \99\99\92\92\8f\8f\8b\88\88\88\85~\81\81\88\8b\92\96\99\99\92\92\8b\85\81\81~wtpiif60,)%%%%\18\1f\e\18\e"""%)))06:::=AADDGGKGKKNNNNRRX_fmw´´´¸»»¸¾¾¾»¸¸´ª§ª\9c \9c\9c\99\99\99\92\96\92\96\8f\88\81\81\85\85\85\8b\92\92\96\96\9c\9c\9c\9c\9c\99\96\96\96\96\96\99\96\96\8f\92\8f\8b\8f\8b\88\88\85\85\81\85\85~\81zpimfcfffcfw\85~\81\85\85\85\85\88\88\88\85\81\88\85\81wzzwpmfffc\XRUURRNUUXUU\c_imififc__c\\XXXRNGGDDAA==A=A:A6:6=66GKRUXUiw~\8b\88\8f\8f\8f\8f\96\96\92\88\8b\8f\8b\8b\8f\92\8f\8f\81~~zwmttpmpwttwttwtz~\81\88\85\8b\8f\8f\8b\8f\8b\8f\8b\8b\8f\8b\8b\8f\8f\8b\8f\88\8b\88\85\85\81~\85~zzwz~wwwwwwtpttmmpmmmmmmpipipzzwzw~\81~~~z~\81~zwtpmpmppppttwwwttwzzzztppi_c\_XUUUXU\X\X\\\U_\X_\_\UXX\XUUXRNNNNNNKKKGDKRDDAAAAAAAA===DAAAD==A=A==:==666000)0,))))))%%))%,))00,00000,,00000))%""\1f\e\18\14\14\11\a
+\a\ e\ e\1f\1f"""""%%%)))),,,000003333336663666636666366660\\\_\_cfcimpptttttttppmmpppppmpptwwpttpptww~\81\81\81\85\85\81\85\81\85~\85\88\81\85\88\85\85\88\88\85\85\85\85\85\85\85\81\81~~~~~~\81\81\81~~~zzzzzwwwzwzwwwtwztpmtpppttwz\8b\8b\8b\8b\8f\8b\8b\88\8f\8b\8f\8f\96\9c £ £££  £££§££  £ §££§£££§§£§§§ªª­±­±´±´¸¸´¸¸¸´´­­ªª§ª££££££ \99\9c\9c\96\99\96\99\99\96\96\96\96\99\96\92\99\99\99\9c\99\9c \9c     \9c £§££§ª­´´´±±±­­­ª§££  \99\96\92\8f\8f\8b\88\85\85\81\85\81~zz~\81\8f\92\96\96\8f\8f\8b\81~\81~tpmi=G630,))%"\e\1f\18\e\e\1f"""%%%,363:=ADDGGDKKKNNRNRUUX_fmw¸¸´»»¸»»»»»»¸±§£ \99\9c\99\92\8f\96\92\92\92\8b\8f\88\81~~~\81\85\88\8f\8f\92\99 \9c\9c\9c \9c\99\96\96\99\99\9c\99\96\92\96\92\8f\92\8f\8b\8b\88\88\85\88\85\81\81wtipifipfmmz\81~~\81\85\85\85\85\88\88\88\85\88\88\81~zztpicccXXUUURRRNRRRRURU\Xifcffc\__\\\\\URNDGGGAKADAA=A==6A6DRNU\fz\8f\8f\8f\8f\8b\8f\92\92\92\99\96\96\8b\88\8b\8b\8b\92\92\8f\8f\81~~zwpwwtpttttwttwwz\81\81\8b\88\8f\8b\8f\8b\8f\8f\8f\8b\8b\92\8b\8f\92\92\8b\8f\88\88\88\85\85\81~\85\81z~zw~wwwwtzwtttmimmmiiiipimipwwzzzz~~\81~~~~~zwtpmpppppttttwwptwwwwzpmii_c_\XURX\U_\_X__\X__\__\XXXUXXRRXRNKRNKKGNNKRNUKDKAADDAAA===A=DAD=A==A=A:::633,,)),))%%,)%%))%%,%,3,,,0,,0,,00003))%""\1f\e\18\14\14\ e\a
+\ 3
+\ e\1f\1f\1f"""%%%%)))),,,0003333366666:6::::6:::=6:===D\__\__cfffmmttttwpttppmpptptpptttwttwtpttwz~\81\85\85\85\85\81\81\81\81~\85\88\81\85\88\88\88\8b\85\85\85\81\85\81\81\81\81~~\81\81~~~\85~~zzzzzzzwwtwztwwwtttwpmmpppmtptw\88\8f\8b\8b\8b\8f\8f\8b\8b\8f\8f\92\99 £§ ££    £££££  £ £££££ §£££§§£§ª­´±´´±±¸´´´¸»´´±­­§£§§§£££  \9c\99\9c\96\96\99\99\99\96\99\92\96\96\92\92\99\99\99\9c\99\9c\9c\9c\9c\9c£ \9c\9c\9c ££ §­±´±´±±±­­­§£  \9c\99\96\92\8b\88\85\85\85\81~~\81~zwwztwwtw\8b\8b\88~~~zpmif::3300)%)"\e\e\18\e\e\e\1f""""%)033:=AAGGDGKKKKNUXUXX__fm´¸¸±¸»¸»»»¸¸¸´­£\9c\9c\92\8f\8f\8f\8b\92\8f\8f\8f\88\88\85~zwz~\81\85\8b\8b\8b\99\9c \9c\9c \9c\99\99\99\99\9c \9c\99\96\99\96\92\96\92\8f\8b\8b\8b\88\88\85\85\81zwtppimttttz~zz~\81\81\81\85\85\85\8b\88\88\88\81\81zzpmf__XXXRRRRNNNKKRNURRXX_\_cc_\___\\\\XRUURXKUNDGAAA=AA=ADKUUXm\88\8f\92\92\92\92\8f\92\8f\92\96\99\96\96\8b\8b\8f\8b\8f\96\92\8f\8f\81\85~~zttwtpwtwtwtwwwz\85\85\8b\8b\8b\8b\8f\8b\8f\8f\8b\8f\8f\92\8b\8f\8f\8f\8b\8b\88\88\88\88\88\85\81\85~~~~z~wzwwpwtpppmfiiiifcfpfpmpwwwwzz\81~\81~~~z~wttmimpppmpttptwpttwtwwmiim\c__XUR\_U__\\c__\\_\__\\X\XUURRUNNGNKGKKNRNURXNKNDDGAAAA===A=DDDAAAA=A=:66300))%)),))%,)))))%))),0)),,,,,,000003))%%"\1f\1f\e\18\11\11
+
+\a\ e
+\e\e\e\1f""%%%)))),,,,00033366666:::::===:===A==AAAG\\_\___ifimpwwwtwtttppmmtppppptptwtwtwtwtwz~\81\85\85\85\85\81\85\85\81\81\85\88~\85\85\85\88\8f\88\85\81\81\81\81\81~~~~~~~~~\81~~zwwzwwwwttwwwwwtttttpiimppipppt\85\8b\88\88\8b\8f\92\8f\8f\8f\92\96\99  § ££  \9c\99£££££££  £££££ £§§£ªª§ª­±´±´´´´´´´´¸¸´±­­ªª§ª£££  £\9c \99\99\96\96\96\96\99\96\96\92\96\96\96\96\99\9c\9c\9c\9c\99 \9c\99\9c \9c\9c\9c\9c  §££­­±­±±±­±ªª£ \99\96\8b\96\92\8f\85\85\81\81\81~zzzzwttpmpppptt\85z~zwfffA:=3300,%,"\1f\1f\14\18\e\e\1f\1f"\1f"%,)306=AAGGGGGKNNR\\X__fft­´´´±´¸¸»¸¸¸´ª±ª \9c\99\92\8b\8b\88\88\8f\8b\8b\88\85\85\81zttpp~~\88\8b\8b\96\99 \9c\9c\9c\9c\9c\9c\99\99 \9c \9c\99\9c\99\96\96\96\92\8f\8f\8f\8f\8b\88\88\85~zwttwpwwwwzz~w~~~~\81\81\88\88\88\88\85\81\85zwmic\UXUUNNURNNNKKRNRRUXX\\XX_\\___\\\\XUXXU\\XRKKGGGDDDAGU_XXwp\8b\8f\96\92\96\8f\92\92\92\92\92\99\92\96\8f\88\92\8f\92\96\92\92\8f\85\88~~~wwzwtwwwttptzw~\88\88\8f\8f\8b\8b\8b\8f\92\8f\8f\8f\92\8f\8f\8f\8f\8f\8b\8b\88\88\88\8b\8b\85\81\81~~\81\81z\81zztwptpppmicffffcfcmcpppwttwwz\81z\81z~zzztpppimpppmmptptwtttwpwtmifi\___\XN__X__\_c___X_X\\X\XXXURRRGNNKKGDGGNNRRUXRNRGGKDDAA==DD=DDDD=AA=D=:6600,)%"%%)%)))))),)%,,,,,%%),,,,,,00003))%%"\1f\1f\e\18\14\11\ e\ e
+\ e\ e\e\e\e\1f\1f\1f"%%%)),,,,00003336666:::::=====AAADAADDDK\X_X_\_icimmttwtwttppmmipmpptptttttttwwwwwzz~\85\81\81\85\81\81\85\81\81\85\85\81\85\85\81\85\8b\8b\81\81~\81~~zzzz~~~z~\81\81~wwtwtttttpttttttpttppifimmimmmm\88\88\85\88\88\8f\8f\8f\92\92\96\99\9c££§  £  \9c\9c  ££§££   £ ££££§§§ªªª§ª±´´´¸´´¸±¸´´´´±­­­ª§§§£££££\99\9c\99\99\96\96\96\96\96\96\92\92\96\96\92\96\99\9c\9c\99\9c\9c\9c\9c\9c\99\9c \9c\9c\9c ££££ª±­ª±­­±­§ª\9c\9c\8b\92\8b\8b\8f\8b\85\81~~~zwwwwpiiifffmmppwwzmiccAD=:6300)))\1f\1f\1f\18\18\e\e\1f\1f\1f\1f""),336:=DGGGKKNRRU_c\cfip­±±±´´±¸¸¸´´´­§£ \9c\9c\96\8f\88\85\88\88\8b\85\88\85\81\81wwimmmtz\85\88\88\92\92\9c\9c\99\99\9c\9c\9c\99\9c \99 \9c\9c\99\99\96\99\96\92\92\8f\92\92\8f\8b\8b\85~~zwwztzzzz~wztzwzw~~\85\85\85\88\81~\81wtifcUUUURKRRRNNNNKRRRUUXUXXXXXX\___\\\_\X\\X__\_NXK_KURNfK\cz\81~\85\8f\8f\96\92\96\8f\92\92\92\96\92\99\96\96\8f\8b\92\8b\92\96\96\96\8b\88\8b\81\81~zzzwwzwztwtpzz\81\85\8b\8f\8b\8f\8f\8b\92\8f\8b\8b\8f\96\8f\8f\8f\92\92\8f\8b\85\88\88\88\88\88\81\81\81\81\81\81z\81zzptppppmifccfffffficmmmtttzw~\81z~z~zzwptmpiipmpmpptptwtwtwtwpmiciX____\\__\_cX\___\X\\XXXXUXUXRRRKKNGDDDDDKKNRUXURRKKNGGDDD=GG=GGDD=AA=A=:6600,)%"""%%),%%,,,%)0),)0%))),,,,,00003))%%%"\1f\1f\e\18\14\ e
+\ e
+\ e\18\18\18\e\e\e""%%%)),,,00033336666::::====AAAAADDDDGGN\X_\__cfcimmpttttttmpiifmppptppptwttttwwwwwwz\81~~\81~~\81~~\81\85\81\81\85\81\81\88\88~\81~~zzwtww~z~~\81\81\81zwwtwttpppmtpppttptppmfcfiiffUfi\88\81\85\85\85\8f\92\8f\92\96\99\99 £ ££ £   \9c  §£££ \9c   £££§§§§ªª­­ª­´´´¸´¸´¸­´±±±´­­­ªªª§£ £ £ \9c\9c\99\96\92\96\99\96\96\96\96\96\96\96\96\96\99\9c\9c\9c\9c\9c\9c\9c\9c\99 \9c\9c\9c\9c\9c£££§ª­­§­ªª­ª£§\99\92\8b\8b\88\8b\88\88\81\81z~zwtttpff_fccciimmfmmiiDADDA:6300,)%\e\1f\e\e\18\18\18\1f\e\1f\1f"%%,636:ADGGKKKRUXXimfitw§±´±±´´±¸¸´±±± £ \99\99\99\92\8b\85\85\85\85\88\85\81\81~~ppfiiipwt\85\85\8f\8f\99\99\99\96\99\99\99\96\9c\9c\96\9c\99\99\99\99\99\99\96\92\92\92\96\96\92\8f\8f\8b\81\81zz~~z~~z~zwwwwwwwzz\81\81\81\85~z~wpfccRUURRNURRRRNNNNRUUUURUXXXXU\\\\\\_\_X\_\ccfc___cc\\XiN_f~\85\81\88\8f\8b\92\92\96\92\92\96\92\96\96\96\99\92\8b\88\8f\88\8f\96\96\96\8b\88\8b\81\81z~~zzzzzztzwtzz\81\81\8b\8b\8b\8f\8f\8b\8f\8f\8f\8f\8f\92\92\92\8f\92\92\8b\8b\88\88\88\85\85\88\85\85\85\85\81\81~\81zwppmpmmifc_cfccfffifmpittwwwz~w~z~wwtttppimppmmpttttwtwwwttpmici\___cX_\_\\_U\__\XX\XUX\UR\U\RNRKGNDDGDAAKDKNUXURNNNNKKDAGDKKGGGAD:A=AD==6300,)%"""%%%))%,,))%,,)%,%)%),)),,00003,)%%%""\1f\e\18\18\ e
+\ e
+\ e\14\14\14\18\18\18\1f\1f""%))),,00003336666::::===AAAAADDDDDGKN\\\\\__ffmmmmttpptpimmifmpmmpptpttptttwwwtttw~zz~zz~zz\81\85\85~\81~~~\85~~zzzwttttzz~~\81~~zwwwtppmppptpmppppppmmcccfcX\RUX\88\85\85\85\85\8b\92\8f\96\99\99\99\9c \9c££££ \9c  ££§£§£\9c\9c\9c\9c §£§ªª§ªª§ª­­±¸´´»¸´´´±±­­­±­ªª­ªª§£     \99\99\99\96\96\96\99\96\96\99\96\96\96\96\96\96\99\99\99\9c \9c \9c\99\99\9c\99\99\99\9c\9c£§£§­ªª§ª§§ª \99\99\96\8b\88\8b\88\88\85\85~~zzwwpppfc_____cfficfcfffGDAA=:6300,)%\1f\1f\1f\e\18\18\18\1f\1f"\1f"%),33:==DDDKNNUU\fmpptw\88ª±¸´±´´´´´±­±ª \9c\99\96\8f\96\8f\85\85\81\81\81\81\81~wwwpifffcmtpzz\8f\8b\96\96\99\92\96\96\96\96\99\99\92\99\96\96\96\96\99\99\96\96\96\96\96\96\92\92\92\8f\85\85~\81\81\81~\81~zzzwtwtwpwwtzz~zzzzwpc_cXXXURNRUNRURRNRNUUUURUXXUXXXX\\___\_\\___ficcccff__\mfc~\81\85\85\88\8f\8b\8f\96\96\92\92\96\96\96\96\96\99\96\8f\88\8b\8b\8b\99\96\99\8f\8b\8b\85\85~\81~~~~w~zw~wwzz\81~\88\88\8b\8b\8b\8b\8f\8f\92\8f\8f\8f\92\8f\8f\92\92\8b\8b\88\88\88\85\88\8b\85\88\85\85\81\85~~zwpfimiicc_\_cc_cccifmmitwzww~\81z~zzwztwppmimmmmmpttttwwtwttttifcfX_\__\\__XX\UX\\XUX\XU\\XUXUXURRNDNDGKGADKGDNRXXURRRNNNGDKGNNKGGDAAAAADA:6300,)%%""%%%),),,%%%))%%))%%)))),,,0003))%%%""\1f\1f\e\18\11\11\11\ e\ e\11\14\11\18\14\14\e\e\1f\1f"%))),,000333666:::=====AAAADDDGGGGKNX\\XX\_ccimmpptppptipiifipmppptmtpttttwwttpttzwzzzzzwz\81\81\81z~~wz~\81zzzwtppptzz~z~~~~wwtppmmmmppmipmmmmpiicc_c\UNNNU\88\85\85\81\88\8b\92\8f\96\99\99\96\99\9c ££££   £§§ª£§£\99 \9c\9c £§§ªªªªªª§±±´´¸´¸¸¸±´±­­±­­­­ªª§§££     \99\96\99\96\96\96\99\96\99\99\96\96\96\96\96\96\99\99\99\99\9c\9c \9c\99\99\99\96\96\99\99\9c££§ªªª§§£££§\99\96\92\92\8b\85\88\85\85\81~~~zwwtimfcc\___\_ccfccfcffGDD==::63,,)%"\1f\e\e\18\18\18\1f\1f""%%)0366==ADGKKRU__mpttw\92ª­­´´´±´±´±±ª­  \9c\99\96\92\8f\8b\81\81~~z~~wwttmcc_icimmzw\8b\8b\8b\92\96\8f\8f\92\85\92\96\8f\8f\96\92\92\92\96\96\96\96\96\96\99\96\96\96\92\96\92\88\85\85\85\85\85\81\81~zzwwptptptptptwtwwwtmf\c\\XURNRUURURRNUNXXXURXUXXUXXUX\\_\\\_\\__cifffccccccmmp~\85\81\85\88\8f\8f\92\92\96\8f\92\96\96\96\99\96\96\96\92\88\8f\8b\8f\99\99\99\92\8f\8f\88\85\81\81~\81~~z~~zzzwzz~\81\85\8b\88\8b\8b\8b\8f\92\92\8f\8f\8b\8f\8b\8f\8f\8f\8b\8b\88\88\88\85\88\88\85\85\81\85\81\81~\81wzmiiifffcc\__c\_ccifpmmwwwzz~~wzwwwztwpppmmmimmptttwzwtwtpppiiffX___G\\\_U\URX\XUXU\XUXXUXXXXUUUNGKDGKDGGKKDNNUXUURUNNRKGKKNKNKKG=D==AAA:6300,)%%""%%%%),0)""""%""%%%%)))),,,,003,,)%%"""\1f\e\e\14\14\14\ e
+\14\14\14\18\18\18\18\18\18\e\1f"%))),,00033666:::====AAAAADDDGGGGKK\X\\\_\c_fiippptpppmpimffpmppptptttttttwppmtpwtwtwwwtw~~~wzzwwz~z~zzwtpttwz~~~~~zztppmmiiimmmimiimimff___XRKGKNR\85\85\85\85\88\8b\92\92\99\99\99\99\99\9c §£§§££££§§ª§£ \9c\9c\99 ££§ªªªª­­ªª±­±¸´¸¸´´±±­ª­­­ªªªªª£§§£\9c £ \9c\9c\99\99\99\96\96\99\99\99\99\96\99\96\96\99\99\99\99\99\9c \9c\9c\9c\99\9c\99\99\96\99\9c\9c£££ªªª§£  \99\99\99\8f\8f\8f\88\81\85\85\81\81~z~zttpmmfc_X\__\\_____cccf_GD=:=:63),)"\1f\1f\1f\e\18\18\18\e\1f""%%,0366=ADGGKNU\ccpptw\81 ­±­´´´­±±±­­ªª\9c\9c\9c\96\92\92\8f\85~~zzzzzptmpic_cfcfipww\88\88\8b\8f\92\8b\8b\8b\85\8f\88\8b\8b\8f\8b\8f\8f\92\92\92\96\96\96\99\96\96\92\96\96\96\88\88\88\88\88\85\85\81zwwtwpppttppppppptttpmf__c\\XRURXXUUURRUNXXXUUXX\XUXXUX\\\\\_\X\\\_fffccffccfmpt~\85\85\88\8b\92\8f\8f\92\96\8b\92\96\96\92\96\96\96\96\92\92\92\8b\92\99\99\99\96\8f\8b\88\85\85~\81\81~~~~~zzzzzz~~\85\88\85\8b\8b\8f\92\8f\8f\8f\8f\8b\8b\85\8b\8b\8b\8b\88\88\88\85\81\88\85\85\81~\81~~~~zzpmiififc_\\____ffiimppwzwzw~zwwwwwztwptpmmpmmmpttwzzzwwpppmmiif\___G_\\_R\XU\_UUUU\XXUXRUXXXRURRKKGGKGKKGGNNRUUURRURRNKDKNNKNKNKDGA=D=A:6300,)%%""%%%%%,,%""%"%"%%%%%)))),,,,0030,)))%"""\1f\e\18\18\18\11\11\18\18\18\e\e\e\e\e\e\1f\1f\1f%%)),,,00333666:::==AAADDDDDGGGGGKKX\\\X\\c_ffipppppmpmmiiffmmmppptpttttwttpmppmpptttttttzzzwwwtz~~z\81z~zwppptzz~~\81~zwwppipifmmmmfifficicc\_\UNGDGKK\81\88\88\88\88\8b\92\96\96\99\99\96\99\9c££§§§§§§§§§§££\9c  \99\9c §§§ªªª­ª­ª±­±´¸¸¸±±­­ª­­ªªªªª§§££££  £\9c \99\9c\99\99\99\96\99\99\9c\99\96\99\99\99\99\99\9c\9c\9c\9c\9c\9c \9c\99\99\99\99\96\9c  £§£§ªªª \9c\96\96\96\96\8b\88\88\88\85\85\85\81\85~zzwwtppmc_\\_\_\\___\\___c\KDD:A::3,,%""\e\1f\e\18\18\18\e\1f""%),36:6AADGGKNU_ffttwz\85£­±±¸¸´±­­­ªª§ \99\9c\99\96\8f\8f\8b\85~\81zzzwwmpiiffcff_cfpwz\88\88\88\8b\88\88\8b\88\85\8b\85\88\88\8b\88\8b\8b\8f\8f\8f\92\92\92\96\96\96\92\96\92\92\8b\8b\8b\8b\88\85\85\81wttpttptppmtmmmmmptppmiccf_\\RXRX\XUXUUXU\X\XXXX\UXUXUU\\X\X_\X\X\_cccc_fcc_iitw~\85\88\8b\8b\8f\8f\8f\8f\92\8f\8f\92\96\92\92\92\96\96\92\96\92\8f\96\96\9c\99\96\8b\88\88\88\85\81\85\81~z~~~zzw~~w~\81\81\85\85\88\8f\8b\8f\8f\8b\8b\8b\8b\8b\85\88\8b\88\88\85\88\88\81~\85\81\81zzwtzz~zwtpiffif__\\___cffmmmtpwzzzwzwttttwwtwtwpmmpppmttwwzzzwttpmpmiii_c_NG\\\_R_\X\\RXUUXX\XXURXUUNRRUNNKDNGNNKRRNRRURUUURRKNKNNNNNKNKGKDAD:=66330,)%%""%%)%)))"%%"\1f""%%%%%)))),,,,003,,,))%%""\1f\1f\e\e\18\14\14\18\e\18\e\1f\1f\e\1f\1f"""%%))),,,0033366:::===AAADDDGGGKKKNK\\_XX\\cccffmmpmpmmmmffiipmppmppttpttttwpmmppppttppttpttttttwz\81\81~\81~\81wwttptwzz~~zztwppipffimmmiffcfcc__X\XRKDDDKK\85\88\88\8b\8b\8b\92\92\96\99\99\99\99 §§ªªªªª§ªª§§§£ \9c\9c\99\9c £§ª§§§ª§ª§­­±´¸´´´­±­ª­­­ª­§ªªª§£ £\9c£   \9c \9c\9c\9c\99\9c\9c\9c\99\96\9c\99\9c\99\9c\9c\99\9c\9c\9c\9c \9c\9c\99\9c\9c\99\9c ££§£ªª§§\9c\96\92\96\92\92\88\88\88\85\85\85\85\81\81~wzwwpmmi_\\X___\\\_\_X\\X_XNDG:A660),""%\1f\1f\e\18\18\e\1f\1f%%),,36::AADDGNNUcfitttw\88§­­±´´±±ªª­§§££\96\9c\96\92\88\8b\88\81~~wzwwwpfiicffcccffmtw\85\85\88\8b\8b\85\88\85\85\88\85\85\8b\8b\85\88\88\8f\8b\8b\92\8f\92\92\92\96\92\96\8f\92\8f\8b\88\8b\88\81\81~tpppppttptmpmmiiiipmmimific_\\\XX\\X\UX\\_\\\\XXXXUUURRXXX\X__X\\X__c__cccfcimtz~\85\8b\8b\8f\8f\8f\8f\8f\8f\8f\8b\8f\92\8f\96\8f\92\96\92\92\96\92\92\99\9c\96\92\8f\88\88\88\81\81\81\81zzz~~~zw~~z~~~\81\85\85\8b\88\8b\8b\88\88\88\8b\88\81\85\88\85\85\81\85\85~z\81z~zwwtwwzwtttmiiifccX___\_iipmpwtwwwwtwtptptzwtwwttpppppptwwzz~zzwttmtp\ eficc\NK\\D_R_\XXXRXURU\XXXUKURRKRRXNRKANKNRUUURRNXRUXXRUNNNRNNNNKNNKGAAA::33300,)%%""%%)%,,)%%"\1f\e\1f""%%%%)))),,0,003,,,)))%%""\1f\1f\e\e\18\18\e\1f\e\1f\1f\1f\1f\1f""%%%)))),,,00033366:::==AAADDDGGGKKKNNX\\\\__f_fccimmppimmiiffmpmmpmmpttptttttpppptmptttmppmmmmpptwz\81\81\81\81\81\81zzwwtwwzz~~~ztwtmmmfiimiiicc\c__\\UXUKGDADKK\88\8b\88\8b\8f\8f\92\8f\96\99\99\99\99 £ª­ª­­­§§ª§§£  \9c\99\99\99  §§§§§ª£§£ªª­´¸¸´´ª±­­ª­­ªª§ª§§§£\9c£\9c \9c   £   \99 \9c\9c\99\99\9c\99\99\99\99\99\99\99\9c\9c\9c  \9c\9c\9c\9c\9c  §£§§§§££\99\96\8f\92\8f\8f\85\88\88\81\81\85\85\81~zzzwtpmmic\XX\\_\\\_\\XXXXXUKDK==330),"""\e\1f\18\e\e\1f\1f"%),,036::DDDDKRRXcimpppt\85ª±±­´±±­­§ªªª£ \99\99\96\92\88\88\88~~~wzwwtmfmffffc__fimtt\81\88\88\88\88\85\85\81\85\88\88\88\8b\88\85\85\88\8b\88\8b\8f\8f\92\8f\92\92\92\96\8f\92\8f\8b\8b\8b\85~~zpmmmmpttttppmmffimmppimmiffc\__\_\_\_X\_____\_\\XXXUUUUUUUX\\\XXXU\____cccffmmw~\81\88\8b\88\8b\8f\8b\8f\8b\8f\8b\8b\8b\92\8f\92\92\96\92\92\96\96\92\96\9c \92\8f\8b\88\88\85\81\81\81~wzzz~~zz~~~~z~\81\85\81\88\85\85\88\85\8b\85\8b\85~\88\85\81\81~\81zzw~wwwttppwwwtptmmimifc\c\cX_imtptwwwzwttttptptwztwtttppttptwzw~~~zzzwwttp\11imfcXNN_\D_N\_X\UUXXNUXXUXRGRRRKNRXRRGDUNRUXXURURUUUU\UURRRNKRNNNRKKDD==66,0000,))%""%%%))),%"\1f"\e\1f""%%%%)))),,,,003,,))))%%%""\1f\1f\1f\e\e\1f\1f\1f\1f\1f\1f"""%%%))),,,,000033366:::===AADDDGGGKKKNN\\X\\_cfccccmipmmimiiiffmppppmmpttttttppppppppppppppmiiimimptz~~\81\81\81~~zzzwzwz~~~~~ttpmmpiimmmif__X\UXXXRNNKGAADGK\8b\8b\88\8b\8f\8f\92\92\92\96\99\99\9c §­­­±ªªª§§££  \9c\9c\99\99\9c  ££§££§§££§ª­´´´´´­±ª­ªª­­ªª§§§§  £    £££££ \9c \9c\9c\9c\9c\9c\9c\9c\99\9c\99\9c\99\99\9c\9c \9c\9c \9c\9c\9c  §£ª§£££\9c\96\92\8b\8f\8b\85\81\85\88\85\85\85\88\81\81zwzwpppifc_X\\\__\\\\\\UXXXNGGG==000%)%%"\1f\1f\e\e\1f\1f\1f"%),,06:6:DDGGKUUU_iimpmp\81\85´±±±±­­ª §§§£\9c\96\96\92\8f\85\85\85~~zzzwzpififffccccfimpp~\85\85\85\88\88\85\85\88\88\85\88\88\85\85\85\88\88\88\8b\8b\8f\8f\8f\92\92\92\96\8f\92\8f\8f\8b\88\81wzicfiiipptttptmiifimmmmmppmffc_c__c___\___c_c_\__\\XUURURRRRX_\\X\XUX\_\__fccimtz\81\85\88\88\88\8b\8f\8f\8f\88\8b\88\8b\8b\8f\8f\8f\92\99\92\96\96\96\96\92\99\9c\8f\8b\88\85\85\85\85~~~zww~z~~~\81~~~z\81\85\85\81\85\85\88\88\81\88\85\88\81z\85\85~~zttwmttttttmttwwtptppiiifc___c\cippppttwwwttwtpptttwtttttttttttzzz\81\81\81~~zzwwwt\14mpcfXNX_\\\KX_\\UXUUKUUXUXNKRNNGNUUUNDAXUUX\\XUURURRR\XURUUNKRRRNNKKDD==3\1f),,,,,))%""%%),,%,""""\1f"""%%%%)))),,,,003,,))))%%%%""\1f\1f\1f\1f\1f\1f\1f"\1f""""%%))),,,,0000333666:::===AADDDGGGKKKNN\\\X\c_icccfmmmiiimimiiiptpppmmppttptttppptptppmmpmmiffiifmptwzz~~\81~~~zzz~z~~~~~zppppmpmfmimic\UXURRRRNKGKKADDGK\8b\88\8b\8f\8f\92\92\92\96\92\96\99\9c£ª±±±±­­­ªª££  \9c\99\9c\99\9c   ££  ££ £§ªª´´±´´­­­­­ªªª§§££££ £ \9c   £££§§£ £ \9c \9c\9c\9c\9c\99\99\9c\9c\96\9c\9c\9c \99\9c  \9c   §§§§£  \99\92\8f\88\88\88\88\85\85\85\85\81\85\88\81\81wtwtpppii__X_\___\X\XXXUUUXNGGD=:00,)%%%"\1f\1f\1f\1f\1f\1f"")),)3::6=DDKGNUXX_fmmppmww\88±±±­­­§ §££ \99\96\8f\8f\8b\85\81\85\81\81zwztwpifficfccc_cfmmpw\81\81\85\88\88\88\88\85\88\85\85\85\85\85\88\88\8b\85\88\8b\8b\8f\92\92\96\92\92\92\96\8f\8b\88\85~wwfccfffmmpppmpmmiiippimmppmifccf_cfccc_cccfcfc__\_\\XRRRRNNNX\__XXXUX\\_\_c__fmw~\85\85\85\88\85\88\8b\8b\8f\81\88\8b\88\88\8b\8b\88\92\99\96\99\99\96\96\96\99\99\8b\85\88\85\85\81\81~zzwzwz~~\81~~~\81~~~\85\85\85\88\88\85\85\85\85\85\85\81~\81\85zzwtftmpmppppmpwttwttttmmmifcccc_fmptptttwwttpwtppppttttttttwwwtwz~~\81\81\81\81\81z~zzzwwptcf\_\_\X\KU\\\R\UXKXUUXUKNRNKKKXURKAA\XX\\\XUURRNNRXUUUUURNRUUNKKGDA=:\e\e\e)))))))%%"%%%0)",%"%"\1f%""%%%%)))),,,,00300,)))%%%%"""\1f\1f"""\1f%\1f""""%%%))),,00033336666:::===AAGDDDGGKKKNN_X\\Xccfcffimmmmifmimiiipppppimpptpmppppppppppmmmmmififfffimtwwwzz~~~~z~~\81~~z~z~zmmmmmpmimiif_XUXUNNRNKGGGGADDGG\8b\8b\8f\8f\8f\92\92\8f\96\8f\96\96\99£ª±­±±­ª­ªª£££ \9c\9c\9c\9c\9c \9c    \9c £\9c £ªª±±±±±ª­±ªªª§ªª§§£ ££ \9c  £ £ §ª§££ £  \9c\9c\9c \9c\9c \9c\99\9c\9c\9c\9c     £££§§§£§\9c\9c\99\8f\8b\85\88\81\88\85\88\88\85\81\81\88\81\81zttttpmmic____c\\\\\UUUUURUKDG=A:00,,%%""\1f"\e\1f\1f"%")),,3::6AADGKRXX\_ciippmttt±­±ªªª£ £  \9c\96\92\8b\8b\88\81\81\85\81~zwzwwtmiiificcccfcimppz\81\85\88\85\88\85\85\85\85\85\85\88\88\88\85\8b\88\8b\88\88\8f\92\96\96\92\96\96\96\8f\88\88\81wttc_\_cciimmpmpmmmimpmimmpmiiffcfcfffcccfcffffcc___\_\UURRNKNX\\_\\XXU\\__cc__fpz\81\88\85\85\85\81\85\88\88\8b~\85\88\85\85\88\88\85\92\96\96\99\99\99\99\99\96\92\88\81\85\81\85~~zwwtwwzz~~~~~\81\81~\81\85\85\88\8b\8b\88\81\85\81\85\85~~\81\81zztpfmmmmmmmmmmwttzwtwpmpmmicccccfipptttpwwtptttppmmtwttttttwzwwzz~~~\81\81~~z~~~~zwttff__\c\X\KRX_\N\UXKXRUXRGNRKKNNXRNGDA_\\\_\UUURNKGNURRRRURRUUUKNGDDA:6\e\e\e\1f%%)))%%)%%))3)%,)%)""%""%%%%)))),,,,003000,,)%%%%""""\1f""\1f\e""%"%%%%%))),,,000336666:::====AAKDDDGGKKKNN_X_\\cccfffimimmmimiiimimptppmmmppmmmppptpppmpimmmmiffffffmmptwpwtzz~zz~z\81~\81z~zzwmmiiipiiiiic\XRXRKKNKKDGDDDAADD\8b\8b\8b\8b\8f\92\8f\8f\96\8f\96\99\99£ª±±±­ªªªªª£££   \9c   \9c\9c  \9c   \9c §ª­±±±±­ª­­§ªª£§§§£    \9c \9c  \9c ££ª§£§££   \9c \9c\9c\9c \9c\9c\9c\9c  ££  ££§£§§§§£\9c\99\96\8f\88\88\88\85\85\85\88\88\81\81~\85\85\81zwttwpppmfcc_c___X\\URRRURRKDGAD:30)0%%"\1f\1f"\1f\e\1f""")),06:=:ADGKNNXU\__fimmimfmm±­§§§ \9c \9c\99\96\8f\85\85\85\85\81\81\81\81zzzzwwwpmmificfffcfippw~\81\85\85\85\88\85\88\88\85\88\85\88\88\88\88\88\8b\8b\88\88\8b\8f\96\96\96\99\96§\99\88\85~zcc_\U\_XXfifmimpmmmmmmmmmmiffffcfffffffffffcffcfccc_\\XUURRKRX\_\\\\XU\\\___\cftz\85\88\81\85\81\85\81\81\85\88~\85\85\81\81\88\85\81\92\92\96\9c\9c\9c\9c\9c\96\8f\81\81\81\81\81~zzttptwzzzzz~\81\81\81\81\81\85\88\8b\8b\8b\88\81\81\85\81\81~~\81\81zwpmfimimimimiptppwwtztppmmiicfccfipppttmtwwpttpmppmptttwtttwzzzzz~~z~~~\81~~\81~~zwtpfc\____\_NNUc_N_UXG\RX\RKKNKNNNUUNDADc__X\XRRRNKGDKKKNNNRRUUXRNKDDA=6\1f\e\e\e\1f\1f\1f%%%%%)%),)0%),,%)""%""%%%%)))),,,,003000,,,)%%%"""""\1f\1f\e\1f%")%%),,%))),,,,00333666:::===AAANDGGGGKKKNN\X\\_c_fccfiifimmmmmfiimptpppmmmppmmmtttppppmpiiimifcccffcmimptmmptwzwzzw\81~\81~~wwtmmfiimiiiii_\XRUNKNNGGDGDADA=AD\88\88\88\88\8b\8f\8f\92\92\8f\92\96\96 §­±­­­ªª§ª£££  \9c    \9c\9c \9c\99\9c    §ª­±±´±±­­ª£§§§£§£ \9c\9c  \9c \9c\9c\9c\9c\9c££§§§££§  \9c\9c\9c\99\9c\9c     ££§§££§ § ££§£ \99\99\96\92\8b\88\88\88\85\81\85\85\81\81\81\85\81~zwttwtpppiff_c___XXXURRRRNKGDD=D=63)0)"%"\1f\1f\1f\e\1f""%%)006==:AGKNRRXX_ccffmifccfct±£££\9c\99\9c\99\96\8b\8b\81z\81~~~~~zwwwztwtmmmiifffffimptz~\85\85\85\85\85\85\88\88\88\88\88\8b\8b\88\88\8b\8b\8f\8b\8b\8b\8f\96\99\99\9c\99ª\9c\8b\81zzcc_XXUXUUX_ccfimmimmmmiiiifffffcfcfciificfcffcfccccc__\XUURRRX__\_\\XX\\X\c__fctw\81\85\81\81\81\81~~~\81~\81\81z~\85\81w\92\96\99\9c\9c\9c \99\92\8bw~\81\81~~zwwtppwwzwwwz\85\81\85\85\85\85\8b\8b\8f\8b\8b\81\85\85\81\81\81~~~wtmicmmimimfmimtmmwwwzwttppmmfffccipmpptitttppppmpmmpptptwtwwzzzzz~~z~~\81\81~~\81\81~~tpmfc\_\_\\cKNU__N_U\G\RUXRKKRNRRKRURAAD_\\UXUUNNKDD:DAGKKKNRRUURNKGA==\1f\e\e\e\e\1f\1f\1f""%%%%),,)0),,0%)%%)""%%%%)))),,,,0033330,,,)%%""""\1f\1f\1f\1f\e)%,)0,00),)),,,,00033366::::==AAANDDGGGKKKNR\X\\___f_ccffcimimmiiimpptmtppmppmmmppttttppmpmmiifccccfffiimppmimptwtwzz\81\81\81~zttpiififiifffi_\XRUNGKKGDADD=A===A\88\88\88\85\88\8b\8b\8f\8f\8f\8f\96\96\9c£­­­­­§§ªª££££      \99\9c\9c\99\96\9c  \9c\9c§§ª±±±±´­­§§ª§ª§§£ \99\99\9c\9c\99\9c\99\99\9c\9c   £§£§§£\9c \9c\99\99\99\9c\9c£££££§§ª§§§ª£§£§£§ \9c\99\99\92\92\8b\88\85\88\88\85\81\81~\81\81\81~~zwwwwtttpmifc_c_\\XURRNRRKKGDAAD:60,0%%%%\1f\1f\1f\1f\1f\1f%%))006::=AGKNRU\\\ffcfif_ccc\f±t£\9c\96\96\96\8b\8b\85~~wz~~~zzwwttwwwppppiiiffifmmpt~~\85\85\85\81\85\85\85\85\85\8b\8b\8b\8f\88\8b\8b\8f\92\8f\8f\8b\92\99\99\9c\9c\9cŪ\8f~zwf_\UURURUX\\__fiiiimpmmfffffiffffff_iiifffccccffccifccc\XURUX\c___\\XX\XX\___cftz~\81~~~\81~z~\81~\85~zz\81\81z\96\96\99\9c\99 \9c\96\8f\88zz~~tzztwttmwtwtzww\81\81\88\88\88\88\8b\8f\8f\8f\8b\85\88\88\85\81\81\81z~tmifciiimimimiipifzzz~zwtppppiifffipmpppittpmpptppmpmptptttwwzzzzz~zzz\81\81~~\81~\81~~pmmf_\_X\X\_KNU\_R_X_K\UXXUNNNRRRGNRRAAA\XXRURRKNGGA:AADGDDKNNRRRRNGD%\1f\e\e\e\e\e\1f\1f\1f\1f"""""%,))3%,0,),%%)%"%%%%)))),,,,00333330,,))%%"""\1f\1f\1f\1f\1f%")03636)6,),,,,000333666:::===AARDGGKKKNKNN\\\\\__fX__cf_fiimmimimmppmtptppmpppptpptpptmppiiif_cccfffiimmmmimpttttwz~\81~~wppiifcfc\fcfcf_\URRKKGGDAAADA=A===\85\85\85\81\85\88\88\8b\8b\8b\8f\92\96\9c ªªª­ªªª§ª§§ £ £ \9c££\9c  \9c\99\9c\9c   §ªª­±´±´­±ªª­§§§££\9c\9c\99\99\99\9c\99\99\96\99\9c\9c\9c\9c ££§§£ \9c\99\99\9c\99\9c £§£§§ªªª§§ªª§£§£ £\9c\92\99\96\8f\8f\88\85\81\88\85\85\81~\81\81~~~\81\81~zzwwtwpmifcc__\\XURNNNNKKKDADD=60,0)%%%\1f""\1f\1f\1f%%),,36:=ADGNNRU\__cccfff__c_\cfp \9c\92\8f\8f\85\85~wzww~zzwtwttttwttptpmiiiiiiimpwzz\81\88\88\85\88\88\85\85\85\8b\8f\8f\8f\8b\8f\8b\8f\92\92\8b\8f\92\99\96\9cÌ\9cÉÅ\92~wtc\\URRRNRUUR\\cfimmmpimcccfffififfc\ififccfcffffcimmmff_\c_\\\c_c_\\XX_\X\__\_iw~\81\85~\81~~~z\81\81~\85zzz\81~~\92\99\99\9c\96\9c\9c\92\81\85w~zztwztwttmtmtwzww~\81\8b\8b\88\8b\8f\8f\8f\8f\88\88\88\88\81\85~~zztmmfffmimfmmiifpii~~~~~wwpttmmmiiimpmmptfttppmtppppmmptttwttwzz~z~~z~~\81\81~~~~\81~~tmmc\\\XR\_\KNRXcc_X\KXX\UXRRRRRNKKNNDADXKKKRNNKNDD::A=DADAGKKNNRRKKD"\1f\e\e\e\e\e\1f\1f\1f\1f\1f""""%)%%0%,00)))),%%))))))),,,,,0033333300,,))%""\1f\1f\e\1f\e"",36A==0:3,),,,000333666::::===DRDDGGGKNNNNXXXXX\\cX\\_cccffimmmmmiptptppppptppttpttpmtptpiifcccccffiiimmmiimpptttww~~~ztmmiffcc\\c_c_c_XRNNGKGGD=AAA==A===\85\81\85\81\85\85\85\85\8b\88\8b\8f\96\9c §§ªª§§ªª§§§££  £ ££ £ \9c\99\99\9c ££§§­±±¸´±­±­ªªªª§§£\9c\99\9c\9c\99\99\96\96\99\99\9c\99   £ ££  \9c\9c\9c\99\99  §§§§§ª­ªªªª­§£££\9c \99\96\99\92\92\8b\85\88\85\85\85\85\81~~\81~\81~\85\85\81\81\81~zzwpiic_c__\\XXRRKKNNGGDADDA6000)%)%""\1f"\1f\1f%%,,036==AGKNRUX\_cffficf_c_\\_cmp\99\8f\8b\81\81~zwwttzwwwwttpttwpwtwtpimmmifiptw~~\85\88\8b\88\88\8b\88\88\88\8b\8f\8f\8f\8b\8f\8f\8f\92\92\8f\8f\92\99\92\9cÌÌÌÉ\8fzif_XXRNRRNNRUR\\\_fmmimficfcfcffficfc_ffifcccfiiifmmpptpmmcic__cc_c_\_X\_\\X__c_mz~\85\81~~z~zz~~z\81zzz\81\81~\92\99\99\9c\99 \9c\8b~~tzzwwwwttttptmttwwz~\85\8b\8b\8b\8f\8f\8f\8b\8b\88\88\88\88\81\85~~~ztppfifmmiiiificpif~\81\81\81\81zztttpmpmimimmimtftttpmppppmppttttwwwww~z~~\81~\81~\81\81\81z~\81~z~tmm__\\XRX\XKNR\___UXGX\\UXNNRRRNNNNAAAGRNKKNNKGKAD6:=:AADDDGGKKNNGGD\1f\1f\e\e\e\e\e\1f\1f\1f\1f\1f\1f"""%%%%0%),3,))),)),,,),),,,,,,006666333300))%%"\1f\1f\e\e\1f"\1f06:DAA:=:0,,,,000333666::::===ANDDDDKKKKNNXXUUUXXUUX\___cfimmmmmmmttptppttttptpwtttpppmttffc_c_ccciifiimmfiimmpppwt~zzwtiiffc__X\\XU\\\XNNKGKDGDA=AA:==A=A\85\85\85\81\85\85\81\88\8b\88\8b\8f\92\99\9c£§§ªª§§ª§§§£ \9c  \9c    £ \9c\9c  £§§§­±´´±±­±±­ª§§£§£\9c\96\9c\99\96\96\96\92\99\99\99\99\9c\9c\9c \9c££    \9c\99\9c £§§§§ªª­­ªªªª££  \99\99\99\96\96\92\92\88\85\85\81\85\81\81~\81z\81\81\81\81\85\88\85\85\85\81~~ttmfc____\\\URRNNKKGKGDDDA:330,)))%%\1f"\1f""%,,03:==DGNRUXX\_ccfffcc__\XX\_im\96\8b\85~zzwtpppwttttptpptttwwzwtppppimptwz~\81\85\85\8b\8b\8b\8b\8b\8b\8b\8f\8f\8f\92\8b\8f\8f\8f\8f\8f\8f\8f\92\96\96\99ÉÌÌÌ\8bwc\\RNNKNRRRNUU\\X_ciificf_ccc_ccfffcc_ccfc_ccfmmimpptwwwppmpmifffcc_\\\X\\\Xc_fmtw\81\85\81~zzzwz~zw~z~z\81\85~\96\99\96\9c\96 \9c\8bzwpwzttwtptppptmttww~~\88\88\8f\8f\8f\8f\8b\88\8b\85\85\85\85\85\85~\81~ztppimfimmifffifpifz~~~\81~wwtwtpmpimfmmfitftptpppppppttttwptwzww~z~z\81\81\81\81\81\85\81z\81\81~zztmm\\XXURUXXUKRX\U\UUGXXXRXKRNURRKKNAAAKRNGNKKDDG=A36::==AADDAGA=KDDA"\1f\e\e\e\e\e\1f\1f\1f\1f\1f\1f"""%%%%3)%030,,),)),,0,0,00,000006:66663330,,))%"\1f\e\e\e\1f"3:=GDD=A=3,,03303033366:::====ANADDDGGKKNNXUUURUNURUX\\ccfimmmmmmmpwtttttttwttmtttttttmppcf__c_cffifcfiimfiiimmmpww~zztpiifc_\\U\XUNUURUNKGGGGDAD=A===:=A=\81\81\85\81\85\85\85\85\8b\88\8b\8f\96\99\9c§ª£§ª§£§£££    \9c\9c    £ \9c £ £§ª§±´´¸´´±±­ª­§§§£  \99\99\99\92\96\92\96\99\99\9c\9c\99 \99\9c  ££\9c££\9c\9c £§ªª§ªª§ªª§§­§  \9c\9c\9c\99\99\92\96\92\8f\85\85\85~\81~~z~~\85\85\85\85\88\8b\88\88\88\85\81\81wwmf_c\\_\\_XUURRKNRNKDGG=:6330),,)%"%"%%%,0336=ADKNUUX\__f_ccc__\_\\\__im\88\85\81zwwptmppppppppppppttwzzzttwtppptwzwz\81\85\88\88\8b\8b\8b\8f\8b\8f\92\92\92\92\8b\8f\92\8f\8f\8f\8b\8f\92\96\96\99§\ÌÌ\88p_XDNKKGKNRRRUXXXU\_ff_c_c\___\_cccc_ccccf__ccfmppppw~\81~~wzttpmiiifcc\\\X\\__cfipww\81\85~~zzzt~~zz\81~zz\85\81~\99\99\99\99\99 \99\88~tttwtttpptppptpttww~\81\88\8b\8f\92\8f\8b\88\85\88\85\85\85\85\85\85\81\81\81zwppmmiiiifffcfcmffwzzz\81~ztwwppmmiiiiicftittppppptppttwtwtww~wz~z\81z\81\85\85\81\81\85\85z~~\81wwtii\XUNURU\UXRRXXURRNGUXXRXGNNRNNNKKD==GNKKKD:GDDA=63666:AAA:AD==A===\1f\1f\e\e\e\e\e\1f\1f\1f\1f\1f\1f""%%),)6%0,0,)0)0,,00000033033333G=::::663300,,%%"\e\1f"\1f%0ADKGDADA0),06306033366::===A=ANDDDDDGGGKKUURRNRRRRRU\X_cfiimppmmmtttttptttwppptttttppmmm_c_\__cffifffiiiiiifmmppwz~wwtpmfcc_\\R\URNNKKRNKDGDGDDDAA=====AA\85\81\85\85\85\85\85\85\8b\8b\8f\8f\92\99 §ª§£§£§£££ £\9c \9c\9c\9c\9c\9c     \9c£ ££ªª±±´´´±±±­­ªª£§§£ \99\9c\9c\96\96\92\99\99\9c \9c\9c \9c\9c\9c\9c££  £  ££§ª­ªªª§ªª§ª­§£\9c\99\99\9c\99\96\8f\92\8f\8b\88\85\81z~~zzz~\85\85\88\88\8b\8f\8b\8b\8b\88\85\81zwpf\c\\\\\\\XUURNNUNNGKDA::6630,0))%)%%))00336=ADKNUX\\ccfc_____X_X__c_fm\81z~wwtptmpppppmpppmppppww~wwwzttttwwzw~\81\88\8b\8b\8b\8f\8b\8b\8f\8f\92\92\96\92\8f\8f\8f\8f\8f\92\8b\8f\92\96\92\99£ÅÉÉ\88\UGDKAGAGKNRRUUUXRXUX\X_\_X\\XU\_c__cc___fcccfiwtwzz\81\85\85\81\81z~wwtpmmii_c___X__\ccimtzw\81\85~\81~zzwzz~~\81\81w~\85~\8b\99\9c\9c\99\9c\9c\99\8b\81itwttwptptmmtpttttwz\85\88\8b\8f\92\8b\8b\88\85\85\88\85\85\88\85\85\85~\81zztpmiifmifficc_i\fpwww~~wptwmmiiffififitmptppmpptpttwwwwwzz~z~~~\81~~\85\85\81\85\85\85~zz~wwtmiX\RNRNU\UXUUXXUNUNGUU6RUGKKRNNNNNGAADKGGGA6DD=A::36666A==:=A::=:3%\1f\1f\e\e\e\e\e\1f\1f\1f\1f\1f\1f"""%,0,6%6,,))0,,0030303333366666KDGA=:::66330,))%\e"%\1f):RGKKGDDD,)0,:60303333:==A=AA==NDDDDDGGGKKURNNRNURNRRXX__ffmpmmmmmtptttptpptmmpppttttmifi__\\__cciiiffiffifiipmptww~zwppmf_c_\\UXNNKKKKNKKDDDGGDDAAAA==AAA\85\85\85\88\85\85\88\88\8b\8b\8f\8f\92\9c £§£ £ ££££  \99\9c\99\9c\99\99\9c\9c  \9c \9c£  £§ª­­´±´´±­­­ª§§§§§ \9c\9c\99\99\96\96\96\99\9c\9c \9c \9c\9c\99\99  £ £ £§£§ªªªªª§§§§ª­£ \96\99\96\99\99\92\8f\8f\8b\88\85\85~~~z~~z~\85\88\85\8b\88\8b\8b\88\8f\85\85~zwpfX_X\X\\\_\XXURRURNKKKD=:6:6330,,),))))00036=DDKRU\___cc_\_\_\X\\_\_cfmmwztttpppppmmmmmppmpmmttzzzzz~wwwwzwwz~\85\8b\8b\8b\8b\8f\8f\8b\92\92\8f\92\92\8f\8f\8f\8f\8b\8b\8f\8b\8b\92\96\92\99 Âű_RNDADD==DGKNRRRRURURUXUNNRKKXUNX\___c__c_fff_mmztz\81\85\85\88\88\85\85~~zzwppmiicc__c__c_ffmpt~w\81\85~\81~z~wzz\81~~\81t~\85w\92\99\9c\99\9c\9c\99\99\8f\85ittpptptptmmtppptww~\85\88\8b\8f\8f\8f\8b\88\85\85\88\88\85\88\85\85\81z~zzwpmimfiiiff___f\icttwzzwmttiiicicicifmtptpmmippppwtzzwzz~~~~\81\81~\81~~\81\85\81\81\85\81~wzzzwpiiX\RNNRUXUXXUUXUKRNGUU6NADKGNRKKKKDDAAGDDD=3AA=A::33666A=:=::36300%\1f\1f\e\e\e\e\1f\1f\1f\1f\1f\1f\1f""%%03,3%:,)))3003363633366666:6ANGKDA=:=::6666,,)\e\1f3%,=UKKNK0G))),,6:3633663:===:A=AAKDDADDGGGKKRRRNNRURRRUX\c_cfipppmimptwttmpmmpimppmtpppif___\\\__ffmmmcfffcffimtptwzz~zwppii__\\\UUNKGKKGKGGDGDGGGDDDDAA=AAA\81\85\85\88\88\88\8b\88\8f\8f\92\92\96\99 £§§        \9c\99\9c\96\99\99\96\9c  £\99\9c\99 £ §§ª­±±±´¸±±±­ªªªª§§   \9c\99\99\99\96\96\9c\9c \9c\9c\9c\99\99\9c  ££ £ §§ªª§ª§­£§££§ª \9c\96\96\92\96\96\8f\8b\8b\88\85\85\81\81\81~~zz~z\81\85\81\88\85\88\88\85\8bz\81zwtmf__XX\X\__X\XXUUXUUNNNGA=D=66630,,0,),,,0336=DDNUU\\__c___\X\XXXX\__cfimtttptppmpppimppmmmpimptww~~~~zwwzwzw~~\85\88\8b\8b\8f\8f\8f\8b\8f\92\8f\8f\8f\8b\8f\8b\8f\88\88\8b\88\8b\8f\96\92\9c§~c\96UDGA=DA:AAGGKNRNRRNRNRNGK:G=GANKRX\\\__ccciifft\81\88\85\88\88\88\88\8b\88\88\85~\81~zwtpmmmf_ccccccciippwz\81\81\85~\85zwzzzw\81z\81~~\88\88w\96\9c\9c\9c\9c\9c\99\96\92\88mttttwtwptppttpmtwz~\88\85\88\8f\8f\8f\8b\88\88\85\88\88\85\88\88\85\81~zzwzpmmmfiifcf___\\fctptwwtipp\ficificmcmtptpmmmpppptwz~z~~\81~\81\81~\81~\81~~\81\81\81\81\81~~zw~wtpfi\XRNNRUUUX\XXXUKRNKRR6KAAKKKRGGGGAG==66:A:,====6633636=:6:666300))"\1f\1f\e\1f\1f\1f\1f\1f\1f\1f\1f\1f"")%36=0:=))3,033336666666:6:::DNNKNGD==A==::::66,\e,6KKKUGNNN%G))),,666633366:=:=:D:ADKAAAADGGGKKNURRNRRRRRUX\_cfiippppmmpttttmmmimimmppppmmf\_\\X\\\cfmipmfifffffipptwz~~~~zptmi__\_\UNNKGGKGGGGDGDDGGGDDGDA=AAA\85\85\88\8b\8b\8b\8f\8b\8f\92\92\92\99\9c£££§£££ £  \9c\99\99\99\96\96\96\99\9c\9c\9c \9c\9c\9c  \9c£§ªª±­±±´±±­­­­­­§££ £\9c\99\9c\9c\99\99   \9c\9c\9c\99\9c   £££ £ª§ª­§§§ª £  £§\99\99\92\92\8f\92\92\8b\88\88\85\81\81\81~\81z\81~z~w~\81~\85\81\81\85~\81wtwtppfc_XU\X\\_X_\XXX\\XRUUKDDGG=::633000,,,00366:DDNX\_\cc___\\XXXUXX\ccfffmpptptppmtppmmppmmmmfppptt\81z\81\81~zz~zzz~\81\81\88\88\8b\8b\8f\8b\8f\8b\8f\8f\8f\8f\8b\8b\8b\8b\88\85\88\85\88\8b\96\96\9cÂc_XKDD=:A====DDGKNKNNKNKGD:A63:A=D6NRX\\\\ccfmiimw\85\8b\88\8b\8b\8b\88\8f\88\8b\85~\81~~wtpppiffffcffffmiptzz\85\85\88\85\88\81zz~z~\85\81\81\81\81\8b\8f\92\99\99  \9c\99\99\96\96\88~pwwwttwpttpttptpt~~\85\85\88\8b\8b\8b\88\88\88\88\88\85\81\88\8b\85\81\81zwwwpimmiiiccc____\cfppwmwpimm_fffificicptpttmimpmpptw~~~~~\81\81\81\81\81\81~\81\81~\81\81\81\81\81zz~w~tppii\XURNRRUUXXXXXRNNNNNN3KAAGNGNDDA=:D:663==30::A:6306606:6363330,,,%"\1f"\1f\1f\1f\1f\1f\1f\1f"\1f"%%,%36A0:A6,6,300666666:6::::==GRNNNKGAGD====A=::6K=GNNNUD0%K%D)))0,33:3066::6=6:=DAAAKADADDDDDGKNRRNRURUUUXXX_cfimpmpmimpppppiiifffiipmpmiic__XXU\__ffppppimffiifmpttwzz~z~zppifc_\\\RRKKKDKGGGDDDDDDGGDDGDAA=AA\81\85\8b\8b\8f\8f\8f\8f\92\92\96\92\9c £§£££      \9c\99\96\99\99\99\96\9c\9c\9c\9c \9c\99\9c    £§ª­­­±±±´±±±±±±§§§ £\99\9c\9c\9c\99\9c\9c  \9c\99\99\9c\9c\9c\9c ££§££§ªªª£££§\9c \9c\99\9c\99\96\92\8f\8f\8b\8f\8b\88\88\8b\88\81\85\85\81\85~~~~~wzwt~ptmp~ttwptpff_UUX\XX\X\\\\\\_\XXXRKKKKAA==6630000000336=AGR__c_ccc\\XXUUURUX\__cffmimtppptpttppppmmiiicmpmpm~w~\81\81~~~z~z~\81~\88\8b\8b\88\8f\8b\8f\8b\8f\8f\8b\8f\88\8b\88\88\85\81\85~\85\88\96\92ª¾mNUDDA==A==:=AAA==A0)G%\e6\1f\1f),0,6:33GNRXXXX_fimmt\81\88\8b\8f\92\92\8f\8f\8f\8f\8b\8b\88~\81~~wwtppiiiiffiiiimmpw~~\81\88\88\88\88\85\85\81\81~\88\88\85\88\81\85\8f\92\96\96\99 \9c\9c\9c\96\99\96\8b\81ztwwwtwpwttwttwzz\81~\81\88\88\88\8b\8b\85\85\85\85\85\88~\88\88\88\85~~zwwmimiiiiccf\__\Xccpptmtpiiicccffiificmwmttmiimmpmpt~~z\81~\81\81\81\85\85\81\81\81\81~\81~~\81~zzzwztmpmiXXXURNRXXUUUXUNKNRKND3KAAKR,KDD==:A6330:03,:6==63336033303,00,0)))%\1f""\1f\1f\1f"\1f""""))))03=,:=:0:,6,0666::::::::===KUKKNGKDKGAADKDAKAGNNKNRKU6,%N)A))),,036636366::::=DDDAK=AAADGGDGGRNRRUUUUUXUX\_cffimmmifimmmmmfcfccffimipmfif__\\X\_cfitttpmmfiimfptwtww~zwzwmpffc_\XXRNKKGDGGDKGGGGGGGGADDAAA=AD\81\81\8b\8b\8f\92\92\8f\92\8f\96\96\99  §££   \9c\9c\9c \9c\99\96\96\99\96\96\9c\9c   \99\99\9c\9c\9c\9c\9c£§ªª­ª±±±±´±±­±±§ª££ \9c\9c\9c\9c\9c\99\99\9c\9c\9c\9c\99 \99\99\99\9c£ §££§ª§§§£££\99\9c\99\96\92\96\92\8f\8f\8b\88\8b\88\85\85\88\85\85\85\88\85\85~\81zz~zwmppmfcimmpttpmcc\XUXXXX\\X\____c_\\\UNNKUDGAA6:6033000033:AAG\ccfc_c_XXUNRNRNRU\\_cffmipppppttwttttpppificmmimmptz\81~~\81zz\81~~\85~\85\8b\8f\88\8b\88\8b\88\8f\8b\88\8b\88\88\85~\81~~~~\81\92\96c¾¾NGDDA:=======36))",\1f0"\18\e\e\e\1f%%),30)6GNUUUU_fiptw\85\8f\8f\92\96\96\92\96\96\92\8f\88\88\81\81~~zwwtpmmmmiiiimmmptw\81\81\81\88\8b\8b\88\88\88\85\85\81\8b\88\88\8b\8b\8f\92\96\99\99\9c\9c\99\9c\9c\96\9c\96\8f\88~wzwttwtwwtwttz~~\85\81~\88\85\85\88\88\81\81\85\85\85\85~\88\85\88\88~\81zzwmmpiiiiccc__\\\cftmtmtmiifcfcfiimimfpwpwppfimmmmptz\81~\81\81~~\81\81\81\81\81\81\81~\81~\81\81z~zwtztpmmm\\XXUNRXXUURUUKKNNKKA3GAAGN,GAG==:=6330=63,:6=A:6333,300,0,),,,%%%%"""""\1f"""""%,),,30:,6:=36,:,3:::6::::::====KRGNRDKGNGDDGNGDNDKRKKKR=U3,)R%))))00,033363366:=6=DGGANADDDDDDDGGNRRNRUXXXXU\\__fffpmifcfiiif_XXc\\cffimpmiiifc___ccffmtwwtppimpptttwtwwzzwwwmmccc\\UNNKGGDGDGGGKGGKKGKGADDAA==AD\85\85\8f\8f\92\92\92\92\92\92\99\99\9c £§§££  \9c \9c\9c\99\99\99\96\96\99\99\99\99\9c £\9c\9c\9c\9c\9c\9c\9c££§ªª­±±±´±­´­­­ªª £  \9c\9c \9c\9c\9c\9c\9c  \9c \99\99\9c\9c \9c£ £§§§§§££ \96\99\96\92\8f\92\8f\88\8b\88\85\81\85\81\85\85\88\88\88\88\85\85\81\81~~zwwmmmic_fcimppmi__X\UXUXXXXUX\_\cc____XXUXXNKGD==::666003666DGG_fcffc_\XUXNNNKGNKXXccifimmmppttptttttpppmff_iicimmpw~z~\81~~~\81\81\88\85\88\8b\8b\88\8b\88\88\88\8b\88\85\88\85\85\81\81~~zz~~Â\96_m¾NDDA===A=::::00)%"%"\1f\1f\18\18\18\18\e\18\1f\1f),,,6GKNRNRccip~z\88\92\92\99\99 \96\9c\99\96\92\92\88\85\81~\81~zwttpmpmmimmpmptwz\85\81\81\8b\8b\8b\8b\8b\8b\8b\88\85\8b\8f\8f\8f\8f\92\96\99\9c\99\9c\99\99\99\9c\99\9c\96\92\8b\81~zwttwtzzwztw~\81\81\81\81~\85\81\81\85\85~~\81\81\81\85\81\85\85\85\88~\81wztmmmimmifc_cc\cccftmpippiffffcfiimmmipttwpmifiiiimwz\81~\81~~~~\81\81\81\81\81~\81~\81~\81z~~zwzwtpmm_\\XURNUUXRNUUKKNKKKD3DAAGK,DAK=:=66333A:3::=AA::300033,,,))%))")%%%"%%%"%"%%%))%0,3,3030=336:63::::::::==A===NNDNNDGGKGDGKNGGNGNNKNNR30%)%N%))))3,,03033636:6:6:ADKARDGAGDGDDGGNRRKRXX\X\X\__cffimmfc_ccf_\\UUX\\_cfcippmmmicc_cffmppwzzwwtppttwwwwwwwwwwwwmmfc_X\RGKKDDAGDKGGNKKKNKKGDDDA=:=AD\85\88\8f\8f\92\8f\92\92\92\96\96\99\9c §§§§ \9c \9c\9c\99\99\99\96\96\96\92\96\96\99\9c\9c   \9c\9c \99\99\9c £§§ªª±±´±±±±­±±ªª £\9c  \9c\9c\9c\9c\9c\9c\9c \9c  \9c\9c\9c\9c\9c   ££§£££   \96\99\96\8f\8b\8f\8b\88\88\88\81\81\85\85\85\81\88\88\85\8b\85\88\85\85\81~wttififc\c_fiimff\\UXX\UUUXUUUX\X_c__cc\\X\\RNRGD===:6:633::6GK_cfficccXXNUKKKKGGK\\_cfffiimpppptptwtttppifc_ffcciimpppz\81\81\81\81\85\85\8b\88\8b\8b\8f\8b\8b\88\88\88\88\85\81\85\81\81z~zzwwzzÂf\i\81RDDD=AAAA6:60,,%""%"\e\1f\18\14\18\14\e\18\1f\e%)%,3DGRRRRfcmt\81~\8b\96\96  £\99 \9c\9c\96\96\8b\88\85\81\81~~wttpppipmpptpttz~\81\85\8b\8b\8f\8b\8f\8b\8f\8f\88\88\8b\92\92\92\99\96\99\9c \99\9c\9c\9c\99 \9c\9c\96\96\8f\81\81zzzwww~z~~tz\81\85\81~~\81\81\81z\81~zw~~~\81\81\81\85\85\88~\85zzwpmiiimifc\cc_ffcippmmpmiffifcfiiimmmpttztpiififimtw~\81\81z~zz\81~\81\81\81\81\81~\81~\81~zzzwwwwtmpc\X\XRRUUUUNRUNKKNGNA3DDDGG,DAG::A66AA=A=6==A==66633000)),))%%%%)%%)%)"%%%%))))))0)0,0,30:06::::===::===A=D==AKKDNKDDDKDDGGKGGKKNRGKRN",%%%0)))),60030003663666:==AK=RGKDGGDDDGGRRNNUUX\\_\_ccfffmmmf_\___\RXUNUX_cfffmpppmpmfccfimpttz~~z\81wtwwwzzwtwttttwwtmmfc\X\NKAGA=ADDKGGKKKNNGKGDDDA==AAD\88\8b\8f\8f\8f\92\92\96\96\96\99\9c £§§£§ \9c \9c\9c\99\96\96\92\92\92\92\96\96\96\99\99 £\9c \99£\9c\9c\9c£ ªª­ª±±±±±­±±­­ªª££ \9c \9c\99\99\99\9c  \9c    \9c  \9c\9c    £ ££\9c\9c \96\96\92\8b\85\8b\85\88\85\85\81\81\81\85\85\85\88\88\85\8b\88\88\85\81\81~ppiffff_X_\__fX_XXURUXXUUUUURKRXU\___c___\__\XXNNDDAA:==6==:GN_ififf___UXNRGKGGDDN\\_ccifiimmppmpptwtttppmfc_ccf_fcfimtz\81~\85\85\88\85\8f\8b\8b\8f\8b\88\8b\85\85\88\81\81~~z~wzwmtpwwfcXN_RAADGDDAA:630)))"""\1f\e\e\e\11\18\18\e\18\e\1f""))"DGNUURffmw\85\81\8b\92\99££§\9c£  \99\99\8f\88\85\85\81~~wpwpmpmpmpmtppwz\81\85\88\8f\8f\8f\8f\8f\8f\8b\92\8f\92\96\96\96\96\9c\99\99\9c\9c\96\9c\99\9c\99 \9c\9c\96\99\8f\88\85\81~~z\81z\81~\81\81~z\85\81\85~~\81~~w~wtwwz\81\81\81\81\81\85\88\81\81~zztpiiimiic_ff_iicmmmmimimiimcfiiiimpppttwtpmiiifmmtw~\81~~~zz~~\81\81\81\81\81\81\81~\81\81~zwzzwztppf_X_UUUURRURRRNGKNGKA3DAAKG,N=N::A66DGDAA:AAD:=63363003)))%%%)%%%)%%%,%)))),),%%),,0,000,60:6::======:=:=ADAKANDGKGDADGDADGKGDGNNRDGRN%"%%%0)))),:3,30303336:666::=KAUKGDGDDDDGGRRRRRU\\Xc\ccciffiiifc\X\\URURRU\\_cfiipptttmmiimmtwwwz\81\81~\85zwzzzzwttwtppttttimf_XX\NGAD:=ADDGGGKKKNKGKDDDDA=AAAD\85\8b\8b\8b\8f\92\92\96\96\99\9c  §ª§§£\9c \9c \99\99\92\96\92\92\92\92\92\92\96\99\9c\9c  \9c\9c£  \9c££§ª­­±±±±±±±±­ªª§§££\9c\9c\9c\99\99\96\9c\9c     £ £ \9c\9c \9c\9c£ £££  \9c\96\99\92\88\88\88\81\85\85\81\81\81\81\81\88\88\88\8b\88\88\88\85\81\81~zpififcc\XXU\\XUXURNNRUXXRURUNKRKRX\\\____\ccc_\XRGGDDAAA=AAGKfmmifif__\UXNKDKDDGDN\\_fffifimmmpmpptttttttpiffffccfciiipw~z\85\85\85\81\8b\8f\8b\8b\8b\88\88\85\88\85~~z~zztptmfmfpc_XK\N=DNKKDDD=330,))"""\1f\e\e\18\14\14\18\e\18\e\e"",%"AGKUUUfimz\85\85\8b\92\99§§£ £ £\9c\96\92\88\85\85\85\81~zttppmppimptpmzz\81\88\88\92\92\92\92\92\92\8b\8f\92\96\99\96\99\99\9c\99\99\9c \99\99\99 \9c\9c\9c\99\99\99\92\8b\88\85\81\81~\85~\85\81\85\81\81z\81\85\85~~~zztwwtwwz\81\81\81\81\81\85\85~~~~zttmmimiifcfimmmmppmmipfmififiimimmtppttwttpiiiimmtwz~~~~~~~~~\85\81\81~\81\81\81\81\81z~zzztwwppfc\\RXXUUNURNRKGNNKGD3GADGK,RUR==D=AGKGDDKDDD:=303360,0))))%%%"%%%%)),),),)),,)%,,00)0,00:36:==AAAAA===:=AR=NDKDDGDA=ADDDADGDGDKKRAA0)%%%%),))))0=0,030363366::6::=GDUKDGDDDDGGGNRRRUX\\\_\cccffiffffcXUXXRRNRRUX\_ffiitptwwwwtmpzwzz~~\81\85\81\85~z~wwwwpttpppttttmmf_\XXRGDA===AAGGKKKKNGKGDGDDD=DAAD\85\8b\8b\8b\8f\8f\92\99\96\9c ££ª§ª§ \9c\9c\9c\9c\99\96\92\96\92\92\92\96\8f\92\92\99\9c   \9c § £ £§§§ª­±±­±±­­±­§ª§£  \99\99\99\99\99\99\9c\9c   ££      \9c\9c\9c  ££ ££\9c\99\96\8f\8b\88\85\81\81\85\81~~~\85\85\85\8b\8b\85\85\85\85\85~zwmfcfc__XUURXNRRKNNKKNRXURRRUNKNKKUUXX\\___ccfcffUUNRKDGDDDAKXipttimi_\\XXRKDKGDGGN\__ffiffiimimimmtppttttpmfiiicfcfifimtzw\81\81\81\85\8b\8f\8b\8b\88\88\88\85\88\81zzz~wppppiffci_\UGURKNRKNGGG=60,,)%\1f\1f\1f\e\e\e\18\18\14\14\e\e\1f\18"")))6DGRRXfim~\85\88\8b\92\96££ \9c \9c \99\96\92\8b\88\85\88~~zwtttpmpmptttpzz\85\85\8b\96\96\92\96\96\96\8b\8f\96\96\96\96\96\99\99\9c\9c  \9c\96\9c    \9c\99\9c\96\8f\88\88\85~\81\81\81\85\85\81\81~~~\85\81~\81ztwppwttwz~\81~~\81\81\85~z~\81wttptmpmmiiimpppptppimmfiffmiiiimmitttwwwwtpmimmpmwz~~\81\81~~~~~~\85\81\81\81\81\81\81\81\81~~~~zwzwmtfc_\RXUDUNRNNNKGNKNKD6DRGGK,X\XRNNRDKNKGGNGGG6=630360,,))))%%%""""%),,%,),,),,)),000,300366:=AAGADADA==AA=UARGGADDAA==AAAADGADGKKND=,%))%)))))),0:,0000036633=:6:=:DGUKAGGGGGDGGRRRRRUX\\\__ffiiffiifc\RXXNRRRRRU_cffimtptzzzzwwt~z~~\81\81\85\85\85\85zzzwtttpppmmpptttmpf__UURKG==::AAGGKKKKNGKGDDDDDADADG\88\88\88\8b\92\8f\96\96\99  §§§ª§££  \9c\9c\99\99\96\92\92\92\96\92\92\96\92\96\9c\9c£  £§££ §££§§±­­­±±±±­ª§§££ £\9c\9c\9c\99\9c\9c        £ £ \9c\9c\99\9c    £  \9c\99\99\92\8b\8b\88\85\85\81\81\81\81\81\85\88\88\8b\88\81\81\81\81\81zzwmfcc_\\RRNNNK=:DD=AAGKURNNRUKGKGGNKUUXX\__cfifiiiXX\RRNNXUmptwwwwtimc__XXUNRKGGKNR\fccffffiiiimfmmppmpttttpimmicffffcifppt~~~\81\88\8b\8b\8b\88\88\88\81\85\81~zz~wpipmfif_f_XRDRRUXUNRKGDA:0,))"\1f"\1f\e\e\e\18\18\18\18\18\18\e\18"\1f),,6ADRN\ifm~\88\88\8b\8f\96  \99\99\9c\99\9c\96\96\92\8b\8b\88\88\81~~wptttppmptpttwz\85\85\8f\96\99\96\99\99\96\8f\92\96\96\92\96\96\99\96\9c  \9c\9c\99\9c£    \96 \99\92\8b\8b\88\85\85\85\81\85\85\85\81\81\81\81\81\81z~ztpmptpttwz~zz~\81\81~wz~wtwtwppmpimmptttttpmimificimmimmmpmtptwtzwtpmmmpppzz\81~\81~\81~~~\81~\81\81\81\81\85\81\81\81~~~~~~zzwmpfcc\UXXDUNNNNNRGKKRNR:DXNUc,\__U\XURNRKKKKKKG:A:6303,,0,)%%%%"""""%%,)"))),%),%,,,,0000036:=ADDKDDDGAAADN=RNRK==D=A=AA=AA=DGADGGGAG),))))))),),,,60300003::63=66:::AGRKDDGGKKDGGRRRRRUX\XX__cffiffifccXRUURRRNNRU\_fcimpttw~~~zzw\81~\81\81\85\85\81\81\81\81~wztttppmmiimmttppppc_RUNNGAA==ADGKKKKGKKGDDDADDDDDGK\88\85\88\8b\92\8f\96\99\9c £§ª§§££ £\9c\9c\99\9c\99\96\96\96\92\96\92\96\96\96\99\99\9c    §§££££££ª­ª±ª­±­­­ªª§§  £  \9c\9c\9c\9c\9c\9c  £ £ £££   \9c \9c \9c\9c \9c\9c\99\99\96\92\8f\8f\8b\88\85\85\81\85\81\81\81\85\88\8b\85~~z~~zwtmf___XXNNKAGD::A==AADGGGDKNRGDGDGKKKRUUX_ccifimmmp\cmU_mptwtzzzzzwmmf_cXXXRUKGGN_\ciififffiifiiimmpppptttppmmmmffffffffmptww~~\88\88\8b\88\88\8b\88\85\88\85\81~zzwtimiifc\X\\UGURX\XRRGGA=:0,,%"\1f\1f\e\e\e\1f\18\18\e\e\18\14\18\14\1f\1f%,03==NR_fiw~\88\88\88\8f\92\92\96\92\96\92\96\92\96\92\8f\8b\8f\8b\88\85\81~wttppptpttppww~\81\88\8f\96\96\99\96\96\96\8f\92\92\96\8f\99\92\99\92\99\9c  \9c\9c £   \9c\99\9c\99\92\8f\88\88\88\88\85\85\85\85\81~\81\81\85~\81zzwtmmmpmpptw~wzz~\81ztzzztwwzptppmppttwtttpmimifffimimiimpptppwtzwwtptptttz~~~\81~\81~\81~\81\81\81\81\81\81\85\81\81\85\81\81~~\81~~ztimc__XX\XDXRKNKKUDKUU\U=_\_Xff_ccX_\XUNNNKKGGKG==66636,0,0)))%%%%%%%"%0,\1f%,))),,),,),0,0336:=ADGGNDDGDADAURRRRRK==A=A:====D=DDAADDD0K%),))))),,,,0,,00003036633:6:6===GRGDDKGKGGGGRRRUUXU\XX\_ccfffffccc\UURRNRNRUU\\cfimpptwzz~~~z\81\81~~\81\85\85\85~~ztwtpppmimffimtpppttp_NRNNGDD=AADGKKGKGGGGDDAAADDGGGN\8b\88\8b\8f\92\92\99\9c  §§§ª§§£   \99\9c\9c\9c\96\99\99\92\96\96\96\96\96\99\99\9c\9c \9c £££ £££§ªª­±­­­­­ª­§§§   \9c\9c\9c\9c \9c \9c££ £  §££   \9c\9c\99\9c\9c\99\9c\96\92\96\96\96\96\8f\92\8f\8b\88\88\85\85\81\81~\81\88\88\81zzwzzwtpic_\\UXKDD==A66:::==ADDDDGDNDAAADDGKRRUX\cfiimppptttppwptwzw~~~~~~wpffc\\UUXRXX_c_fmmiifiiiiffiimmppmptptppmmpiiiiicfiimmptzz~\85\88\8b\88\88\8b\88\88\88\85\81~\81~wwmmfiic_\X\XKUR__\UUKKA::30))%\e\1f\e\e\e\e\18\18\18\e\e\18\18\11\e"%0006AKN\cmz\81\88\85\88\8f\8f\8f\8b\8f\8f\8f\88\8f\92\8f\8f\8f\8f\8b\8b\88\81~zwttptwtttttwz~~\88\92\99\99\9c\96\99\96\8f\8f\92\92\92\96\96\96\96\96\9c\9c£ \9c£ £ £\9c\9c\99\96\8f\8f\8b\8b\8b\8b\88\85\85\85~~\81\81\81\81~zzwpmpmmmmmttzzwzz~wwzz~wzwwtwttpttwtttpppifiiicffmmpimpmpttmwtzwwwtwwwww~~~~\81~\81~\81\81\81\81\81\81\81\85\85\85\85\85\81\81~\81\85\81z~pmpc\\X\\XX\RKRKKXGNXXc_=m_miiicff_c_XXKNKKNKKGDA:::666300,,)))%)))%%%%,,%))%,)0)))),,00366:=ADDGGNGGDAGDAXUUR=RK==DA==::==AAAAAAADD,K%)),,))),,,,,,,0330603336366:6:=:DNDAGKKGGGDGNNRRXUXX\XX___cccfff__\XUURRRRURX\__cfipmtwwz~~~z~\81~z~\85\81\81zzwptpmmmmiifcfipptttwt_NNKKGGD=AADGGGGGGKDGAAAADGGGKKR\88\8b\8f\8f\92\96\9c\9c  §§§ªª££   \9c\99\9c\9c\99\9c\99\92\96\96\96\96\96\96\99\99\9c\9c\9c\9c£     ££§ª­­­±ªªªªª£££  \9c \9c\9c \9c\9c   £\9c ££§ § £ \9c \99\99\99\99\96\92\8f\96\92\92\92\92\92\8f\8f\88\88\85\88\85\85\81z\85\85~wwtzwtpmf_\XXRUGA==:63:66===AA=AAADA====ADGKNRRX__iimpttpwwwtwztwz~z\81\81\81\81\81\81zpwif_\\XX__ccfiippmiimiimiimiimmpmmtttptpppmmiiffcimpimtww~\81\85\88\88\88\88\88\88\88\88\88\88\85\81wtpmffi__\XXXNU\ccXXUNND:63,))%\1f"\1f\e\1f\e\18\18\18\e\1f\14\e\14\1f%%0003DKKX\m~\81\88\88\88\8f\8b\8b\8b\8b\8b\8b\88\8f\8f\8f\8f\8f\8f\8b\8f\88\85~~wwwtwwwttttzz~~\85\92\99\9c\9c\96\99\96\8b\92\92\92\92\96\96\92\92\99\9c\9c £  ££  \9c\9c\96\96\85\8b\88\88\8b\88\88\85\85\81~z~\81~\81~zwwpmmpimpmttwwwzwzwzzzzzzwwwwwwtwwwtttppmiiiim_ffmmmmmpmpppiwpzzzztzzzzz~~\81~\81~\81~\81\81\81\81\81\85\85\88\85\85\85\85\85\81\81\85\88\81w~pmtc_XXXXXU\UKXKR\KRXUfmcwtpmipmiccfcUUKKGGKKGDAA66=::66600,,))),,))))%))),,%0,0,,%,)0036::=ADDGKKRKKGNKXAUUUN==KA=A==:::===A=A=A=AA)G%,)0)))),,,0,,0030063333633:666:=ARA=DGGDDDGDRNRRXUX\\\X__\c__ccf\\XUXXUUUUUU\\__ccmppttzw~~~~~\81~w~\81~~twpmpmiiiiifccffmptwwwwpKKGGGDDAAADGDGGKGKDDDAADDGDDNN\88\8b\8b\8f\8f\92\96\9c £ §£§§ª££\9c \9c\9c\9c\9c\9c\99 \99\96\96\99\96\96\96\96\99\99\9c\9c\9c\99        £§ª­­­ª­­­§§§£     \9c \9c \9c     § £££    \9c\96\99\96\96\92\8f\8f\92\92\96\96\92\92\92\92\8b\8b\85\88\85\81~z\81ztttpwimcic\XUUNG=A=:::6::6:::======A:=:6=:DDGKNRU_ciiptwttzwzwz~wzz~~\81~\81\85\81\85~pzmif____ccffimtttpiiimmmmmmmmmppmptpttttptpmimfimimpmpttz~\81\81\88\88\88\88\85\8b\8b\8b\8b\8b\88\81zwpiccf\\\\XURU_ff\\XRKG=60)),"\1f\1f\1f\e\1f\e\18\e\18\1f\e\14\1f\e"),033AGGGU\i~\81\85\85\88\8b\88\88\8b\88\85\88\88\8b\8b\8b\8f\8f\8f\8b\8b\8b\85\81\81wzztzwwtwww~z\81\88\8b\92\96\99\99\96\99\92\8f\92\8f\96\96\92\92\92\8f\99 \9c\9c £££  \9c\9c\9c\92\92\85~\85\85\88\8b\8b\85\85\81~~~~~~zwwwpmmmiipmppttwwtzwzwzzzwztwzzwwzwtpttpmififipfifmpppipmppmiwpzzzzwz~~z~~\81\81~\81~\81~\85\85\85\85\81\81\85\88\85\88\85\88\85\85\81\85\85\85zzpmpc_\X:UXU\XX\KX_cRXitpwzwtpitpmfff_XRKKDDGGDA6=3::::6:::6,,,,)3,,,),%,),0,%3,000,0,336:==AADGGKKRKNKRN\NUAUK==KAAA==6::A::A=A===DA)G),),),,,,,,300,03003333333666:6:==N=ADDKGDGDDRNNUUX\__\\________c__XUUXUXXXXX\\\_ccmmptpwwzzz~z~zwz~zwptmfiififfff_cffiptwzwwtGDDDDDDA=DADDGDKGKGDGDDGGGDGRR\88\8b\8b\8f\8f\92\96\9c £ ££§§ª   \9c\9c\9c\99\9c\9c\9c \9c\99\96\99\96\92\96\96\96\9c\9c\9c\9c\99\9c \9c \9c\9c £ £§ª­­­ª­ªª§££\9c    \9c\9c\9c   £ £££ ££ \9c\9c\9c\9c\99\92\96\92\92\8f\8b\8b\8f\92\96\96\92\92\92\92\8b\8f\85\85\88~zwwwppfmtfi___XURRKD===6663663::=:=:=:=A6=:::=ADGKKRUcfmittwww~wzz~zwzz~z~~~\81~\81~twpmiccfcffiimmwwtpmpmmpppmppmptppptpwttttttmmpifptptpptww~\85\81\85\88\88\88\85\8b\8f\8f\8f\8f\88\85~ztf_\c\\\_XXRU_ii_\\UNG:30)%)\1f\e\e\e\18\e\e\e\e\e\1f\1f\e"\1f%,0066DGKGRXf\81\85\85\85\85\88\85\85\88\81\85\85\85\88\88\88\8b\8b\8f\88\8b\88\81\81\85z~zwzwttwztzz\85\8b\8f\96\99\96\99\99\96\8f\8b\8f\8f\96\92\96\96\8f\8f\9c\9c\99  £     \9c\99\8f\88\81~\81\81\88\88\88\85\88\85\81\81~~~~ztwttpmmiipmpmptttwzwzwzzzwzttwzzzzwttwpppifffimiffmptpipmpmiiwtzzzzz~\81~z~~\81\81~\81~\81~\85\85\85\81\81\85\85\8b\85\88\88\85\85\88\81\81\81\85~wtimc\_U:UXU\X\__\_fimmwtz~zwtpwtpiiccXNGGAAD==:6:3666::===:,,G,GA:,0,0))))0036::A:0306::===ADDGKKNRKKNURXRUAUN=AG==A:=6=:A=:A=====A=)D))),,,0,,,,3,003330606633366666:==K=DA=GGADDDRRRRU\\__\\_\_\c__c___\XUXX\UXXX\\\\cfimmppttwzwzwzwtwzttif_cffcfcccc_cccimpwwwzwADADDADA=DADGGGKKNKGGDGGKKKRUU\85\88\8b\8f\8f\92\92\99\9c ££§§§§£  \99\9c\9c\9c\9c \9c\9c\9c\99\99\96\92\92\96\96\96\99\99\9c\99\99\9c\9c\9c\9c \9c\9c   §§­ª­­­­ªª§§ \9c \9c      £ ££  \9c  \9c\9c\96\99\99\92\8f\92\8f\8f\8b\8b\88\8f\8f\96\96\92\92\96\92\8b\8b\88\81\85~ttttmmfcmfc\\\XRKDGA=::66603666::==:=6==::=::=ADKKKN\fcmmtwwzz~wwwzwtzwzwzz~~z~zwtppmffifiiimpmzzwwptppttpmttpptptpttwttttttpmtmpwwtwttwzz\81\85\81\85\85\85\85\88\88\8b\8f\8f\8b\88\85zwccXXcXXX_X\XX_if___RKD660,")\1f\e\e\18\18\e\e\e\e\18\e\1f\1f"%)0366:DDKDUUi~\85\85\88\81\85\85\81\85\81\85\81\81\85\81\85\88\88\8b\88\88\85\81\85\81~~zzwtwtwzt~~\88\8f\92\99\99\99\99\99\99\92\8b\8f\92\96\92\99\92\92\99\9c\9c\9c£\9c£\9c  \9c\9c\99\96\85z~z~~\85\88\85\85\88\88\81\81\81\81\81~ztwttppmimmpmmpptptwwzzzzztwtttwzwzztttpmmfciifmmiimmpmimmpmimzwzzz~~~\81~~z~~\81~\81\81\81\81\85\85\85\85\85\88\85\8b\88\88\88\85\85\88\81\81\81\81~tpii_\_R:U\\\U__c_iimmpww~\81zzwtwwmmf__UNKD6===::3:63336=:AA=KKKNKD=,,,,,,,,336:==DA3AG:==A=AADGGKKNRNKKRUURUAUN=AD::A6:3:6A::========)3,)),,,,,,,,00036600606:6333366:6::N:A==DDDAADNRRNRX\__X_c___c___\__XUX\\\U\\X_\\\cfmpmppttwwtwtwtpttpffc__cc_cc_____cciimtwtwtADAAAAAA=DADGGGKGNNGGGKKNNR\\81\85\85\88\88\8f\8f\92\96\99\99\9c££§£§££ \9c\9c\9c\9c\99\9c\9c\9c\9c\99\96\96\92\92\96\96\96\96\99\99\9c\99\99\9c\9c\9c\99\9c\9c\9c \9c ££ª§ªª­ª­ªª££\9c\9c \9c   \9c  ££   \9c\9c\9c\99\99\92\96\8f\8f\8b\8b\88\8b\88\88\8b\8f\92\92\96\92\92\96\8f\8b\88\85\81\81~wwppifc_\c_X\XURNGD:::633300663:=:==:6==6::=:ADGGKNU_ffmptwzzwztttwptztzwzwzwwzwwmptmiimimmmmppzzzztwttwwttttttwppttwtwttwwpmmtpwzzwzwtz~z\85\85\81\85\85\85\85\88\8b\8b\8f\8f\8b\88\88zm__XXcXX\_\\\\fiic\\NGA360,\1f%\1f\e\18\18\18\18\e\18\e\18\1f""",036::=DDK:XUt~\85\88\85~\81\81~\81\81\81~~\85\81\81\85\88\88\88\88\85\85\85\81\81\81zwwwwtwzt~\81\8b\8f\92\96\99\99\96\96\96\92\8f\8f\92\99\96\99\92\96\9c \99 £ £\9c\9c\9c\99\99\96\92\81wzwzz\81\85\81\81\85\85~\81\81\81~\81zwwwtppmmmmpppmppppttwzzzwwtttpwwwwwpptpmmifiicipmmmptmimippipzwz~~\81\81\81\81\81\81~\81\81\85\81\81\81\85\81\85\88\85\88\85\88\88\88\88\88\88\88\85\85\81\81\85\81zppii_X\N:X\__\c_f_mmppttz\81\81zwtwtwpic\_UKK=::=:6:6:33333:=DAANNKRNG=3000000366:DAAGDKDK6ADDADDDGGKKRRNKNNRXRRARKA=:::=6606:A:::=======,),))),,,,,,,30663:0633666333366::66N==A==AAAAAKNNNRUX\\\__c_cc__c_c\\X\_\\U\\X\___cimppptptttpppppmpfifc__c_____\__\\ccifiptptXDADAAA=A=DAADGGKKNKKGGNNURUz\81\81\85\85\85\8b\8b\8f\92\96\96\9c £§§§£§£\9c \9c\9c\9c\9c\9c\9c \99\96\96\96\92\92\92\96\96\96\99\99\96\99\9c\99\9c\9c\9c\99\99 \9c\9c  §ªªªª­­ªª§£   \99 \9c   £ £\9c\9c\9c\9c\99\96\96\96\8f\8f\8b\8b\81\81\81\85\85\85\88\8b\8f\8f\92\8f\92\92\8f\8b\8b\81\85\81\81ztpmmc_\\_\UXURNKGD=::33030,336::6:=::==66:==DDGKKR_ciiptttwwtwppptmtwwwwwtwzttttmmpimmimmmppttww~~wwwwzzwwzwwwwtpttwttpwttpppttz~~zzzzz~~\81\85\85\85\85\88\85\88\8b\88\8f\8b\8b\88\88~m_\UUc\X\__X__imif_XDDA,30)""\1f\e\18\e\14\e\18\e\e\e""%)036:==ADDK:\_w\81\88\85\85z~~z~~~w~\81\81\81\85\85\85\88\88\85\88\85\85\85\85zwzwtwz~z\85\8b\8f\8f\92\92\99\99\96\92\92\8f\8f\92\96\96\99\9c\92\96  \9c    \9c\99\99\96\96\85\85wtttww~\81~~\81\85~~\85\85~\85~zzzwtpmmiimppmpmpmtww~~zwwttpmtttttpptpmpmiimfimmpptpiipmppmmzt~\81\81\81\81\81\81\85\85~\81\81\85\81\81\81\88\85\88\88\88\8b\88\85\88\85\88\8b\88\88\85\85\85\81\81\81zppmi\\XN:\_c__c_c_iimmtpz~~ztptptmf_\\UKGA:==66:::333636=ADDNNRURKA=:333:6=6==GDDGGKGNADGGDDDGGGKKNRRNNRGURUANGA:::6=6333:=6:::======0))))),,0,,,,00:33:3:333333636:::=6:N:=A:==ADAANKNNNUU\X\_cfcccccccc_\\__\\X_\\__c_cmmmpptptppmmppmiific__\c_\_\\X\\\\_cfcfmpm\XD=AA=A:==AAADDGGKKNKGGNNX_p~\81\81\85\88\81\8b\8b\8b\8f\92\96\99 ££§§£ª£\9c \9c\9c\9c\9c\9c\99\9c\99\99\92\96\92\8f\96\92\96\96\96\96\96\99\99\9c\9c\9c\99\99\9c\9c\99\9c £§­ªªªª­ªª§££  \9c£     \9c \9c\9c\99\99\96\92\92\8f\88\85\88\88\81\81\81\85\85\81\85\88\8f\8b\8f\8f\8f\8f\8b\88\8b~\81~~zttpmc\XXXUUURRKKDAA:=6030,0066=66:=:===:6::ADGKNKUcfmmttppttmiiimmipwttwwwtwptptpmmimmfmmmmttwzz~zzwwtzzzz~zzzzwttwwttpttwpmmtw~\81~z~~~~\81\81~\81\81\85\88\88\88\8b\8b\88\8b\8b\8b\88\88zm_\XXc_XX\\\ccmpmfcXDA=,0,%%"\1f\18\18\e\18\18\18\e\1f\1f",0036==AAADDKG_c~\85\88\81\81zztwzzzwz~~\81\81\85\85\88\85\85\85\85\85\85\81zzztwzz\81\85\88\8f\8f\8f\92\92\99\99\96\92\96\8f\92\92\96\96\99\9c\96\99\9c\9c\9c£  \9c\99\96\96\8b\85\81~tpppttzwzw~\81~\81\85\85\81\85~~~zwtptppmpppppmmmtwtzzwwwtptmptptpmptpmmpimmimiimmwppmppmpmpzw\81\85\85\85\81\81\85\85\85\81\85\81\88\85\85\85\8b\88\88\88\8b\88\8b\85\88\88\8b\88\88\8b\88\85\81\81\81~zppmi_\XN:__cccc_c_ffimwpzzzwpfpmpiXXXXRGDD==:636666366::=DDGRNUURRDA=:=:AAAKDAGDDKDGGNDGKGDGGGGKKKNRURRNGRRRGN:D6663:66666:66:::=====,)),),0,,,,,,,,=0366=3033363666:6==:K::=:::=A=AKKKNNRRXUX\_cccc_cfffc______\_\__cccfmmpmppmptpmmmmmffffc__Xc_\\\XXX\X\\_cccfff\XGAAAAA=AAAADDDKGKKKGGGKR\ftz~\81\81\88\85\8b\88\88\8f\92\92\96 £§§§§ª£ \9c \9c\9c\9c \99\99\96\96\92\92\8f\92\92\96\96\92\96\96\96\99\96\99\9c\99\9c\99\9c\9c\9c\9c £ªª§ª§ª­­­§£ £    \9c\9c£ \99\9c\99\99\96\96\92\8f\8b\8b\88\85\85\81\81~\81\81\81\81\81\85\8b\88\8b\8b\8b\88\88\85\88\81~zzwwwmic\\XRURNNNGKGDA:=:30303336:::====A=:6=ADGKNRR_fipptpmmpiccffiifmtpttwzttpttptmpmmmimipipwwz~~z~zzwzzz~\81~~~~zwwwwwtpttwtptwz~\85\81~z~\81\81\81\81\81\85\81\88\88\85\8b\8b\88\8b\8b\88\8f\88\8bwi_\U\c_\\_\\fmpppif\D=A,,,)%%"\e\e\e\18\1f\18\e"%)36:=:AAAADDDNUc~\81\85\88\81~zwtwwtwzz~~~~\85\81\88\88\85\85\81\81\81\85~zzwzz\81\81\88\8b\92\92\92\92\92\99\99\96\96\92\92\8f\8f\99\99\9c\9c\99\9c \99\9c \9c\9c\99\96\92\8fiffpiiiimpwtwtz~\81\85\88\85\85\85~~\81~wzwwttppmppppimtttwwwwttmtmmtptpimtppmpmmmmmifpptptptpipmpzz\81\88\85\88\85\81\85\85\81\85\88\85\88\85\88\88\8b\8b\88\88\8b\88\8b\88\88\88\88\88\85\8b\88\85\81\81\81zztpmic__c:___ccc\c_cccmztwwwiiciXc\UUU\NGDA==66666:33:===ADGKURXXXURDAAADDGDNGDGAGGDGGKGGGDGKKGGKKKNRRRNNGKNNKK:A63306:::66666666:====)))))),,0,,,A,,=0033:033333666666:A:G::::::====KGNKRNNUNUX\__c_c_iffc__ccc____cccfffiimmmpmppmimmiicfcf___\_\\\XXXUXXX\___cccc\\KDDDDD=AA==AAGGGGKGGDGKU\ipw~~\81\88\85\88\88\8b\8f\92\96\99 §§§§£ª£  \9c\99\99\99 \9c\99\92\96\92\92\8f\92\92\92\92\96\96\99\99\99\96\99\99\96\99\96\99\99\99\9c\9c£§§ªªªª­­ªª§££        \99\99\96\99\92\92\8f\88\88\81\85\81\85\85~~\81\81\81\81\81\81\88\85\88\88\85\88\88\85\85\85zz~ttwifcX\URRRNRRKKKDD==:33003366:===AAAAA=:ADGKNRRUcmmpttmifmcfcccifiippptwwwttttttpmmmmmiimmtwwzz~~~z~z~w~~\81\81\81~\81zwwtwwtpttwttwz~~\85\85~~\81\81\81\85\85\81\85\85\88\8b\88\8b\8b\8b\8b\8b\88\8f\88\8fif__U_c__\_\85cftwtpmi_A:A0,,,)""\e\1f\e\1f"\18\e%)36:=A=DDDDGGDRX\88\88\85\85\88\81wzwtttttzw~~~~\81\81\85\85\81\81\81\81\81\81\81~~zz~\85\85\88\8b\92\92\96\92\92\99\99\96\92\96\92\92\92\99\9c\9c\9c\9c\99\9c\9c\99\9c\99\99\96\8f_ffcfiicfiipppwtwz~\85\88\88\85\88\81\85\85~~~zzwwtpmptppmptptwzwttpmpmmpppmfmppppmimmppmimpwtwtwtmtmtzz\85\88\85\88\88\85\88\88\81\88\88\85\8b\85\8b\88\88\8b\88\8b\8b\88\8b\85\85\88\88\88\85\88\85\81\81~~wztpmicccf:__\cccGc_c_cmwwtttfN\\UURKRRXNGD==:6:::663:AGDADGKNXUX\\XUXRDRGGKGNKDD=GDDGKKDGGGGKKGGKKKNRRNNKKNKKNG:A63303:::::6666666:===)))),),,,,,,D0,:,,006000003333::==D=G:::::=====KGNGNKKRKRUX\\__ccifffcccfc__cc_cfcfffimmpmmmpmmmificfcfc__\\\X\XUXUUUUX\_____\\\NGGDDAA===ADAGDGGGGGGGKU_mppzz~\88\88\88\88\8b\8f\92\99\9c ª§ª§§§££\9c\9c\9c\99\9c\9c\99\99\96\96\92\8f\8f\8f\92\92\96\92\96\96\96\96\96\96\99\96\99\99\96\99\9c\9c  §§ª§ªª­­ªª£§£ ££  \9c \9c\99\96\92\96\8f\8f\8b\85\85\81\85\85\81\81\81~\81\81\81~~~\85\81\81\85\81\85\85\81\81\81wzzpptmf__XUNRRRNNNKKGGAA:66606366=AA=DADDDA=AGKKRRR_fppttpif_cfcc_cffiimmmtwwwptttpppimmppmmpptttw~\81\81\81~~~~z~z~\81~~\81~wwwztpppttwwz~\81~\85\85\81\81\85\81\85\85\85\85\85\85\88\8b\8b\8b\8b\8b\8f\8f\8b\8f\8b\92ii_cX_cc_\i\88\81\85z~wppf_D==3,)0,)%\e,)%,\1f\18)06:=AAADDDDGGNX\88\8b\8b\88\85\88\81zzwtppttwwz~~~~\85\81\85\81~\81\81\81~\81~\81~~\81\88\88\8b\8f\92\96\96\92\96\96\96\96\96\99\96\8f\96\9c\9c \9c \99\9c\99\96\9c\96c_c\_\_cff__ffmimtttwz\81\85\88\85\8b\85\88\88\81\81\81\85~zzwtittpppttmptwtppmmmppmpppfmppmpmmpmmppmmmwwwwwwtwptz~\85\88\85\88\88\88\88\88\85\88\88\85\8b\85\88\8b\8b\88\88\8b\8b\8b\8b\88\88\88\88\88\85\85\85\81~zzwztmimcffc:c_\cccG__c_cmttpmfcKXURRAGNNUKGA==::=::3:3ADKGDAGNRUUX\_\X\UUUKKNKNKDG=DADDGGGGGGDKGGGKKKNRUNNNNRKGNG:A63000===::::6:6:6:::=,,,,,,,00,0,D3,00,000000003363==AAA:G:=:6::====GGKAKGKNGNNRUX\\cfiiffcccf__c_ccfffffiiiipmmmmmmmiffcfccc___X\XXUUURURUXX\\\\\XXXKKKGDDA===DDDDDGGDGGGDG_cimpwwz\88\88\88\85\8b\8f\99\9c\9c£ª£§ªª§££\9c \9c\99\9c\9c\99\99\96\96\8f\92\8b\8f\92\92\96\96\92\96\96\92\96\96\99\99\96\96\96\99\9c\9c£ §§§ªªªªªªª§§§    \9c\9c\9c\99\99\92\92\8b\8b\88\88\85\81\81\81\85\81\81\81~\81\81\81\81z~\85~\81\81\81\81\81~~~zwwtppmc_c\URRRNNNRNKKGDA6:6:036::=AAAADDDDDKDKKNRUXcittttmicccccfc_ffffmmmtwwwtttpmppmmmtpmppmpttw~~\81\81~~~zz~~\81~z~\81~zwwztppmttwww~~~\81\85\85\85\81\81\85\88\88\85\88\85\88\88\8b\8b\8b\8f\8f\8b\8f\8f\8f\92mf_c\ccc\_m\8b\85\85~\81zztccKDA6,),,,))0,33",,3:AAA=ADGGRGG\8b\8b\8b\8f\8f\8b\85\85\81zzwtpmttttz~\81\81\81\88\85\85\85~\81\81\85\81\81~\81~\81\81\88\8b\8f\92\96\99\99\96\99\96\96\99\96\99\96\8f\96\99\9c \9c\9c\9c\99\96\96\99\92_\_UXX\_cf__cciffppptw~\85\8b\8b\88\88\8b\8b\88\85\85\88~~~zttttpptpppptttmmmmimtimpmfmppipmmppmppmpmwwzzwzwztw~~\85\8b\88\85\8b\8b\8b\88\88\88\88\85\88\88\8b\8b\8b\88\88\8b\88\8b\8b\8b\85\88\88\88\85\81\81\81~wwzztmimcffcccc_fc_G___c_ipimc\XKGRNK=DKKRGG=:::::==:=ADGNKGDKKNURXX__\_XXXNGRNNGDGADDAADGDGGDDGDGGGKKKNUNRNNRGDKD:A6A333=====:::::::::::,,,,00,,,,0,A0003,333000030066AAD=D=K:::66::::=DDGAGDGGDKKRUUXX_cfiicc_ff\c_\_ccfffcffiimiimmmmiiicffccc___\\\XUURRUNRUU\\X\XXUUKNKKGGDAAADDGDGGDDDGGGGccimptww\88\85\88\88\8f\92\9c  £§§£§§§£ \9c\9c\99\9c\9c\9c\99\9c\99\96\92\92\8f\92\92\96\92\96\92\92\92\92\96\96\99\99\96\99\96\9c \9c££§§§ª­ªª­ªªª§§£ £\9c   \99\96\8f\92\8b\8b\88\88\88\85\85\81\85\85\81~~\81\81\81\85~\81\81z\81~\81~~~zzzwtpmmmccf\XRRRNRRRNKNGGDA=:=:366:ADDDDDDKGGNGNRRUX\fmtttpiifcccccc_cfffimpptwwtptpppmppmptpppptttw~\81\81\81\81~~~~z~~~wz~zzzzzwtttwzwzz~~~\81\81\85\85\85\81\88\85\88\81\85\85\88\88\88\8f\8f\92\8f\8b\8f\8f\8f\92ic\c__cc_cp\92\88\88\81\85\85~w_fNGD:0,,00,,0066:63:=DDD==DKK\8fGK\8f\8f\8f\8f\8f\8f\88\88\85z~zttpttttz~\81\81\85\88\88\85\85\81\81\85\85\85\81\81\81\81\85\85\8b\8f\92\96\96\9c\99\99\99\99\99\99\99\99\99\99\96\9c £  \9c\96\92\96\8fpXUXUXX\Uccc_c_fc_mmiwt~\88\8f\8f\8f\8b\8b\8f\8b\88\88\8b\81\81\81~wwtppmtpttptttmmpmimpmmmifipmmpimpppppmpmwz~~z~zzwz~z\85\88\85\88\88\88\88\88\8b\88\8b\88\8b\88\88\88\88\88\88\8b\8b\8b\8b\88\85\88\88\88\81\85~\81~wtzztpmpfffffcfcf_\\__c_\fmfc_NRGKKKD=DGDNGD:66=6=:A=ADGKNKKGNNNRUUX\__\XUXNNRRNGADDGAAAADDDGDGKGGGGGGKNRNNRKNDDAG:=6D333AAA====:::::::::,,,,0,,,,,,00000000000000030::ADDAAAN6=666:::::AA=A=DGKGGGNUXU\c_fifc_ccc___\_ccccccfcffifiimmiiiifcffcc_c\\\XUUURRUNRUUX\XXRURRGNKNKDGDDDGGGGGGGGGKGGKfcimptww\88\85\88\8b\92\96  £ §£ £ª§£   \99\99\9c\99\99\99\99\96\92\92\8f\92\92\96\92\99\96\92\92\92\99\99\99\96\99\99\99   ££§§ªªªªªªª§§ª§£££  \9c\9c\96\96\92\96\8f\8f\88\88\88\88\85\81\85\81\85\81~~\81~\81z~~z~~~~zzzwztpmmpmfff_XXUNNRNNNKNKKGDGA==:6:ADGGGGGGNKKRRRUUX\_fppwtmmiffcccccccfffmmpmttwtttpmmmttttttpttttpw~\81\85\81\85~~\81~zzz~wzz~~z~zwwwwz~zzz\81z\81\81\85\85\88\88\85\88\85\88\85\88\85\88\88\8b\8f\92\8f\92\8f\8f\8f\92\92if_cccfccmt\96\88\8b\85\88\88\81z_cRKG:30,330,33::=A6=DGDDAADKN\92G\92\92\92\92\92\92\8f\88\88\85~~ztwtttwtw~\81\81\85\88\88\88\88\81\85\88\85\85\85\81\85\81\88\88\8b\8f\92\99\96\9c\9c\9c\99\9c\99\9c\9c\96\9c\9c\9c \9c  \9c\9c\96\92\92\8f\XUUXXUXU___\__c\_ciitpz\85\8f\92\92\8f\8b\8b\8f\8b\8b\8b\85\81\81~zzttpptptppptpmimimmpmmmifipimmfmppmppptmtz\81\81~~~zz~zz\88\88\88\8b\88\8b\8b\88\88\88\88\88\88\88\88\8b\8b\8b\85\8b\88\8b\88\88\85\85\85\85\81\85~~zwwwwttptfificffcc\U\\\_\\\XXUUGNGKGDG=DGDKKA=06:6==DADGKNKGGKKNRRURUX\\\UUUNRURRKDGDDDAADDDDDDDGDGGGGKKNRRNRKKGDAGG:6G=03AAAA====::::::::,,0,,,,,,,,,0000000000000000::AAADDAN6=366:::::AAAA=DDKGGKKRUUX__cfcc\c_c___\__cccc_fcffffffimmmiiifffcc_c_\\XURXUURNRURXXUURRNNGNKKKDGDGGGKGGGGKKGNKGNfcimpttw\85\88\88\8b\96\99 ££ ££££§£  \9c\9c\99\96\99\99\99\99\99\96\96\96\92\96\96\92\96\99\99\96\96\96\99\96\96\96\99\99\99  ££§§§ª§§§§§§£§§££ £\9c \9c\9c\96\92\8f\92\8b\8b\88\88\88\88\85\85\88\85\85\81z~~z~zzz~~~zzzwzwzttpmmmiiffc\XNRRRRRNNNKKGKDDADADDGKGNGKKRNNUUUXX\_cittwtpmicf_ccc_cccffiimpwttptttpppttwwwwtwttwtz~\81\85\85\85\81\81\81zzz~zz~zz~~~zzwzz~\81~~z~~\81\85\85\88\88\88\88\88\88\88\85\8b\88\88\8b\8b\8f\8f\8f\92\92\92\92\96\92ifccccfffpw\99\85\88\88\85\85~~wfUND:3303330636=ADAAGGDGAADNN\92\96\96\96\96\96\92\92\8f\88\8b\85\81\81~wttptwtz~\81\81\81\88\88\88\88\81\85\88\88\85\85\85\88\85\88\88\8b\92\96\9c\96\99\9c\9c\9c\9c\99\9c \9c\9c  \9c £   \96\96\92\8b\XXRUXU\U_\\X\\X\\Xfmwt~\81\8f\92\96\92\8f\8f\92\8f\8f\8f\88\85\81~zzwwtptttppmpmififiipipiiimmmmifmmpmpptwtz~~\85\81\81\81~z~~~\85\8b\88\8b\88\88\88\88\85\85\88\88\88\85\8b\88\8b\8b\85\88\8b\8b\88\85\81\81\81\81~\81~zzzzttwtttfiiicff__\UXXX\XXUNNRRDNGKDDDADGGKK=:36:6:AD=GKGKKDGKKKNNURRUX\_UUUUUUUUKGKGGDAADGDAADDDDGGGGGKNRRNNKKKGDGK:GGA60AAAA====::::::::,,,,,0,,,,,,0000000000033303:6ADADDDN:A6:6:6:6:==AAAGGGGKKNUUUU\_cf____\___\___cfcccccfffcfffiimimmififc_c\_\\UUXUURNRRRUURRNNKKGKGGGDGDGGDKGGGKKNKRNRRffiipttw\85\85\88\8f\99\99 ££  £ £££\9c\9c\9c\99\99\99\99\96\99\99\99\99\99\99\96\99\96\96\96\9c\99\99\96\96\99\96\99\92\99\99\9c££ §§§§§§§£§§§£££££\9c£ \9c\9c\99\99\92\8f\8f\8b\8f\88\88\88\8b\88\85\85\85\88\85~~~wwwzzz~~zz~tzwzwwtppppmmmf_\URURRRRRRNKKNGGDGDGGKKNRNNURRRXXXX\_cfmtwwtmiiffcf__c_c_cffiimtppppttpttttzwwzwzwtzww\81\81\85\88\85\81\85\81z~z~~w~~~~~z~~zzz\81\81~\81~\81\81\85\85\85\88\85\8b\88\88\8b\8b\88\88\8b\88\8b\8f\8f\8f\92\96\92\92\96\96\96ifffcfiiit  \85\85\8b\85\85zzwiXKN=3633333:66AAGDDKGAGADGRN\96\99\99\99\99\96\96\8f\8f\8b\8f\88\85\81\81zzwtttt~\81\85\81~\88\85\88\85\81\85\85\88\88\88\88\88\88\88\8b\8f\92\96\99\99\9c\9c \9c\9c\9c    \9c£  £  \9c\96\92\8f\8b\XXUU\U\U\_\U\\X\XXcmww\81~\8b\8f\92\92\8f\92\92\8b\8f\92\88\88\81~zzwwwpptwmpppmiif_ffmmmfiiimpmfiimtpmptzw~~\81\85\81\81~~~~\81\81\88\88\8b\88\85\88\85\85\85\85\85\88\88\85\8b\88\88\88\85\88\88\88\85\85\81\81\81~~\81~~z~zwwwttpfffffcc\\XUURUXRURRNNNDKGKAAAAAGDGNA:3:::ADDAGGDGGADGKKKNRNNRXX_XXXXXXXUKKKGGGDDDDDAADDDDGGGGGKNRRNNNKGKDGN=DKD:3AAAA=====:::::::,,,,,,,,,,,,00000000000000336:AADAGDK=D:=::6666A==AAGKNKNRRUUUXX_cc\_\\__\\\___cfcccccccccfccimmmmmmiiifcc__\_XUUUURNUNRRRNNKGGGDGDDDDDADGDKGGGKNNNNRUUcffimttw\85\85\8b\92\96\9c  £   \9c   \99\99\99\99\9c\99\96\99\99\99\9c\9c\99\96\99\99\99\99\99\99\9c\99\96\96\99\92\99\96\99\99\9c£§££§§§£§§§£§£ £ £     \9c\99\96\92\8f\8f\8b\8b\8b\85\88\88\88\88\88\88\85\85\81~~zwtzz~z~z~~tztzwtttpttpppif_\RXXUUUUURNNNKKKKGKKNNRURRXUUUX\\\_cfiptwwpmifci_c___cccfciifippmmptptttwwzwwzwwzwzz~\81\81\85\85\85\85\81\81\81\81z\81zz~~~~~~\81~~~z\85\88\85\85\81\81\85\88\88\85\88\85\88\8b\88\8b\88\88\88\8b\88\8b\8b\8f\92\92\99\96\99\99\99\99miiffmmmm§§£\81\81\88\81\85wztmX\XA=::63:6=:6DKGGGNGDGDGK\96\96\99\9c\9c\99\9c\96\96\92\8b\8b\8b\8b\88\85\85~~ztwtw\81\81\85\85\81\88\85\88\85\85\85\81\85\88\88\88\88\88\88\88\8f\92\96\99\9c \9c  \9c £ £  §£\9c££\9c\9c\96\92\8b\88XXXUX\UXUX\\R\XXXX\_itw\81~\8b\8b\8f\96\92\96\92\8f\8f\92\88\8b\81\81~zwwwppwtppptmiff_cimpifmiimpmfmmpttttz~z\81\81\85\81~~\81\81~~\81\81\88\88\88\88\85\88\88\81\85\85\85\85\85\85\88\88\88\88\85\88\88\88\85\81\81\81~z~\81\81~~~zwzztppcccccc_XXURUNUXRRRNNKKGKGKD=DDADDKND=3===DDADDDAA==A=GGGKNKKNUU\\\\\XUXXKNNGKGGGDAAAADGDDGGGGKKNRRNNNKKKDGK=DGG=6DDDAA======:::::,,,,,,,,,,,,000000000000000036==DDDAK=A6::::666DAAADGKRNRUUUXX\\___\\\X___\\\\\_cc_cc_c_ccfccfiipmpmmiifcc___\XXRRUURRNRRNKKGDDDAA=A=AA=ADDGGGKKNNNRRUXcffiittt\81\81\8b\92\99\9c \9c£ \9c\9c\9c\9c\9c\9c\99\9c\99\96\99\9c\99\99\99\99\9c\99\9c\99\99\99\9c\9c\9c\9c\99\99\99\96\99\96\99\99\9c\9c £§£§§§£§§££§£ \9c£\9c   \9c£\9c\99\96\92\92\8b\8b\8b\88\8b\88\88\88\88\8b\8b\85\81\85~~~zztzwzzzz~ztwwzwwwwttwtttmic__\\XUXXUURRNNNNNKKNNRUUUUXXXX\___cffmtwzttpic_f___\\___c_ff_ffmiimppttw~zz~z~zzzz~z\81\85\85\81\85\81\85\81~\85\81~\81~~~\81\81\81\81\81\85\81\81\81\81\8b\8b\88\88\85\85\88\8b\8b\85\88\88\88\8b\8b\8b\8b\85\8b\8b\88\8b\8f\8f\96\96\99\96\9c\9c\9c\99\99timippmmȨ́~\81\85~\81wwpm____N==::=::=AGNKKKNGGDGGN\99\99\99\9c \9c\9c\99\92\92\8f\8f\8b\8b\88\88\85~\81~wzwz\85\85\85\85\81\85\85\88\85\81\85\85\88\88\88\88\8b\88\88\88\8b\8f\96\96\9c \9c £  £    £  §§\9c\9c\96\8f\81\8bXXUXX\X\X\X\RXUUXXX_iww\81z\8b\8b\92\96\92\92\92\92\8f\8f\88\8b\85\81~~wwwttwptpppmmffc_mmpfipimimpimimwwww~\81~\81\85\85\81\81~\81\81~z\81\81\88\88\88\8b\85\88\88\85\81\81\88\81\85\88\88\88\88\85\88\85\85\85\85~\81\81~z~\81\81\81~~zzzwtttc__X__\UURRRRUURNRKRNKKKGGA:GDDDDKNGA=A:AGA=DAA==::6:DDDGKGANRNXX__\XUXUKNNGKKGKDADAADDDGGGGKKKNRRNNRKNNGGGAADG::GGGDAA======::::,0,,,,,,,,,,000000000000000033:=AADAK:A6:::6:66D=DDGKNUUUXUU\\_\__\\_\X_\\\\X\__c__c_cfc__ccffiipimmmiifcc_c_\\XRRRRRNNRNKGGDGAAA=:6:=::=AADGKGGKKKRNUX_cfiittt\81\85\8b\8f\96\99\9c\9c \9c\9c\99\99\99\99\9c\9c\99\9c\99\96\9c\99\99\99\9c\99\99\99\9c\9c\9c\9c\9c\99\99\9c\99\99\99\9c\96\99\9c\9c\9c££§§§§§§§§§ £    \99  \9c  \9c\96\99\96\92\8b\8b\88\85\8b\85\88\88\88\88\8b\85\81\81~~zzwtwwzwwz~zwwzwwzwwttwtttpmfcc__\X\\XXUURRNRNNNRRRUXXXX\\\_cccfimptwzttmi_\c\c\_X\\\__cfccfimmmmpwww\81zz\81z~~~~z\81~\85\88\85\85\85~\81~\81\88\81\81~\81~~\85\85\85\85\85\85\85\85\88\88\8f\8f\8b\8b\85\88\88\8b\8b\88\88\88\8b\8b\8b\8b\88\88\8f\8b\88\8f\8b\8f\96\96\99\99  \9c\9c\9c\96ipmtpppÉ\85\81z~zz~ttmic_ccXGD=AA=:DDGNNKNKKGGDKR\96\99\9c\99\9c\9c\9c\9c\92\92\92\8f\8f\8b\8b\8b\85\85\85\81~~z~\85\81\85\85~\85\81\85\85\81\85\85\88\88\8b\88\88\88\88\8b\8b\8b\96\92\9c   £££££££\9c££ §§ \9c\96\8f\85\88X\XX\_\\XXRXRUUXXXU\ftz\85~\8b\8f\92\96\96\92\96\92\92\92\8b\8b\88\81z\81zwwwwzpwpppmmcfc_impcmpmmfmpmmmpwwz~\81\85\81\81\85\81\85\81~\81\81z~\81~\88\88\88\8b\88\8b\85\88\81\81\85\81\85\85\88\88\88\85\85\88\85\85\81~~~z~z\81\81\81\81\81~zwwtttc\\X=\RRXNNRRRURNRKRNKKKDGD=GDDGGNNKDAD:=D=:A=6::63636:=AADAKRKDU\\XUUXXNNNKGNGKGDDADDGGGGGGGGGKRRNNNNNRKDDAA=D:=GGGDDAA=====::::000000,,,,,,0000000000000000006:=ADDK==:=6:::6:AAAAGKNUXX\XX_\\_\_\\\\X\_X\\X\_cc_cc_ffcccfcfifimiiimiifcc__\XXUUURRNKKNKGDAADAA=:666:6::=ADGGDDGGGNNRX_cfimttw~\81\88\8b\92\96\99\99\9c\99\99\99\96\96\9c\99\9c\99\9c\9c\99\9c\96\99\99\99\99\99\96\9c\9c \9c \99\99\9c\99\99\99\9c\96\9c\9c  £§§§§§§§§§£ £  \9c\9c\9c\9c\9c\9c \9c\99\92\96\92\92\8b\8b\85\85\88\85\88\88\8b\85\88\85~~zzwztpztwzzz~zwzwzzzzwwtwwtwtpiffc__\c_\\XXUUNRRRRRUUUX\\\____cffimptwwztpmic\_X_\\XXX\\\_c__fiiiimpwww\85\81\81\88\85\81\81\81\81\81\85\81\88\88\85\88\88~\81\81\85\88\81\85\81\81\81\81\85\85\88\88\85\88\88\8b\8b\8b\92\8f\8f\8f\88\8b\8b\8b\8b\8b\8b\88\8b\88\8b\8b\8b\88\8b\88\88\8f\8f\8f\99\96\9c\9c  \9c\9c\9c\99\96\92zwwpt\85z~zzwttpmiff_ff\XKRNGDDGGGNRKNNNGKDNU\99\99\9c\9c  \9c\9c\96\92\92\8f\92\8f\8b\8b\88\88\88\85\81~z\81\85\81\85\81~\81\85\85\85\81\85\85\88\88\8b\88\8b\88\8b\8b\88\8b\92\8b\99\9c  £ £§££  §§ £§\9c\9c\96\8b\88\85\_\__c\\XXUUNNRXXXRXcpif\81\8b\92\96\96\96\96\96\92\96\8f\8f\88\88~~~zzzzwwtwppppifff_imtfpmppcptppptzz~\81\81\85\85\85\85\85\88\81\81\81~~\81\85z\8b\85\8b\88\8b\88\85\85\81\85\85\81\85\85\85\88\85\85\81\85\88\81~zzz~~z~\81~\81\81\81\85zwwtwf_\\:URRUKKNNNRRNRNNNKGKGDAAGDDDGNNGDDA:AA:63:)030333666::AAGNADXX\\RU\XRRRKGKKGKADDDGDDDGGGGGGKRRNNNKRNKGDDDAA:=GGGDDDDAA===::::00000000000,,,,,0000000000000066:=DDN:A==6:6:36DDDDGKRR\\_\\c____\____\__\XX\\_cf_cfcfiimffcfffiiimfimiifc\\_X\XUURNKGGKGDD==A==:63663366:=ADDAAGGGKKRX_cfmpwww~\81\85\85\8b\8f\92\96\99\96\96\96\92\8f\99\96\9c\99\9c\9c\99\9c\99\99\99\9c\99\99\96\9c\99\9c\9c \99\99\99\9c\9c\99\9c\99\9c\9c\9c£§ªª§ª§§§§£     \99\99\99\99\9c\9c\9c\99\99\96\92\8f\8f\8b\88\88\81~\81\88\88\88\85\88\81\81~zwzwttwwwwwzz~wztwwwzwwptttttpificc__fcc_\cXUUUUUURXXX\\__cccffiimptwwzwtmifc\X\_XXXXU\\\__\\cfmmmppzzz\81\88\85\8f\88\85~\88\85\85\88\88\8b\8b\88\88\88~~\81\81\85\85\85\81\85\85\85\85\88\8b\88\8b\8b\8b\8f\8f\8f\92\92\92\92\8b\8f\8f\8b\8b\88\8b\88\8b\8b\8b\8f\88\88\88\88\8b\8f\92\8f\99\99\9c\9c\9c£\99\99\99\99\92\92~zztwtwzwwttpmiicicfc_\RURKGKKKKNRGRNNKNUNU\96\96\99\9c  \9c\99\92\8f\92\8f\92\92\8f\8b\8b\8b\8b\88\85\81~\85\85\85\81~\81\81\85\85\85\81\81\85\8b\88\8b\8b\8b\8b\8b\88\8b\8b\92\8b\96\99  £ §§££ £§§£§£ \99\92\8b\85\81cc_ccc\\XUXUNRNUX\RUcmff\85\88\92\96\96\92\96\92\92\92\8f\92\88\88~~~zzzwzzwwtppmmiif_mitfpitmcpttttwz~\81\85\85\85\88\85\85\85\85\81\81\81z\81~\81~\88\88\88\88\8b\85\88\81\85\85\81\81\85\88\85\88\85\85~\81\85~zwwz~zz~~~~~\81\88~zzttfc\_::RRRKKKKKNNNNRNNKDGGD=DGDGAGRNKGAA6A=330,%)),000336:::==KADU\\\RUX\RRUNKKNGKADGGGGGGGGGGGGKRRRNNKNNGGDGDAA=:GGGDDDDDAAA=::::3000000000000000,,,,,000000000336:DAN=A=A:=:633DDDDGNUUX\c__c__\__c_\\\\_\X\\\\cc_ccfiimpiififfimmmiiiiffc_\_\XXURRNKGDDDAD==:::6633330306:=ADAAGDGGGNU\fiptzzw~~\85\85\8b\8f\8f\92\8f\92\92\92\88\8b\96\92\99\96\99\99\99\9c\96\99\99\9c\99\99\99\99\9c\9c\9c\9c\99\9c\9c\9c\9c\99\9c\9c   £§§ª§§§£££ ££\9c\9c\9c\9c\9c\99\99\99\99\99\96\96\96\92\8f\8f\8f\8b\88\81~\81\85\88\88\88\88\85\85~zzwwpttwwzzww~wzwwwzzttmtptptpifmifffiffc_f\XXXUXUUUX\__cciifmimpmttzwwwpifc__\\\XXUXUXXX\\XX_cmiiptz~~\88\8b\88\99\8b\96\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\88\81\81\85\85\85\88\88\81\88\88\88\88\8b\8b\88\8f\8f\8b\92\92\92\92\96\92\92\8f\8f\8f\8b\8b\85\88\88\88\8b\8b\8b\8b\8b\8b\8b\8f\92\8f\92\99\99\99\99\99 \99\96\96\96\8f\8f\81z~wwtwwwtpppffiffcfcc_\UUNNNNNKNNKRNNKRXUX\96\99\99\9c\9c \9c\99\92\92\96\92\92\92\8f\8b\8f\8f\8b\8b\85\85\81\85\85\88~\81\81\81\81\85\85\85\85\88\8f\8b\8b\8b\8b\8b\88\88\8b\8b\8f\8f\99\9c\9c££ ££§  £ª§§§§\9c\96\96\8f\81\81ffcffc__XUXRRRRUX_UU_ffi\81\8b\96\96\92\92\92\96\92\92\8f\8f\8b\8b~~~w~zwzzwttppiimmimmftmpmwppttwww~~\81\85\88\85\85\85\85\85\85\81\81~\81~\81z\81~\88\88\88\85\8b\85\85\85\85\85\81\85\85\85\85\85\85\81z~\81wzttzzzz~~~z~\81 \81z~ttff__::NRGGGKGGKKKKNNNNDGDAADGDG=KRKGG==3=:3)"%%)),,0033666:==KAGR\\XRXU\URURNNNKKAGGGGGGGGGGGGGKRRRNNNKKKGGKADA:=GGGDDDDDAAAA=:::300000000000000000000,,0000000033:ADKADAD=A:336DGDGGNRXX\__cccc___cc\\\_\_X\\_\cc_ffimiptmmimiiippimiiifccc\\X\XXRRNKDAAA=A==:6663000300,6:=AAADDDDGKKU_iipwz~zzz\81\85\88\8b\8b\8f\8f\8f\88\8b\85\88\8f\8f\96\92\96\96\96\99\99\99\96\9c\99\99\99\99\9c\99\9c\99\96\99\9c\99\9c\9c\9c \9c£££ª§ª§§ª££££ £   \9c\99\99\96\99\99\96\96\99\96\92\8f\8b\8b\88\8b\81\81\81\85\8b\88\8b\8b\85\81\81~zzwttwtzzwwzztwwtwwwtpppmtmppmiimiiimmifci_\\XXXXXX___cfcmmmppptpwwwzzwpmif__X\\UURURUXUXRUX\fmmmpwz\81\81\8b\92\9c£\9c\99\99\96\96\92\92\8f\92\8f\8b\8b\8b\85\81\81\88\88\88\85\85\85\8b\8b\8b\8b\8f\8b\92\92\8f\8f\92\96\96\99\96\8f\8f\8f\8b\88\8b\85\88\8b\8b\8b\8f\8b\8b\8b\8b\8f\8f\92\92\96\99\99\99\96\96\9c\96\92\92\92\8b\8f\85zzzwtwwwpmmmfffiffccc__XXXRRRNNKNKNNNNU\X\\96\99\96\9c\9c\9c\9c\96\92\96\96\92\96\96\8f\8b\92\8f\8b\8b\88\88\81\85\85\85\81\81\81\85\81\88\88\88\88\8b\8f\8b\8f\8b\8f\88\88\8b\88\8b\8b\8f\99\9c ££ £§£££§§§§££ \96\96\8f\81\81iffifcc_XXXURURRX\XXcfft~\88\92\96\92\92\92\92\8f\92\8b\8f\8f\88\81~\81z~~zzzwttppmmpmmpiitptpzttwwzzz\81\81\85\85\88\85\85\81\81\85\85\85\85~\81~~z\81~\88\85\85\81\88\88\88\85\81\81\81\88\88\81\85\85\81\81w~wwwppwwwwzzzzz\85\88\81z~twfifc6NKNKKDKGDKKG:AKKKGDAADDDADANRGDDAA6:30%"%%)),,0033666::=NADD\\UUXRXURXNRRRKKDDGKKKKKKGGGGGKRRRNNNNKKGKGDGA:AKKKDDDDDAAAAA==:3000000000000000000000000000000006=ANAADDA=6633DGGGKKUXU_ccfcffc_ccc__\_X\\\\\Xcc_ccfmmtwpmmtmmmmpmpmiffccc_\X\UXRRKGAAAA==:::636000,00,,36:=AAAADDKKK\cmmtz~\81~ww~\81\85\88\88\8b\8b\88\88\81\85\88\8b\85\92\8f\8f\92\92\96\96\99\99\9c\9c\9c\99\99\9c\99\9c\99\99\99\9c\99\9c    £§§§§§ª§ª§££§ £  \9c\99\99\96\92\99\96\96\96\96\92\92\92\8b\8b\8b\8b\81\81\85\85\88\88\8b\88\88\81\81~z~zwwzwwzwzwwwwwwtttptppiwttttmmpmmmppmicic___\\\\_ccffiippptttwtzzzzzwpmifcc\_\RXUURRUNURUU\cimptzz\85\81\99 £§£\9c\9c\99\99\96\96\92\96\92\8f\8f\8b\81\85\81\88\88\8b\88\88\8b\8b\8f\8b\8b\8b\8b\8f\92\92\92\92\92\92\96\92\8b\8b\8f\8b\88\8b\85\88\88\88\88\8b\8b\8b\8b\8b\8f\92\92\92\92\96\96\99\92\92\99\92\8f\8f\88\85\8b\81~zzzttttpmmififffcfcccc\\\\UURRNKKNNNNR_\_\96\96\99\99\9c\99\99\99\92\96\96\92\92\92\92\8b\92\8b\8b\8b\88\88\85\81\85\85\85\81\85\88\85\88\88\88\88\8b\8f\8f\8f\8b\8b\88\88\8b\88\8f\8f\92\99\99 ££££§§£§£§§ª§££\96\96\92\81~mfifffc_XXXURRRRXXXX_icw~\85\88\96\96\8f\8f\92\8f\92\8b\8f\92\88\85\81\85~\81~zzzztttppppmptimttttzwztzz~~\85\85\85\85\85\85\88~~\85\85\85\81\81\81\81zz\81~\88\85\81\81\85\85\85\85\81\81\85\85\85\81\85\81~~pztttmpttttwzzzz\85\88\81z~wtiiic:NGKKKDGDDGGD3AKNNGGGDGAA=DAKNKDAAA363,%"%%)),,0033666::KRDAD\XURXNUUNUKRRRNKDGKKKKKKKGKGGKNRRRRNNNNKKKGDGDG=KKKGGDDDAAAAA===63333300000000000000000000000003066AK==DA=:6666DKKGKNRXXc_ciffifcfcfc_\c\\\XXX\___ccfimptttmwpppmtmpmfff_cc_\XXXXRRNDADAA==6::633000,,,,,33:=AAAADGKKN_fpmwz~\81\81ttz~\81\81\85\85\8b\85\85\81\81\85\88\88\8b\8b\8b\92\8f\96\96\99\99\9c\9c\9c\99\99\9c\9c\99\99\9c\99\99\99\9c\9c \9c££££ª§ªª§§§§§§\9c£££ \9c\99\96\96\96\92\96\96\92\8f\96\8f\8b\8b\8b\88\85\81\85\85\88\88\8b\85\88\85\81\81~~~zzzwzzwwztwttwtwttwpppwzwwwppwpptptpmfifccf____cffiimmtttwwwwwz~zzzwtpmffcX_XU\URRNRNUURU\_fiptww\85~\9c§ªª§£ \9c\9c\99\99\96\99\92\92\8f\8b\88\88\85\8b\85\88\8b\8b\8f\8f\8b\8b\8b\8b\8b\8b\8f\8f\8f\8f\92\8f\92\8f\8b\8b\8b\8b\8b\8b\88\88\85\88\88\88\8b\8b\8b\8b\8f\92\92\8f\8f\92\92\96\8f\8f\92\88\8b\8b\85\81z~~zwwttttmmmfciifffffcff____X_\RNNNKNNRR_f\\\96\96\96\99\99\96\96\96\96\96\92\92\92\92\8f\8f\8b\8f\8b\88\88\85\81\85\85\85\81\85\8b\88\88\8b\8b\8b\8b\8f\8f\92\8b\8b\88\88\8b\8b\8f\8f\96\99\9c £§£§£§§§£££ªª§£\99\96\92\81zmimcffc_XXXUURRRXXXX_mfw~\85\88\92\92\8f\92\92\8f\8f\8f\92\92\8b\88\85\85\81\81~w~zztttpmmpptttptwwzzz~~~~~\81\85\88\85\85\85\85\85~~\85\85\81\81\81\85\81wz~\81\88\85\81\81\81\81\85\81\81\85\81\88\85\81\81~zzpwtpmpmpmttwzzzz\85\88\81~\81ztmmmcXNDKKGGDADDDD3=GNRKGKAD=D=AAKKNG:=A333)%"%%)),,0033666=:NNADDXGXUXRRUNRNRRRNNDKNKKKKKKKKKGGKRRRRRNRNKKNKGDDKANKKGGGGDAAAAA===:666663333300000000000000000000003:=K=:A=::3333DGGKNKRX\_\ciififfiffc_\c\\XUXU\\___ccfmptwzwzpppptpmiccc_c__\\XXUURNDDDDAAA6::630000,0,0033=AADDDDKKGRcctpzz\81\81\85mppp~~\81\81\88\81\85\81\81\81\85\88\88\8b\8b\8f\8f\92\96\99\96\99\9c\9c\99\99\9c\9c\99\99\99\99\99\99\9c\99    £ §£§§ª§§£££ £££ \9c\99\99\96\96\96\96\96\92\8f\96\8f\8f\8b\8b\8b\85\85\85\85\88\85\8b\88\88\88\88\85\81\81\81~~zzzzzzwttpttptttttptw~zwzww~twwwptmimffcicffcfiimmppwtwzwzwz~zzzzwttmfc_Xc\R\RRRNRNRUUUX\ciptww\81~§ª­ªª§£ \9c\96\99\96\9c\92\96\8b\8f\8b\8b\88\8b\88\8b\8f\8f\92\8b\8b\8b\88\8b\88\8f\8f\8f\8b\8b\8f\8b\8f\8f\8b\88\8b\88\88\88\85\88~\88\85\88\88\8b\8b\8f\8f\8f\92\8f\8f\8f\8b\92\8b\88\8f\85\88\85~~z~zzzwwwwtmipifffcffffcffcc_c\imcNNNNNRRU\8f\92\\\92\92\92\96\96\96\96\96\96\96\96\96\92\8f\8f\8b\8f\8b\8b\88\88\85\85\81\85\85\81\85\8b\88\8b\8f\8b\8b\8f\8f\8f\8f\8b\8b\88\8b\8b\8f\8f\92\99\9c\9c £££££§§££££§ªª  \99\8f\81wificccf_X_\XURUUX\\\cmiwz\81\88\8f\8f\92\8f\92\92\8f\8f\92\92\8f\8b\88\88\85\85\81z~zzwwtppipptwwww~w~~~\81\81\81\81~\85\85\8b\81\85\85\85\81\81\81\85\81\81\81\81\85\85w~~~\85\85\81\81\81\81\81~\81\85\85\85\85\81\81zwpptpmmmimipttwwww\81\85~~\81zwmiicXRGGKGDA6DDAA3:GRRNKNADAD=AANNNG6=A330)%"%%)),,0033666::KKAAGUGURUUNRNNRURURNKNKNNNNNNNNNNNRRRRRRRNNNNNKGGGNDKKKGGGGDDAAAA====:::::663333000000000000,,00000000:AG:6=:==6003DDDGNKRUX\\cfmfifiiiff\X_XXXRURXX_\___ciptw~\81~twppttiff__\_____\XXXURGGDDDA=:::630000,0,0036=ADGDGGGNNUcfttz~\85\85\88iffpwz~z\85\81\81~\81\81\81\85\88\8b\8b\8f\8f\92\92\96\96\99\9c\99\99\9c\9c\9c\99\99\99\99\99\99\99\99   ££££££§§§§ £   £ \9c\99\99\96\96\96\96\96\96\92\92\92\8f\8f\8b\8b\8b\85\85\85\88\88\88\88\8b\88\8b\8b\88\85\85\85\81zzzz~zzzwpttttwttwtwwz\81~~zzz\81\81\81~\85~~zptmffmiiimimmpppwzwwzwzwz~zzwwwttifc\X_\RXRNRNNNRRRXU\cimttw~\81ª­±­­ª§£ \99\96\99\99\8f\92\8f\8f\8f\8b\88\8b\8b\8b\8b\8f\8f\8b\8b\8b\88\88\8b\8b\8b\8b\88\8b\8b\8b\8b\8b\88\85\88\85\85\88\81\85\81\85\85\88\8b\8b\88\8b\8b\8b\8f\8f\8b\8b\8b\8f\8b\88\81\88\88\85~zz~zzzzzwttpipmffffiffffcfcffmitwwcKRRNURU\8f\8fX\\8f\92\92\96\96\96\96\96\96\96\96\96\92\8f\8f\8b\8f\88\8b\85\88\85\85\81\85\85\81\85\88\88\8b\8b\88\8b\8b\8b\92\8f\8b\8b\8b\8b\8f\92\92\96\99\9c\9c££££ ££££££§§§ª\9c£\9c\92\81tfc_fc_fcXcX\XRUX\___fpitz\81\85\88\8f\92\92\92\92\8f\92\96\96\8f\8b\8b\8b\85\85\85z\81zzzwwttmpttwzzz\81z\81\81\81\85\85\81\85\81\85\85\8b\81\85\85\81\85\81\81\81\81\81\81~\81\81w~z\81\85\85\81\81\81\81\81\81~\81\81\81\85\81\81zwpppmmmiimmpptwwwt~\81\81~~zzmffcURGDGDAA6DA==3:KRURNNADAD:A=KKKK6A=03,)%"%%)),,0033666::GGDADRKRNRRNRNNRRRRRRNNNNRNRNNRRRRRURRRRRRRNNNNKGKKKGKKKGGGGGDDDAAAA=::::::666663333300000000,,,,,,,0006=K66=3::3000AAADKGNRUUX_fmiiiiiifcXU\UUURURUU\\\\\_fptz\81\85\81wztptpf_c__\_\__\\XXUXUKKKGGD=::=:30,00,00033:ADGKKGNKNRXcftww~\81\81\85fcfmtptz\81~~~~\81\85\85\85\8b\8b\8f\92\8f\92\96\92\96\9c\99\99\9c\9c\9c\9c\9c\99\99\99\9c\99\9c  £§££§§§§£££\9c£\9c   \9c\99\9c\99\99\96\96\96\96\96\96\92\96\92\8f\88\88\88\88\88\85\88\88\8b\85\8b\88\88\8f\8b\85\85\88\85~zzzzwzzttppttwwtwwzz~\85\81\81~~~\85\85\85\81\88\88\85\81twpmpmmmppmppptwzzzzzz~z~~~zwwwtpic__\\\RUNNNRNNRRRUX\_fitpwz~w±´±±­ª§ \9c\99\99\99\92\92\8f\8f\8b\8f\8b\8b\88\88\8f\8b\8b\88\88\88\88\8b\88\88\88\88\85\88\88\88\8b\88\85\81\85\81\81\85\81\85\85\88\85\85\88\88\88\88\8b\88\8b\8f\8b\8b\88\88\8b\8b\81\88\85\85z~z~zz~zzwwwmmmiiiffffififcfiipwwzztNUURXXc\8f\8bX\8b\8f\8f\8f\92\92\96\99\99\96\99\96\96\92\8f\8b\8f\8f\88\8f\88\88\81\85\81\81\85\81\88\8b\88\8b\8b\8b\88\8b\8b\92\8b\8f\8b\8b\8f\8f\92\92\96\96\9c §££§ £ £ £§§ª§ª\9c§\9c\96\81tf__cc\cc\f\_X\U\\_ccipipw\81\85\8b\92\92\8f\92\96\92\92\96\99\8f\8f\8b\8b\88\88\88z\81\81~zwzzwwtwwzz~~\85\85\85\85\85\85\88\85\85\85\85\85\88\85\85\81~\85\81\81\85~\81~\81\81\81zzz~\85\85\85\81\81\85\85~\81~~\81\85\81\81zttmpmmifimmpttwwwtzw~zz~zi___RNG=DAAA:DA::3=GRURRKGDDG:DAGGGK:==,3,)%"%%)),,0033666::DDAADDKKNNNNRNRNRNRRURRNRURRRRRRRUUXRRRRRRRRRNNNKNKGGNNKGGGGGDDDDDDD======:66666666663333300000,,,,,,3,,:G3::0660000===AGDKKRXX\ciffiific_UDURRRNRNRRXX\XX\cmww\81\88\81z\85wttmc__c__\X\_\\X\UXUNKNGKG=A==:33000,3306:=DGGKNNRKRU\cipttz~~\81fffipppw~zz~~~\81\81\81\8b\8b\8b\8f\8b\8f\96\96\96\99\99\99\9c\9c \9c\99\9c\9c\99\9c\9c\9c\9c  ££§££££§£   \9c\9c\9c  \9c\9c\99\96\99\92\92\96\96\96\96\96\96\92\8b\88\8b\8b\88\88\8b\8b\8b\88\8f\8b\8b\8f\8b\88\88\8b\85\81~zzzwzwwttttwwzwtw~~\81\85\85\85\81~\81\88\88\88\85\8b\8b\88\85\81\85wptptpttpwzzwz~~z~z~zz~zzzwttpmifc\\_\UXRNNRNNRNRRX_\cipmwzzw­´±­±­ª§ \9c\99\99\8f\8f\8b\8b\88\8b\88\8b\88\85\8b\88\85\85\88\88\88\8b\88\85\88\85\85\88\85\85\88\81z~\81~~\81~\81\81\85\85\85\85\8b\88\81\88\85\88\8b\88\8b\85\88\88\88\81\85\88\81z~z~~~~zwwwtimmmimfiiimiifiifptzz~~wwXUU\81\88\88\8f\8f\8b\8b\8f\8b\92\8f\96\99\99\99\96\99\96\99\96\92\8b\8b\8f\8b\8f\88\88\85\85\85\81\81\85\88\8b\8b\8b\88\8b\88\8b\8b\92\8b\8f\8f\8b\92\92\96\99\96\99\9c §£§££   £ ª£§§ª £\9c\99\81wi____\_c_c__\_U\\___ftmpw\81\85\8f\92\92\92\92\96\92\96\92\99\92\8f\8b\8b\8b\88\8bz\85\85\81zz~~zzwzww~z\81\81\88\88\88\88\88\8b\88\88\85\85\88\88\85\85\81z\81~\81\81\81~~\81\81\85zz~\81\85\85\81\81~\85\85~\81~~\85\81~~wtpimmmfiimmpttwttpttzwwzwf\X\RNKA:A==6A=666AGRRRRNKGAD=GDKKKG===,3,)%%%%)),,0033666:=DA=AADKGRKNNNNNNNNRRRUURUURRRRUUUUUXRRRRRRRRRNNNNNKGKNNKKKKGGDDGDDDGAA===:::::::66666663333330000000,3,,:G0:60330000=::=AAGGGUUX_Xccfiif_\DDGGKNKNKNUUUXUUX\ctw\85\88\81\99\99zwpfc_cc__\UX\XXXXX\XRRRNNKGD==:66303,633:=ADKKNRRUUUX_cimppwwz~cffimpptztzz~~\81\81\85\88\8b\8f\8f\8f\92\96\96\96\96\96\96\99\99\9c\99\9c \9c\9c\9c\9c  £ £££§£ §§    \9c\99  \9c\99\9c\9c\99\99\96\96\96\96\99\99\99\96\92\8f\88\8b\8b\88\8b\8b\8f\8f\88\8f\8b\8b\8f\8f\88\8b\8b\88~\81~~zzzzwttttttwtwz\81\81\85\81\85\85\85\81\85\88\85\88\88\88\8f\8b\88\85\88\81wwtwtwwt~~~~~\81\81~~~z~~zwzzwpppmfff_\\\XUURRRNRRNRUU__cipmtwwt­´´±±±­ª£ \99\96\8f\8b\88\88\88\88\85\88\88\88\88\8b\85\81\85\88\88\88\88\81\88\81\81\85\81\81\85~wzwwz~~\81\85\85\85\85\81\88\88\81\85\88\88\88\88\88\85\88\88\85\85\85\88\81z\81z~~~~wwwwpimmmmiiiiipiiimfmt\81\85\81\81\81zztX\81\85\8b\8b\8f\8b\8b\8b\8f\88\92\92\92\96\96\99\96\99\92\96\92\92\8f\8f\8f\8f\8f\8b\88\88\85\85\85\85\85\85\8b\8b\88\88\8b\8b\8b\8f\8f\8f\92\92\8f\92\96\96\9c\99\9c  §£§  ££££\9c§§§£ª£ \9c\99\81tm_c\__\fcccc_cX\\f__cwitw\85\85\92\96\8f\92\92\92\96\96\96\96\92\92\8b\8f\8f\8b\8b\88\88\88\85z~\81\81~~z~wt\81w\85\85\85\8b\8b\8b\8b\8b\8b\88\85\85\88\85\85\85\85~\81~\81~\81~~\81~\81zz~\81\85\85\81\81\81\81\81~~~~\81\81z~wppfmiicifimmpptppmpptttwtUXURNKGD:AA=6A=63:=DNNNRRNDADAKGGGKDA=:,0))%"%%)),,000336::=D==DAAGDNGKKNNNNNKRRRURUUXUURUUUXUUXRRRRRRRRRRNRNNKKKNNNKKKGGDDDDDAGD====:::::::::6666633333333000000000=G,630060300:6=6==ADGGRU\UR\cffc\RAAGDGDKKGKRURUUUX\\pt\81\85\81\99\99zcfff_ccc_\UX\UXUX\\\UXXRRNKKKKGAA:363:66:AADKKRRUXXX\_cfimmpmtifffiimmtwtzz~\81\81\85\85\88\88\8f\8b\92\8f\92\92\92\96\96\92\96\99\9c\9c \9c\9c\9c\9c \9c   ££§§§£§£ \9c \9c\99\9c \9c\9c\9c\99\99\99\96\96\96\96\96\99\99\99\99\92\92\8b\8b\8f\8b\8f\8f\92\8b\8b\92\8f\8f\92\8f\8b\8f\8b\88\81~~~~zwwwttttwwwwww\81\85\88\85\88\85\85\85\88\88\85\85\88\8b\8f\8b\88\88\8b\88\85zwzwtz\81\81\81\81\85\81\85\85\81~z~~z~zwwwtpmmifcc___XXUUURRNRNRRX__cimiwtw\88ª±±±­±­­§ \99\92\8f\85\88\85\85\85\85\88\85\8b\85\88\81\81\81\85\88\85\85\85\85\81\81\81\81~~zpwwww~~\81\85\81\81\81\85\88\88\81\85\88\88\85\85\88\81\85\85\85\85\81\85\81~\81z~~zzwwwzpmpimmimfmmppmpppt\88\88\88\85\85\85~~w\81\85\88\8b\8b\8f\88\88\88\8b\88\8f\8f\92\92\96\96\96\99\96\96\92\92\92\92\8f\8f\8f\8b\8b\88\85\88\88\85\85\85\8b\88\88\88\8b\8b\8b\8f\8f\8f\92\92\92\96\99\99 \9c £ §££  £§ £ ££§ §§£\9c\99\85ppi_Xcc_fccfccf\\cmc_cwfpw\88\81\8f\96\8b\96\96\8f\96\92\92\92\92\8f\8f\92\8f\8f\8b\8b\8b\88\88~\81\81~\81~wztw\81~\88\88\81\8b\8b\8b\8b\8b\8b\88\88\88\88\81\85\81\85\81\85z~~~~~~~\81~zz~\81\88\81~~\81\81~\81~~~\81wzttmfiifcfifiimmpmf\mmifmciKNRNKGGD=AA:6=::3:=AKKKNNKDDDDGDDKG:=:60,))%%%%)),,000336:6:A:=ADADDKGKKNRNNRNRNUXRXUXUXUUXXXXX\UUURRRRRRRRRNNNNNNNNKKKGGGDGGDDGAA===::::::::66666663333333300000003=G033006,3,,=::6::=ADDKNURNX_ccXRK==GADGGGGGNRRURRUX\mp\\81~\99zwcccc\__c\\UXXXUU\__\X\\XXNNRNRRKGAD::=:6=ADGGKRUXXX\\\cciiiiiffiiffmmmpttzz~\81\81\85\85\85\88\8b\8b\8f\8b\8f\92\92\96\96\92\92\99\99\99\9c\99\99\9c\9c\9c\9c   £££§££££ \9c\9c\9c\9c\9c \99 \99\9c\99\96\99\96\96\96\99\99\99\9c\96\92\92\8f\8b\92\8b\8f\92\92\8f\8f\92\92\92\92\92\8f\8f\8f\85\81\81~z\81zwztwttptwwwz~\81\85\88\85\8b\88\85\85\85\88\88\85\85\8b\8f\8b\8b\8b\8f\8b\88~z~zw~\85\88\85\85\88\85\88\85\85~zzzwzwwtttpiiff_cc\\UXUUUURRNNRUX\cfimmtwz§§­­­ª­­ª£ \96\88\8b\85\85\85\81\81\85\85\81\88\81\85\81~\81\81\85\81\81\88\88\81\81~~zwttptwt~z~\85~\85~\81\88\85\85\88\85\88\88\85\88\81\81\85\81\85\85\85\85\81\81~~~zzwwwwpppppmmpmmpttwtzt\88\8b\8b\8b\88\88\88~~z\85\88\8b\88\8b\8b\8b\88\8b\88\88\8b\8b\92\8f\92\99\99\99\96\96\92\92\92\92\8f\8f\92\8f\8b\8b\88\8b\88\88\88\88\88\88\8b\8b\8b\8b\88\8b\8f\8f\92\92\96\99\99\99  £§£§£   ££\9c££§££\9c§££\99\99\85ppmf\ffcccfffcf\ffpicctipw\8b\81\92\96\8b\96\96\92\92\92\92\96\8f\8b\8f\8f\92\92\8f\8b\8b\88\88\81\81\85z~zwwpz~\81\88\88\85\8b\8f\8f\8b\8b\8b\8b\88\88\88~\81\81\85\81\85z~~~~~~\81\81~z~~\85\85~~~\81\81\81\81~\81~\81wwtpmiiifcfffffifiic\\_f_c_cGKNKGDDDAD=::=6=36ADGAGKKGDDDDDA=GDA=:,,),)%%%%)),,,00033=66A:=ADAAADDKNNNRRRRRRUXU\U\XUUXXXXXX\XUUUURRRRRRRRRNNRRRNNKKKGKGGDDADAAA===:::::::66666666333333333000003:K,30,03,0,0=:6666:=AADKKNKKU\\GDA6=DDDDDDDGKNNRNNRUXXXX___cc_\__X_\_\\XXXXUXX____c_\_XXUXUUNNKNAAA===AGKKNRUXXX\\\_cffcff\\miffmimpttz~~\81\85\88\88\85\88\8b\8b\8b\8b\8f\92\92\92\92\92\96\96\99\99\99\96\96\99\9c\9c\99  \9c£££§  § £   \9c\9c \9c£\99\9c\99\96\99\99\99\96\99\99\9c\99\96\92\92\8f\8f\92\8f\92\92\92\92\92\96\92\92\96\92\92\92\8f\85\81\81~~~zzzwtwtmwzww~\81~\88\8f\88\8b\88\81\81\88\85\85\85\88\8b\8f\8f\8b\8f\8f\8f\8b~~\81wz\85\88\8b\88\88\8b\88\85\88\81~~zwwwwttpppimficc_\_UXUXUUURRRRRU_fimpmtz~££ª£ª§ª­§ \9c\92\85\88\85\81\85\85~\85\81\85\85~~\81z\81\81\85\81~\85\85~~zztwtptpttzzz\85z\85~\85\8b\85\85\88\88\88\88\85\88\81\81\81\81\85\88\85\85\81\85\81~~~zwwwttppttppppptwwzw\88\8b\8b\8f\8f\8f\88\88\88\81\81~\85\88\8b\88\8f\88\8b\88\8b\85\88\8b\88\92\8f\96\99\96\99\92\96\92\92\92\92\8f\8f\92\8f\8b\88\88\8b\8b\88\88\88\85\8b\8b\88\8b\8b\88\8b\8f\8f\92\92\96\96\99\9c £§§££ \9c\9c   \9c££§§£ ª §\99\99\88ztpiiiicfcfffffciitm_twzpw\8f\81\92\92\8b\92\96\92\8f\96\96\96\8f\88\8f\8b\92\92\8b\8b\8b\8b\88\81\81\81z\81zzzz~~\85\8b\88\88\8b\8f\8f\8f\8b\8b\8b\88\88\88\81\81\81\85\81\85~\81z~~\81\81\81~~~~z\81\81z\81\81~\81~~~\81~~twpmmififccccfcfccf_X\\_"_\_DGKKDDADDDD:D=D=3=ADDADGGDGGGDGDAGGDAA))),)%%%%))),,00036=66D:==AAAADDKNNNNRRRRRX\X\X\\XXX\\\\_cUUUUUUURRRRRRRRRRRRNNNKKGKKKGGAAD==A==:::::::66666666333333330030003:K000,30000,:66333:::=AADAD=KR=D==6=AADDAAGDGGKNGGNRUUURXX\\____\\\\\XXXX\XXX\ccccfccc\\X\XXRRNRGKGAA=AGKKKRRUX\\\\\_c__c_\Xpimimmmpttz~\81\85\85\85\88\85\85\88\8b\8b\8f\8f\8f\92\92\8f\92\96\96\96\96\96\92\92\8f\99\99\96\9c\9c\9c£§§££££    £ \9c   \9c\9c\99\99\99\99\96\99\96\99\99\96\96\96\92\92\92\92\8f\8f\92\96\96\92\99\96\96\96\96\8f\8f\8f\85~\81~~~zwwwwtwptwwwz\85\8b\8b\92\8b\8b\88\81\85\85\81\81\85\88\8b\8f\8f\8f\8f\8f\92\8f\8b\8f\85z\85\88\8b\8f\8b\8b\8f\88\85\85\81zz~wwttttpmpiiiffc\_\XXXXUXXUUURRR\immptt\81\8f£   §££ª \9c\99\8f\88\85\81\81\85\85~\81\81\85\85z~~z\81\85\81\85\81\81\81~~zwpwtmppttwww\81~\88\85\88\88\88\85\88\88\88\88\85\85~~\81\81\85\88\81\85\85\85\85\81\81zwtwwtpptwpttptttzz~\88\8b\8f\8f\92\92\8f\8b\88\88\81\85\81\85\88\8b\88\8b\88\88\85\88\85\88\8b\88\8f\92\96\99\99\96\96\96\92\92\92\92\8f\92\92\8f\8f\88\8b\8b\8b\88\8b\88\85\88\88\88\8b\88\8b\8f\8f\92\92\92\96\92\99 ££§§£  \9c\9c\9c\9c\9c   §§££ª\9c£\9c\96\8b~wptmiicffcfffffmitp_tw~tw\8f\85\92\8f\88\96\96\96\8f\92\96\92\8f\8b\8f\8b\92\8f\88\8f\8b\8f\88\85\81\81~\81~z~~\81\81\88\88\88\85\8b\8f\8b\8f\8b\8b\88\88\88\85\81\81~\85\85\81\81\81z\81~\81\81\85~z~\81z\81~~\81\81\81\81zzz~~~tttmmififcc_cc\X___UUXXX"\UXD=GG=ADDDGG=GDRA6DDAA=DGDADDGDGGDGDGDD),,0)%"%%)),,,3003:=6:G===AADDDDKNNNNNRRUUX\\\\\\\\\____cfUUUUUUUUUURRRRRUURURNNNKKNKNDKADA==A==::::::::66666663333333303633036G000033000,6363066:6:====A:=D==:6:==DDD==DADDDGADGKNNNKRNXUU\\_U_X\\UUUX\X\\_cfcfifffc_X_\\UUUUUURGDAAGKNKNRUU\XXX\\__\_X\Umppmpmmtttz~\81\85\85\85\85\85\88\88\88\88\8f\8f\8f\8f\92\8b\92\92\96\92\92\92\8f\92\8f\96\8f\92\92\99 £§§££   \9c £§    £ \9c\99\99\99\99\99\9c\99\99\99\96\99\99\96\92\92\96\8f\92\96\99\96\92\99\96\99\96\92\8f\8b\8b\81~\81~\81zzwwwttwtpwwwz\81\8f\8f\96\8f\8b\85\88\88\85\85\85\85\88\8f\8f\8f\8f\92\92\92\92\92\92\96\85\92\8b\8f\92\8b\8f\8f\85\85\81\81zwzwwtttppmpmiific__\\\\XUXXXXXXRX_iiipww\8f\92 £ \9c§££§\9c\99\96\8b\88\88\81\81\81\81~~\81\88\81~~~z\81\88~\81\81~~~zzwtttpmppptzt\81\81\88\88\8b\8b\8b\88\8b\8b\85\88\85\81~\81~~\81\88\81\85\85\85\88\85\85~wwzwtpttwtwwwwww~~\85\8b\8f\92\8f\92\92\8f\8b\88\88\85\85\85\81\88\88\85\88\88\88\88\88\85\8b\8b\8b\8f\96\92\99\96\96\96\96\92\8f\92\92\92\92\92\8f\8f\8b\8b\8b\8b\88\8b\85\85\88\88\88\88\88\8b\92\8f\96\92\96\99\96\99 ££§§§  \9c\99\9c\9c\99 £££§§£§ £\9c\99\8f~zwwppifiifffcfimipt_pw~ww\8b\88\8f\8b\85\92\92\92\8f\8f\99\92\8f\8f\8b\8b\92\8f\8b\92\8b\8f\8b\85\85\81\81~\81~z\81\81\85\85\88\8b\85\8b\8f\8b\8f\8b\88\8b\8b\88\85\81\85\81\81\81\81~~~~\81\81~\81~z~~~\81~\81\81~~\81tzz~~zpppmiifmfc_\__XXXXXRRXX\%UURA=D::=ADGKK:KNUDNGADD=ADDADGGDGGDGDKGG,0,,))"%)))0,,333A:==DK==ADADDGGKKKNNRRRRXX__X_\\\__ccccfiXXUUUUUUUUUURRRUURRURNNNKNKNDGDDAAA=A=:::::::::6666666333333306:3636:D30,,30,,,,0030066::6:3:6:666:6=::=AAAA::AAAA===ADGDDA=KKRRRXX\U_X\XRRUUX\___fffifiiifpXc__XUXXXXURDDGGNNGNNRRXXXUX\_\XXXXXpttpppptttz\81\81\81\88\88\88\88\8b\88\8b\8b\8b\8f\8f\92\92\8b\8f\8f\92\8f\8f\8f\8f\8f\8f\92\8f\8f\8f\92\9c £££££ £ £££ ££££  \9c\99\9c\9c\99\99\96\99\99\96\99\96\99\92\96\92\92\96\99\96\99\96\99\96\96\96\92\8b\88z~~~~~zztwttttpttwwz\85\8b\8f\92\8f\8f\8b\8b\88\88\88\85\88\8b\8f\8f\8f\8f\92\92\96\96\96\96\99\96\96\8f\8f\8f\88\92\8b\88\85\85\85~zwtwwttmpppifiifcc__X__XXX\XXX\U\cmfitzz\92\96    £££ \99\96\8f\88\8b\85\85~\81\81~\81\81\85\81~~~z\81\88\81\85\85~zzzwtttppfppptzt\81\85\88\8b\8b\88\88\8b\8b\8f\8b\88\85\85~\81\81~\81\85\85\88\85\85\85\88\85\81zwwwttttwwzzzwzz\88\85\88\8f\92\92\8f\8f\92\8b\88\88\88\88\85\81\81\85\85\85\85\85\85\85\85\85\88\88\8f\8f\96\8f\99\96\99\96\96\8f\92\8f\92\92\8f\8f\8f\8f\8f\8b\8b\8b\88\88\85\88\85\88\88\8b\8b\8f\92\8f\96\92\96\99\99\9c  £§££ \9c\9c\96\9c\9c\96   £§£ ª££ \9c\92z~zwptmfmffifcimmmpwttw~ww\88\88\8f\85\81\8f\8f\8f\92\8f\96\92\8b\8f\8f\8b\8f\8b\8f\96\8f\8f\8b\85\85\81\85~\81\81~\85\85\88\88\8b\8b\88\88\8b\8b\8b\8b\85\88\88\85\85\85\81\85\81~\81~~\81~\81~z~\81z~~~\81\81~\81zz~wzw~~wttpmiiiiff__\\\UXUURRXX\RRRN=:=:6AADGKNKNRXNRKGDDA=GA=AGKDDDGGGKGK03)0))"%,),0006=6N6:AGG=ADADGDGGGKKKNNRRR\Xc_\____ccffffim\\XXXUUUUUUUUURXURURRRRKKNNKGGDDAA==A=:::::::::666666633333360::633::D30,,0,,)),3330,366636363363666:==AAD========::==AA:==6D=GKGUUXUcXXUNUXX\_ccfffiififiit\fc_\U\\\\XUURNKRKGNKNRUUURUX\XXUUUUtwwppttttwz\81\81\81\85\85\85\88\88\88\8b\8b\8b\8f\8f\92\8f\8f\8b\8b\8f\8b\8b\85\8b\8b\8b\8b\8b\8b\8b\92\99\9c£ ££££££££ £££§££\9c\9c\96 \99\9c\96\99\96\96\92\96\96\96\92\99\96\96\96\96\96\96\96\99\99\96\92\8f\88\85zzz~zz~zwwtttpptwtt~\85\8f\92\96\92\8f\8f\8f\88\85\8b\88\8b\8b\8f\92\92\92\96\96\96\99\99\99\9c\99\99\92\8f\8f\8b\8f\88\85\85\85\85~\85wtwtttpppmmiiiffcc_\__\\\\\\__X_fmiipw~\96\99 \9c\9c     \99\92\8f\88\88\81\85\81~~\81\85\81\85\81~~\81z\85\85\81\81\81~zzzwttpppimpppzw~\88\8b\88\8b\8b\8b\8b\8f\8f\8f\8b\88\88\81\85\81z\81\85\88\88\88\85\88\88\88\85zzzwttwwzzz~~\81\85\88\8b\88\8b\8f\92\92\8f\8b\8f\88\88\8b\8b\88\85\81\81\85\85\85\88\85\85\85\88\85\85\88\8b\8f\92\8b\96\99\99\96\96\92\92\8f\92\8f\8f\92\92\8f\8f\8b\8f\8b\8b\88\85\88\85\88\88\8f\8b\8f\92\8f\96\96\99\99\99\9c£££§   \99\99\96\99\99\96 \9c  §£\9cª§ £\9c\96\88~~zwwpimffiicfmmptwwtz\81w\88\85\8b\8b\85\81\8b\8f\92\92\8f\96\8f\88\8f\8b\88\8b\88\8f\96\92\8f\88\85\85\85\88\81~\85\81\85\85\88\8b\8b\8b\8b\88\8b\8b\8b\88\88\88\85\81\85\85\85\85\81z\81~~\81~\81~z~\81z\81\81z\85\81\81~wzzzzzzzzwtpppmmmfcccX\XUURUNUXX_UNNK36=::=AGGKRNRUXRUNKGG=AD=A=DKAAADDGKKG36,60,)%),,033:A6X:=DDDAAGADKDGGKNKNNRRRU\Xc__ccccccfiiimp__\\\XXXXXUUXXUUXUUURRRKKKNKGGDDD=====:::::::::66666666663363A6=:63=6G0,,,0,,,))336306:3330333330333:===AD=::::=6666::666666::AAAGKUX_\XRNRX\__cfiiiiififiit_fc__X\\\_\XX\\XXKKKKNRRRURRXXXUURURttttttwttz~~\81\81\85\81\88\88\88\88\8b\88\8f\8f\8f\92\8f\8f\8b\8b\8b\88\85\85\88\88\88\88\8b\8b\8f\92\96\99   ££££§§§£§§§§§£  \99 \99\99\92\96\92\96\92\96\99\99\92\96\96\99\96\96\99\92\92\96\96\92\8f\8b\85\81zpzzwwzwtwtttttttwwz\88\96\96\99\96\92\92\92\8b\88\8f\8b\8b\8b\8f\92\92\92\92\96\96\96\9c\99\9c\96\96\8f\8b\8f\8f\8f\88\8b\85\88\8b\88\88zwwpttpppmpmiiiffff________cff_ciimmtz~\96\99 \99\9c\9c \9c\9c\9c\96\8f\8b\88\85\81\85\85~\81\81\81\85\85\81\81\81\81~\81\85~\81~~z~wttttppfpmttzz~\85\8b\88\88\8b\8f\8f\92\92\92\8f\88\88\85\81\81~\81\81\88\88\88\88\88\88\8b\81z~~zwwwz~~~\81\85\88\88\8b\8f\8b\8f\8f\92\8f\8f\88\8b\88\88\88\88\85\85\85\85\81\85\85\85\85\81\85\85\88\85\85\88\8f\92\8b\92\99\9c\96\96\92\96\8f\92\8f\92\92\92\8f\8b\8b\8f\88\8b\8b\88\88\88\8b\8b\8b\8f\8f\92\92\96\96\99\99\99\9c£££§\9c\9c \99\99\96\99\99\99 \9c£££§\99§£ £ \9c\8f\81\88zzztmmfiifcfmppwzwp~\81z\88\85\88\88\88\85\8b\8f\92\8f\8f\96\8f\8b\8f\88\88\8f\8b\92\92\92\8f\85\88\85\85\88\85\81\81\81\85\88\88\88\88\8b\8b\8b\8b\8b\88\8b\88\88\85\81\81\85\81\81\81z\81~z\81~\81z~~\81z~\81z\81\81~zwzzwwwwzzwztptpppffcf\X\UXURNX\\_UKGD33=66:AGGNRRUUXUXRNKGADD==AGKDD=AGGKGD630=3),3)003:=:DD\::ADA=ADAGNDGKKNNNNRRUXXXf_cffffcffmmmmpc___\\\\X\XXXUXUXUXURRRKKKKGKGDDD=====:::::::::66666666663333=3==63:3K,,0,,,)0,)33360663300003333633=:A==D:::=::6:636:33333336::AAGNU\XXRNRUX__cfmmmmiimifftcfc__\\____\\____KKNKNRRRURRXXURUNRNtwtwwwwww~z~\81~\85\85\88\88\8b\88\8b\8b\8b\8f\8f\92\8b\8f\88\88\85\85\81\81\81\85\85\85\8b\88\8f\8f\92\99\9c \9c   £§§§§§ªª§ª§  \9c\9c\96\96\96\96\96\96\96\99\99\96\96\99\99\99\96\96\96\92\8f\92\92\8f\8b\88\81~wtwwpwzwttptttwwtww~\85\99\99\9c\96\92\92\96\8f\8b\92\8f\8f\8f\8f\8f\92\96\96\96\99\96\9c\99 \96\96\92\8f\92\99\99\96\8f»\96»ÂÅ\88zwwwttttmpmimiiificcccccfffiiciimpppzz\99\96\9c\99\99\99\9c\99\96\99\92\8b\8f\85\85\81\81\85\81~~\81\88\85\85\85\85\81\81\81\81\81\81zzz~wttwptpipmttw~~\81\88\88\85\8b\92\92\96\92\96\8f\8b\85\85\85\85\81\85\85\88\88\88\88\8b\88\8b\81~\81\81zzwwz\81~\81\85\88\8b\8b\8f\92\8f\8f\8f\92\8f\8b\85\88\85\85\88\88\85\81\85\85\81\88\85\85\85\85\81\85\88\85\88\8b\8b\92\8f\8f\96\9c\96\96\96\92\92\96\92\96\96\96\8f\8f\8f\8b\85\88\88\88\88\88\8b\8b\8b\8f\8f\92\96\96\99\99\99\99 §£££\9c\9c \99\9c\99\9c\9c\9c\9c\99  ££\9cª ££  \92\8f\8b\88~~wtmimiifimmpwwtpz~~\85\85\85\88\88\85\8f\8f\8f\8f\8f\92\8b\8b\8f\88\88\8f\8b\8f\8f\8f\8f\81\88\85\88\88\88\81~~\81\88\85\85\85\88\88\8b\8b\8b\8b\8b\88\85\88~~\85~~~~~~z~z~zz~~w~~z~~z~wzztwtwwzw~wwwtptpfcc_\\UXURN\\__RA=D36=6::=GKNNRXUUXXRRNKDGDAADGGGG:=DDGD6:06A6=0G0:3==ADGG_D==DDAKGAKKGKGKNKRRNRRXX\fcfiiicffimmmptcccc_\__\\\\\X\UXXXURRRNKKKGGGGDD======::::::::66666666663333:3=::060G0,,0,,),))33363366303030003366::A=AD==:=::66333663633666::=:AKRRUURNUUX__cipmpmmmpmifpfcc__\_cccc__ccccUNRKRURRRRRUURNRNNNwttwzzzwz~~~~\81\81\88\88\85\8b\88\8b\88\8f\92\8f\8f\8b\8b\85\85\81\81~~~\81\81\81\88\85\8f\8f\92\96\99\9c\96\9c\9c\9c §§££§§ªªª§ £\9c\9c\99\96\96\96\96\99\96\99\96\99\96\99\99\99\99\92\92\92\8f\8f\8f\8b\88~~zttttptwttwptttzwwzzz\85\9c\9c\9c\96\96\96\96\92\8f\96\8f\92\92\8f\92\96\96\96\96\99\96\9c\99 \96\96\96\9c §£ ±¾¾»¾ÉÉÉzzztwwttpmmimimfmffcffcmimmmfmmmttwz~\96\92\9c\99\9c\99\99\96\8f\96\8f\88\8b\81\85\81\85\85\85~\81\81\85\85\85\85\81\81\81\81~\81~~zzztttwptmmpmttwz~~\85\88\85\8b\8f\92\96\96\96\92\8f\88\88\88\85\85\85\81\88\88\88\88\88\88\8b\81\81\85~~zzz~\81\81\85\88\8f\8f\8f\8f\8f\8f\92\8f\8f\8f\88\85\85\85\88\88\88\85\85\85\85\85\88\85\85\85\88\85\85\88\85\88\8b\8f\92\8f\8f\96\99\96\96\96\92\92\96\96\99\99\96\8f\8f\8f\8b\85\8b\88\88\88\88\88\8b\8f\8b\92\92\96\96\99\9c\9c\9c£§£££\9c\9c \9c\99\9c\9c \9c\99\9c\9c\9c£§ §£§£££\96\96\92\8b\85~wwpimmmimpmmttwpzz~\81\85\85\88\88\85\8f\8f\92\8b\8f\8f\8f\8b\8f\8b\8b\8b\8b\8f\8f\8f\8f\85\8b\85\8b\8b\88\81\81\81\81\85\81\85\81\85\8b\8b\88\88\88\8b\85\85\85~~\85~zzzzzz\81z~~w~~w~~w~~z~wzztwwwwzz\81zzz~twticcc__XUURU\___N:=A33=6::=DKNNRURUXURUNNGGDDDGKGDD=:AAD),6,=DAA3N3D=RA_NGG\XUDKRANKAGKGKDKNKNNNURX\\cfiimmfffmmpmptffccc_c___\__\\X\XURRRNNKKKGGGGDD:=::::::::::::6666666666333333:6:000D0000,,))))63666:6360306300366:====AAA=::::::6366666636:666:6AGGNRRRNRUU__fipppmpmpimimfcc\__ccccc__ccffXUUNRUUURRRRURNNNNNtwwz~~zz~~\81~~~\81\88\85\88\88\85\88\88\8b\8f\8b\8b\88\81\81~~zzzz~~\81\85\85\8b\8b\92\92\96\99\92\96\99\99\9c££ ££§§§§§ £  \99\96\92\96\92\99\99\99\99\9c\99\99\99\99\96\8f\8f\8f\8b\8f\88\88\81~wwmtmtptwttwtpttwwz~zz\81 \9c \99\99\99\99\96\92\96\92\92\96\92\92\96\96\99\99\9c\99\9c\9c \99\9c\99§ª±´´¸¾Â¾ÂÉÉÉÉ~zzzwwwppmmmimiiffffmpppzzpwpmmpt\85\8b\8f\92\92\99\96\99\96\96\92\8f\92\8f\8b\88\85\85\85\81\85\85\81\81\85\85\88\81\85~~\81\85\81~zzzzwtwtwttpppmpptwzz\81\85\88\88\8f\92\96\96\96\92\92\8b\88\85\88\85\85\85\88\88\88\88\88\88\88\81~\81\81~z~~~\85\85\85\8b\92\92\92\8f\92\8f\92\92\8f\8b\85\88\85\88\85\88\88\88\85\85\85\85\88\88\88\85\88\88\88\85\88\85\8b\8f\92\8f\8f\96\99\99\96\96\92\96\99\99\9c\99\96\92\8f\8f\8b\85\8b\88\88\8b\8b\8b\8b\8f\8b\92\96\96\99\9c \9c £££   \9c\9c\9c\96\9c\9c\9c \99\99\9c\9c£§£§§££ £\9c\99\96\8f\88\81zzppmpmmpppptwtpzwzw\81\85\85\88\85\8f\8f\8f\88\8f\8f\92\8b\92\8f\8f\8b\8b\8b\8b\8b\8f\88\88\88\8b\8b\88\81\81\81\85\81~\81\81\85\8b\88\85\88\85\88\81\85\81z~\81\81z~~~zz~wzzt~~wz~t~\81z~wzwwwwwzzz\81~~~\81zzzpffcc_\XXUX\_c£G=:=33=:66ADKKNRRNRURNURRKKGGGGGGDA=3:=A%))0NGKRRRNNUU\cRKG\XUGNUKRKDDKGKAKNGKNRRRX\Xccffmiifimmpptwfffccccc_c__c_\\\XURRRNNNKKGGGGDD==::::::666:::::66666666333333666330A00000,,,,,:36:6=663333300063:=:A=A=AA=======6633:66:6==3:6:6=DAGNNRNRRU__cmmmmmpimimffccc____ccccc__ccf\XURUUUURRRRRRNKNKNtwwz~~~~~~\81\81\81\81\85\85\85\85\88\81\85\88\88\8b\88\88\85\81~zzzzzzz~\81\81\85\88\8b\8f\92\8f\92\92\92\92\96\96    ££§§ªª£§£ \9c\99\96\92\96\96\99\99\99\99\96\99\96\99\96\8f\92\8f\88\8b\88\88\81zzwmpmpmttptwtttwtzz~z~\85 \9c\9c\99\99\99\96\96\92\96\92\92\92\96\92\96\99\99\9c\99\99   \9c£\9c±´´¸¸»¾ÂÂÅÉÉɱű~\85zzzttpppimmmiiiipttz~~~zwpwtz\88\8f\92\8f\8f\96\92\96\92\8f\92\8b\8f\8b\88\85\85\88\85\85\85\85\85\81\85\81\88\85\85~~~\85\81~~~~zzwwtttptpmppmptwz\81\85\85\85\8f\92\92\96\96\96\96\8b\88\88\88\88\88\88\8b\88\8b\88\85\88\85\81\81\81\81\81~~~~\85\85\8f\92\96\96\92\92\92\8f\92\8f\92\8f\85\85\85\88\88\85\88\85\88\85\85\88\88\88\8b\88\85\88\8b\88\85\85\8b\8f\8f\8f\8f\96\99\99\99\96\96\96\99\99\9c\99\96\92\8f\8f\8b\88\8f\8b\88\8b\8b\8b\8b\8b\8b\8f\96\99\9c £  £ £\9c  \9c\99\9c\99\9c \9c\9c\9c\96\99\9c £££§ £££ \9c\99\8f\8b\85~zwttpmppmtpttwpzwzw~\81\85\8b\88\8f\8f\8f\8b\92\92\92\8f\8f\8f\92\8b\8b\8b\8b\8f\8b\8b\85\88\8b\8b\85\81\81~\81\81~\81\85\85\8b\85\81\88\81\88~\81zz~\81~zz~~wzztzwtzzzz\81tz~~~z~zwzz~~~~\85\81\81\81\85\85\85~wifffc\\XX\\_R£==:=36=6::ADGGKNNKNDNKURUKNKKGDDDAA:0::0),)3KGNUUUXRXX__UNK\XURRRNRKGGKGGAGKKNNNUUU\Xcccfiimiimmpptwiffffcccc__cc____XURRRRNNNKKGGGDD::::::::6666666666666666333333666060=00003,,,,,:3:::A6:6636333336::=A:A==A===::==::66:::=:A=:63::=AADGKRKNUU_\_iiiiimfificf____\__c__c_____c\\URUXUURRRNRNKKNKKwtzz~~\81\81~\81\81\81\81\81\81\81\85\85\85\85\81\85\85\88\85\81\81~~wzzwzwz~\81~\81\88\88\8f\92\8f\92\92\92\92\92\92\96\96\9c\9c££§ªªª£££  \99\96\96\96\99\99\9c\99\99\96\99\99\96\96\8b\92\8f\8b\88\85\88\81wzwptptptwtwwwtwww~z~~\81\88  \99\96\99\99\99\96\96\96\92\92\96\99\96\99\99\99\9c\9c\9c    §­´¸¸»»¾¾¾¾ÅÅÅÉ´¸­ªªªª \81wtttipmpimmmtww~\81\81\81~\85\8bzw\8f\8f\8f\96\92\92\96\96\92\92\8f\92\8f\8b\88\88\88\88\88\88\88\85\85\88\85\85\85\88\88\85\81z~\88\85\85\81\81~~~zwtttttpipmpptwz~\81\81\88\8b\8f\8f\92\96\96\92\8f\8b\8b\88\8b\88\8b\8b\8b\8b\88\88\88\81\85\81~\85\81~~~\81\85\88\99\96\96\96\96\92\96\92\92\8f\96\8f\88\88\88\88\8b\88\88\88\85\85\85\88\88\88\8b\85\88\88\8b\88\88\85\8b\8f\92\92\8f\92\96\99\99\99\99\99\9c\9c \9c\99\96\92\8f\8f\88\8f\88\88\8b\88\8b\88\8b\8f\8b\96\9c £   £  \9c \9c\9c\9c\99\9c\9c \99\9c \99\99    §§\9c££ £\9c\99\96\8f\88\81zzwwtpppptpttwpzz~wz\85\88\8b\88\8f\8f\8f\8f\92\92\92\8b\8f\8f\92\8f\8b\8f\8b\8b\8b\8f\85\8b\8b\8b\81\85\81~\81\81~\85\81\85\8b\85\81\88~\88\81~~z~~~zzzzwzwp~ttzwww~t~~~\81~\81~z~~\81\81\81\81\88\85\85\85\88\88\88\81zwppffc\\\\\_RUAA=A0:A::==AD=GDDGDAKGRNRGKGGDA=A==:3663)0,6GDRXXX\U\\\\RKXXUUUURRNKGGGKGAGKNNRRXXUX\cccffiimimppttziffffffcccc_c_c_cXXURRRNNNKKGGGDD:::::::::::6666666666666333333333360:03000000,,=:===A:=6636663336==A==A==A=::6:====666====D===6::=AAADGNNRUX_X\ffffficfcfcc____\\___\c\\_\\XXXUUUXUUUNRNRNKNKKKwz~~\81\81\81\81\81\85\81~\81\81\85\85\85\81\81\85\81\85\81\85\81\81\81zzwwzwzwz~~~\85\88\88\8b\8f\8f\92\92\92\8f\92\8b\92\8f\92\99 ££ªªª£§   \96\96\96\99\96\99\99\99\99\99\9c\99\92\92\8f\8f\92\8b\88\85\88\81w~wtwpttwwttwwwwzz\81~\81~\85\8b \9c\99\96\96\96\9c\96\96\96\96\96\96\96\96\96\99\99\9c\9c £  £­´¸»¸¾»¾¾¾¾ÂÂÂÉ´±±­ª§§£\92\85zwwpppmmmmmpzz~\81\85\81\81\88\8f\8f\92\92\92\92\96\92\8f\96\92\96\8f\8f\8f\8b\8f\85\88\88\88\88\8b\8b\85\88\88\85\85\85\88\88\85\81zz\85\85\88\81\81\81~\81zwwwttppmpppppzw~~\85\88\88\8b\8b\92\96\96\92\92\8f\8f\8b\8b\8b\8f\8b\8b\8b\8b\88\88\85\85\81\81\81\81~\81\81\81\85\88\9c\99\99\96\96\92\96\92\96\92\99\8f\88\8b\88\8b\8b\8b\8b\88\88\85\85\88\8b\8b\8b\85\85\88\8b\8b\88\88\8b\8f\92\8f\92\92\92\99\99\96\9c\9c\9c\9c  \99\96\92\8f\92\88\8f\88\88\8b\88\8b\8b\8b\8b\8f\99\9c££ £££  \9c\9c\9c\99\99\99\9c\9c\9c\99\99 \9c\9c\9c  £££\99   £\99\9c\99\8f\85\81z~tzwpptppptttpz~z~~\85\8b\8b\85\92\8f\8f\92\8f\92\8f\8b\8b\8f\8f\8b\8b\8f\88\88\8f\8b\88\88\88\88f\85\81~\81\81\81\81~\85\88\85\85\88\81\88\81z~wzzzzwwzzztw~pzzwtw~w~~\81\81~\81\81~\81\81\85\85\85\85\88\85\88\88\8b\8b\88\85~ztzmifc_\tf_RUDDAA0:===::=A:D=AAA6D3:A3D00DA==:::66%30,003DA_\X\_XX\XXRK\XXUXUNRNGGGGGKDGKRRRNUXUX_c_fififmmpppttziffffffffcccc___c\XUUURNNNNKKGGDD::::::::::::666666666666333333333030:0033333,00:=AADA==:63366636::==A=A=AA:=::6=:=A66:==AADDAA::6===AADKNRUU\U\cccccc_c_c__\___\X\\c__\\_\UXUUUUUXURURNRNNKNKKKw~~\81\81\85\85\85\85\88\85\81\81\85\81\85\85~\85\81\81\81\81\81\81\81~zwwwwwzwz~~~\85\88\88\8f\8f\8f\92\8f\8f\8b\8f\8b\8f\8b\8f\92\9c £§ªª£§\9c \9c\99\99\99\96\99\96\99\99\99\99\99\99\96\96\92\92\8f\88\88\88\88\81z\81zwwwttwzwtwzwz~~\81\81\81\81\88\8f\9c\99\99\96\92\96\99\96\96\96\96\96\96\96\96\96\99\9c   ££ª§±¸¾»¾¾¾¾¾¾¾¾¾¾ÅÉ´±­­ª£ \96\88~zztttmmmpptzwz~\81\81\85\8b\92\92\96\96\96\96\96\92\92\96\92\96\8f\92\8b\8b\8b\88\85\8b\88\88\8b\88\85\88\85\88\81\88\88\85\85\81~z\88\88\8b\85\85\85\81\85zzwwttpppmtmtwwz\81z\85\88\88\8b\8f\96\96\96\92\92\8f\92\8f\8f\8f\92\8b\8b\8b\8b\8b\85\88\85\81\81\81\85\81~\81\85\88\9c \9c\99\99\96\92\99\96\99\96\99\8f\8b\8b\8b\8b\8f\8b\8f\88\88\85\88\8b\8f\8b\88\88\88\88\8b\8b\8b\8b\8f\92\92\8f\92\96\92\96\9c\99\9c\9c \9c  \9c\99\96\92\8f\8b\8b\88\88\8b\8b\8b\8f\8b\8f\8f\9c £££££££ \9c\9c\9c\9c\99\99\99\9c\99\99\99 \99\99\99\9c\9c£§ \9c£  £\9c\9c\9c\92\88~w~tzwpptptptwppw~w\81\81\81\88\8b\88\92\8f\8f\92\92\96\8f\8b\8b\8f\8b\8b\8b\8b\88\8b\8b\8b\8b\88\8b\88f\85~~\81~\81~\81\85\88\85\85\88\85\88\81wzzw~zzwzzwzpz\81p~~zwz~w~~\81\81\81\81\85\81\85\85\85\88\88\88\88\85\8b\88\88\8b\88\81~~\81~tpif__z\81£cUKKGG:===A66:=6=:=6=6:3:6300033,::63)3)33003:ADc_U_\\\\X\RR_X\UXUNUNDGDDKKGKNRRRRUUUX_c_fiimfiptptww~fffffffffcfccc__c_XXUURRNNNKKKGDD::::::::::::::::66666666333333333333=3330663,03=AGDGDDA=:63:3663:==:A=AA==:===:====:::=AAAGGDGA=:A=ADADGKUURXR\\__\__\__c\_\____\\\___\X\XUURUUURUUUURNNNNKKNKKz\81\81\85\85\88\88\88\88\88\85\85\81\85\81\81\85\81\81\85\81\81~~~~~zwwwwz~z~~~\81\85\85\8b\8f\8f\8f\92\92\92\8f\8b\88\8b\88\8b\92\99\9c £ªª§§ \9c\9c\99\99\99\96\99\99\99\96\99\99\99\99\96\96\96\92\8b\8b\8b\88\8b\85~\81~zwzwzwz~zw~zw~\81\85\85\85\85\8b\92\99\99\99\99\96\96\96\92\96\92\96\96\99\99\99\99\99\99 ££§§­­´¾»»¾¾¾¾¾¾¾¾Â¾Âű´ª±ª§ \99\8f\81\81zwttppmpttwwzz\85\81\85\8b\8f\92\96\99\96\99\96\96\96\96\96\96\8f\92\8f\8b\8f\85\88\88\88\8b\88\88\88\8b\81\88\85\85\8b\85\85\85~~\88\8b\8b\88\88\88\85\85~zzzwttptpptwzw~~~\85\88\8b\8b\8f\92\96\96\92\92\8f\92\92\8f\92\92\8f\8b\8b\8b\8f\88\8b\88\81\81\81\85\81\81\81\88§ £ \9c\99\99\96\99\99\99\96\99\92\8f\8f\92\8f\8f\8b\8b\8b\8b\88\88\8b\8f\8f\88\88\88\8b\88\8f\8b\8f\92\96\96\92\92\96\96\96\9c\9c\99\9c \9c\9c \99\99\99\92\8f\8f\8f\88\8b\8b\8b\8b\8b\8b\8f\8f\9c\9c £ §£§£\9c\9c\9c\9c\9c\99\9c\99\9c\99\99\99\9c\99\9c\96 \9c§§£   £§ \9c\9c\96\8b\81t~w~wtptptttwttz~w\85\81\85\8b\8b\8b\92\8f\8b\96\96\96\92\8f\8f\8f\8b\8b\8b\8b\88\8b\8b\8f\88\8b\8b\85f\85z~~~\81~~\81\88\85\81\88\85\88\81wzzwzzzwzztzt~~p\81~~zz~w\81\81\81~\81\81\85\81\85\81\85\85\88\88\88\85\8b\88\88\8b\88\81~~\85\81ztmici\85£££UUNKK=AAA=::6:363=6:633:3300300,6660)0,00006=AG_\X\X\\XX_RU\\\RXURUKGKGDKKGKRNURRUUXXcccimmpiippptww~fffffffffccccfccccXXUURRNNNKKKKGD::=::::::::::::::::::666333333333333:3363363636AGKGKGGDA=63=03:36A:====AA::=:::=A:=:AAADDDKKGKDGGDDADDDGKRURUNXXX\X\XXR\c_c_cc__\\\\__\X\XURRXRUUXXXUUNNNNNKNKK~\85\85\88\88\8b\8b\8b\8b\88\85\85\81\85\81\85\88\85\81\85~~~~~~~zwwwww~~~~~\81\81\85\8b\8b\8b\8f\92\92\8f\8f\88\88\88\88\8b\8f\8f\9c£ ªª§£\9c \99\9c\96\9c\96\99\99\96\99\99\99\99\96\96\92\96\8f\8f\8b\8b\8b\88\85\81~~z\81~z\81\81\81\81~~~zz\81\85\85\88\88\88\8f\96\96\99\99\9c\99\96\99\96\96\92\96\96\96\99\99\99\96\99\9c§§ª­±±´¸¸¸¾¾¾¾¾¾¾¾Â¾¾Â´»±±­ª \9c\92\85\85~wwttppppptz~z\85\81\85\8b\8b\96\96\99\96\99\99\99\96\99\99\96\92\92\8f\8f\8b\88\88\88\88\88\85\85\88\88~\85\81\81\88\88\85\85~\81\85\88\88\88\8b\8b\88\81\81~~zzwwtwttw~~w\81~~\88\88\8b\8b\92\8f\92\92\92\96\92\96\96\92\92\92\92\92\8f\8f\8b\8b\8f\88\85\85\85\85\85\85£ªª£§  \9c\99\99\99\99\96\99\99\96\8f\99\96\96\96\92\8f\8f\8b\88\8b\8b\8f\8b\88\88\88\88\8b\8f\8f\8f\96\96\96\92\92\99\96\99\9c \9c\9c \9c \9c\99\96\96\8f\8f\8f\8f\8b\88\8b\88\88\8b\8b\8b\92\9c\9c££££££§ \9c\9c\99\9c\99\99\99\99\99\99\96\9c\99\99\99 \9c§ª§££ ££ \9c\9c\96\8f\85z\81zzwwptptttwttw\81z\81~\88\8b\8b\8f\8f\8f\8b\96\96\92\92\8f\8f\8f\8b\8b\8b\8b\88\8f\8f\8f\88\88\8b\88f\81zz~~\81~z~\85\85\85\88\85\85\81zz~wwzzwwwwzw~~p\81\81~~z~z\85\85\81\81\81\81\81~\85\81\85\85\88\85\85\85\88\85\88\88\85\85~~\85\81~w~if~£££§£cRNRGDAD:=6:6033:33633:30000,,,3330),0,,00:ADK\\\XX\\X\_UX\\\UXRRUKKKGDGGGKRRRRRXR\Xcfffmmpmippptww~ifffffffffccccccfcXXUURRRNNKKKKGG::::::::===:====::::::::663333333333=3663066=6:GKNKKKKG=A:6=33636=:::::=D=:=:==AA===DDDDDGNNKNGKKGGGGGDGGNRNRNNUUURXUURX__fcff__\\\\_\\X\UUNRURUUXUURURRRNRNRNN\81\85\85\88\8b\8b\8b\8b\8b\88\88\88\85\88\81\85\88\85\85\81\81~~~~\81~zzwwzz\81~\81\81\81\81\85\88\88\88\8b\8b\92\92\8f\8f\8b\88\8b\8b\8b\92\8f\9c£ §ª§£ \9c\99 \99\99\99\99\99\99\96\99\99\99\99\99\92\92\8b\8b\8b\88\88\88\85\81\81\81\81\85\85\81\85\85\88\88\85\81\81\81~\85\88\88\8b\8b\8b\8f\99\99\9c\9c\99\99\99\99\92\96\96\92\99\99\99\99\99\96\96\99§ª­±±´±´´´»¾¾¾¾¾¾Â¾¾Â¾¸¾´±ª­£ \96\92\88\81zztpppmptwwz~\81\81\85\8b\8f\92\96\96\99\99\99\96\99\96\96\99\92\96\8f\8f\88\85\85\85\85\85\81\81\85\85\81\81~~\85\85\88\81\81~\88\85\88\8b\8b\8b\8b\85\85\81~~~zwtwwwz\81\81z\85\81\81\8b\8b\8b\8b\8f\8b\96\92\96\96\96\99\99\96\92\96\96\96\92\8f\8b\88\8f\8b\88\88\88\88\85\88§ªª§§£  \9c\99\9c\99\96\99\99\99\99\9c\9c\99 \96\92\8f\8b\8b\8b\8f\8f\8b\88\8b\8b\8b\8f\92\92\92\96\96\99\96\96\9c\99\99   \9c \9c\9c\9c\96\96\92\92\8f\8f\8b\8b\88\8b\88\8b\8b\8f\8f\92\99\9c£££ £§§£ \99\99\9c\99\99\99\9c\99\9c\99\9c\99\9c\9c\9c £ª§££ £   \9c\96\8b\85~~z~zztwpttwwtzt\81\85\85\81\8b\8b\8b\92\8f\92\8f\96\96\92\92\8f\8f\8f\8f\88\8b\88\8b\92\8f\8b\88\8b\8b\88f\81z~\81\81\81~~z\85\85\85\85\88\85\81~z~zwwzzwwzzzz~w\81~\81~~~~\88\85\85\85\85\85\81\81\81\81\85\88\85\81\81\85\85\85\85\85\81\81\81\81\85\85\81z\81\81p££££££fRRUKA=G:=663333663633630000,,,,)00,)00,36=DGNU__U\_\\X\XX\_XXUNRUGKKGGGDGGRRRNR\RX\cccimmmpippttwz\81fffffifffffffcccff\\UURRRNNNKKKGG==:::================::===6666633333:3::63:6A::NRNNKKNGDA=::36336:66366=D===AAAADGA=KGGDGGKRNNKKNNKKGGGGDKRNKKKRNRRRRRNU\ciccf\_\__X\XXXXURNRRNRRURRRRRRURRRURR\85\88\88\85\8b\8b\8f\8b\8b\8b\8b\8b\88\88\85\85\85\85\88\81\81\81~\81~\81~~z~z~~\85~\81\81\81\85\85\88\88\8b\8b\8f\92\92\92\8f\8b\88\8b\88\88\8f\92\9c  ªªª§£ \9c \99\99\9c\99\96\99\99\96\96\99\99\96\96\8f\8f\8f\88\88\88\85\85\85\85\85\85\88\88\88\88\88\8b\8b\88\88\85\88\81\88\8b\88\8f\8b\8b\92\96\9c  \99\99\99\99\92\99\96\96\99\99\96\99\96\96\92\96£§±´­±­±±­¸¾¾¾¾¾Â¾¾¾Â»»»¸±±±§£\99\96\8b\85~~wwttpppww~\81~\85\85\8b\92\8f\96\92\99\9c\99\99\96\96\96\96\8f\92\8b\8b\88\85\81\85\81~~\81\81\81~~~~\81\85\85\81\85\81\88\88\8b\88\8f\8f\8b\88\85\85~\81\81z~z~zz~\85\81~\88\85\85\8b\8b\8b\8f\92\8b\99\92\96\99\99\9c\99\9c\9c\99\99\99\96\92\8f\8b\8f\8f\8b\8b\8f\88\85\8fª­ªª§££ \9c\99\9c\99\99\99\9c\99\9c\9c \9c£\9c\96\92\8f\8f\8f\92\8f\8b\8b\8b\8f\8f\8b\92\8f\92\96\99\99\99\99 \99\9c\9c£ \9c  \9c\9c\92\96\92\8f\8b\8f\8f\8b\85\88\88\8b\88\8f\92\96\99 ££££££§  \9c\99\9c\99\99\99\9c\9c \99 \9c\9c  £ §£ §£££  \9c\99\8b\88\81~~~~~wztwtw~t~\81\81\88\81\85\88\8b\8b\92\92\96\92\92\96\96\96\8f\92\8f\8f\8b\8f\88\8f\92\8f\8f\8b\8f\8f\8bf\85z\81\81~\81\81zz\85\81\85\85\88\85\81~zzzztzwwwzz~z~z\81z\85\81\81\81\81\88\88\88\85\85\85\81\81\81~\81\85\81~\81\81\85\85\85\85\81~~\81\85\88\85~\81\85t££££££cURXNAAD==::6603330633630000,,,0),00)3006:AGKNRc\X\\X_\\X\\_U\RNRUKKGGGGGGGRNUNUXRUXcfcimimpmpptwwz\81fifffffffifffffcff__UURRRNNNKKKGG==::==========AA==AAA==AAA=====66663=366:6:AD=ARURNNNKKG=A6:36306633333:A=A:DAGGKKKGNKGDKKGNRRNRRRNNKGKGAGNNKGGNGGNNRNNRX_fc_cX_X\\UXUUUURNNNNKNNRNNNNNRRRRUXUU\81\85\85\88\88\8b\8f\8b\8f\8b\8b\88\88\88\88\85\88\85\88\85\81\81\81\81~\81\81~~\81~\81\81\85\81\85\85\85\85\88\88\8b\8f\8b\8f\92\92\92\8b\8b\8b\88\88\8b\92\96   §ªª§££ \9c\96\99\99\99\96\96\96\96\96\96\96\96\92\92\8f\8b\88\85\85\88\88\88\85\88\88\8b\8b\8b\8b\8b\8f\8f\8b\8b\88\8b\85\88\8f\8f\8f\96\8f\96\99  £\9c\99\99\99\96\99\96\96\99\99\96\99\96\96\92\96\99£­± ­§­§ª±»¾¾¾¾¾¾Â¾¾»¸»´´´±ª£\99\96\8b\88\81~~zwwtttzz\81\81\81\88\85\88\8f\8f\92\92\96\99\99\96\92\92\96\96\8b\8f\8b\88\85\85~\81~wz~~~~~z~\85\81\85\81\85\85\88\8b\8b\8b\8f\92\8f\8b\88\88\81\81\85\81\81~\81~~\81\85\81\81\88\88\88\8b\8f\8f\92\92\92\96\96\96\9c  \9c  \99\99\99\99\96\92\8f\92\8f\8f\8f\92\96\99\9cª­­­ª§££\9c\9c\9c\99\99\99\9c\99\9c\9c£ § \99\96\8f\8f\8f\92\92\8b\8b\8b\8f\8b\8f\92\92\92\99\9c\9c\9c\9c \9c \9c£\9c £\9c\9c\99\92\92\92\8f\8b\8f\8b\8b\85\88\88\88\85\8f\8f\99\9c££§§£££§ \9c\9c\99\9c\99\96\99\99\9c\9c\99\9c\9c\9c    § £§ ££ \9c\99\99\8b\8b\85\81~\81~~~zwztw\81z\81\85\81\88~\88\85\8b\8b\8f\8f\96\92\92\92\96\92\8f\92\8f\92\8b\8f\8b\8f\8f\92\92\8b\8f\8f\8ff\88z\85\81~\81\81w~\81\85\85\85\85\85\81~w~zztwtwzww~w~~\81t\85\85\81\85~\8b\88\88\88\88\85\81~~z~\81z~~\81\81\81\81\81~~z\81\81\88\88~~\81\85££££££cXU\KADDAA:::3,033,633630000,,,,)0,0,3,3:=AGKRX_\X_X\_\\X\_\U\NRUUNKGGGKGKKRNUNUXRX\_f_iifmmmpptwwz\81iiffiffffiffffffffc_UURRRNNNKKKGGA::=======A=AAAAAAAADAADDDAAADD====A=63::=ADG=D\XXURRNKKDA=:03003663033==ADAGKKKNNNKRNKKKNDKRURUUURUNNRKDGKNKDGGGGKGNKKNU_c_\_U_UXXRNRRRRNKKKGGGKKKKNNNRUUUX\X_\85\81\88\88\88\8b\8b\8b\8f\8f\8f\88\8b\8b\88\88\88\85\88\88\85\85\85\85\81\85\81\85\81\85\81\85\85\88\85\88\88\88\88\88\88\8b\8f\8b\8f\8f\8f\92\8b\8b\8b\88\88\8b\96\99  £ª­ªª£  \9c\99\99\99\9c\92\99\96\96\92\96\96\92\92\8f\8f\8b\88\88\85\88\8b\8b\88\8b\8b\8b\8b\8f\8f\8f\92\8f\8f\8f\8b\8f\88\8b\8f\96\92\99\99\9c ££§ \99\99\99\96\96\96\99\96\99\96\96\96\96\96\96\96\9cª \9c£   £­­¸»»¾¾¾¾¾Â»¸¾´¸¸±­£\96\96\8f\8b\81\81\81~zzwwwz~\81\81\85\88\88\88\8b\8f\8f\8f\99\96\96\92\92\92\92\92\8b\8f\88\81\81\81~~zwzzzzzzz~\81\81\81\85\85\85\88\8f\8f\8f\92\92\8f\8b\8b\8b\8b\85\88\88\85\81\85\81\81\81\85\85\85\85\88\8b\8f\8f\92\96\92\96\99\99\9c ££ ££\9c\9c\9c\99\99\96\92\92\92\92\92\99\9c£ ª­±­ª§§£\9c\9c\9c\99\99\9c\9c\9c  §£§£\9c\99\8f\92\8f\96\92\8b\8b\8f\8f\8f\92\96\96\96\96\9c\9c  £ £££  £\9c\9c\99\92\8f\92\8f\8b\8f\8b\8b\88\88\88\88\85\8b\96\9c\9c§£§§££§£ \9c \9c\9c\99\99\99\99\9c \99\9c    ££§£££   \9c\99\99\96\8f\88\88\85~\85\81\81\81~z~t~\85\81\85\88\85\88\81\85\88\8b\88\8b\92\92\92\96\92\96\96\8f\8f\8f\92\8f\8f\8b\8f\92\92\92\8f\92\92\92f\88\81\81\85\85\85\85z~\85\85\85\88\85\88\81~z~zztztwzwwzz\81~\81~\88\85\85\85\81\8f\8b\88\88\88\88~z~wz\81zz~~\81~\81\81\81z~\81~\85\88zz\81t£££££w_XUXGGGDAA:6=300030633630000,,,,),,,)006:ADKNR\_\\c\_c\X\X_XXXNRUUNNKGGKKKNRNRRU\UU\_fcfifiimpptwwz\81ifiifiiiifiifffiif__XURRRNNNKKKGG=::A=====AAAAAADADDDDDDGGGDGGGKDDGGKAAADDDGANAG_\\XUURKNGAA6:3006330,30=:DADDNNNRRRNNRKNGNGNNUUXUX\XXUUNGKKKGDGGGGKGKGGNR\U\X\R\RRRRKDNNGGGGGADDGGGGKKNRUXX\_\c\81\85\88\88\88\8f\8f\8b\8f\8b\8f\8b\8b\8b\88\88\88\85\88\88\88\88\88\88\85\88\85\88\85\85\85\88\85\8b\88\88\8b\8b\8b\8b\8b\8f\8b\8b\8b\92\8f\92\8f\8f\8f\8f\8f\92\99\99 £§ªªªª§££\99\9c\99\9c\99\96\96\99\99\92\92\92\8f\8f\8f\8f\8f\88\85\88\88\8b\8f\8b\8f\8b\8f\8b\8f\92\92\96\92\92\92\92\8f\92\96\99\99\9c£§££§§ª£\9c\9c\9c\96\96\99\99\96\96\99\99\96\96\99\96\96\99\99\96\96\99\99\99\9c £­±´¸»¾¾¾¾»¸»»¸¸´±­£\96\96\8b\88\81\81\85\81~~zz~~\81\81\85\88\88\88\88\8b\8b\8f\8b\96\92\92\8f\92\8f\8f\8f\8b\8b\85\81\85\81zzzwwwzz~ww~~~\81\85\81\88\8b\8b\8f\92\92\8f\8f\88\8f\8b\8f\88\8b\8b\85\81\88\81\81\85\85\85\85\81\88\8f\92\92\96\96\99\99£  £§§££   \9c\9c\99\99\96\96\96\96\99\9c §§­±±­ªª§£\9c\9c\9c\9c\9c\9c\9c\9c£§£§§£\99\99\92\8f\92\92\8f\8f\8f\92\92\92\96\96\96\96\99   §££§§§   \9c\9c\99\92\8b\8f\8f\8b\8f\8b\88\8b\8b\88\85\85\88\99\9c §£§§§£§£\9c\99 \99\99\96\99\99\96\9c \9c\9c   \9c££§££££ \9c\99\99\99\92\8f\8b\88\88\81\81\85\85\85\81~\81\88\85\88\85\88\8b\88\8b\85\85\88\8f\8b\8f\96\92\92\92\92\96\96\8f\8f\92\8f\8f\92\8b\8f\92\92\96\92\96\92\96f\88\85\85\85\88\88\88~\81\85\85\81\88\81\88\85\81z~zzwztwwwwzw\81\81\85\81\88\81\85\88\85\92\8b\88\8b\88\85~~zww~wwzz~z~\81\81~~\81z\81\85w~~icp\i£t\\UXNKKDD=:6:030,0,633630000,,,,)),)),3:=AGKNR__\\_X__X\\U\UUURUXUNNKGKGKNNRNRRRXXUX\cffifimmpptwwz\81iiiifiifiimmiifiif_c\XURRNNNKKKGG:=:=====AAAAADDDDDGGGGGKKKGKKKNKKNNNKNNNRKKNRRGc__\XXUNRKKDD=6,3303300,:=DAGGNNRRRRRRRNRKKGKRUUXUX_m_\XRKNKNGGGGGGKGGGGKKXRRRUNXRNNNGA:ADDDDDAADDGDGGKNRX\\\__f\85\85\88\85\88\8b\8f\8f\8f\8b\8b\8b\88\8b\88\88\85\88\88\88\8b\88\8b\8b\88\8b\88\8b\88\88\88\88\88\8b\88\8b\8b\8f\8b\8f\8b\8b\8b\8f\8f\8f\92\96\92\92\8f\96\99\96\9c ££ª­§ªª§§§\9c\9c\99\99\9c\99\99\96\96\92\92\8f\8f\8b\8f\8b\8b\88\88\88\88\8b\8f\8b\8f\8f\92\8f\92\92\96\96\96\96\96\96\92\96\99 §§ªª§§ªªª§ \9c\99\99\99\9c\99\96\99\96\99\96\96\96\96\96\96\99\96\96\96\96\96\99\9c ª­´´´¾»¾¾»¸¸¾´´±±ª \92\92\8b\85\85\85\85\85\81\81~~\81\81\85\85\88\88\85\85\88\8b\88\8b\8b\8b\8f\8f\8b\8f\8b\8b\8b\88\88\85\85\85~zwzwwwzw~wwz~~\85\85\81\85\88\88\92\92\8f\92\8f\8b\8f\8b\92\8b\8f\8f\85\85\85\81\85\88\88\85\88\8b\8b\8f\99\96\9c£ \9c§£§§§§§§  £ \9c\99\99\99\99\99\99\9c££ªª­±±­ªª££ \9c\9c\9c\99\9c  §ª§§ª§\96\99\96\92\92\8f\92\92\8f\92\96\96\99\96\99\96\9c £ ª§§ªª§   \9c\9c\96\92\8b\8f\8b\88\8b\8f\88\88\8f\88\81\88\88\9c\99£§§£§££££ \99\9c\9c\9c\99\99\99\96\9c\9c\9c\9c\9c\9c\9c\99  £ £   \9c\99\99\96\92\8f\8f\88\8b\85\85\88\85\85\81\81\85\8b\88\8b\88\8b\8b\8b\8b\88\88\8b\8f\8f\8f\92\96\92\92\92\96\96\92\8f\8f\92\92\92\8f\92\92\96\96\96\96\96\92f\8b\88\88\88\8b\8b\85\81\85\88\85\81\85~\85\85\81z~~~wwttwwtzt\81\85\88\85\8b\85\85\88\85\8f\8b\88\8b\88\81~zzwwzttwtzwz~~zz~z~wtzmff\\\fp__X_RNGGD:6::03003)633330000,,,,)),),03:ADGKNR__\__\_\\\XRXRXXUUUXNRKGKGKNKRRRRRUUXXXcccfffimpptwwz\81imffiiifiiimifffii\__UXURRNNKKKGG:::====AAAAADDDGDGGKKKKKKNKNNNRNNRRRNRRRURRRUURf\\\\\XNRGNDGA6,603600006:AAKKNNUUUUUUURUNNUKUUUUU__zc_URNRKNGKGGKKKGGGGKKUNNNRKRNKKD::66:=A=A=AADGGKGNRUX_\\__f\85\85\88\88\8b\8b\8f\8b\8f\8b\8b\88\88\88\88\88\85\88\8b\8b\8b\8b\8b\8f\8b\8f\8b\8b\88\8b\8b\88\8b\8b\88\8b\8b\8f\8b\8b\8f\8f\8b\8f\8f\8b\92\96\96\96\96\9c\9c  ££§§ªªªª§££  \99\99\99\99\96\96\92\8f\92\8f\8b\8b\8b\8b\88\88\8b\8b\88\8f\8b\8f\8f\92\92\92\96\96\99\96\99\99\99\99\99  £ªª­­ªª­ªª§£ \9c\99\99\99\99\96\99\92\96\99\96\92\96\96\92\96\96\96\92\92\96\96\99£§ª±±±¸¸´¸¸»´¸´±±­ \9c\8f\8f\8b\88\88\85\88\85\85\85~\81\85\85\88\88\88\88\88\88\8b\8f\8b\88\88\88\8f\8b\8b\81\88\85\85~\81\85\85\81\81~zzwwwwwzzzzz\81\85\81\85\81\85~\8f\8f\92\92\8f\8f\8f\8f\92\8f\92\8f\88\88\88\85\88\8b\8b\88\8b\8f\96\92\9c\99ª§£ªª­ªªªª§ª£ ££ \9c\99\99\99\9c\9c §§ª­±±´­ªª§£    \9c ££ª­ªªª§\92\96\96\96\92\92\92\96\92\96\96\96\9c\99\9c\9c £§ª­ªªª§£ \9c \9c\9c\96\8f\8b\8b\8b\8b\8f\8f\8b\8b\8f\8b\85\8b\8f \9c£§ª£§££§£\9c\9c\9c \9c\99\99\99\96\99\9c\9c\9c\99\99\99\96\9c\9c   \9c\9c \99\99\96\92\8f\92\8f\8b\88\85\85\85\85\85\81\85\88\8f\8b\8b\8b\8b\88\8b\8b\8b\8b\8b\8f\8b\8b\92\96\8f\8f\92\96\96\92\8f\8f\92\92\8f\92\92\92\96\92\96\96\96\92f\8b\88\88\88\8f\88\85\85\85\88\85~\81\81\88\85~~z\81~zwppttpXt\81\85\88\88\88\88\88\85\81\8f\88\88\88\88\85\81zwttwpptptppzzwzzzwwpwmcc\X\cmcc\cURKDG=::636,00,633330000,,,,)))),36=ADGKNR\c\_____\XUXUUX\XXXXRNNGGGKKGRUUUURRXU\c__cffimpptwzz\81imifififiiimiiffif\__XUURRRNKKKGG=::====AAAADDDDGGGGKKKKNNNNNRRRRRUUURUUUXUUUXXUf_\\\\XKRKNGDA60300300,036A=GGKRRUUXUXXUXURXUXXUU\cf~fmURRRRRNNKKNGGGGGGGGNKKKNKNKG=A663366:6:==ADGGNKNRUX_\\__c\85\85\85\85\8b\8b\8f\8b\8f\8b\8b\88\85\85\8b\88\81\85\8b\88\8b\8b\8f\8f\8f\8f\8f\8f\8b\8b\8f\8b\8b\88\8b\8b\8f\8f\8b\8b\92\8f\8f\8f\8f\8f\92\92\99\92\99  ££§§§§§ªªª§§§££\99\99\9c\99\96\96\92\8f\8f\8b\88\8b\8b\8b\8b\85\88\8b\8b\8f\8b\92\92\92\92\92\96\96\9c\99\9c\99\9c\9c\9c££§­­±­­­±­ª§££\9c\9c\9c\99\99\96\99\96\99\99\99\8f\96\92\92\92\92\92\92\96\96\99\99 £§­­±´´\92´\8f»\8f´\99­­ª\9c\96\8b\8f\8f\8b\88\88\88\88\88\88\81\85\88\88\8b\88\8b\8b\8b\88\8b\8b\8b\85\8b\88\8b\85\88\81\85\88\85~\81\81\81\85\81~~zzzzwwwwzzz\81\81~\81zzwt\8b\8f\8f\8f\8f\8f\92\92\92\92\8b\8b\8b\8b\88\88\8f\8b\8b\8b\92\99\9c §´±­­­±­­ª­§§§ £ £\9c\99\9c\9c  £ªª±±±´´±­ª§£ ££ \9c ££­±ª­­£\96\92\96\92\92\92\8f\96\96\96\96\99\9c\9c\99 \9c§ª­ªªªª§£ \9c \99\99\96\92\8b\88\8b\8f\8f\8b\88\8b\8f\8f\92\8b\92   §ª£§§ §£\9c \9c\9c\99\9c\99\99\99\9c\9c\99\9c\99\8f\96\8b\96\9c\9c\9c\9c\99\99\9c\96\96\92\8f\8b\8f\8b\88\88\81\81\85\85\85\81\85\88\8b\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8f\8b\8b\92\96\8b\92\92\96\96\8f\8f\8f\92\92\92\92\92\92\92\96\96\99\96\92f\8b\8b\8b\8b\8f\85\88\88\85\88\85~\85\85\85\85~\81z\81zzttpptpXw\81\85\85\88\85\85\85\81~\8b\88\85\85\85\81~wwttwpmmmpmiwwtwwwwwmpif_XX_fiff_fXUKGDA=::33,330633330000,,,,))),03:=ADGKNU\c__\c_c_\X\UX\_\XXURRRGKGNKKNXRXXRRXUXc_ccfiimpttwzz\81miffiiffiiimmiiiif_\\\XURRNNKKKGG:======AAAADDDDGGGGKKKKNNNNNRRRRUUUUUUXX\XXX\\Xc\\__XXNNNKKAD:30,00,,)006=:DDGNNUUUXX\XXXX\X\\X_ciizmtXRUUURRRNNNGGGGGGGGGGGGKGKDD6=6333666:::AADGKNNRURX\\\\_c\88\85\81\85\88\88\8b\8b\8f\88\8b\88\85\88\88\85\85\85\8b\88\88\8b\8f\8f\8f\8f\8f\8f\8b\88\8b\88\8b\8b\8b\8b\8f\8f\8f\8f\96\92\92\92\8f\8f\92\96\99\9c\9c££§§ªªªª§­§ª£ª§§ \9c\99\9c\96\96\92\8f\8b\8f\8b\8b\88\8b\8b\8b\88\8b\8b\8b\8f\8f\92\92\92\92\96\96\96\9c\9c\9c\9c   §§ª­±±±±±±­§£   \9c\9c\99\99\96\99\96\9c\96\99\92\96\92\92\92\92\92\92\96\92\99\99\9c£§§ª­±±\88\88\88\92\81\92\96\96\96\96\99\92\8f\8f\8b\8b\88\88\88\88\88\8b\85\85\88\88\88\88\88\88\8b\88\8b\8b\88\85\88\85\88\85\85\81\81\85\81\81~~\81\81\81z~~z~zwwttwww~~zwwwwp\88wz\8b\8b\8b\92\92\92\92\8f\8f\8f\88\88\88\8b\88\88\8f\8f\9c£§¸¸´´´±´±±­­ªª§     \9c\9c   §ª­´´´¸±±­ª§§££££ £§§­´­±­ \99\96\96\8f\92\92\92\96\99\99\99\9c££ªª ´­­§ªªªª£ \9c\9c\99\96\96\8f\8f\8b\8b\8f\8f\8f\8f\8b\8f\92\96\8f\96\9c £§ª§££ ££\9c  \9c\99\9c\99\9c\9c\9c\9c\99\99\96\8b\92\8b\92\99\99\92\99\96\96\99\92\92\8f\8f\8f\8b\88\85\85\81\81\81\81\85\81\81\88\8b\8f\8f\8b\8b\8f\8b\8b\8b\88\8f\8b\8f\8f\96\96\8b\92\8f\96\96\8b\8f\8b\92\8f\92\92\96\92\92\96\92\96\99\92f\8b\8b\8f\8b\8b\88\88\88\88\88\88\81\85\88\85\81~\85z~zwpppmppXt~\81\81\85\81\81\81~z\88\85\88\81\81~zttpptpiiimifmmptttwtmpif_XXcciffcc\UKKDA=:6600330633330000,,,,))),06:=ADGNRU______\__\X_X\Xc_\UXNNNKKGNNNNUUU\RUXXXcccffimmpttwzz\81iffiiiifiimiiiiimc_\\\UURRNNNKKGG::=====AAAADDDDGGGGKKKKNNNNNRRRRUUUUXXXX\\\\__\c\_\cUUKRRKNDG=00,,,,,),03:6AADKKUXUX\X\X\\_ci_\cfmmzwwXRRUXRUUNNRGKGKGGGGGADDDDDA:3:3330366:==AADGKRRRRRXXXX\\_\88\81~\85\88\88\88\8b\8b\88\88\85\85\88\85\81\81\85\88\85\88\8b\8f\8f\8f\92\8f\8b\8b\88\8b\8b\8b\8b\8f\8b\8f\92\92\92\96\96\96\96\96\92\96\96\9c  §§ª§ªªª­ªªª§ §§£\9c \99\99\99\92\92\8f\8b\8b\8b\8b\88\8b\88\8b\8b\8b\8b\8b\8f\8f\8f\92\96\96\96\99\99\9c\9c \9c£ £ªª­­±±±±±±ª£££ \9c\99\99\9c\99\99\99\99\9c\96\96\96\92\96\96\92\92\96\96\96\96\9c\99  §£§ \96\92\88\88\85\81~\81z\85\8f\8b\8f\8f\8f\8f\8f\8f\88\88\88\88\85\88\85\88\8b\88\85\85\8b\85\88\85\88\8b\88\88\88\85\88\85\85~~\85\81~~z~~\85~\81\81~\81zttttwwzzzzwzwwtttw~\88\88\8f\92\92\92\8b\8b\8b\85\85\85\88\85\85\8b\8b §´»»¸¸¸´´´´±±ªª§££   \9c\9c £££ª±¸¸´¸´±±­ª§§£§£££§ª­´±´­£\9c\96\96\92\96\96\96\96\96\99\9c §ª­±±¸±±ªªª§§£\9c\99\9c\96\96\92\8f\8f\8f\8f\8f\8b\8f\92\8f\8f\92\96\92\96\9c\9c §§§£££§£ \9c\9c\9c\9c\99\99\9c\9c\9c\9c\99\96\92\88\8f\88\92\96\96\92\96\92\8f\96\92\8f\8b\8b\8b\88\85\85\85~\81\81\81\81\81\85\88\8f\8f\8f\8b\8b\8f\8f\8f\8b\88\8f\8b\92\8f\92\92\88\92\8f\92\92\8b\8f\8b\92\8f\8f\92\96\96\96\96\96\92\96\92\8f\8f\8b\8f\88\8b\8b\88\8b\8b\8b\88\85\81\88\85\85\81\85zzzwpmpmmpzwz~~\81~w~pw\85\88\85~~zpppmmpmffcifffimppttpppfc_X\_cfifff\UKGDA=:6600363633330000,,,,)),,36:AADKNU\c_cc_\\c\\\\\XUc_\UXKNKKNKNRNRXXRXURXXX__cffimmpttwzz\81ifffiiifiimmmiiimc_\\\XURRNNNKKGG=::====AAAADDDDGGGGKKKKNNNNNRRRRUUUUXXXX\\\\___c_\\_UXNNNNNGGA,0),%,)%),0336=DGKRUUX\X\X\_cfmf_fwzwzzzXUURUUURRRRRNGGGGDGGAAAA==630003306::=AAAADKNRRRRUXXXX\\\\85\81z\85\85\85\85\88\88\88\88\85\85\88\85\81\81\81\85\85\88\88\8b\8f\8f\92\8f\8b\8b\8b\8b\8b\8b\8b\8f\8f\92\8f\92\96\99\99\99\99\99\9c\99  ££§ªª§­­­ª­ª§£\9c££ \9c\9c\99\99\96\8f\8f\8f\88\8b\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8f\8f\8f\96\96\96\96\9c\9c    ££§­ª±±´±±´±±§  £ \9c\9c\99\99\9c\99\99\9c\9c\96\96\92\96\96\92\96\96\99\96\96\96\99\9c \9c£  \99\96\8b\88\85\81\81z~w\81\88\88\8b\8f\8b\8b\8f\8f\8b\88\8b\88\88\85\81\85\88\85\88\81\88\85\88\85\85\8b\85\85\85\81\85\85\81z~\81~~zwzz\81\81\81~~~wttpttwwzwwwwzwtmtzzz\85\8b\8f\8f\8f\88\88\88\81\81\81\81\81\81\88\88\9c´¸¾»»»»¸´¸¸±­§­ª§§££  \9c §§£­´¸¸´´¸±±­­§£§§§£§ª­­±­±ª§ \99\96\92\92\96\99\96\9c\9c  ª­±´´»´­­ªª§§ \9c\9c\9c\96\96\8f\92\92\92\8f\8f\8b\92\96\92\92\8f\92\96\96\99\99\9c§£££§££££\9c\9c\9c\9c\99\99\99\99\99\99\99\92\8f\85\8f\88\8f\92\92\8f\96\92\8f\96\8f\8f\88\88\88\85\81\81\81~~\81~\81\85\88\88\8f\92\8b\8b\88\8b\8f\8f\8b\8b\8f\8b\92\8f\8f\8f\8b\8f\8f\92\92\88\8f\8b\92\8f\92\92\92\96\96\96\92\92\92\92\8b\8f\88\8f\88\8f\8b\88\8b\88\8b\8b\88\85\88\85\85\85\85~wwwppppimwtwzz~witmp~\85\81zwtfiffimicccfccfiimptpppmc__\_ccfffffXUNDD==6:60,336633330000,,,,)),03:=ADGK_f_fcc___X_\\\X_UR_\\XXNNNKRKNRRUXXNUXRX\\\_cffimmpttwzz\81ffffiiiiiimimmiim__\\XXXUURNNKKGGA::====AAAADDDDGGGGKKKKNNNNNRRRRUUUUXXXX\\\____cc__\XXRRKNNKDA),))%)%"%),003:ADKRRXXX\\\\\fcpicft~z~zwcXUURRRRUUUUKDDDDDGD====663000,003::=ADDDGKNNRRRRUXUUU\__\81~~\81\81\85\85\88\88\88\8b\85\88\88\85\85\81\81\85\85\88\85\8b\8b\8b\8f\8b\8b\88\88\88\88\8b\8b\8b\8f\92\92\92\99\9c\9c\9c\9c\9c  £ §§§ªªª­­ª­ªª££\9c  \9c\9c\99\99\9c\92\92\8f\8b\8b\8b\8f\8b\8b\8f\8f\8b\8b\8b\8b\8b\8f\8f\92\96\96\96\99\9c\9c   ££§ª­­±±´±±´±­ª     \9c\9c\99\9c\9c\99 \99\96\99\96\99\96\96\96\96\99\99\99\99\99\9c\9c\99 \99\99\96\92\8b\8b\88\85\81zzw~\81\85\88\8b\88\8b\8b\8f\8b\88\8b\88\85\85~\85\85\85\88\81\85\85\85\81\81\88\88\85\85\85\85\81\85~z~zzzwww~~~z~zwtttpttwwtwwwwztpwz~z\81\81\8b\8b\8b\85~~~z~~~w\85\85\99¸»¾¾»¾¾»¸¸¸´±ª­­ªª§§£££££§§±´´¸´´´±­­­§££§£§§­­±­­´­§£\99\99\92\96\99\9c\99  £§­±±¸¸¸±±±ª§§§ \9c\9c\9c\96\96\8f\8f\8f\92\8f\92\8f\96\96\96\96\92\96\99\96\96\96\99££ £§    \9c\9c\99\9c\9c\99\96\96\96\96\96\8f\8b\85\8f\88\8b\92\8f\92\96\96\8f\92\8f\8b\88\85\81zz~~zz~~~\81\88\85\8f\8f\8f\88\88\8f\8b\8b\8f\8f\92\8f\92\92\92\8b\8f\8f\8f\8f\8f\88\8b\8b\8f\8f\92\92\8f\96\99\96\92\96\92\92\8b\8f\8b\8b\8b\8b\8f\88\8b\88\8b\8b\88\88\88\85\85\85\81~tzttpppipttttww_fpimz\81mimm_fccccfcccfc_ciifptpmti__c\_cccccccURKADA:::33,606633363000,,,,)),06:=ADGiciccc_\cc\_X_\\\XR__XX\NRNNNNKRUUXUNUXRXXXX_cffimmpttwzz\81ifffiimiiiiipiiim__\\\\XUURRNNKGGA=:====AAAADDDDGGGGKKKKNNNNNRRRRUUUUXXXX\\_\___fcc__\XURNRNNGD,)%)%)"\1f")),,0:==GNNUXX\\XX\ccpmfptz~\81zzi\XRNRRNUXUUKDAAAADA:=:6030,00,0036:ADGGGKNRRRUNURUURU\\c~~~~\81\85\85\85\8b\88\8b\85\88\85\85\81\85~\81\85\85\85\88\88\88\8b\88\88\85\85\88\88\8b\8f\8b\8f\96\92\96\99     ££§ªªªªª§ª­ªª­ªª££ \9c\9c\99\99\96\99\99\92\96\92\8f\8b\8f\8f\8f\8f\92\92\8f\8f\8f\8f\8f\8f\92\92\96\96\96\99\9c  £££§ª­±±±±´´´´´­§££  \9c\9c\9c\9c\9c \9c\9c\9c\99\99\96\96\96\96\99\99\99\9c\9c\99\99\9c\9c\99 \96\92\99\8f\8f\8b\88\85~zzzw~~\85\8b\85\8f\8f\8f\8b\8b\8b\88\81\85~\85\81\81\88\81\85\88\85\81\81\85\88\85\85\81\85\81\81~~zzzwtwtwz~tzwwwpppppttwtwwzzwtzw~~\81\81~\85~\81zzzwzztw\81\81\92¸¾¾¾»»¾¾¸»¸´±­ªªª­§§££§§£ªª±±´¸´±´±­ªª§ £££§ªªª­­ª±±ª§\9c\9c\96\99\99\9c\9c££§ª±´´¸»»´±±ª§£§ \9c\99\99\96\92\92\92\8f\8f\8f\92\92\96\96\96\99\96\99\99\96\8f\96\96    £\9c  \9c\99\9c\99\99\9c\96\92\96\92\92\92\8b\88\85\8b\8b\8b\92\92\92\92\96\92\8f\8f\8b\88\85wwwwtwwzzz~\85\81\8b\8b\8b\88\8b\8b\8b\88\8f\8f\92\92\96\8f\92\8f\8f\8b\8f\8f\8f\8b\8b\8b\8f\8f\8f\92\92\96\96\96\92\96\92\92\8f\92\8b\8f\8b\8f\8b\88\88\88\88\88\85\88\88\85\88\85~~wwwtpmpfpppipicccff_mzicif\\______ccfc_fiiftppipfc\_\________RNGAA=:=6030303633366000,,,,))036:=AGKififcc__cc__UcXXXXR_\\\XNRKKKNKRRUXRNRURUUXX_cffimmpttwzz\81ffffiiiiiiiimmiimc_\\\\XUURRNNKGGDA=====AAAADDDDGGGGKKKKNNNNNRRRRUUUU\XXX\\\\___cffcc\\XURRRRDA0%%)"%\1f\e\1f%)),3:==DKNRUUXXUU\__mpitw~~~z~\88pXUNRRNX\URGDA===::6:63,0,,,003336=AGGKKNRUUUURRRRUUX\\_~~\81\81\81\85\88\85\88\88\88\85\85\85\85\81\85~\81\81\81\81\85\85\85\85\85\85\81\85\88\88\88\8f\8f\92\96\92\96\99   ££§§ª­§­ªªªªª­ªª­ª§£ \9c\99\96\96\92\96\96\92\92\92\8f\8f\8f\92\92\92\96\96\92\92\92\92\92\92\92\92\96\96\96\99\9c \9c   §ª­±±±±¸¸´´±ª§££££ \9c\9c    \9c\9c\99\9c\99\99\99\99\99\9c\9c \9c\99\99\9c\99\99\9c\92\96\96\8f\8f\88\88\85~z~zz~~\81\88\85\8b\8f\8b\88\8b\8b\8b\85\85~\81~\81\85\81\85\85\85~\85\88\85\81\81\85\85~~~~wzwzpttptztwtttpppmmpttwwwz~zwzz\81~~~~\81~zpttmtwtwzt\8f´»¾¾¾¾¾¾»¸´´´±ª­ªª££££ªª§§­±´´´±­±­ªªª££ p§§§§­ª­­±­ª§ \9c\99\99\9c\9c §£§­±´¸¸»»¸´±§£ £ \9c\99\9c\99\96\96\92\92\92\8f\96\96\96\96\96\99\99\99\96\92\8f\96\8f\9c    \99  \9c\99\99\99\99\99\96\92\92\92\8b\8f\88\85\85\88\8b\8b\92\8f\92\8f\92\92\8b\8b\8b\88\81wtimfmtwwtt\81~\88\85\88\85\88\88\88\88\8f\8b\8f\92\96\92\92\8f\8f\88\8b\8b\8b\8b\8b\88\8f\8f\8b\8f\92\92\92\96\8f\92\92\8f\8f\8f\8f\8f\8b\8b\8b\85\85\85\85\88\85\88\85\85\88\81~~zwwttmmimmm__fc___c\fmf_c\XX\\\___ccffcfiifpmpffc__\X\_\\XUUXNKDDD==:6,330,0633336033,,0,),036:=DGmiiiiff_c_cc_X_U\UUU\\\\XRRNNNNNRNUURNRRRUUXXccffimmptwwzz\81ffffiiiiiiiimmmmmf_\\\XXUURRRNNKGDA=====AAAADDDDDGGGKKKKNNNNNRRRRUUUUXXXX\\\\___ffifcX\\URNUNGA,%"%\1f"\1f\e\e"%%)06::ADKNRRUXUUXX\immpt~~\81~~\85tmXRRRRX\XRGD=:66:6663,,,,,030633:AAGKNNRUUUUUURRUUUX\_czz~\81\81\85\88\88\88\88\88\85\88\88\88\85\81\81\81\81z~\81\81\81\81\81\81\81\85\85\88\8b\8b\8f\92\96\92\96\99£ ££§§§­±ª­­­ªª§ªª§­ª££ \9c\99\99\99\96\96\92\92\92\96\92\92\92\96\92\92\96\99\96\96\96\92\96\96\96\92\96\99\96\99\99 \9c£ £§­­­±´´´¸±´­ªª§£     £  £\9c \99\9c\99\9c\99\9c\9c   \9c\99\9c\99\99\9c\99\96\96\92\8f\92\8b\8b\88\81~~wz~~~\85\85\88\8f\8b\8b\8f\8f\8b\81\81\81\81\81\85\85~\85\81\85\81\85\85\81\85\85\85\81\81\81~~zwwwpttptwptttttpmmmpttwwww~~z~~\81~z~z~zwptmmptpw~p\81p¸»¾¾»»»»¸´´´±­ª§ª§§£§ªªªª­­±±±­ª­ªª§§ ££p§§§§­ª­ª­­§££ \9c\9c   £§ª­´±¸¸»»¸¸´§§   \9c\99\9c\99\99\96\96\8f\8f\8f\92\96\96\96\96\96\99\96\96\92\92\92\92\9c\9c\9c\9c \99\9c \99\96\96\96\96\96\92\92\8f\8f\8b\85\88\81\88\88\8b\8b\96\8b\92\8f\8f\8f\8f\8f\88\85~wmff_ffmcc_pti\81\81\81\85\81\85\85\8f\8f\8f\96\96\8f\96\8f\8f\85\88\8f\8b\8b\8b\88\8f\8f\88\8b\8f\8f\92\96\8b\8f\96\92\8b\8f\8b\8b\88\88\88\88\81\85\81\85\81\85\85\81\88~~~zwtttmmfiii_\c_\\\UXc_X\XXUXXX\\ccccffffiifmimfc_\\UUX\UNGNRUGGAAA::63)3000,633366363,0,,,,036=ADNifiificc_\_c_\_X_UUU\X\XXRNNNNNNRNRRRRRRRUU\X_cfiimpptwwzz\81ffffiiiiiiiipmmmpcc_\\\XXUURRNNKKAA:==A==AAAADDDDGGGGKKKNNNNNRRRRUUUUXXXX\\\\___ccfcc\XXXUNURD=)""""\e\e\18\18\1f""%,)66=DGGNNRUXUXUXcimfpz\81~\81\81\88wiXUURRU\\RGA=66666300,0,,0363666:ADGKNRRUUXUURRRUUUX\_cww~~\81\85\85\88\88\88\88\88\85\88\88\85\81~~\81zz~~~~~~\81\85\85\85\8b\8f\8f\92\96\96\99\99  ££§£ªª±ª­­ªª­ªªª§­­§£ \9c\9c\99\99\99\96\96\92\96\96\96\96\96\96\96\96\96\99\96\96\99\96\99\99\96\96\96\99\96\99\99    £§ªª­­±´¸´´±­ªª§£££   £     \9c\9c\99\99\99\9c     \99\9c\99\9c\9c\99\96\96\92\8f\8f\8b\8b\88\81~~zz\81\81~\88\85\85\8b\8b\8b\8f\8f\88\81\81\81\81\85\85\88\81\81\85\81~\85\81\85\81\81\81~\81\81~\81zwwttpppptmtttpwpmppppttwwzz~z~~~~w~zzwwppmpptttzpzt¸¸»»¸»»¸¸¸´´­­ª§ª£§££§­­ªª­­­­ª§££§£§£§£tª§ª§­­ª­±ª£§  \9c  ££§ªª­±´¸´»»»¸±£§£\9c\9c\9c\99\9c\99\99\99\96\8f\8f\8f\8f\96\96\96\96\96\96\99\96\96\96\92\92\99\99\99\9c\9c\99\9c\9c\96\96\92\92\92\96\8f\8f\8f\8f\8b\85\85\81\85\88\88\88\96\8b\8f\8f\8f\8f\92\8b\85\81~wicc\cc__\_cifmt~~Xzp\8bp\8f\92\92\8f\92\8b\8b\88\8b\8b\88\8b\8f\88\8b\8b\88\85\8f\8b\92\92\8b\8b\92\8f\81\8bz\88\85\81\85\85\81\81z\81~\81\85~\85z~~zwtttmmfiif\__\XXXRU\XUUUURUUUX\ccfciifimfcmfic_\XXRKNGRDADKR==3==6033%0,,006333336:300,,,,03:=AGRmiiicifc__c___\X_UUUXUXUUNRNNNRNRKNNURRUUUU\\_ciimmpttwwzz\81fffiiiiiiiiimmmmpcc__\\XXUUURRNKKDA:==A=AAAAAADDDDGGGGKKKKNNNRRRRUUUUXXXX\\\\c__f_c_c\\X\XRXNAA)""\1f\1f\18\e\14\18\e\1f\e"%%03:ADDGGGRXUUUUX\i\iw\85_\85\85\8btf\X\XRRX\RK=:66663000,00,36::==:=ADGKKRUUUXUURRRXUUX\\_ww~~\81\85\85\88\8b\88\8b\85\88\88\85\85\81zz~zz~~z~zz~\81\85\88\8b\8b\8f\92\96\96\96\99  £ §£§­­­ª­­ª­­­­ª­­ª£ \9c\99\99\96\96\96\96\96\99\99\99\99\99\99\99\99\99\99\99\96\96\96\96\99\92\99\96\99\99\99\9c     §§ª­­±´»´±±ªª§£§££££       \9c\99\96\96\99\9c     \9c\9c\9c\9c\99\9c\96\96\92\8f\8b\8b\8b\85\81~\81~z~~\81\85\81\85\88\88\8b\8b\8f\8b\88\85\85\85\85\88\88\85\85\88\81~\85~\85\81\81\81~\81\81~\81~zwtpmmpmpipppptmpmmmpttttzz~z\81zzzzzztwtpmppppptzpwp¸´¸»¸»»»¸¸±±ª­ªªª£§£ £ªª§§ª§ªª \9c  ££§§§£§ª§ªª­­ª­­ª£££ \9c  §§ªª­­±±´¸¸»¸´­ £ \9c\99\99\99\9c\99\9c\96\96\8f\92\8f\92\96\92\96\96\99\99\9c\96\96\96\92\96\96\99\99\99\99\99\99\9c\99\92\8f\92\92\96\8b\8f\8f\8f\88\88\81\85\88\88\88\8b\96\8f\8f\92\92\92\8f\8b\85\81~tmf_\c\__X\\_ccpciX_pwp\8b\8f\8f\92\8f\8f\8b\88\8f\88\88\8b\8b\8b\8b\8b\88\88\8b\88\8f\8f\8f\88\8f\8b\81\81z\81tz\85\81\81wz~z\85\81z\81z~~zwtwtmmific__\XUUUNNXURGKRKRRR\_cfffiifiif_i\c_\XURNDKDGA=ADD3:,:03))0",)),,633333666300,,,36:=ANipimffff_c\c_\_X\\UUXURUURNNNNNNNNKNNURRUUUX___fimpmpttwwzz\81ffffiiiiiimipmmmpffc_\\XXUUURRNKKA=:A=====AAAADDDDGGGGKKKKKNNNRRRUUUUXXXX\\\\___c__\__\\\XUUR:=)%"\1f\e\14\18\11\18\18\18\e\1f\1f\1f,06==ADDGNXXURRRX\XXc\81\\88\88\8fpc_\_\UUU\UK=:363330,,,00,6:==DAAADGGKKNRRUXXXURUXUXUXX_twz~~\81\88\88\8b\88\8b\88\88\88\88\88~wzzwwzz~~z~~~\85\85\88\88\8b\96\96\96\99\99\9c£££§£§ªªª§ª­ª­­­­­­ª§££\9c\99\99\96\96\96\99\96\99\96\99\9c\9c\9c\9c\9c\99\99\99\99\99\99\99\9c\96\96\99\99\99\9c\9c £  ££§ª­­±´¸±­±ª§§£§£§§£  £ £ \9c\9c\99\96\99\99\9c    \9c\9c\99\99\99\96\99\92\92\92\8f\88\8b\88\88\81~\81\81~~\81\85\81~\81\85\85\88\88\8f\8f\8b\88\88\88\85\88\85\85\88\88\81\81\81\81\85\81~\85\81\81\81\81\85\81zwtpmpmimfpmpppppmmpppptpwz~z~zzwwwwtwwmmmmpppwwttm¸¸¸¸¸»¾»¸¸±±ªªª§§££ \9c\99§\92£\9c§££\8b\9c\9c\9c\9c£§§ª§§§§ªªª±­­­ªª§§£\9c\9c £§§§­­­±­±´¸¸´±ª\9c \9c\99\96\96\96\99\99\99\96\92\8f\92\8f\96\92\92\96\96\99\99\99\96\92\96\92\99\96\99\96\99\99\99\96\99\99\92\92\8f\92\92\8f\8f\8f\8b\85\88\81\88\85\88\88\8b\96\8f\8f\92\92\96\8f\8b\81~~wmc_\c\\_U\X\_Xc_c\_pmt\8b\92\8f\92\8f\8f\8b\85\8b\8b\8b\8b\8b\8b\88\8b\8b\8b\8b\88\8f\8b\8b\85\8b\88~ww~tz\81z~wwzw\81~~\81z~~zwttpppmffc_\\URNRKGNKKGGKKKRR\_ffffmifffc_\\_\XRRGG:AAD=::=A"%),),"%,\18%))))633333366300,0036:=GRmmfifffc_fXccX\UX\UUURRRUNNRNNNNKNNRNRRUUXX\\__fimpmpttwwzz\81ffffiiiiiiiipmmmpffcc_\\XXUURRRNK=====A===AAAAADDDDGGGGKKKKNNNNRRRUUUXXXX\\\\____\\X\__XXUURN=:,%""\1f\18\18\11\14\11\14\18\18\e\e),3::==AGKU\RRRRUUUX\fX\85\85c__c_c_UXRXRGA:333300,,,0006AAGGDDGGKKKNNNRXXXXXURUUUUUU\ptwz~\81\88\88\8b\88\88\88\88\85\88\88zzzwwwzzzzwzz~\81\81\85\85\8b\92\99\96\99\9c\9c £££££§§ªª­­§ª±±­±­ª§§£\99\9c\9c\99\96\92\96\99\9c\99\99\99    \9c\9c\9c\99\9c\99\9c\9c\99\99\99\9c\99   ££ ££§ª­­±´´±­­ªª§§££§§£ £ £££ \9c\96\92\99\99\9c£ \9c \99\99\96\96\99\92\96\8f\92\8f\8f\8b\8b\88\88\81\81\81\81~\81\85\81~z~~\81\88\85\8f\92\8f\8b\8f\8b\8b\88\85\85\88\88\85\81~\85\81\81\81\81\85\81\81\81\81~~zppipiiicmippmpppmpppptpt~~zzzwtwwttwtiippmppttttp´¸¸¸»»»»¸´±´ª§ª£££ \9c\96\8f\8f\8b\8f\8b\99\92\8f\8f\96\99\9c  §£§ªªª§ªªª­­­ª­§§§§    §ª§ª­­­±±±´´´­ \9c \9c\96\96\96\96\99\99\96\96\92\92\92\8f\92\96\96\96\96\96\99\99\96\92\92\92\96\96\96\92\99\96\99\92\96\96\8f\92\8b\92\8f\92\8b\8f\8f\85\88\85\88\88\88\8b\8f\96\92\8f\92\96\96\8f\88\85\81~zpc_\cX\_UX\X\X__XX\mcp\8b\96\8f\92\8f\8f\8f\81\8b\8b\8b\8f\8b\8b\8b\8b\8f\88\8b\88\8f\88\88\85\88\85~wttpw~zzzzww~~\81\81~~zztttpppmfcc_\\RGKKGGKKDGDKGKNRX_ccffiififf_\\UXURNDG6:03636::\1f"\ 3)%%\1f")\14")%%%633336633033,0036:DNUpmfmiifc\f\__\XXXXUURUURRNRNNNKNNKNNNURRU\\\\c_iimtmpttwwzz\81ffffiiiiiiiimmmmpffcc_\\XXUURRRNN=========AAAAAADDDDGGGGKKKKNNNNRRRRUUUXX\\\\___\X\UU\\XXURRK:60""\1f\e\14\14\11\11\14\14\14\14\18\18\18)%30::ADKRpRNRNRRRXU_UXp\\\_\_cXXRUND=63330,,),0000:GNKKGGKKNNNURRUXXXXXURUXXXRUXiptwz\81\85\85\88\8b\8b\88\88\88\85\88zzzzwzwzzwwwwz~~z\81\88\8f\96\99\96\9c £§§£§§§§§ªª­§­­­±±±­ª§£\9c \9c\99\96\96\99\99\99\9c  £ª£ ££ \9c \99\9c\9c\99\99\99\9c\9c   £§££§§ªª­±´´±ªª§§£§£§£§££ £§ £ \99\96\96\99\9c  \9c\9c\9c\99\96\96\92\96\92\92\8f\8f\8f\8f\88\8f\8b\88\85\81\85\81\81\81\85\85zwwwz\85\85\92\92\92\99\92\99\92\88\88\88\85\85\88\85\81\81\81\81\81\85\81~\81~\81zzzttmpiffcimpmipppppptmpmwzzwz~wpttttwpmmmmmppttwwp´´¸¸»»¸»¸´±±ªª§§  \9c\96\92\88\8b\85\8b\88\8f\8f\8f\8b\92\96\99  ££§ªªªªªª­­ª­ª­ª§£§ \9c £§ªª­±­±±±±±´±§£\9c\9c\9c\99\99\96\96\96\99\99\96\8f\92\92\92\92\96\96\96\96\96\99\96\92\92\92\92\92\99\92\96\99\96\96\96\92\96\8f\8f\8b\8f\8f\92\8f\8f\8f\85\8b\85\85\88\88\8b\8f\96\92\92\96\92\96\8f\88\88\81~zmcc_c\\_XXXUXX\_XX\i_f\88\92\8f\8f\8f\8f\8f\88\8f\8f\8b\8f\8f\88\8f\8b\8b\8b\8b\8b\8b\81\85\81\81~~wppmtwwwzzwwz~\81~~zz~wwppmmic\_\XXNGKKDGGKGDAGGKNRU\__cfffcfcc_XXUURRNA600,%),066\e\e\11\e"\e\14\1f)\11\1f)%%)633633303,0603036:NRmtpfiiii_\i__c_X\\XUXURRRNRRRNNNKNKNRRUURU_X\\fcimpwppttwzz~\81fffiimimiiimmmmmpffcc___\XUURRRNNA:=======AAAAAADDDDDDGGGGKKKKNNNRRRRUUUUX\\\___UUXUU\XUURNN=660\1f"\e\18\11\11\ e\ e\11\14\11\11\14\14\18""",33=AGNmNKRNNNRURXNRRUUU\X\_UUNNKA:66330,,,00033=KRNNKKNNRRUXUUX\\\\\UUUXXUUUXiiptw\81\81\81\88\88\8b\88\8b\8b\88\88zz~~wzwzwttwwwttz~\85\8b\92\96\96\99££§§§ªª§§ªª§ª§­­±±±­­­§ \9c\9c\99\96\96\92\96\99\9c\9c££§­§ªª§§£  \9c\9c\9c\9c\9c   ££§§§§ª§§ªª±±±±ªª§££§££§§ £££§££\9c\99\96\99\99\99  \9c\9c\99\99\96\92\8f\92\92\92\8b\8b\8f\8f\8b\8b\88\88\88\81\85\81\85\85\81\81zttww\81\85\92\96\96\9c\96\9c\96\8f\8f\88\88\88\88\85\81\81\85\85\85\81\81~~~~~~wtpppicfciimmmmppppppmtitwzzwzwtttppttpippmttwwzzz´´¸¸¸»»»¸±±±­ª££ \9c\99\92\8f\88\85\85\88\85\8b\8b\8f\8f\8f\96\99\9c\9c££ªª§ª§ªª­­­­ªª­ª§§£ ££ª§ª­­±´±±±­±±§£ \9c\99\99\99\96\96\96\96\96\96\92\8f\8f\8f\92\92\96\96\92\96\96\92\92\92\8f\8f\92\99\96\96\99\96\96\96\8f\92\8f\8f\88\8f\8f\92\8f\8b\92\8b\8f\88\88\8b\8b\8f\8f\99\96\96\96\8f\96\8f\8b\8b\81zwpffcc\__X\XXXXR_XXXi\_\88\8f\92\8f\8f\8f\8b\8b\92\92\8f\8f\8f\8b\8f\8b\88\8b\8f\88\88\81\81~~zztmpiitwmwwttz~~z~zzzwttpimfc_\XUURKGKADGKGDADGKNRU\_\_cff_ccc\UUUUUNN=,0)%""%,00\18\14 \11\e\18 \18%\a\e)"%)63333330300333366GRUpptiiiff_\fc_c\X\XXU\URNRRRNRNKKNNNKRUURRU\XX\ifmptwppttwzz~\81ffffiiiiiiiimmmmpffcc___\\XUURRNND::======AAAAAADDDDDDGGGGGKKKKNNNNRRRUUUXXXX\\_RUURRXURRNG:6330\1f"\18\14\ e\ e\ e\ e\11\11\11\11\11\11\14\18\1f%)))0=DKNKKNKNKNRNNKNRRNRUUXRRRKDA=::3330,,,00336ANURRNNRRUUX\XX\__\\\XXXUUUUUUffipw~~~\85\88\8b\8b\8f\8f\8b\8b~z~~wzzwtpwtttwwz\81\88\8b\8f\96\96\96£§ªªª§ª§§ªª§ª§­ª­­­­­ª£\9c\99\9c\96\99\96\92\96\9c  §§ª±ª­­ªª§££        ££§§§§§§§ª­­­­­ªª§££§££££  ££££§ \9c\99\9c\99\99\9c \9c\9c\99\99\96\8f\8f\8f\92\92\8f\8f\8f\8b\8b\8b\88\88\8b\85\85\81\85\81\85~wpttz~\88\8f\99\99 \99 \99\96\92\8f\8f\8b\88\88\85\85\85\85\81\81~\81z~~\81~zwttmiffcimmmmmppppptppipwzzwwwtttmptppmttpwwzz~~~±´´¸¸»»»´±±­­§  \9c\99\96\8b\85\88\81\85\85\85\88\8f\8f\8f\8f\96\99 \9c££ªª§­§­­­±­­­­­ªªª£ ££§£§ª­±´±±±­±­ª  \9c\99\96\96\96\92\92\92\96\96\8f\8f\92\8f\96\96\96\96\92\96\96\92\8f\92\8f\8f\92\99\99\96\96\99\96\96\8f\92\8f\8b\8b\8f\8f\92\8f\8f\92\92\92\8b\8b\8f\8f\8f\8f\99\96\96\99\8f\92\8f\8b\88\81zztiiff___X\\\U\R_X\UfX_\88\8b\92\8b\92\8f\8b\8f\92\92\8f\8f\8f\8b\8f\88\88\88\8b\85\88\81\81~zwwtimiimtitwttzz~zzzwwwptmiifc_U\URRGGK=DGGGGDDKKNRUX\X__cc_cc_XUURUUNK:),%""%""",\14\ 3  \14\0 \14"\9c\18%"")633660003,03:6066wUXtmpiffiic_cc_c\UX\\RXURRRNRRNRNNNNRKRXXRRUXf\\fimmpwppttwzz~\81ffffiimiiimimmmmpffcc___\\XXUURNND=:======AAAAAADDDDDDGGGGGKKKKNNNNNNRRRUUXXX\\\URKNNUKDNA36300,\e"\14\14\11
+\ e
+\ e\11\11\ e\11\ e\11\18\e""%))6AGKGGKKKKKNNNGGNNKNRNNNNGD=6=:=3330,,,0336:DNRRURRUUXX\\\\_____\\XXRUXUUUcciptzz\81\81\85\88\8b\8f\8f\8b\8f\85~\81~zzzttttppwwz~\85\85\8f\8f\96\99\99£§­ªª§§£ª§§ªªªª­±­±±­§ \99\96\99\96\96\92\96\99 ££ªª­­­±±­­ªª§§§     ££§ªªªªª§§ªª­­ªª§§ª££££££ £ £ ££££ \99\9c\9c\99\9c \9c\99\99\99\92\8f\8f\8f\8f\8f\8b\8b\8b\88\8b\8b\88\88\88\85\88\85\88\81\85zwtttzz\88\8b\96\99\9c\9c£\9c\99\9c\92\92\8f\8b\85\88\88\85\85\85\81~\85~\81~\81~~zttmfcfffmmmmppppptpppmtwzzwzwttpmpppmptttzzzz\81\85\8f­´¸´¸¸»»¸´±±­£\9c\96\99\92\8f\88\85\85\85\85\81\81\85\8f\8b\8f\92\96\9c \9c £§§ª­£ªª­­±±±±ªªª§£  ££ §§ª­´­±´±±ª§  \9c\99\96\96\96\92\96\96\99\99\92\92\8f\8b\96\96\99\96\92\96\92\92\8f\92\8f\8f\96\99\99\96\92\99\96\96\92\96\92\8f\8f\8f\8f\92\92\92\92\96\92\8b\8f\92\92\8f\92\9c\99\99\96\92\92\8f\8f\8b\85~wwmiifcc_\\\\R\U_X\RcX\\88\8b\8f\8b\8f\8f\8b\8f\92\8f\8f\8b\8b\88\8b\85\85\85\88\81\85\81~zwpppciffmpfptttwwzzwzttwtpim_fccX\XNNDGK=GGGKKGGKKNRRU\U\\__\__\XXURRRKG6,,%""%"\1f\1f\1f\ e   \ 3  \11\1f\9c\14\18\1f\1f)633663003000D306GzXwtpmfcfmifcc___XR\X\RURUURRRRNNRNNNRKRX\RR_Xi__cmmmtwtpttwzz~\81iiifiiiiiiimmmmmpffcc___\\XXXURNNAA::======AAAAADDDDDDGGGGGKNNNNKNNNN_RRUUUUUXX\XRNKKAGA==03,0,)\18"\18\14\11\ e
+
+\11\ e\11\ e\ e\11\14\18\e\1f\e"%"):AGD:GGGGGKKNDGKKGKGKGKGD:63==:3030,0,033:=GNRRXUUXX\\____c_c___\X\UUUURU_cfmpww\81~\81\85\8b\8b\8f\8b\8f\88\81\85~zzwwppptpwz~\81\88\88\8b\92\96\99\9c £ª­ª§§£ª§£ª§§ª­­­­­­££\99\96\96\96\92\96\99\9c §§ªª­±±´´±±­­§ªª§§£££§§ªª­­ªª§£ªªªª§§§§§£§§£§£   £££ £££\9c\9c\9c\99\9c \9c\9c\9c\99\92\8f\92\8f\8b\8b\8b\8b\88\8b\8b\8b\85\8b\88\88\88\88\88\85\81zwtwwzz\88\8b\92\96\9c   \9c \96\96\92\8f\88\85\88\85\85\81\81~\81z\85\81\81\81\81zttmfffiimmppppttttppppwtwzz~wtttpppppmttwz~~\81\81\88\92ª´´´¸»»»´´±±ª\9c\99\92\96\8f\8b\88\85\85\85\85~\81\88\8f\8b\92\92\96\9c\9c\9c £££§ª ªªª­´´±­ª­§£   £  ££§ª±ª­´±±ª§£  \99\96\99\99\92\99\99\99\99\96\92\8f\8f\96\96\96\96\8f\92\8f\92\8f\92\8f\8f\99\99\99\99\96\99\96\92\96\96\8f\92\8b\8f\92\96\8f\92\96\99\8f\8f\8f\92\96\92\96 \9c\99\99\92\92\8f\92\8b\85\81tzmimfcf___\_\XX_X_N_U\\88\8f\8b\8f\8f\8f\8f\92\92\8b\8b\88\88\85\88z\81\81z~\81~zwwppm_ccfimfmpttttwwtwtptpmci_ccc\\XRRGGKGDKKNNKKKKNRRU\UXX\\X\\XUURUUNG=3,)"\1f"""\e\e\e    \0  \a\e\9c\11\11\e\e)633:3630330,K33GRz\wttpfcfiifff\__\UX\\UUUURRRRRNNNRNNRKUUXRRc\i\cippmtwttttwzz~\81iiiiiiiiiimimmmmpffcc___\\XXXUURN=D=:======AAAAAADDDDDGGGGGKKRNRKNNNNfNRURUUUXXX\UK:A=D::3)00,0)"%\e\18\11\11\ e\ e\11\11\ e
+\ e\ e\14\14\18\18\1f"""%,,)066DDDDGGKADDGDGDGDDD=600::6003000,033=AKNURXRUX\\_c_cccccc_\\XXXUUURR_cciptw~\81\81~\88\88\8f\8f\8f\8b\85\85~~wzwpttttzz\81\85\8b\8b\92\96\99\99 ££§ªª£§§§§§ª££§ª­­­­ª§ \9c\99\99\96\92\96\99  §ª­ª­­±´´±´±±­­­ªª§§§§ª­­±­ªª§§§§ªªª£§§§ §§££§ \9c £ ££§££  \9c\9c\9c£  \9c\9c\92\92\92\8f\8f\8b\8b\8b\8b\8b\8b\88\88\88\88\85\88\88\88\88~~zwtzz~\85\8f\92\92\99\9c\9c   \99\99\92\92\88\88\88\85\85\81\85\81\81~\81\85~\85~~wtifcfiimptttpttttttppwptzw~ztwtpttppptwt~\81\81\88\88\8b\96§±´´¸¸¸¸´´±±§\9c\96\96\92\8f\88\88\85\85\81\81\81\85\85\8b\88\92\92\99\9c \9c£   \99§\9c§§ª­±±´±­­ª£££ £    ££­­ª±±±§£ ££\9c\9c\9c\99\92\9c\9c\9c\9c\96\96\92\92\96\99\92\92\8f\8f\92\8f\92\92\8f\92\96\99\99\99\99\96\92\92\92\96\92\92\8b\92\92\96\8f\96\96\99\92\92\92\96\96\96\99 \9c\9c\9c\96\8f\8f\92\8b\88\81izifiifi____c_\\_\_N_X\\88\8f\8b\8f\8b\8fw\92\8f\88\88z\81zpwwzz~~~zwtpmi_fccffffmppppwtptpmpmicf___c\\URRKGKKDUNRNNNRNRRRUXURUXUUXXXXURRRKD:0,%"""\1f\1f\e\e\18       \ 3\18\9c\a\9c\18\1f)633:3600333,N3=R_w\wwpmffffffcf_c_XXU\_UXRRRRRRRNRNRNNNNXXURRf_f\fmppmttptttwzz~\81iiiiiiiiiimmmmmmpiifc___\\X\XUURR=A==AA==AAAAAAAADDDDDGGGGKKNUNUKNRNNiNRURUXR\UX_U::::=60,,),,,,%%\1f\18\18\14\14\ e\ e\ e
+\ e\ e\11\14\11\18\14\e"%"%%%",30:A==DDG=ADDDAAGAAA:3336660003000366ADKKRRURUX\_cccffcfcc_\\XXXUURRR\_\iptwz\81\81\81\85\8b\92\8f\8f\8f\8b\88\85\88\81\88zz~www~\81\85\88\8f\8f\96\99\99\99 §£§§§ §§££§§£§£§­­ª­ª££\99\99\99\96\96\99\99 ££ªªª­ª­±±´´´´±±±­­ªªªª­­­­­ª­§£§§§§§££§££§££§££  £\9c £££££ \9c\9c\9c£ \9c \9c\96\96\96\92\8f\8f\8b\8b\8f\8b\88\85\88\85\85\81\88\88\88\85\81\81~wwzz~\85\8b\92\92\99\9c\9c\9c  \99\96\92\92\88\8b\8b\85\85\81\85\81\85\81\81\85\81\81~~ztpicfifptttwtwtpwtptpwpwwz~~~zwptwtmtww\81\81\88\85\8b\8b\8b\92£­´´¸¸»¸¸±­­§ \96\96\92\8f\8b\88\85\85~\81\81\81\85\8b\8b\96\96\99  \9c£\9c\99\9c\99£\9c§§ª­±­±­±­­  £  \9c \9c ££ªª­±­±ª§£§£  \9c\9c\96\9c \9c\9c\99\96\96\96\96\96\92\92\92\8b\92\8f\92\8f\92\96\96\99\99\99\9c\96\96\96\92\99\96\92\92\92\92\92\8f\99\99\9c\96\96\96\99\99\99\9c\9c\9c \9c\99\96\92\92\8f\85\85izfffiiiccc_cc_cc\_N_X_\88\92\8b\92\8b\92w\92\8b\85zwmfmpwwzztzwtpmif_ccccfccmfmpmtpmmmifmfc_\Xc_X_UURNKNNKXRURRRURRRRUURRRUUUXXUUUNNN:6,),%""%\1f\e\e\18\14       \0\11\9c\9c\9c\14")633:3630363:R0Ncwz_wtpifffiiccccf_\XX__X\RRUURRRNRRRRRNRX\RR\fcXciptpmtptttwwzz~\81iiiiiiiimmmmpmmmpiiffc__\\XXXUURR=====AAAAAAAAAADADDDDDGGGNNRRRRKNNRRmNUUUXXUXUU\U::3663,)),),),))""\e\e\18\11\11\14\ e\11\11\11\11\14\18\14\e%"\1f""""),,3=66=A:==AAA6=DA=6:360663300330336:ADGKNRUUUX\_cfcfffiff__\XXURRRNN___imtwz\81\81\81\85\88\8f\8f\92\92\8f\8b\8b\8b\88\8b\8b\88\8b\81\81\81\81\85\88\8f\92\92\99\96\9c\9c ££££££££ §£§£§§§­ª­­§§£\9c\9c\99\99\99\99\9c £§§§§ªªª­±±´±¸´´´±±­ª­­±±±±­­­§§§£§£££ £ §££§£§££   ££ ££££     \9c \9c\99\96\96\96\92\8f\8b\8b\8f\88\88\85\85\85\85\85\85\85\88\81\81\81~wzzz\81\81\88\8f\92\96\9c\9c\99 \9c\96\99\92\96\8b\8f\8b\88\85\81\88\85\88\85\85\85\81~zzwttmiimmttwwzwtwtttttpwtwwz~\81\81\8b\88ztw~ztw~\85\88\8b\85\8f\8f\8f\96 ª±±»¸¸¸´±ª­££\99\96\92\8b\8b\88\81\85\81\85\85\81\88\8f\8f\96\96\9c£   \9c\96\99\99 \9c££­­±±±±±ªª\9c\9c \9c  \9c\9c £§ªª­­±­­ª§§  £ \9c\99  \9c\9c\9c\96\99\99\96\92\92\92\92\8f\8f\92\92\92\92\96\99\9c\9c\99\99\99\99\99\92\9c\96\96\96\96\96\96\92\96\99\9c\99\99\99\9c\9c\9c \9c  \99\96\99\8f\92\8f\88\85fzUicmmifffcffcfcX_K_X_\88\8f\8b\96\8f\96t\8f\8bzwmiiimttzwwwtpmmic___ccc_cifimipmfmiffmf__\Nc\U\UURRGRRN\UXUUUXUURUURRRNURRUXUUUNN363,))%"\1f""\18\e\14\14        
+\9c\9c\9c\11")633:6:303:3AU6X~z~zztmfcffii__cfi\_X\_\X_UUURRRRNNNRRURUX\UR_c_Xfi_ppmtpwttwwzz~\81iiiiiiiimmmmmmmmpiiffc__\\XXXUURR==AAAAAAAAAADDDDDDDDDDDGGNRUNUNKNNNRiNRURUUUXUUXR=63360,%%,"),,))%%%\1f\e\ e\14\18\11\11\ e\14\ e\11\18\e\e""\1f\1f\1f""))),0366::::===3:A=6:633366333333336:=AAGGNRRRUX\\cffffiiifc_XU\URRRKK\__mmwzz~~\81\85\88\8b\8b\96\8f\92\8f\8f\8f\8b\8f\8f\8f\8f\8b\8b\85\88\88\8b\92\92\92\99\99\9c\99\9c££     £££§£££§ª­ª­­ªª£  \9c\9c\99\99\9c ££§§£§ªª­±±´´¸´´´´±±­­­±±±±­­±ª§§££ £   £§££££§££ \9c    §£££    \9c  \9c\99\96\99\96\96\92\8f\8f\8f\8b\88\88\85\81\81\81\85\85\85\81\85\81\81z~z~~~\88\8b\8f\92\99\99\96\9c\99\96\96\96\92\8f\8f\8b\88\88\85\88\88\85\88\88\88\81\81~~zwwpppptwtzwzwwwwtwwttttww~~\85\85\8f\8b\8b~\8f\85~~\8b\85\88\8b\8f\8b\8f\92\92\99\99£­±¸¸¸¸´´­±§§\9c\99\96\8f\88\85\81\81\85\85\85\85\8b\92\92\99\99\9c££\9c\9c\99\92\96\99\9c\9c£ ª­­±±±­§§\99\99 \99  \9c \9c££ª§ª­±ªªªª££££\9c\9c\9c \9c\9c\9c\9c\96\99\99\96\96\92\92\8f\8f\8f\92\92\92\8f\92\99\9c\9c\99\99\9c\9c\9c\96\9c\96\99\99\96\99\99\96\96\99\9c\9c\9c\9c \9c\99£ £ \9c\99\9c\8f\92\92\88\88i~UmfpmiiimfiicifXcK_\\\85\8b\8b\96\92\96\92\8b\8bwtfiiiippwtttpmiifc_\_cc_cffffimiifiiific\\\NKXX\UUURKURR\XXUUX\XXRUXRRRNRRRUUUURRK330,%%"\1f\1f\1f\1f\e\18\11\14         \9c\9c\9c\a")63666:303=:G\81~~zzzzztmccfiffX\ffi__\_\_\_UXURRRRNNNNURRXXXXR\_\Xim_pmptpwwwwzzz~\81iiiiiiiimmmmmmmmpiiffcc_\\XXXUURR=A==A=AAAAAAADDDDDDDGDGGGKUXRUKNKNNNfNURRRRRUUURN:66330)"")%%),),)))%"\e\18\e\18\14\14\14\11\14\e\1f\1f\1f""\1f\e\1f"%%%),036::66:::06=:66666666363366666==AAGGKNRRUXX\_cccfffffc\XUXURNRKKX_fptw~~\81\81\81\81\85\88\8b\96\8f\92\92\92\92\8f\92\92\92\92\8f\8f\8f\8f\8b\8f\96\92\96\96\9c \9c\9c£  \9c\9c \99££££££££ªª­­±ªª§££  \9c\99\9c£££§£ §§ªª­±´´´´´´±±±±±±±´±´±­­§§§§ £££ £ £ £ £§§£  \9c £ ££££       \9c\99\99\99\96\96\92\8f\92\8f\8f\88\88\81\81\81~\81\85\85\81\85\85~~~z~z\81\85\8b\8b\92\96\99\96\9c\99\99\96\96\8f\8f\92\8b\8b\88\81\88\8b\88\8b\88\88\81\85\81zzwtttttwzwz~~zzwwwwwtwwwwz~\81\88\88\92\8f\92\96\96\92\92\8f\8f\88\8b\8f\8f\8f\8f\92\96\9c\99£§±´¸»¸±±­­ªª \9c\96\8f\85\85\85\85\85\81\81\8b\8b\96\99\9c\9c §£\9c\99\9c\92\96\99\99\9c  ªªª­­­ª££\9c\99\9c\9c\9c   \9c££§§­­­ª§ª§£££ \9c\9c  \9c\99\9c\99\96\99\96\96\96\92\92\8b\8b\8f\92\96\96\8f\96\9c\9c\9c\9c\9c\9c\99\9c\99 \99\9c\9c\99\9c\9c\99\99\9c\9c\9c     £££ \99\9c \8f\92\96\8b\8bi\81UpitmmfipimmimifcKc\\\88\8f\8f\92\96\96\8f\8b\88pf_fff_mctppmiififc_\__c__f_c_fmcccfffcf_X_XNc\XXXXURNRNU_\\XX\XX\RUURRNNRRRRURUNNK603)%%"\e\1f\1f\e\e\14\ e\11         \9c\9c\9c\9c%)6333:=606A=K~~\81~zzzzpiffiffi\Xiiic\X\\\_cXURRRURNNNNRNNXXU\U\\X\ii_mmtwptzwwwzz~\81iiiiiiiimmmpmmmmpiiffcc__\\XXUURR=D====AAAAAAAADDDDDDDGGGKGUXUXNRKKKKcNRRRRRUUUUN:666300,%")))),),,,)))%\e\1f\e\18\18\18\18\e\1f""\1f"""\1f"\1f""),,03::6:6663,03336336::666:6:6::=A=AADGKKUURUUX\__cfffcc_XUUURRNRKKXcitwzz~\81\81\81\85\85\8b\8b\92\92\8f\92\92\92\92\92\96\96\96\92\92\92\92\8f\92\96\96\96\99\99\9c\9c\9c    \9c \99  ££  §£ª­ª­±­­ª§§££ \9c\9c£  £  ££§§ª±±±±±±´±­±´´±±±´´±­­§ª§££££   \9c£ £ §§§§£  ££\9c£££      \9c\9c\9c\9c\99\99\96\92\96\8f\92\92\8f\88\85\81\81\81~\81\81\85\81\81\85~\81zz~~\81\85\88\8b\8f\96\96\96\99\96\96\92\96\8f\8f\92\8f\8f\8b\85\8b\8b\88\8f\8b\8b\85\81\81~zzwwwwwz~z~\81~~zwwwwwtwwwww~\81\88\8b\8f\92\96\99\99\96\96\92\92\8f\8f\8f\92\92\8f\92\99\9c\9c §­¸´¸¸´´±­­ª£\9c\99\8f\88\8b\8f\88\88\8b\8b\8f\8b\99\9c  £§£ \99\99\96\96\96\99\9c  §ª§ªªª§ \9c\9c\9c\9c\9c  \9c  ££§§­ª­§§§§ £ \9c\9c\9c\9c\9c\99\96\99\96\96\96\92\96\96\92\8f\8f\8b\92\96\96\99\8f\99\9c\9c\9c\9c \9c\9c\9c\9c\9c\99\9c\9c\9c\99\9c\99\9c\9c \99  \9c£££§§£\85\9c\9c\96\92\96\8f\92i\81UtiwppcptimmmpmiiUf\X\88\92\92\92\92\92\8f\8b\85pf\ccc_icmmmicfcff_\__\c_\c___fifccccf_c\U\XR_\U\\XXRNNKU\X_\\X\X\RUURRNNRNRRUURNKG633%%%"\e\e\1f\18\18\11
+\ e         \9c\9c\9c\9c%)6336::606DANzz~\81~~zzmmiffffm_Uifff_\XcXccXXURRRRNNNNRRRUXUXX\X\_if_mmpwptwwwwzz~\81miiiiiiimmmmmmmmpiiffcc__\\XXUURR=A===AAAAAAAAAAADDDDDGGGNKU\U\KRKKKK_NNNNRRRUUUK3363030)%)),),),,03,30,%,"\e\1f\1f\1f\1f"""\1f""%"\1f\1f\1f%)),33:6666336,0,03336::=::=====:=AAAADGGGKRRNRUX\___ccc__\URUURNNNKN\fmtzz~~\81\85\81\81\85\8b\8b\8f\8f\8f\92\92\92\96\92\99\96\96\96\92\92\96\92\92\92\99\96\99\99\99\9c\99\9c     \9c      £§ª­ª­±±­ªªª§££   \9c£ \9c\9c££££§­­­­­­±­±´±±±±­´´­±­ª§§££§££ \9c   £ £§£££  £ \9c     \9c   \9c \9c\9c\99\9c\96\96\96\92\96\92\8f\8b\85\85\81\81~\81\81\81~\81\81~~~~~~~\81\88\88\8b\92\92\96\96\96\92\8f\92\8f\8f\8f\8b\92\88\88\8b\8f\8f\8f\8f\8f\88\81\81~zzzzzzz~~~\81\85\81~~zzzwwwtwwzwz\81\85\88\8b\8f\99\9c\9c\99\99\96\96\92\92\92\92\92\92\92\96\9c\9c §­´¸¸´´´±±ªª§\9c\99\92\8f\8f\92\8b\8f\96\8f\96\9c\9c   £§£\9c\9c\9c\99\96\99\99\9c £§ªªªª§£ \9c\9c\99\9c\9c £  \9c£§§ª­ªª§££££   \9c\9c\99\9c\99\96\96\92\96\92\8f\96\92\92\8f\8f\8f\92\96\96\99\96\99   \9c \9c\9c\99  \99\99\9c\9c\9c\9c\9c\9c  \9c £ §§w£§ \85\99\92\99\96\96\8f\96i\81Uwi~wpctwpipppptpizcz\8f\96\96\96\96\96\8f\8b~pc_\___ccccff_fcff_\_\\_____X_cff__X\cc__X\XU\\X\\XXRKRNR_\_\X\\XXUUXNNNNNRRURRNKG=300%%""\1f\e\e\18\14\ e\ 3\ 3         \9c\9c\9c\9c)%6363:=603GDRt~z\81~~zwpmmiifficUfiifcXUfRffUUURRRRNNNNNNRUURX\\\\_ff_ipmtpttwwwzz~\81miiiiiiimmmmmmmmpiiffcc__\\XXUURR=A=A==AAAAAAAAAADDDDDDDGRNRXUXNNKKKNNNNNNNNRRRUD0333363,),),,)030363630000)"""""%"""%%"\1f\1f\1f%),,03:6663003,,,00336::===AAADAAADADDGGGGKNNNRUXX__\____\XURRURNNNNR_imwzzzz\85\81\85\85\81\8b\8f\8b\8f\8f\92\92\92\96\96\99\96\99\99\96\96\92\96\96\96\99\99\99\99\9c\9c\9c       £  £  £§ª­ª±±±±§§ª§£££££   \9c\9c ££§ªªª§§§­­­­´­±­±­±±­­±­ª§§§§££     £  ££££££££ ££   \9c\9c \9c\9c \9c\9c\9c\9c\99\96\99\96\96\96\8b\88\88\85\81~~\81\81~~\81\81\81\81~z~~z~\88\85\88\8f\8f\92\96\96\92\92\92\92\8b\92\8f\8f\8b\8b\8f\8f\92\8f\8b\8b\8b\85\85~~z~~~~~~~~\81\85\85\81\81z~zwwwwtwwww~\81\85\85\8b\96\99\99\9c\99\99\99\96\96\96\96\96\92\96\92\99\9c£§±±¸¸¸¸±±±­ª£ \99\9c\92\96\99\96\99\99\96\99   £ ££   \9c\99\99\9c\9c\9c £ª§ª§ª£ \9c\99\9c\9c\99\9c  \9c\9c £§ªªª§§£      \9c\9c\99\99\99\99\96\92\8f\92\8f\8b\92\92\92\8f\8f\92\92\96\99\99\99\99 £ \9c  \99\9c \9c\99\99\99\9c\9c\9c\99\9c£  \9c  £§w§§£\85\99\8f \9c\96\9c\99p\96Uwm\88\88\85_~ztmmttpw\85m\85\8f\92\92\96\96\92\96\92\8f\88zm______\c_\c_\ffffc\\X\__\c_X\ccf_\X\_c\\X\\U\\UXXUURGURU\\\\X\XXURUXRRNNNNRRRNKGD:0,,))""\1f\1f\18\18\ e\a\0\0         \9c\9c\9c\9c))63366:603GDUt~z~~~zztmpifffifiiimffU_iRfcXXUUURRNNRNNNRUURUXXXX\if_fppwptwwwzzz~\81iiiiiiimmmmmmmmmpiiffcc__\_\XXXRR===A==AAAAAAAAAAAADDDDDDNKNNRURKNNKNNNNNNNNRRRRA33033363033,003636:=:63333,)%%)%)%%%)%""\1f"))00066:660,00,)),003:==A==DDDGDDDGDDGDGGKKNNNRRXX\\X\X\\XURRNRRNNRRRcipzzzw~\81\81\85\85\85\8b\8b\8b\8f\8b\92\92\92\92\96\96\96\96\99\99\96\8f\99\99\99\9c\99\99\9c\9c\99\9c   £   ££  £ £§ª­­±´±±ª§§§§§££££ \9c\9c\9c £ §§§£§§§ª§ªª±­±­±±±±­­±­ªªªª§§§££\9c \9c \9c ££ £ ££ £§££     \9c\9c \9c\9c \9c\99\99\99\99\96\96\8f\8b\88\85\81~~~\81~~~\81\81\81z~~~~~\85\85\88\8b\8f\92\96\92\92\92\96\8f\8f\92\92\92\8f\8f\92\92\96\8b\8f\8f\8f\88\88~~zz~~~z~~~\81\85\88\85\85~~~zwtttwwwtz\81\81\85\8b\92\99\9c\9c\99\99\9c\99\99\99\99\99\96\96\92\99\9c£§±­¸»¸¸´´±±­££\99 \9c\9c \9c££\9c£££££  £  \9c\9c\99\99\9c\9c  §ªªªª§£\9c\99\9c\99\9c\9c\9c £ £££ª­ªª§£ \9c \9c\9c \9c\99\9c\96\96\99\96\96\8f\8f\92\8b\8f\92\92\92\92\92\92\92\99\99\99\9c\9c ££   \99   \99\96\99\99\99\9c\96\9c  \9c ££ £w§££\8b\96\92£ £  \9c\99Xwm\92\8f\8b\85\81~wppttt~\88\8f\88\92\96\96\99\96\96\92\92\8f\8bzi_c___\\c_\c__cfcfc_\\X_c_c_\_ccc\\X_\cXXXXXUXXUUXURRGRNR\X\\XXUURRXXURRNRNNRNKD=A60),))%\1f\e\e\e\18
+\a\0\ 3         \9c\9c\9c\9c),6363::603KGmtzzzzzwwtppmiffifimimifUcfUf_\\XXURRNNNNNRRUUUUUXXX\fc_fmttttwwwzzz~\81iiiiiiiimpmpmmpmpmiifcc__\\\XXURR=A==AA=AAAAAAAAAAADDDDDGKGGGNKNGKKKKNNNNNNNRRRR6633366:63660D3::6=:A=:6:36000,0))%)),)""\1f",)00366:::0,,3))),,066:==A=DDGKGGGGGGDDDGGGKKNNNUUXXXXXUXURNRNRRRRUUUfptzzzzz\81\81\85\85\85\88\8b\8b\8f\8b\8f\8f\92\8f\92\96\92\96\96\96\99\92\99\99\99\9c\99\9c\9c\9c\96\9c   ££ £££ £§££ªª±­±´´±ª§ª§§£ £  \9c\9c\9c\99 ££££§§£§£§§§ª­­­ª­­±±­­±­ªª­ª§ª§§£ \9c\9c\9c\99 £  £££§££§££\9c   \9c\99\9c  \9c \9c\9c\99\9c\99\99\96\92\88\88\88\85\81~z~z~~\81~\81z~zz~\81\88\88\8b\8b\8b\92\96\96\92\92\92\92\8f\8f\92\92\8f\8b\96\96\96\8f\92\8f\8b\8b\88\81~z~~z~~~~~\81\81\85\85\85\81\81\81~zwttwwwwz~~\81\8b\8f\96 \9c\9c\9c \9c\9c\9c\9c\9c\99\92\96\99\9c£§±­´»»¸¸´±±­§£ £ §ª£§§§§§§§§£££ £\9c\9c\9c\9c\9c   §ªª­ª£ \9c\99 \9c\9c\9c\9c ££§§£ªª§§££\9c\9c \9c\9c \9c\9c\9c\96\99\96\96\96\8f\92\92\8f\92\92\8f\92\92\96\96\92\99\99\9c  £££  \9c\9c\9c\9c\9c\99\96\99\99\99\9c\96 \9c    £  z££££\96 §£§££ \9cX\96\96\96\92\8f\88\85\81wttwtw\81\8b\92\8b\96\99\96\99\96\96\96\92\92\8b~mc___\X\_\\f_c_fffc_X_X\cc___c_c___\\__\\UUURNURUURRNKRKNX\XXUUUUUUXXXRRNNNNRKGA:=3,,,)%"\1f\1f\18\1f\e
+\a\ 3\a         \9c\9c\9c\9c%,63636:306KGmtzwzzzttppppifficiifmfcRfU\i__XUXXRRNNNNNRRUURUUXXX\c__fmwwtwwwzzzz~\81mmiiiiiimmmtpmmmpmiifcc__\\\XUURR=AA=AA=AAAAAAAAAAAAADDGGDGDDDGKGGKKKKKKKKNNRRRR6333333::6::AGAA=:ADDA=A=::=6303,,))%,)%%""),033666:60))0)))))03:::===DADGGKKGKGDDDDGDKKKNNRXUUUXXUURRRNNRRRUXUXptwzz~zz\81\81\85\85\85\88\8b\8b\8b\8b\8f\8f\8f\8f\92\92\92\96\96\96\96\96\99\9c\99\9c\99\99\99\9c\99\9c  £££ £§§£§£§§ª­­±´´´­­ªª§££  £\9c \9c\99\9c   ££§£ £££§§ª­ª­ª­­±­ª­­­­ªªª§ª££   \9c\9c\9c ££\9c ££££§§§£     \99\9c\9c\9c\9c\9c\99\9c\99\99\96\96\96\92\8b\85\88\85~\81~\81~~~\81\81~~~~~\81\85\88\88\8b\88\8b\92\92\99\92\92\8f\92\8f\8f\8f\8f\8f\8f\96\96\92\92\96\92\8b\8f\8b\85\81~\81zw~~\81~~\85\81\81\88\81\81\85\81~zwtwwttwzzw~\8b\8b\92 \9c       \9c\9c\96\99\9c £§±­±¸»¸¸´±±­ª££§§ª­§ªªªªªªªª§§§££  \9c\9c\9c£ £ªªªª§§\9c\9c\96  \9c \9c  £ªª§§§£§  \9c\9c\9c\99\9c\9c\99\99\99\99\99\96\92\96\8f\92\92\8f\92\92\8b\92\92\96\96\96\99\9c\9c£\9c    \9c\9c\9c\99\9c\9c\96\99\99\96\99\9c\99£\9c£\9c£\9c£ \9cz££ £\9c£§§ª£§£  \99\99\99\96\92\8b\85\81zttwwz\85\8f\92\8f\96\99\99\99\96\92\96\92\8f\8b~pf_c_\XX_X\f_cccff__X__\cc\_\__c___\\\\XXRNRNNRNUUNRNKNKD\\\XUUXUUUXXURURRRNRKD=666)0,))%"\e\e\e\18\11
+\ e\a      \0  \9c\9c\9c\0%)63366603:NKww~twwwppmpppfffifmicic_RfUff_\URUXURRNNNRNUUXUUUX\\\fc_ipwzwtzz~~zz~\81piiimiimmmptpmmmpmiiffcc_\\\XUURR====A=A=DAAAAAAAAAAAADDDDDDDDGGGKKGGKKKKKKNNNNR6633336::::=DKDK=ADGGDGDAD=A:63600,)00)%%%%))033663630%%,%%%%,0666:=:=AAADGKKKKGGDDDDDGGKNRRUUUXXXUUURRNRURUX\UXtwwz~zz~\81~\81\85\81\88\88\8b\8b\8b\8f\8b\8b\8f\8f\92\92\96\96\96\99\99\96\99\9c\9c\99\99\96\99\9c\99 £§§§§§ªª§ª§ªªª±±´¸¸´±±­ª§§§££   \9c\9c  £ £££   ££§§ªª­­ª­­­ªª­­­ªªªª§ª££  \9c\99\9c\99    \9c ££§£§§§ £  £\9c\9c\9c\9c\9c\9c\9c\9c\99\96\96\96\96\92\8f\88\85\81\81~\81\81\81\81~\81\81\81~z~\81\81\88\85\85\88\88\8b\8f\92\96\92\96\92\8f\8f\92\8f\8b\8b\8f\92\92\8f\92\92\92\8f\8f\8b\88\85\81\81zzzz~~~\81\81\81\88~\85\85\81~~zwwwttwwtwz\8b\8b\96 \99   £££   \99\99\9c ª§±±´¸¸»¸¸´´±ª§§ªª­±ª­­­­­­­­ª§ª§£    \9c£ §ª§ª§§£\9c\9c\99  \9c \9c£££ª§ª§ª£§£ \9c \9c\96\9c\9c\99\9c\99\99\96\96\92\96\8f\8f\96\92\8f\92\8f\92\92\96\92\99\99\9c\9c£     \99\9c\99\96\99\9c\96\96\99\99\99\9c\9c  £  \9c  \99\9c £ £ §§§­§§££\9c\9c\99\99\92\92\88\85\81~ttttz\88\92\92\92\92\99\96\96\96\8f\92\8f\8b\88~ticc_\\X_X_c_fcccfc_\_c__c__X\___\_\\XXXURKRNNRNRRKNNGKNNXX\XUXXRUUX\UUXURRNNGD::36,,,)%""\1f\e\e\e\14\ e\11\14  \ 3\0 \ 3\ 3  \9c\9c\9c\ 3%)6333630:=NNztzptttppimmmicfifmi_f_\RfRifcXRUXXRRNNNNNRUXXUUUX\\\c__iptzztz~~~zz~\81tiiimiiimmptpmpmpmiiffcc_\\XXUUUR=A=AAA==A=AAAAAAAAAAAAADDGDDGGGGGKGGGGGGGKNNNNN:636666====AGKGNNKRRRNNKAGDDGK=3633663,)))),,033663330%%%""%),0666:A::=AADGKNKKGGDDDDDGGGNNRRUUXXXXUXRUNRUUUX\XXwtwz~~~~~~\81\85\81\85\88\8b\8b\8b\8f\8b\8b\8b\8f\8f\92\92\92\96\96\96\99\99\9c\9c\99\99\99\99\9c\9c  ª§§ªª­­ªªª­­­±´±¸´´±­ªªª§§£  \9c\9c \9c £££££§£££ £§§§ª­ªªªª­ªªª­­§ª§§£§£ £\9c\99\96\9c\9c  \9c\9c   £§§§§§ £ ££\9c   \9c\9c \99\96\96\96\96\99\96\8f\8b\88\85\81\81\85\85\81\81\81\81\81\81~~~~\81\85\85\81\85\88\8f\92\8f\92\92\92\8f\8b\8f\92\8f\8f\8b\8b\8f\8f\92\92\96\92\92\8f\8f\8b\85\85\88\81~~~~~~\85\81\85\85\81\85\85\85~~~wzwptwwtwz\8b\8b\92\9c\99 \9c ££££££££ §­­´´´»»»¸¸´¸±­ªªª­­±­±±±i­­±­­ªª§§£££££££§§ªªª£ \9c\9c\9c\9c\9c\9c\9c\9c£§£§ªª§ª£££\9c\9c\9c\9c\99\9c\9c\99\9c\9c\99\96\99\92\96\92\8f\96\8f\92\92\92\96\92\92\92\9c\9c\9c    \9c\9c\9c\9c\99\99\92\99\99\96\99\99\99\9c\99\99\9c £t  \9c \9c  §£§£§ªªªª§§§ \9c\99\96\92\92\8b\85~zwtttz\85\8f\92\8f\8f\96\92\92\92\8b\8f\8f\88\85\81wmfc_\X\_\__ccffffc__cfc_ccc\\__\\\X\U\UNRKRKNRNNNKNKKKNRXUXUUUUNRUX\UXXURRKKDA66330,,,)%\1f\1f\18\18\1f\18\14\14\18 \0\ e\ 3\ 3\a\a  \9c\9c\9c\a%)6333306=ARtzwzptpttmimmiicfmfim_c\\RiRfifRUUXXRRNRNNRUXXXUUUX\\__ccfppzwwz~zzzz~\81pmmipimimmppmmmmpmiiffc__\\\XUURR=D=AAAA====AAAAAAAAADDADGDGDDDGGGGGGKGGGGKKKKKN:666:::==AADKKKRRNUUURUUNUKKRRRDK6:::6:,,,),,03363300,)%%\1f%"),,36:=A=:=AAAGGKKKGGDDDDADGGKNRRUUXXXXXXUXRRUXXX\\\zwwz~~\81z~~~\81\81\85\88\8b\8b\8b\8b\8b\88\88\8f\8f\92\8f\8f\92\96\96\96\96\99\9c\99\9c\99\9c\9c\99  §§ª­­ª±ª­­­±±±´´¸´´±ªªª§££§      ££££§££   \9c £§§ªª§ªªªªªªª­­£§££ ££ £\9c\9c\99\99\99\9c    £££§§ªª§£££££   \9c\99\99\9c\99\99\96\96\96\96\92\8f\8f\88\88\85\85\88\88\88\81\85\81\81~~~~~~\81\85\81\88\88\8b\8f\8f\96\8f\92\92\8f\8b\92\8f\8b\8b\88\8f\8b\8f\92\92\8f\8f\8f\8f\8f\88\8f\8b\85\81\81\81\81\81\81\88\88\88\85\85\85\85\85\81\81~zzztwzzwzz\8b\8b\92\9c\9c£\9c£ £§§§£§§­ª±±¸¸´»»»¸¸¸¸­­­ªªªª­±´´±f±±±±±­­ª§§£££§§£ª§ª§§£ \9c \9c\9c \9c\9c  ££ªªªªª£§£  \9c\9c\99\9c \99\9c\9c\99\96\99\96\96\92\8f\92\8b\92\92\92\96\92\8f\96\9c      \9c\9c\99\9c\99\99\96\99\99\96\9c\99\99\9c\99\96\99  t  \9c£ ££§£££§ª­§ªª§§ \9c\99\96\92\92\8b\85\81zwttw~\88\8f\92\8b\8f\96\8f\8f\8f\85\88\8b\85\81\81zpfcc\XX__c\ffcffff___ffcfcc_\__\XXXXR\RKRKRKNNKNKKRNGNRU\XXRRRRKNRU\UUXRNNGG:=:366,00,)%"\1f\e\e\1f\e\18\14\e \ e\11\a\a
+\ 3  \9c\9c\9c\ 3%%6333:0:AAUwzwwmppptpmpicifiiffm__XXRfUfmcRURXURRNRRRRUUUXRUXX\\ccccfttztzwzwzzz~\81pppipipmmpmmmpmmpmiiffc__\\XXUURR=D==A=A=====AAAAAAAADDAGGDDDDDGDDDDDKGGGGKKKKKK:66:===AADDGKKNNRRXXXUXXXXUNUXURUXG==D=30,,003666330,,,""""\1f%,066==A::==AADGGKKDGDDDAAGKGKKNNUUXXXX\XXXURU\X\\__zzzz~z~~~zz~~\81\85\88\8b\88\88\8b\85\85\8b\8b\8f\8b\8f\8f\92\96\96\96\99\99\96\9c\96\9c\99\96  £§ª­­­±­ª±­±±±±¸´´´±ªªª§§££££ ££££ ££££§££   £§§§§§§§­ªªªª­ª§£\9c  \9c \9c  \99\96\96\99\9c\9c \9c£££§§§ªªª§§§£§   \9c\9c\9c \99\9c\96\96\92\96\92\92\92\8b\88\88\88\8b\8b\8b\85\88\81\81~zzzz~~\81\85\88\88\8f\8b\8f\92\92\92\92\92\8f\8f\8f\8b\8b\88\8b\8b\8b\8f\8f\8f\8f\8f\8f\92\8b\92\8f\88\88\85\85\85\88\85\8b\8b\88\88\85\88\81\85\85\81\81~~zwzz~z~~\8b\8f\8f\99\99 \9c£££ªª§§ªª±±´´»»¸»»¾»¸¸´±±±ª­ª­±´¸´´´´´´±±ª­ªªª§§§ªª§ª§ªª§££     \9c \9c £ ªªª§ª£§£\9c  \9c\99\9c\9c\9c\9c\99\99\96\96\96\92\92\8f\8f\88\8f\8f\8f\99\92\8b\96\99 \9c\9c  £  \99\99\96\99\99\99\99\96\99\99\9c\9c\99\96\96\9c  £ \9c   £££ §§ª­ª­§§§ \99\96\96\96\92\8b\85\81zzwtw~\88\8b\8f\8f\8b\96\8b\8b\88p\81~\81~~zmffc_X\__fffiffffccccffffcc__\\\XXXURXNNRKNKNKGKKNNRKRNU\\XNNNKGKNRXRRX\ 3NDA=:6666603,))%\1f\e\1f\1f"\1f\e\e\e \11\11
+
+
+\0  \9c\9c\9c\0%%6333=0=AA_t~wwmmmptmppicfimff_i_\X\R\XcURRRRXRRRRRNRRUURURUXX\_c_ccipwztzwwwzzz~\81mpmmpmppmpmpppmmpmiiffc__\\XXUUUR=A==============AAAAAADKDDDDDDKDDDDDKDDGGKKKKKK:6::=A=AAADGGGKRRUXXXX\\\\\XX\XX\\XNRRU63006:6:::63,0,)%%%"\1f%,033:==66:=ADDGGGKDDDAAAAGKGKNNNRUUXXX\\XXUUXXX\___zzzzzzzz~zz~~\85\88\8b\8b\85\88\88\81\85\88\8b\8b\8b\8b\8f\92\92\96\96\96\99\96\99\96\99\96\92\9c\9c §§­­±±­ª±­±´±±¸´¸´­§§§££   £\9c ££  §£££§£ £££§§§§§ªªªªªª­ª­§§\9c\9c\9c\9c \9c\9c  \9c\99\99\9c\9c\9c\9c ££§§§ªª­ªªª§§§£  \9c\9c   \9c\99\99\92\96\96\96\92\8b\8b\8b\8b\8f\8f\8f\88\88\85\85~zzzz~~\81\81\88\85\8b\8b\8f\92\92\92\92\8f\8b\8f\8b\88\88\85\8b\88\8f\92\8b\92\8f\8b\8f\92\8f\96\92\92\8b\8f\88\8b\8b\8b\92\92\92\8b\85\88\85\85\88\85\85\81\81\81z~z\81~~\81\8b\8b\92\96\9c\9c ££§ªªªª­­´´¸¸¾¾»¾»¾¾»¸´´±±­­­±±´»¸¸´¸¸¸´±ªª§§ªª§§ªª§ª§§§§££££   \9c\9c\9c\9c £ª§ªª§§§££  \9c\99\99\9c\9c\9c\9c\9c\96\96\96\92\92\8f\8b\88\92\92\92\9c\96\92\96\96  \9c     \9c\99\99\99\9c\9c\9c\99\99\9c\9c\9c\9c\99\92  \9c  \99  £££§£ªª­ªª­§££\9c\96\96\96\96\92\8f\85\81zzwwz~\8b\8f\8b\8b\8b\92\88\88zm\ztzzwmfffc\_cciiiifiifffcffffcfc\_\\XUUXRNXRRRNRKNKKNKKNRGNKRXXUKGDAADGNNRNU\0N
+A::6663330,%)"\e\1f""%\1f\e\1f\1f \14\ e
+\a\ e   \9c\9c\9c\9c%)6U36GA=DGip~twpiimtimmifcmpii\UcUX\RU\RURRUUURRRNNRRRURNRRUUX\_c_cfmptzwwzwwzzz~\81ptimpmppmmptpmmmpmiifcc__\\XUUURR=A==AAAA==========A==AAKGGDDDDGDDDDDGDDGGGGGGGK6666===DADDDGGKURRXX\X\____\\_\\__\XUXXR:63G=:D==:6000))))""%,,006::33:=ADGGGKKGDAAADDGKKNNNRRUUXX\\X\XXXXXX\__czzzzzz~z~z~~~\88\8b\88\8b\88\88\88\85\81\85\88\8b\88\8f\8f\8f\92\96\96\92\99\96\9c\96\99\96\92\99\9c\9c£ª­­±±±­±­­±±´´´´±±ªªª££\9c ££ £ £££§££££££§££§££§ªªªªªª­ªª­ª§\9c\99\9c\9c\9c\9c\9c£\9c\9c\96\9c\99\9c\9c ££§§ªª­­±­ªªª§§§     ££\9c\9c\9c\99\99\96\92\92\8f\8b\8f\8f\8f\8f\8f\8b\8b\88\85\81zzzzz~~\81\88\88\88\8b\8f\92\92\8f\8f\8b\88\8b\88\85\85\81\88\88\8b\8f\8b\8f\8f\8f\8b\8f\92\99\96\96\8f\96\92\96\9c \96\99\9c\96\88\92\92\8b\88\88\88\88\85\85\81~~\81~z\88\8f\8f\96\96\9c\9c\9c£ ªª§­ª±±´¸»»Â¾¾¾¾¾¾¾»¸´´±­­±±±¸»¸»»¸»¸´±ªª§§ªªª§§ª§ªª§£§§£§£\9c£ \9c\99\9c\99 £§£ªª§§ª§§£  \9c\99\9c\9c\9c\9c\9c\96\96\96\96\92\8f\8b\8f\92\99\96\9c\99\96\92\96£ \9c  £  \9c\99\9c\99\9c\9c\9c\9c\9c\9c\9c\99 \96\92 \9c\9c\96 ££§§§§§ªªª§ª§£\92\99\99\92\96\96\92\8b\85\81~zzz~\81\88\8b\88\88\88\8fzzmi\piwwtpfifc\0_ffmmmmimififffifcccc_\\\XXUURKURRRKNKNNKRKNNRKKGNUURADDA==DKNNKR\ 3KDD::333330,0%%"\e\1f%\1f""\1f"\e \ 3
+\ e\a
+   \9c\9c\9c\9c%%6_33RK:GKmtzttmfcipimiffcimif_UfUUXURXUURRRRRNRNNNRRRURRRRUUX\\__ciippzzzzzwzzz~\81mtiipimppimtpmmmpmiifcc__\\XUURRN=A===================DAGKDADAADDDDDDKDDGGGGGGGG::33=AADAADGDDKRRNUX\X\\__c__\__c__\X\\XXURUNKKAAA:63,,,0,%%),,)0363006==DGGGKKKGDADGGKKKKKNRRXXX\\\\\XXX\\XX__f~~zzz~z~~~\85\85\81\8b\8f\92\8b\8b\8b\88\85\81\88\88\8b\8b\8b\8f\8f\92\92\96\96\9c\96\9c\99\99\96\92\99\9c\9c §ª­­±±­­±­±´±´¸´´­ª§§   ££ £££§££§§§£§££§££§§§§§ªªªª­ª­ªªª£\9c\9c\9c \9c\9c\99 \99\9c\99\99\99\9c ££ §§ª­­­±­­­ªªªª§£ £££§ £\9c\9c\9c\96\92\96\8f\8b\8b\8f\92\92\92\8f\92\8f\88\85~~~zw\81\81\85\85\88\8b\8b\8b\8f\8f\8f\8b\88\88\88\85\88\81~\85\85\88\8f\88\8b\8b\8b\88\8f\8f\96\92\99\92\99\96\99 §£\9c§£\8b\9c\99\8f\8b\8b\8b\8b\8b\88\85\81~\85~~\8b\92\92\99\96  \9c§ §ªª­­±´¸»»»¾Â¾¾¾¾»»¸´´­­±±´¸»¸¾¾»»¸´­ª§§§ªªª§§ªªªªª§ª§£§£ £\9c\9c\9c\9c\99 £§£§ªªªªªª£ \9c\9c\99\9c\99\99\9c\9c\96\96\92\92\8f\92\8f\96\96\9c\99\9c\9c\99\92\9c£  £ ££  \99\9c\9c\9c\99 \9c\9c\9c\9c\9c \99\96 \9c\9ct\9c\92 £ §§£ªªªªª£§£ \96\96\96\92\92\92\92\8b\88\81~z~~\81\81\8b\88\88\81\85\81wmifXXipmppficf\0cfimppmmpmimiiiifcf___\\XUUUUUNURRUNRNRNNRNRRNKKGDGRK==AA=ADGKKGNNKDA=:360603,,%""\1f""\1f%%"\1f\e \0\a
+\ 3\0   \9c\9c\0\9c%%6c:6UNAKtppwppifcmmfiffccfifccUfUUXURUUUURNRRNNNNNNNNRRRRRUUX\\_ccfiptzwzzwwzzz~\81ipiimiimpiipmmmmpmiifcc__\\XXURRN==AA================AD=DGAADAAADAADDKDDGGGGGGGG::66:A=A=AADDDGNNKUX\XX\\_________c\\__\\XUXRNNGDDA::000330)),)),),00,3::DGGGGKKGDDGKGKKKKKNRRX\\\__\_XXX\\XX__fzzzzzz~~~\81\88\88\8f\92\92\96\92\8b\8b\8b\88\88\88\8b\8b\8b\8f\8f\8f\92\8f\99\96\99\99\99\9c\96\92\96\99\9c\9c £­±±­­±±­±´´±´´´´­ª§£ ££    £§§£§§£§§§§£ª§£§§§ªªªªªª­ªªªªª \9c \9c   \9c \99\9c\9c\9c\9c\9c £££§§­­±­­±±­­­­­ª§££§§ª§§ £ \9c\96\99\96\92\8f\92\92\96\92\92\96\92\8b\88~\81\81z~\81\81\85\88\85\88\8b\8b\8b\8b\8b\88\85\85\85\81\85~~\85\81\85\8b\85\88\88\8b\85\8b\8b\81\8f\96\96\9c\99\9c£­ª§±§§£ \92\8b\92\8f\92\8f\88\88\85\85\8b~\81\92\92\99\9c £££ª §­­­­±´¸¾¾»¾Âž¾»¾¸»´±±ª­­¸¸¾¸¾Â¾¾»´±§£££ªªª§ª­§ª§ªªªª§§£   \9c \9c\99  ££§§ªªª§ª££\9c\99\99\99\99\99\9c\99\92\96\92\92\92\92\8b\99\96 \9c\9c\9c\9c\9c £    £££ \9c\9c  \9c \9c    \9c\9c\99£ \9ct\9c\96   §£ §§ª­ª   \9c\96\96\92\92\8f\92\92\88\88\85\81z\88\81\85\85\88\85\85w\81tti_\XUimipmffcf\0ciimppmpppmpmmmmi_c\_\\XURRUURRURUURRKRRKUKNNRKKGAGNG=====ADDGG\14KKGA==666,300)))""\1f\1f\1f""%"\e\1f\0  \a\0    \9c\9c\14\9c%)6fK3XRDUptmtmcfcciicifccffffc_XcURXRRRRXRRNNRRNNNNKNNNRRURUU\\\__ccipwwtzwwwzzz~\81imiiiiimmfimipmmpmiifcc_\\XXUURRNA=========:=======A=DG==D==A===AAAAANDDDDGGGGGG=:::==:A===AADDKKKRUXXUXX__\\\\\\___\___\\X\URRKKGD==333:66,,0,),),00,36:DDGGGKKKGGDGGGNNKNNRUU\\\____\X\\\X\_cf~~wwzz~~\81\85\8b\8b\96\99\99\99\96\8f\92\8b\88\8b\8b\8b\8b\8f\8f\8f\8f\8f\8f\96\96\99\99\99\99\96\96\96\9c\99\9c\9c ª­±±­­±±±´´´´´´´­ª§§£££ \9c\9c\9c §§£ª§§§§ª§§ªª§ªªª­­ªªªª­­ª§§§£\9c   £\9c  \9c\9c\9c\9c   ££§§ª­­­±±±­±­­­­­ª§§ªªªªªª§§£\99 \99\96\96\96\96\99\96\96\99\96\8f\8b\8b\85\85~\81\81\85\85\88\88\88\88\8b\88\85\88\85z\81\85~\81zz\81w\81z\81\85\85\88\85\88\81~\88\92\92\99\96\9c ±¸´´ª­§­ \99\99¾¸\8f\88\8b\8b\8f\92\8fªª§§§§§§ª£§­­±±´¸¸Å¾¾Â¾Åž¾»»»»¸­±§\9cª´´¾»Â¾¾¾¸±­§§££§§ª§ª­ªª§§ª­ªª§§££ \9c\9c\9c\9c££  £§ª§ª§§§ \9c\96\96\99\99\99\99\96\92\96\92\96\96\92\8b\9c\96\9c     ££££\9c £££ \9c\9c\9c\9c  \9c£     \9c  \9cp\9c\99£\9c££  £§ªª§\9c \9c\96\92\92\8f\8f\8b\8f\92\88\8b\88\85~\8b\85\88\81\85\81\81wwptf\\\Ufifmicfcc\0cfimptppppppppimm____XXUUNRRURRURRRRNGNNGRGARUGND=GRGA=====AAGD\14DGD=:::6600,,%%%""\e\1f""\1f%"\1f\1f\ 3  \0     \9c\9c\e\9c%%6iR3\UKXfpcfp_f__f__fcfcffff_c\UXRXUURUURRNNRRRNRNKKRNRNURUU_\\__ccipwwtzwwwzzz~\81iiimiiipmffpipmipmiifcc_\\XUURRRNA=======::::::::::=:AD==A:======A===NAAAADDDDDGA:===:=A::===ADDDGNRUURU\\\XXXX\X_\_\___\_\_XURNNKGAA6:===:6030,,,,0036:=DDDGGGGNKGADDGKKKRNRUU\\_____\X\\\X\_cfzzwwzz~~\85\85\8f\8f\99\9c\9c\9c\99\96\96\92\8f\8f\8f\8f\8f\8b\8f\8f\92\92\92\96\99\96\99\9c\9c\99\99\99\99\9c\9c\9c£§­±­±±±´´´´¸¸¸´´ª§£§§££  \9c  £££ªªªªª­§ª­ªª­­ª­­ª­ª­±ªª§ª§§ ££ £     \9c  \9c ££§§ª­±±´±±­±­±±±±ªªª­­ª­­­ª­§\9c£ \9c\99\99\99\99\99\96\9c\99\92\8f\8f\88\88\81\85\85\85\85\85\85\88\85\88\85\81~twt\81t~ww~t~wz\81\81\85\81\85\85~\81\85\81\96\92\99\9c´»¸»¸´¸´¸¸¸¾Â»¸\8f\8f\99­\99­­­ªªªª§ªª§ª­±±´¸¸»¾Â¾Å¾Â¾»¸»¸¸ª­ \99\8b\88\8b\88¾¾¾¾¾´­ª§§££§ªª§­­ªªªªª­­§ª£ £\9c\9c\9c\9c     ££ª§­§££ \99\92\99\96\96\99\96\8f\92\96\92\92\99\92\92\99\99  ££ ££ §£\9c££££ \9c\9c\9c  \9c      \9c   \9cp\99\9c    \9c  £§ªª\9c\9c\99\96\8f\92\8f\8f\8b\8b\92\8b\8b\88\88\81\8b\88\88\85\81~\81ztmtfXX\Ucccif_fcfAcffimppmppmpppmii\_\\XURRKNRURNURUUNKGNKDRAARRDKDAKRKD======AGD\14DDA=6663300))%%%%"\e\1f\1f\1f""\1f\e\1f\a\0       \9c\ e"\9c))6mUR\UNXfccfp_f\\fc_ccffffff\c_UUR\XUUXRRRNNRNNNNNKNNKRNRRUU\\\__ccipwttwwwwzzz~\81iiimiimpifftipiimmiifcc_\\XUURRNN======::::::::::::=:=A=:==:A=::===A=NA===AAAAADA=AAA=:=:::=A=AAADKNRRNRXXXUUUUXX\X\\\\\\_\\XXURRNKDD==AAA=:33:3003306:=AGDDGGGKKKK==ADGGKRNUUX\\__\__X\\_\X_cfizwwwz~~\81\81\88\8f\92\9c   \9c\99\99\96\92\92\92\92\92\8f\8f\8f\92\92\92\99\99\99\99\9c\9c\9c\99\9c\9c \9c £§ª­±±´´´±±¸´´´´±­§£ª££ \9c\9c\9c\9c££  §ª­­ª­ª­­ª­±±­­­­­­­­ªª§§£§££§££££    \9c\9c £££§§§­±´±±­±±­±±´±­ª­­­­±±±±±±ª§§ \9c\9c\9c\99\99\99\99\99\96\92\92\8b\85\85\85\85\85\81\81\81\85\81\85\81~zwtt~wwpppppmwz~\81~\81\81\81\81\81\81\88\85\96\99±Â»¾»¸»¸»»»Â¾»»»´\9c±­±­­­­­­ª­ªª­­´±¸¸¸¾¾¾Âž¾¾»¸¸»´§ \96\8f\88\85\81\81~ÂÂ\81»¸­ªª§§§ªª­ª­­­ªªªª­­ªª£\9c£\9c\9c\9c\9c  \9c££ £§£ª§  \9c\96\96\99\96\96\99\96\8f\92\96\96\96\9c\96\99\9c\9c£ £§ £§££  ££££  \9c\9c  \9c \9c\9c£ \9c\9c\9c\9c \9cp\96\9c£\9c £\9c\9c ££§§  \99\96\8f\8f\92\8b\8f\8b\92\8b\8b\8b\88\85\8b\88\88\81~w\85ztptcRXXX___fc_f_f\0cfcfippppmppmtmff\\\XURKRKKNRRKURUURKNUGDU==RNGKDDNUNG=A==::AD\aAAA=:66300,,,,)")%"\1f\1f\1f\e""\1f\18\1f
+\ 3       \0\0%\14))6pXU_XR_fcccm_c\\f_ccfcfffff_c_UXR\UXXXURRNNNNNNNNKKKKRNRRUUX\\__ccipwtttwwwwwwz~iimiiimmfiitfmfimmiifcc_\\XUURRNK=====:::::::::::::::6:::=::==::::==:N=========AA==A===A::::=====AGKKGKNURURRRRUUXRXX\X\\\X\UUXRNNGGAAADDDA====:36663:=ADDDDDDDGGGG::=AGGKNNUUX\\_\\\\XX\_\\cfimwzwzz~~\81\85\88\8f\8f\99 £ \9c\9c\9c\99\96\96\92\92\92\92\92\8f\92\92\96\99\9c\9c\9c\9c\9c\9c\9c\9c     §­±±±´´´´´´´´´±­­ª£§££\9c    £ ££§­±±­±­­±­±´´­±­­±±­­§ª£££§££§§§£££   \99   ££§ªª­±´´±±­­±±­´±±­­­±±´´´¸´´±ªª£ \9c£\9c\9c\9c\99\99\99\96\92\8f\85\81\81\81\81\81~~\81~zzwwwppttmimmmmimtw~w~~~~~~\81~\88\92\92¾¾Â»»»¾¾Â¾¾»»¸¸´±´±±­­­±­­­­­­´´¸´»¾Â¾ÂÅž¾¾¾¾¸»¸¸ª£\99\92\8b\85~~zzÂ~\81»¸±­­ªªª§ª­ª­±­­­ª­±­­§§   \9c\99\99    ££§§£ª£  \99\99\96\96\92\96\96\96\92\92\92\92\96\9c\99\9c  £ £§£§£££££££§£ \9c\99\99\9c \9c\9c \9c  \9c\9c \9c \9cp\92\99 \99  \9c\99\9c£££§\9c\9c\99\92\92\92\92\8b\8f\8b\8f\8b\8b\88\88\85\88\85\88~~w\85~wttcRXX\_\_cc_c_c\0GcfDDmmttmpmmppcc\\\RRKKRGKKRNNUURRUKRXNRX=NR=DKDDNXRKAAA=:=AD\a\0\ 3A=:333,%)))))")%\1f\1f"\e\e\1f\1f\e\18\1f\ e\a       \a))\e))6pX\cXUci__ci\c\_ccccfffffffc_cX\R\RUXXXRRNNNNNNNNKKKKNNRRUUX\\__ccipwtwttwwwwwz~iiiiifiiffftfmimmmiiffc_\\XUURRNK====::::::::::66:::66:66:6:=:66::::6NA::=======A=======:===::==:=DGGGGGRNNNNKNRRURUUXX\XXXXUUUUNKGGDDDGGDDAAAA=::::3==AAAADAADDDDD36:=DGKNNUUUX\\\_\XUX\\\_fimtwwz~~~\81\81\88\88\8b\8b\96\9c££ \9c\9c\9c\96\92\96\92\8f\92\8f\8f\92\92\96\99\9c \9c\9c       £££­­±±´´´´´±±´±­­­§§§  \9c\9c \9c\9c ££§ª±±±±±±±´±´¸¸±´±­±±­­£ª§§£§§§ª£§££   \9c\9c  \9c ££§§­±±´±±­±±±­±­±±±­±±´¸¸»¸¸´­­ª§§§  \99\9c\99\99\96\92\8b\81~\81~~~~zzzzztwtpmmpiffcc_cfimiiwzzzzz~\81\85\8b\8f\8f»¾¾Â»»¾¾Â¾»»´¸´±±±±ª±±±­­±±­±´´¸´¾¾Â¾Â»¾»¾»¸»´´ \9c\96\88\85\81~wzzÂ~\81»´±­­­ªª§ªªª­±­­­­±±±ª£§  \9c\9c\96\9c\9c££ £ §§§§   \96\99\92\92\92\96\99\96\96\92\92\92\99\99\9c  £  §££££§££ ££££ \9c\9c\99\9c\9c\9c\9c \9c   \9c   \99\99\8f\99\9c\99  \99\99\9c  §§  \99\96\96\8f\8f\8b\8b\8b\8b\88\8b\8b\88\85\85\85\85tzw\85\81wtt_RX\\_X__c_c\_\0G_cGDiittmmmmpm_c\\XRAGKRGKNRNNUXUUXKU\RUXURN6DKDDKXUGDAA==\ 3\aD\ 3\0
+A=:033,%)%)))"%%\1f""\1f\1f\1f\1f\18\18\e\11\ 3      \0\11,,\1f)):p\_c_Ufi_ccf\fm_fccffffffff__cX_U\URUXXRUNNNNNNNNKKKNKRRRUU\\\_ccciptttttwwwwwz~iiiiifffffftfifimmiifcc_\\XUURNNK====:=:::::::66666666666666:666:6666NA66::::::=A::=A=::==:=:=::3=ADDGGDDKKKKGKNNRNNNUUXUUUURURRRNKDGDDGGDDDDDDA==:=6===AAAA==AAA==0,0:ADKKNRRUXXXX_XXUX\__cfmpwww~~~\81\85\81\88\88\8b\8f\92\99  \9c\9c\99\99\99\96\99\92\92\92\92\8f\96\96\99\99    £ ££££ ££§ª­±±´´´´±­±±±­­ª§£§   \99\9c\99 ££§ª­´±´´´­´´´¸¸´´´±±±±­­§ª§§§§§§ª§§§£     \9c\9c\9c ££§§­±´´±±±±±±­­­±­±±­´´¸»¾»»¸±±­ªªª£ \9c\9c\99\99\92\8f\81\81z~zz~~wwwwwwtpmiiff\X\XX__ccffmmtwzzw~\81\81\8f\8f£¾¾»»Â¾¾¾Â¾¾»¸´¸´­±­­­±±­±´´±´´±¸¸»»Â¾Â¾¾¾¾»»»¸¸´± \99\96\8b\85\81~wzz¾~\85»¸±­­­ª­ª­ªª±­­­­±­±­§££\9c\9c\9c\9c\96\99\99££ ££§££££ \9c\96\99\96\92\92\96\99\96\96\92\96\8f\99\99\99\9c   £§  ££§£§\9c££    \9c\9c\9c \9c\9c \99\9c\9c \9c\9c  \99\9c\92\99\99\99\9c\9c\96\99\99\9c\9c£§ \9c\96\96\96\8b\8f\8b\8b\8b\8b\88\88\88\85\85z\85\81tzw\85\81zwt\XX\_\X_cfc_X_\0G\UGGfftpiimmpi\_XXUNAGGNGGNRRKX\XX\XXXUX\RUN6AGA,KURGGAA==\0\ 3D\a\0:A:63360))%%))%""\1f"\1f\1f\1f\e\e\e\18\18\ e\0      \11\14A0")06t_cfcUci__cf_fi_fccffffffff_\c\cU_XUUXXRXNRNNNNNNKKKNKNRRUUX\__ccciptptttwttwwwziiiiiifffffpffcmimiifcc_\\XUURNNK====::::::66666666663666333636366366K=63666666:=:6:=:==:======:6:==ADDDGGGAGGGKGNKGKRKURURRRRRRRNKGKDDKKGGDDGDDAA==:::=====::=6:33,,,0=GKKNNRUUXXX\XXUU\_cffptzwt~~\81\85\85\85\88\88\88\8f\8f\99\9c \9c\9c\9c\9c\99\99\99\96\96\92\8f\92\96\99\99\9c £ £££§££££§§§ª­­±´´´±´±±´­­±­§££   \9c\9c\9c ££§­±¸±´´¸±´´´¸»¸±´´´±´­ªªª£££§§§ª§§£     \9c\9c  \9c  ££­±±´±±­­­±±­­±­­±±´¸»¾Â¾¾»´±±­­­§£\99\9c\99\96\8f\8b~~wzwzz~twwwttpmifc\cXUURUX\__cfiimpwwzz~\81\8b\8f\99£¾»Â¾¾¾¾¾¾Â¾¾¸´¸±ª±­±±±´ª±´´±±±±´´¸»Â¾Â»»¾»»»»¸´±\9c \96\92\88\85\81~wzz»\81\81»¸±±­±­­ª­­­±±±±­­­­±ª££  \99\9c\99\99\9c £££§§§£§£ £ \96\96\96\96\96\96\96\96\92\96\8f\99\99\96\99\9c   §\9c£§£§££  §£   \99\9c\9c\9c\9c \9c\9c\99\9c\9c\99 \9c\9c\9c\9c\96\99\96\96 \9c\99\99\99\99\99 £ \99\99\99\92\8b\8f\8b\8b\8b\8b\88\85\85\85\85z\81~pzw\85\81zwt\\\___X_cc_\UN\0GXUKK_fRmimmpmfR\UGNKDGDNKKNRURX\\XX\UURUXNRK363))KKNDDA==A=ADDA=A:63363,)%%%%"\1f\1f\1f\1f\1f\e\1f\1f\1f\e\14\18
+       \18\18G:%,36tccffX_fc_cccff_fccifffffff\____X\\URUXRUNNRNNNNNKKKNKNRRUUX\\_cffipppttttttwwwzfifiiffiiiiticciipmifcc_\\XUURNNK====::::::66666666333333333:636:3333G3333333336::36:6=:::::=A:6:6=:=AAADDDADKGGGKKKKNGRNRNRRRNRNRGKKGGGKGGDGGGGDAAA=:6:::::6330600%)),:GKKNNRRUXXX\XUUXX_cffmtwtwz~\81\85\85\85\88\88\88\8b\92\96\9c\9c\9c\9c\9c\99\99\96\99\99\96\92\8f\96\96\9c\9c  £ £££§§§£§£§ªª­­±±´±±±±±±­­­­ª§£\9c \9c \9c   £§ª­´±´´¸´±¸¸¸»¸±´´´´´±­­ª£§£§ª§ª§£  £\9c \9c\9c\9c\9c \9c £§§±±´´±±­­ª±±­ª­­­±´¸¸»Â»¸´´´±ª­ª£\99\99\99\92\8b\81zzwzzwwztwwtttmif_\XUURRURUX\\\cffimwwzz\81\81\88\8f\96\9c»¸Â¾»¾¾¾»»¾¾»¸¸±±´±­±­´­­±´´´­­±´»¸¾¾¾»»»¾»»¸¸±­\9c\9c\92\8f\85\88~~z~w¸~\81¾¸´´±´±±­­­­±´±­±­±­­­§£\9c \9c\99\9c\9c   £ §ª££§£§§§\99\96\99\99\99\99\92\92\92\92\92\99\99\96\96\9c  \9c£ £§£§§ £ §££  \9c\99\99\99\99 \99\9c\96\9c \9c\9c\9c\9c\9c\9c\99\99\96\99\9c\9c\9c\96\96\96\99\99 \9c\96\96\99\92\8b\8f\8b\8b\88\8b\88\85\85\81\81~\81wtzw\85\81zztf__cc_X\__\\UNKGXRNG\cRcUiimiURXRKKDDDDNGKRRXU\__XX\URNRUKNG36)\0\0GGDAA=::=AADAAAA6:6363))"""""""\e\e\1f\18\e\1f\e\18\14\18
+       ,"N=),:6tccfciccf_cccfccifcffffffcc__cc\U\_URUXRRNRRNNNNNKKKNKNRRUUX\\__cimpppttttttwwwziiiffiffifmpffcfipmifcc_\\XUURNNK===A::::::66666663333333603:63360630G3000300003::6666::6=::==6:6:A==AAAADDAGGDGGGGGGGGNKNKNNNNRNNKKKKGKNGKGGGGDDAAA=:6666:6630,0,)"%%)6GKKNRRRRXXXXXUUXX_ccfmpwww~~\81\85\88\85\88\88\8b\8b\92\99\99\9c\9c\9c\9c\99\9c\96\99\9c\96\92\92\96\99\9c\9c£££ £§££§£££ £§ª­±±±±´±±±´´­±­ª§£   \99\9c\99\9c\9c£ ª­±´´´¸¸¸´¸¸»¾´´´´¸¸´´­±­£§£§ª§ª£§\9c £ \9c\9c\99\9c\9c\9c\9c  §ª­´¸¸±±±­­­±­ª­­±±´»¸¾Â¾¸±´¸±­­ª§\9c\99\96\85\88zzwwwwwwzwtwtppiiX\RUURRRRNUUX\\c_fmittwz\81~\85\8b\92\99¸»»¾»¾¾¾»¾¾¾¾»´´´±±±±ª±±±±±´´ªª­´¸¸¾»»¸»»»¸¸¸´ª£\9c\99\8f\8f\85\88\81\81~~w»~~»»¸¸´¸±±±±±±±´±­±­±­ªª££  \99\99\99\99    ££§§§­§ªªª\99\9c\99\99\99\99\92\96\92\92\92\99\99\96\92\99\9c  ££§§§ª§£££§§£ \9c\9c\99\99\99\99\9c\99\9c\99\9c \9c\9c\9c\9c\9c\99\9c\9c\96\99\99\99\99\92\96\99\96\99\9c\99\96\96\96\92\8b\8b\8b\88\85\88\88\81\81\81~z~wtzw\85\85~zpic_cf_\\\_X\UNNKUNKGU_UcUffi_UNRNKDDAGGNKNRRXX\\_XUXRNKGDDGD06"\a
+66033:66:=ADA=AA::6663))%"%"\1f\1f\1f\1f\e\1f\e\1f\e\e\14\14\18\a       3)RA)6=6tfcicmccfcfcffcciifffffcccc_\c_\X\_URRURRNNRNNNNNKKKKKNRRUUU_\cccfppppwtttttwwwzimiiiififfpmficcimiifcc_\\XUURNNK====::::::6666666333333330063303330,D0,3,0,,,,0:63336:66:6::=::::======ADAADDADDDDDDDGGGGKNKNRNNRNNNNKNNKNGKKKGDDAA:633666333,),%)"""%%,GKKRRRUUXXXXXUXX_ccimtwww~~\81\85\85\85\88\88\8b\8f\92\99\99\9c\9c\9c\9c\99\99\99\99\9c\96\96\96\96\9c  £ £\9c ££ ££ £  £ª­±±´±±±´±´±±´ª§§   \9c\9c\99\96\9c\9c£ ª­­¸´´¸»´¸»»»»¸¸´¸¸¸´´±´±ªª£§­§ª££   \9c\9c\99\9c\9c\9c\9c  £§ª­´¸¸´±±­­ª­­ª­­±´¸»»Â¾Â¾»¸­´´±­ª§§\99\99\92\81~zzwtztwtwtptppmif\RRURNNRNRUUX\\ccfimtpt~~\81\85\8b\8b\96ª¸»¾»»¾»»»Â¾»»´±¸±­±­­´±±±±´±ªª­´´¸»»¸»¸¸»¸¸´±ª£\99\96\8b\8f\88\8b\85\85\81~\85»\81z¸¾¸»¸¸´´±±´´´¸±±±­­ª§§£ \9c \96\99\99\9c\9c    §ªªª±§­­­£ \9c\9c\99\99\92\96\92\96\92\99\96\96\92\96\99 ££££ª§ª§§££§££\9c\9c\9c\9c\99\99\99\99\9c\9c\9c\99 \9c\9c\99\9c\9c\96\9c\9c\96\96\99\99\99\96\99\96\92\96\99\99\92\92\92\92U\88\8b\88\88\88\88\81~~zwzwtww\85\85~zpmf_cfc____X\RKRGUNGGU\Xcicc_\RKNNGDDDDKNNNUUX\_\\\UKNAGA==:A,3\0ªª))",,3,36==AA=AA==6::60,,%%"\1f\1f\1f\e\18\1f\1f\1f\e\18\18\11\18\a       =0UD):D=tfficm_ficiciicffiffffccccf_X__\X\\XRUURRRRNRNNNNKKKKKNRUUUU\\_cfcpppptttttttttwmmmiiffiicmmiifcimiifcc_\\XUURNNK==A=:=::::66666663333333000300,060,,A,,0,,,))),63636366:6:6=A====A==A===AD=A==AAA=AAADGGGGKKNRRRURNNNNRRNRKNNKKDDAA:300333300,,)"%""\1f"%%,GGNNRURUUXXXXX\_ccfmpwzw~~\81\85\85\85\88\88\8b\8f\92\96\9c\9c\9c\99\99\9c\99\99\99\99\96\99\99\99 ££  §\99£  \9c  \9c££ £ª­±±±´±±´±±´±±ªª§££\9c \9c\99\96\99\9c £§­±¸¸¸´»¸¸»»¾»»´¸»»¸´¸´´´­­ª§ªªª££ \9c \9c\9c\9c\99\99\9c\9c   §­±´¸¸´´±­±­­­ª­­­´¸»¾¾»¾»¸´±´±­­§££\99\9c\8f\81~~zzwwwtttwttppmic\UUURNNNNRRUX\_ccffppmtz~\81\88\8b\8f\92£§¸¾¸»»¾¾¾¾¾»¾¸´´´±­±±±±±±­´±­­±´±¸»»¸»¸¸»¸¸±±§ \96\96\8f\8b\88\8b\85\88\8b~\88»\81\85»¾»»»»¸¸´´´´´¸±­±±ªª££  \99\9c\99\99\9c \9c  £\9c£ªª­´ª±±­§£ \9c\99\96\92\96\96\99\92\99\92\96\92\92\99£    §£ª§§££££ \9c\9c\9c \99\99\99\99\9c\9c\9c\99 \9c\99\9c\9c\99\96\99\99\99\96\99\99\99\96\96\99\96\92\96\96\8f\92\92\92U\8b\8b\8b\88\85\85\81~zwwtztwz\85\85~zttiffcf___\X_NKUGUKGKX\Ufff_\XNKKKGDDDGKRRRUU\__\_XUDK=D:6:6:)3§ªª\1f%\e\a\1f)),6:=====A=:6==:6,03"%\1f\1f\e\18\18\e\1f\e\e\18\18\14\18\11       DAXG)DGDtfiffifimfmcfmfffiifccccc_fc\\\_\\\XUURURRNNRRNNNKKKKKNNRUUUXX\_ccpppptppttttttwmmmiiffiffmimiifimiiffc_\\XUURNNK==A=:=::::666666633333330030030030,,=,,,,,,))))3033366::666:=A=A=A=A=:=AAA=:66:6:==:=ADGGKKNRRRRRRKRRRUUUUNNRNKGGAA=30,00000,,)%""\1f\1f\e""")3DKKNRRUUXX\\\_cccfmpwwz~~\85\85\88\85\88\8b\8b\92\96\99\99\99\9c\9c\99\99\9c\96\9c\9c\99\9c\9c\9c   £££\9c£ \9c \9c     §§ª­±±´´´´´±¸±±ªªª§ \9c\9c\9c\9c\96\99  ££ª­´´¸´»¸»¸»»»»¸»»¸¸´¸¸´´±±­ª­ª­ § \9c \9c\9c\9c\9c\99\9c\9c \9c£§ª­´´¸¸´±±±±­­­­­­´¸»»»¸»´´±­±­ªª£  \96\99\8f\81\81zzzzwwwtwwwtptmifXXUURRNNNRRUXX_ccfimppwz~\85\85\8f\92\8f\9c§§¾»»¾¾»¾»¾»Â»¸¸¸­ª±±­±±´­±±±­±´´»¾»»¾¸¸¸´¸±­§\9c\92\92\8b\88\85\8b\85\88\8fz»¸»¾»Â¾¾¾¾¸¸¸¸´¸¸¸±­±±ªª££\9c\9c\99\99\99\99\99\9c\99  £\9c ª­±´­±±­ª§  \99\99\99\96\99\99\92\99\8f\96\92\92\96  \9c ££§ª§§§££  \99\9c\9c\9c\99\9c\99\99\9c\99\9c\9c \9c\9c\9c\9c\9c\96\9c\96\99\92\99\9c\99\92\96\99\99\8f\92\92\8f\8f\8f\8fU\8b\8b\8b\88\85\81\85~~zzt~tww\85\85~~wwpiicf__\\U_KGUKUNGNX_RfficXUGKGGDDGGNNUUUUX\\\X\XUDA:=63633)0§ªª\e\14\e\ 3",),36:=A==AA::==::636%%\e\e\e\18\e\18\1f\e\1f\e\18\18\18\14      \eGD\N)GNGpfmiiiimmfpfimifffifcccc_cic_\\c__XUUXUURRRRRNNNNKKKNKKNRUUUXX\_cfpppttppttttttwmmmiiiiiffpfimfcfmiiffc__\XUURNNK==A==:::::666666633333330003300,3,,,:))))))%%%)03333::=6666=A===AA==:::=A=:::6:66::::=ADDGKNNRURRUNURUXXXXURRRNKGDA=63,300,0))%%"\1f\e\e\e\1f"\1f))0=GKNRRRXX\\\_cccfptwww~~\81\85\88\85\88\8b\8f\92\96\96\96\9c\9c\9c\9c\99\9c\99\9c\9c\9c\9c  £££   \9c \9c\99\9c\9c \9c   £ª­±±±´´´´´´´±±­­ª£ \99\9c\99\9c\96\99\9c £§­±´´´¸¸´¸´¸»»¾»»»»¸¸¸¸´¸±´±­­§­ §£\9c \9c\9c\99\99\9c\99\9c  £ª§±´¸¸»´´±´­±±±±­±´¸»¸¸¸´´±­ª­ª§§ \9c\99\92\99\8b\85~zzwwzzwwwzwttpmic\\UXUURRRRNUX\_ffifpmptzz\88\88\8f\8f\92\99£§»»¾¾¾»¾¾»¸»»´´¸±­­±­±±´±´´´±´´´¾¾»¾¾»»¸´¸´ª§\9c\92\92\88\8b\81\88\88\85¸¾»»»¾¾Â¾¾¾»¸¸¸¸¸¸´±±­­§ª£ \9c\9c\96\99\96\99\99\99\99\9c\9c \9c\9c­­±±±´´±­§  \9c\9c\9c\96\96\99\92\99\92\96\96\96\96\9c \9c\9c §§ª§ª§££\9c \99\99\9c\99\96\9c\99\96\99\99\99\9c\9c\9c\9c \9c\99\99\99\96\96\92\96\99\96\8f\96\96\99\92\92\96\92\8f\8b\92X\88\88\88\88\85~\85\81z~ztzwwz\85\85\81\81~~tpiffc_\_U_DGXNUNXRUcRiffcURKKKGDDKDXNUXXX\X\\UXURA=3630300%0ªªª\18\11\18\ e\1f,))03:=A=AA=::::==:6:))\18\e\18\14\18\14\e\1f\1f\e\e\e\e\11      \11KG_R)KRKpfmfmmmpmipimmffiiifcccc_cfc__\c\cUXUXXUUUUNNRNNNKKKKKKNNRUU\\\__fpppptppttttttwppmiiiiiffpcficcfmmiffcc_\XXURNNKAA==::::::66666663333333003333,,0,,,6))))))%%%%,03336=:::3:======A=:666:=:6:63663636::=AAGKNNRUUUURUUX\\\\XUUURNRGD=:60300),))%%\1f\1f\e\e\e\1f\1f\1f%%,:AAGNNRUX\__cccfipwzwt~~~\81\85\85\88\8b\8f\8f\92\96\99\99\99\99 \9c\9c\99\9c\9c\9c   £§    \99\9c\99\99\99\99\9c\9c ££§ª­±±±±´´´´´´´±±­§££\9c\9c\99\9c\96\99\9c£ £ª±´±±¸¸´´¸¸¸»»»»»»»¸»¸¸¸´¸´±­§­£§£\99 \9c\99\96\99\99\96   £§ª±¸»»»´´´´±±´±±±±´¸¸´¸´´±­­§§££ \9c\99\96\92\96\8b\88~z~zwwwwwwwzpptpfc\XX\UURRUURU\__ffifmpptz~\85\85\92\92\8f\96 £¸»»¾¾»»¾¾»¾¸±´´±±±±±´±¸´´¸´´¸¸¸¾»¸¾»¾»¸´»´­£\99\92\8f\88\8b\81\88\8b\85¸»¾¸»Â¾Â¾¾¾¾»»¸¸´¸´±±­­ªª  \9c\9c\96\99\99\99\99\99\99\9c\99\9c\99\9cª­­±´±´­­ª££ \99 \96\96\96\96\99\96\96\96\96\92\99\9c \9c\9c§§§§§§££ \9c\99\9c\9c\99\99\9c\9c\99\99\9c\9c   \9c \9c\96\9c\96\96\92\96\92\96\96\92\92\96\99\96\96\99\92\8f\8b\92X\88X\8b\8b\88~\81\81zzztzzw\85\88\8b\81\85\85\81zwiffcc_fc_GK\NUR\NUcRffc_NNNGGKGGNN\\X\\X\\X\URRR=),30%",,",ªªª\18\11\14\11\1f))),06:A===:::==AA=:=0)\e\1f\14\11\14\11\e\e\1f\e\e\e\1f\ e\0     \aKG_U,NUNmiifpmmtpimmimfiifffccc__cc__\\cX_U\UXXXUXRRRRNNNKKKKKKNRRUUXX\__cmppppppttttttwppmmmiifffmfffccfmmiffcc_\\XURNNK====::::::66666663333333000303,,,,,,3))))))%%%%,,303:===666::=:::==:3336=666303333336:=ADGKKRRUUUXUXUX\\__\XXXURUKD=::3630,))))%"\1f\1f\e\e\e\e\1f%%,3:=DKNRU\\_cfcfimtwzwwz~~\81\85\85\88\88\8f\8f\92\96\99\96\96\9c\9c\9c\9c\9c\9c \9c    ££   \9c\99\9c\99\9c\9c \9c£££§§­­­±±´´¸´´¸´´±­§£   \99\99\99\9c\9c£ £§­±±´´´¸´¸¸¸»»»»¾»¾»¾¸»¸¸¸±±­ª±§§£\9c  \99\99\99\99\96\9c  §§­´»»»»¸¸¸´¸´´±´±±±´´´´±±­±ª§£  \9c\99\92\92\8f\92\88\88~~zzwzzwwzwwttpmc__\X\XXURUXXX___fiiimptt~\81\88\88\92\92\8f\96\9c »»¾»Â»»¾¾»»»´´´´±´±´¸´´¸¸¸»¸»¸»¾»»¾¾¾¾»¸»¸±§\99\92\92\88\88\85\88\8b\85¸»»¸¸Âž¾Â¾»»¸»¸´´±±­±ªª\9c£ \9c\99\99\96\96\96\96\96\9c\9c\99\99\9cªª­±´´±­±­§§£  \96\99\96\99\99\99\96\96\92\96\99    £££§£§£§£ \99\9c\99\99\9c\9c\9c\99 \9c  £  £\9c\99\9c\96\92\92\92\92\92\96\96\96\96\9c\99\99\96\96\92\8b\92\8f\88X\88\88\85\81\81\85~z~zzzz\88\8b\8f\8b\88\88\85\81ztfpiiimipKK\KX\_NUfRiif\NNKKKKKKNR\_\_\X\\\\UUNR=,00,)",,\1f\0\0\18\14\14\14\1f)%),03:====:::=:A===A3)\1f\e\18\14\14\11\e\e\1f\e\1f\e"\a
+     \ 3NKcX,RXNmmfipiitpfpmipffiffcccc__cc____cX_RXRXUURUUUURNNKKKKKKGKNURUXX\__cippppptttttttwppmmmiifiiiccc_ffmmiifcc__\XUURNK====::::::66666663333333000000,,,,,,,))))))%%%%))0036::::6:=:=::6::63306:66300003033:==AGGKNNRRUUUUUUX\\__\\\\XUXNNA==6663,,,),)%""\1f\e\1f\e""%)06=AKNUX\__cfffimww~wwwz~\81\81\81\85\85\8b\8b\8f\96\96\92\99\99\99\9c\9c\9c\9c \9c\9c     £  \9c\99\99\99\9c\9c\9c £ ££ªª­­±±±±´´´´´´±­£  \9c\9c\99\99\96\9c\9c££££­±±±´´´±´¸»»¸»¾»»¾¾¾»¾»»´±±±ª­ª££   \9c\99\99\96\99\9c ££§­±¸»¾¾»»»¸»¸¸´¸´±­´±´´±´­­§£ \9c\9c\99\8f\8f\8b\8b\8f\85\85z\81wzww~zwzwwttmi_\_\\_\\XU\\\\cc_fiiipptt\81\81\8b\8b\92\92\8f\92\96\9c¸»¾¾Â»¾¾¾¸¸¸¸¸¸¸±´´¸¸¸¸¸»»¾»»»»»¾¾¾¾¾¾¾»¸»±ª\96\92\92\8b\88\88\8b\8f\85¸¸»¸»ÂÅž»¾¸»¸¸¸±±±±ªª££ \9c\9c\99\99\99\96\96\96\99\9c\99\99\9c§ªª´±´±­±±ª§§£ \96\9c\99\9c\99\99\99\96\92\96\99 \9c     £§££§§ \9c \9c\9c\9c \9c\9c£\9c\9c££ ££ \99\9c\92\8f\96\92\92\8f\92\92\96\99\99\99\99\99\99\96\8b\92\8f\8bX\8b\88\85\85\85\85~\85\81~\81~~\8b\8f\92\8f\8b\8b\88R~wptppmztwNU\N\ccfcififf\NRNGNKKUUU_c___\\_\_XXNRA0,0)%"))\14%\0
+\ 3\14\18\18\18\e%%))03:=:=:::::=====A60\1f\1f\18\14\14\14\e\e\e\1f\1f\e"\18\ e     \0RNc\0XmRiifipifptfpmipifmifccfccc_c_cc\cX_RUUURURURUUUNNKKKKKKKNNRRRUX\__cfpppttptppppptppmmmiiiififcc_fcmmiiffcc_\\XURRK====::::::66666663333333000000,,,,,,,))))))%%%%,%,06666666::=:::6:630336633000000036::ADGKKNRRNUUUURUX\\\\__\_\\XURDAA::660,,),))%%"\1f"\1f""%),3:AGNUX_c_cfiiipwz\81zwwz~~\81\81\85\85\88\8b\8b\92\96\96\99\96\99 \9c\9c     \9c    \9c \9c\99\99\99\9c\9c  ££££§­­±±±±±´´´´´±±­§ £ \99\96\99\99\99\9c£££§ª±´±±´±­±´¸»»»»»»»¾¾»¾»¸´±±­­­ª§§£\9c£\9c\99\99\99\99\99  £ªª´´»¾¾¾¾¾»¾»¸¸¸´´­´±±±±±­ª£ \9c\99\8b\92\8b\8b\8b\88\88\81\81z~zzzwzzzzzwppmf__\__c__\_____cfcfiimpptz\81\8b\8f\8f\8f\8f\92\8f\92\99 ¾¾Â¾¾»»»»»»¸´±¸»»¸»¸¸¾Â»»»»¸¾¾»¾Â»¾»»¸±ª\99\96\8f\8f\88\85\8b\8f\85´´¸¸¾ÂÅž¾»¾»»¸´´±±ªª§    \9c\99\99\96\92\96\96\99\99\9c\9c£­­´­´±±´´­ªª§£  \9c\9c\9c\9c\9c\92\99\96\9c   £ \9c£ £ ££§£\9c \9c\9c   \9c§ \9c££££§ \9c\9c\96\8b\92\92\92\92\92\92\99\99\96\9c\9c\9c\99\99\8f\96\92\8b\8f\8b\88\88\88\85\85\81\88\85\85\88\81\81\8f\92\96\8f\8f\8b\8bN\81zwwttt~wzRcfR_iifffifff\URRNNNNX\\cfcc__\__\\\RN=300)%%%%\11"\a\ e\a\18\e\e\e\1f%%)),06:::::6::=====A:3\1f"\e\18\14\11\18\e\e""")\e"     =URf_3\mUfiffpfftpipiipmfmfffccc______cXcX\RRRRNURUNUUURNNNNKKKKNKNRRUX\__ffpmmwpppppppptppmmmiiiiffccfcfciififfcc_\\XXURN====::::::66666663333333000000,,,,,,,))))))%%%%)%,,36366366::66:3:36330333000,,03033:=DDGKKKNNNRUUXRUXXXX\\c_c__\XRKDA==663,,),)))%%"%\1f"%%)03:AGRU\_cccfiiimww~wwwwzz~~\81\81\85\88\88\8f\92\92\96\92\99 \9c           \9c  \99\9c\99\9c\9c \9c££§§ªª­±­±´´¸´±´´­­ª§ £ \99\96\96\96\99\9c£§§ªª±±±´±±±´´¸¸»»¾»»¾¾¾¾¾¾»´´±­­ª§ªª£  \9c\99\99\99\96\99\9c  ªª´¸¾¾Â¾Â¾¾¾»¸¸´±±±­­­­­ª§£\9c\99\85\8b\88\8b\8b\8b\85\81\81\81~~wwwwzwwzwtmmiccc__cfcc_ccc__cccfimmttw~\85\8f\8b\8b\8f\8b\8f\8f\8f\96\96¾¾Âž¾¸»»»¸¾»´´»»»¸»»¸Â¾¾»¸»¸»»¸Â¾¾¾¾¸¸±ª\9c\96\8f\8f\8b\85\8b\8f\99±±¸»»¾Â¾ÅÅÌÌ̾¾»»¸´´­­ªª£££\9c\9c\9c\99\96\96\96\99\99\99\9c £­­±­¸´´±´±­­ª§£   \9c  \9c\9c\9c ££\9c \9c\99£\9c   £§§ £\9c     ££  §££§   \96\8f\96\8f\8f\92\92\92\96\96\96\99\9c\9c\96\96\92\92\8f\8f\8f\8b\88\88\8b\85\85\85\88\88\88\8b\85\92\92\96\96\92\8b\8f\8fR\85\85zzwww\81z~zwt\mmmiiimifc_XRURRRR\__ffff__\_\X\\RKA630)%"""
+\1f
+\ e
+\18\e\e\e"%%)%,036::::6:=:=:====6)%\e\e\18\14\18\e\1f%"%,\e%\0    AXUf_6_iUciffpiipmmtmmmifmfifccc____\\cU_U\URUNNURURUUUUKKNNKKNGKNNRRUUX\_cfppmtmppppppptppmmmiiimfffcfccciifffccc__\XXUUN====::::::66666663333333000000,,,,,,,))))))%%%%)),003366333::366363630,330,0,0)00006==ADDKGKKKNRURURUUUXU\\ccc_c_\XNDDA=:660,)))))%%%)"%%%,03:AKUX_cccfiimmpwwzzwwtwwzz~~\81\85\85\8f\92\96\92\96\99\9c\9c\9c\9c \9c\9c   \9c\9c  \9c\9c\9c\9c\9c\9c\9c  £££§§§ª­ª±±±´±´±´ª­ª££ \9c\99\96\96\99\99 ££§ª­±±±´±´´´±¸¸»»¾¾»¾¾¾¾¾»»¸¸±±­­ª­ª££ \9c\9c\99\9c\99\9c\9c £§ª´¸¾¾Åž»»»¸±­­­ªªªª§  \99\92\88\88\88\88\88\88\88\81\85~zzzzwzzztwtppifccf_ccfffcfffc_cfcfiipttt\81\88\8f\8b\88\8b\88\8f\92\8b\92\99¾¾Â¾»»»¾¸¾»¸¸¾»»¸»»»¾»»»¸¸¸»»»¾Â¾»¸±§\99\96\92\8f\8f\8b\8f\8f­­´´¸»»¾¾¾¾ÂÏÏÏÏ̾¾¾»¸´­±ª§££   \99\99\96\99\96\99\99\9c £§­­±­¸´´´´±±­­§ª££       £ £  \9c\9c    ££§§£§ ££ £ ££ £§§£§££\9c\92\8f\92\8f\8f\8f\92\92\96\96\96\99\9c\99\92\92\8f\92\92\8f\8f\8b\8b\8b\8b\88\88\88\8b\88\8b\8f\92\96\96\96\92\92\8b\92\92\8b\88\88\85zzzz\85~\81~zwtpppmmimmicc\XXUUU__ccifiic_\\\UXXRG=30,)"\ 3\1f\14\ e\18
+\11\ e\e\1f\e\e""))%,,3366:6:6=::=====:3)\1f\18\18\18\e\1f\1f%")0")\ 3    GXUf_:cfX\iffmimmiippmiffiiiccfc_cc__\cR_RXXRXRRRNUNXUXXNNKRKNNDKKNNRUUX\ccimpmpmmpppppptmmmpmmiiiiffcfc_ciifffccc__\\XXUR=====::::::6666663333333000000,,,,,,,))))))%%%%%%,,,003300366333033330,00,0,),,0303:A=ADAKKKNKNRRRRNRRUURXXcccccc_\RNKD=::30,)%)))))))%%%),36:DKXXcffffiimmpttzzttttwtz~~~~\88\8b\8f\96\92\92\96\99\99\9c  \9c\9c\9c    \9c  \9c\9c\9c\9c\9c  £££§£§ªª­­­±±±­±±±­ªª§£\9c\9c\96\92\92\96\99 ££ª§­±±´´´´´´´¸»»»¾¾»»¾¾¾¾»»´¸±­­±­­­§£ \9c\9c\9c\99\9c\9c\9c\9c§£ª±´ÂÂÅÂÅÅž»¸»´±ªª­§ª§§£\9c\9c\96\8b\88\88\85\88\85\88\85\81\81zwzzzw~wwwwtmpcffff__fiiifififcffffmmtttt\81\88\8b\88\85\88\85\8b\8f\8b\92\9c¾Âž»¸¾»¾»»»¾¾»¸»»»»»»»¸¸´¸»»»¾¾¾¾»´´§\99\96\92\8f\8f\8f\92\8f­±¸´´»»»¾»»ÂÅÏÏÏÌž¾»»¸±±ªª££ \9c \9c\9c\96\96\99\9c\9c\9c  £ª­±­´´´¸±±±­­ª­§§££ ££££§ ££\9c      £§ªª§£££££§£ £££§ª£ª£ \99\8f\8b\8f\8f\92\92\8f\92\92\92\92\96\99\96\92\8f\8b\8f\8f\8f\92\8f\8f\8f\8b\88\8b\8b\8f\8f\8f\92\96\96\99\92\96\92\8f\96\92\8b\85\8b\88~~z~\85\81\81~~zwttppmmmmffc\\XXXXccffiiiic_\\XRUUND:\14,),%\0"\18\18\11\ e\11\11\18\1f\e\e"")))),3336::::=:==:===:6,%\e\e\18\1f""%,,3%,\1f  \11 K\XfcAfcX\icfiimifmptiffffffcccccc____cR_UU\RXRRNNRRXU\XRRKRKNNGGNNNNRUX___fmmmpmmppmmmmpmmmmiiiiifffccc_ciiiffccc__\\XXUR======:::::6666663333333000000,,,,,,,))))))%%%%""))),00003633300,,000,,,,),,%)00006:=AADDKKKNNNRRRRNNNURNUX__cc_cc_URNDA==6,,)"%%%,)),%)),33:DDR\_fffiimmpppttwwptppttzzz~\81\88\8b\8f\96\92\92\99\96\99\99\9c \9c\9c            \9c  ££ ££§§ªª­­±­­­­­­ª§ª££\99\99\92\96\92\92\9c\9c£§§ª­´±´¸´¸´±´¸»»»¾¾»¾¾»¾¾¾¸¸¸´±±±±­ªª££ \9c \9c\9c  \9c£§­´¸ÂÅÅÅÅÉÅ»¸¸´­ªªª£§£§ \99\99\88\8b\88\88\85\85\85\85\81\81~zzwwzwztzttpppcificccfiiifiififfcfipmtzzz\85\85\88\85\88\8b\88\8f\8b\88\92\99»¾¾Â¾¾»»¾¾¾¾¾¾¾»»¸»¸»¾¾»¸¸¸¸»»»»¾»»»¸±±£\99\99\96\8f\92\92\92\99­±¸´¸¸»¸»¸¸¾ÂÉÏÌÏÉž¾»´­­§§££ \9c  \9c\99\99\9c   ££§§ª±­±¸¸´´´±±±­±ª§§§£££££§££ \99£  ££\9c£§ªª§£££ £§£££££§§£§ \9c\99\8b\8b\8b\8b\8f\96\92\8f\92\96\92\96\96\92\8f\8f\81\92\8f\8f\8f\92\92\8f\8b\8f\8f\8b\8f\92\92\96\99\96\96\92\92\92\8f\96\8f\8b\85\88\85~~~~\81~~~~wzwwttpmpmicc\_X\\\cccffiif_\XXUNRNKA3\e\1f%)%\ 3\1f\e\e\ e\11\ e\ e\e\1f\e\1f"%%%)))03366::6=:==:===::0))"%"%%)006)0"  \0 N\XffDf_X\i_fifmifmtpiiffccccccccc_cccc_\RU\UXUNNRNNXUXUUUNRNNNDGNKNNRUX_\_cmpmmmmmmmmmmpiiiiimiiffffccccciiifffccc__\\XUUNNNGA=:::::::66666333333000000,,,,,,,))))))%%%%\e\1f%%)),,,0330300,),,,00),,,,,%),,3036:AAADGKGKKKNNNNKKKRNGRU\_c_cfc_XURGDAA:),%%"%%),),),03:6AGNU_cfiimmpptptttwwmppttwwzz~\81\85\8f\92\92\96\8f\96\96\96\96\99\9c\9c\9c       £  £ \9c\9c  § ££§§ª§ª­­±±­ªªªª§§£ \99\96\96\92\92\96\99\9c£§ª­­±±´´¸¸¸´´¸»¾»¾¾»¾¾¾¾¾¾»»¸¸´´±±±­ª§£\9c\9c   \9c£  ª±¸»ÂÉÅÅÅÅÅ»¸¸±ªª§§££ £\9c\92\96\8b\8b\85\85\85\85\85\85\81\81~zwzwzzwwwtppmmfmfiffffiifiiffiiifipptw~\81~\88\85\88\85\88\8b\8b\8f\8b\85\8f\99¸¾»Åž¾»¾Â¾»»»Â¾»»¸»»»Â¾»»»»¸»¸¸»»¸»¸´­­£\99\96\96\92\8f\92\8f\9c±±´¸¸¸¸¸¸¸¸»»ÅÉÉÏÅÉŸ´ªª£§£ £  \9c\9c\9c\9c\9c   ££ª§ª±±­´¸¸´´­±´±±ªªªª§££ ££ £\9c\99   £   §­ª§£  \9c£§££§§§§£§£ \99\96\8f\8f\88\8b\8f\92\8f\92\92\92\8f\92\92\8b\8b\8b\85\8f\8b\8b\92\92\92\92\8f\92\8f\8f\8f\96\96\99\96\92\96\92\8f\92\8f\92\8f\8b\81\85\81zz~z~zz~ztwwztwtmmmicc__\_\_cc_fcifc\XUURKKKA63\1f"%%""\1f\e\1f\11\14\11\11\1f"\1f""""%%%,03366:::====:====::0,%,"%),33:)3% 
+0 R_\fiGcc\\i_fmimifitpifffccccfcccccfcccc\UXXXUURRUKKXUUUUURRNKKAGKKKNRRU_\_cmmipimmmmmmmpiiifiiiffffcccc_ciiiffffcc__\\XUURRRNNN=====:::6666663333300000,,,,,,,))))))%%%%\1f\1f\1f"%%),,,03,00,))))),,,0,,),)%))33366=A=DDGGKKKKKKKGGGND6GRR\_\_c_c\XUGGAD:,,%)"""%)),,03:=ADKUX_iimmpptpttttwztppttwzwzz\81\81\85\8b\8f\92\92\8f\96\92\96\96\96\99\9c        £   \9c \9c  ££££§§ª§ª­±±­ª§§ªª§£  \99\96\99\92\92\96\96\9c£§­ª­±±´±¸¸¸¸¸¸¾»¾¾¾»¾¾¾¾¾¾»»»´´¸´­­­§§§  £££ £ £ª­´»ÂÉÅÅÅÅÅž¸´­ª§££££\9c \96\8f\8b\88\8b\85\85\81\85\81\81\81\81\81zz~zzzwttppmmiimiiiifiimfiifiiimimtwz~\81\85\81\85\85\85\85\85\88\8b\8f\8b\81\8b\99±¾»Å¾¾¾¾¾¾¾¸¾»¾»¸»»¾Â¾¾¾¾¾¸»»¸¾¸¸¸´´­§£\9c\99\96\92\8f\92\92\9c­­±¸»¸¸¸¸´´¸¸¸»ÅÌÅÉÅÅ´±§§ £ \9c \9c \9c\9c\9c  £ ££ §§§­­­´¸¸´´±´¸´±ª­­ªª§§ §£££ \9c    £££§ª§§£ \9c\99££££§£§££§ \9c\99\96\8b\8f\88\8b\92\92\92\92\8f\8f\8f\8f\88\88\8b\88\88\8b\88\88\92\8f\92\96\92\96\8f\92\92\99\99\9c\92\8f\92\8f\8b\8f\8b\8f\8b\88~\81zwzzwzwzzwptwztwtpmmifc__\\__c__c_fc\XUNNKGD==)0"%%""\1f\e\e\1f\14\18\14\14""""\1f\1f"""%,,336:6::=A=A:=AAA==633000,06:6,6) \143 U_\fiKfc\\m_fiimicmpmifffcccccfccf_c_ccf_XXXURRRUUKKXRXXUURRNNKADGGKNNRU\\\ciiitmmmimmmmpiiiiiifffffcccc_ciiiifffccc__\\XUUUURRRNKKGD===::666663333300000,,,,,,))))))%%%%\1f\e\1f""%),,,,0000))%%%%))),),,)%%%,3306:=A=DDDDGGGDGGGDADA:3666DAX\__c_\XDKAA60,))"\1f"%),303==AKRU\cfmmpptttttttzz~wtptwwzz~z\85\85\88\8f\8f\92\92\92\92\92\92\92\92\99\9c\9c     £ ££      £ ££§§§ª§ª±­±­§ªª§§§£ \9c\9c\96\96\96\96\96\99\9c§§ª­ª±±´´¸¸¸»¸»¾»¾¾¾»¾¾¾¾¾¾»¾¸¸´¸±­ªª§ª§£££££   §ª±¸»ÂÉÅÅÉÅÅŸ´§§§    \99\92\92\8b\88\85\88\85\81\81\81~\81~~~zz~zzztttppiimmpmmmiiiimiiiimimpmp~z~\81\81\88\81\88\85\81\88\88\8b\8b\8f\8f\8f\88\96´¾¾Â¾Åž¾¾Â¾¾»¾¾¾¾¸»»¾Â¾¾»¾¾»¾´´´´±­§  \99\99\92\92\92\92\99ª §´¸´¸´´´±´´´¸ÂÅÅÅÅž´­££\9c \9c\9c\9c\99\9c \9c \9c ££   §§ªª±­¸¸¸¸´´¸´´­ª­ªªª§§ ££  \9c     £ £§ª§§££\9c §££§§ ££§£ \9c\96\96\88\8b\85\8b\8f\8f\8f\8f\8b\8b\8b\88\85\85\88\85\85\85\88\88\8f\92\96\99\96\92\92\96\96\99\99\99\8f\8b\8f\8f\88\8b\88\8b\88\85z~wwwzwwwzwwpttwpwttpmii____X\__\___c\XUNNKAG=:3%%%)%"%\1f\1f\1f\1f\18\18\18\18""""""""%),)303:6:=AAAA==A===A:663330::==0:,\0\183\aUc_fiNff\\mcfiimmcifiifficccffcfcccf__ffc\\\URURXUKKURXXUXNRNKGAADGKKNRUXX\ciffppmimimmmpiiiffffffcccccc_ciiiiffffccc__\XXXXXUUURNNKKAA===:::::66633300000,,,,,))))))%%%%\1f\e\e\1f"%),),0,00,)%)")%%,,0,,))%%)000336=AAAADDDDDADDAA=A=6333000:UU\_\XUAG==60,,)%\1f\1f%),636AAGNU\cfippttwwtwtww~~\81wpttwwzz~~\81\85\88\8b\8f\8f\92\8f\8f\8f\8f\8f\8f\99\9c\9c\9c\9c\9c   ££§   \9c  £££ £§ªª§­­ª­­§ª§§§§ £\99\99\96\96\96\92\96\9c\9c£ª­­­´´´¸¸¸»¾»»¾¾Â¾¾»¾¾¾»»»¾¸»¸´´ªª­ª§§££§££\9c££§­´»¾¾ÅÅÅÅÅÅÅŸ±§§§\9c\9c\9c\92\8b\8b\88\88\88\81\85\81~~~~~\81\81~~~\81~wwptpmpmmmpppppmimmmmmmmppptpt\81~\81\85\85\8b\85\8b\85\85\88\88\88\8f\8f\92\92\8f\92¸»»¾¾¾Â»¾Â¾¾¾¾¾¾¾»»¾ÂÂÂÅž¸»´¸´´­­§£ \9c\99\92\92\96\96\96 \9c£±´±´´´±­±´´´¾ÂÅÅÅɱª  \99\9c\99\99\99\99\9c\9c \9c  ££££££§ªª±­´¸´´¸¸»¸±­­±ª­ªªª£  \9c\9c\99\9c£ ££  §§ª§§££ £§£§§£ §§£ \9c\99\92\92\88\88\88\88\8b\8b\8f\8b\8b\8b\88\81\85~\88\81\88\85\85\85\8b\92\96\99\96\96\92\96\96\96\96\96\8b\88\88\8f\85\81\81\88\81\81zzwwtwttwztttpttpwtppmii___\U\_\X\\\_UNRNKGAD:63)%%%"%%"\1f\1f\1f\e\e\e\e"\1f"%%""%)%,,00366===DA=====AAA=::66:6==AA3=0)\e:\0Xf_imRff_cmcffimmcffiifffcffffccfcfc_cifc__\XRXN\XNKURUUUUNRNGGADDDGKNNUUX\cfffmmiimiimmpfffffffffcccccc_ciiiifffffcc___\X\\\XXXURRNNKKGGD===::66666333300000,,,,))))%%%%\1f\1f\e\1f""%)),,)03,,)%%%))0,,,,,))),,00036=A=ADADA=A=:3=6::630000000:6DUXUK=D:030,,)%""%)0A==GGRUX_fimpttwwzwzwzz\81\81\85wtwwwwz~\81~\81\85\88\8f\8b\8b\92\8f\8b\8f\8b\92\8f\96\99\9c\9c\99\9c    ££££ \9c £  £ £§ªªªª­ªªª§§££§§  \99\9c\96\96\96\96\99\9c\9c£§­ª±±±±¸¸¸¸¾¾»¾Â¾¾¾¾»»¾»»¾»»¸´´±ª­­ª§§§£££§ §£ª±´»Â¾ÅÅÅž´±ª££\99\99\99\88\8b\88\88\85\85\81\81\81~z~~~\81\81\81z~~zwttpmmpmmipppttpmmmmmmpptttwwz\85\85\85\88\88\8b\88\88\85\88\85\8b\8b\8b\8f\99\96\96\96¸»»»»¾¾¾¸Â¾¾¾»¾¾¾¾¾»ÅÂÅÅÂÅž»¸´¸±´­­§§ \9c\99\92\92\96\92\99\9c\9c ª±­±±±­­±±±±»ÂÅÅÅÉÅ­§ \9c\9c\99\96\96\96\99\9c\9c\9c\9c £§ ££§§ª­­­±´¸¸¸¸´»´­ª­­ªªªª§   \9c\99\9c\99 \9c££ £§ªª§£   §£§§£§£§§ \9c\99\96\92\8f\85\85\88\85\88\88\8b\8b\8f\88\85\81\85\81\85~\85\88\88\88\8b\8f\96\96\96\96\8f\92\92\92\92\92~\85\81\8b\81\81\81~~~wzwwttttwwtppmtppwtpmmif__\\X_\XU\X\\UNNNGG=A:33,)"%"%)\1f""\1f\e\1f\1f\e"""%)%)%)%,,0,33:=:ADAAAA===AAA==::=:AADD3A3,\1f=)\ccmm_fi_fmffiipmfcfmifffffffcfcfccc\cicfc__XXXNX\RNXURXUUKRKDGDAAGGGKNRUU\_fcciiiiifiiimffffcffffccccc__ciiiifffffcccc__\__\\\\XUURRNNKKGDAAA=:::::6633300000,,,,,))%%%%\e\1f\e\1f""%)%,0,300,,))%),00030,,,),,,036:AA=AA=A=:::63:3000,,),,,,)06=DGKG==600,),))%%%36DADKNUX_cimptwwzzzz~z~~\85\85\88tttwww~z\81\81\85\85\85\8b\88\88\8f\8b\88\8b\88\8f\8b\92\96\99\99\9c \9c  ££££££    £££§ª­­ª­ªªª§§§££§£  \9c\9c\99\99\96\92\99\99\9c§§­­±±±´¸´¸¸¾¾¸¾¾¾Â¾¾»»¾»»»»»»´´­ªª­§§§§§££§£§§ª´´¸Â¾ÅÅÅÅž¾»´­ª£ \8b\8f\88\88\88\85\85\85\85\81\81~~~~z~\81~~zzzwtttppimmimppttttpmpmmptwzwzzz\85\85\88\88\8b\8b\8b\8b\8b\85\88\88\88\8b\8f\8b\9c±±\96¸¸¸»»¾¾¾»Âž¾¾¾»ÂÂÅÅÅÉÅÅÅ»¾¸´´´±±±§§ \9c\99\96\92\96\92\99\99 \9c§£§£­­­ª­±±±¸¾ÅÅÅÉŪ \9c\9c\99\99\96\92\99\99\99\99\9c\9c\9c££\9c§£§ªª­±­´¸¸¸»¸¸¸´­­ªªªª§­§   \9c\9c \99£\9c££ £§ªª§££\9c\9c££§£ £§§£\9c\99\92\92\8f\8b\85\81\88\88\85\85\88\88\8b\8b\85\81\85\81\85~\81\88\8b\8b\8f\92\92\96\96\92\8f\8f\8f\8b\8f\8b~z\81\8b\81~~~~zwwwwpwwpttttpmtmpwtpiiicc\X\X\XRUXRXRRNGKDD:A6,0))%%\1f"%"""\1f\e\1f\1f\1f%%%%)),%,)),0,00:::ADAAA=A=A=A=====A==DDG6A30"A,\ccmpcim_iiifmitpifimififffffccfccc_Xci_fcc\\\XXX\UR\XU\RUKRGGGDAAGGGGNNRU\_cccffififfiimcccccccffccccc__ciiiifffffffcc__\__\\\\XXUUURRNNKGGDDD=====::6663333300,,,,,)))%\1f\e\1f\e\1f\1f"%)),033,,0),,,3333630,,)),006::=A:==:A:::63060,,,)))%)),)033=DAA::33,)),,)%)3:AGGGNRX\cfmmtwzzz~z~\81~\81\81\85\88\88wtwtwwzz~\81\81\81\81\88\85\85\8b\88\85\88\85\8b\88\8f\8f\99\99\99  £  ££§§£££££ §§ª­±­ª­ªª§§§£££§§  \9c\99\99\99\99\96\9c\9c §ª±­­±±±´´´¸»»»¾¾¾Â¾¾¾»¾¾»»¾»¸±´§­ª­§§§££ £§§§ª­±¸¸¾ÂÂÂÅž¾»´±ªª \92\88\88\85\88\85\85\85\81\81\81~~~zzzz~zzzwztpppmmmpmmmpttwwwtptppttz~z~~\81\88\88\8b\8b\8f\8b\8f\8b\8b\88\88\88\8b\8f\92\8b ­±´¸´»»¸»¾»¾Â¾Â¾ž¾¾¾¾ÂÂÂÅÉÉÅÅ»»¸´´´±±­§£  \9c\92\92\92\92\96\8f\9c\99  \9c£ª§ª§­±±±´¾ÂÂÉÌɧ \99\99\96\99\96\96\99\99\96\99\99\9c\9c £ ££§ªª­±±±´¸¸¸´¸¸±±­§§§§§­ª£\9c \9c \9c\9c£ §££§§§ª§££\9c\9c£££§ £££ \99\92\92\96\8b\88\88~\85\85\81\85\85\88\88\88\81\81\81~\81~\85\88\88\8b\8f\8f\96\92\92\8f\8f\8f\8b\85\81\88\81z\81\8f\81zzzzwwtwtmttppttppppmptpmfif__\UXX\URRUNNNRKDGAA6=6)0)%%""%""%%"\1f\1f""))))),0),),,,,0,6::ADAAAAAAA=A===:=A=ADDK6D63,A3_fcitcimfimifpfwtfimmiiiffffcfficff\\ffcfcfX\_U\X\UU\XX\UUNNKGDAAAGDDGKNRRX\cccfcffffffimcccccccccccccc__ciiiiffffffffc_____\\\\XXXXUUURRNKKGGGAAA==:::::6666630000,,))))\1f\e"\e\1f""%%%,,300,,,0366666:630,),03366=:A:=:6==:66603,)%))%%)))),,33:===6630)))0,))0:=DKKKRU\_fippwz~zz~~\81\81\81\81\85\88\88\8bttttwwwwz~~~~z\81\81\81\85\85\81\81\85~\8b\8f\96\96\99   £ §££§££££§ ££ª­±­­ªª§ª§££££££ \9c\9c\9c\9c\99\99\99\9c £§ª­±±±±±´¸´¸»»»¾Â¾Â¾¾¾¾Â¾¾»¾¸´±´ª­ªª§§§§£ ££§£ª­´´´»¾Âž¾»¸±­ª§\9c\8b\85\88\81\85\81\81\81\81\81\81~~zzzzwzzzwzwtpmmmmipmppptwwtwttwtt~t~\81~\85\81\88\8b\8b\8b\8b\8f\8f\8f\8b\8f\8b\8b\8f\8f\92\92\96­±´´¸¸¸»»¸¾¾¾¾Â¾¾Â¾Â¾»¾ÂÂÂÅÉÉÅ»¸´´±¸­±ª§ £\9c\99\8f\92\92\8f\92\8b\8f\8f\96\9c\9c£§£ª§ª±­±´»¾¾ÉÌɪ£\99\9c\96\99\96\96\99\96\99\96\99\99\99 ££§£ªª­ª±±­´¸¸¸¸¸´±­ª£££££ª§£\9c£    §£§§§§§§ª££   §§£££   \9c\99\8f\8f\92\88\85\85~\81\81~\85\81\85\85\85~\81\85\81~~\85\8b\8b\8f\92\8f\92\8f\8f\88\8b\8b~\81\81~~z\81\8f~twwwwtttpptpppppmppmpppmiffc_\XUXUXRUNRKDKNGGA=A3=3",))%""%%\1f"%"""%",,),,,0,,),,,,003::DDADAAA=A=====:====ADK=G6:=DR_fcitfitimpmfpizpipppmimffiffciffic_\fcfccc\_\XXXXRR\XX\XUNKKDD=ADGDDGGKNRU\___cfffccfffi___cc__cc___c___cfffiffffffffccc___\\\\XXXXUUUURRNNKKKDDDDA===::::666333330,,,,)"\1f\1f\1f\1f"""%)))03000336::::6::330,0366:::6=::63::66:600))"%)""%,,,))003:::636,%),0,,,3AAGNNNUX_cipttz~~~~\81~\81\81\81\81\85\88\8b\8btpppttttptwptw~~~\81\81zz\81~\81\8b\92\92\96\9c  £ £££§§£§ ££ £ª­±±­­ª£§ª§£ £ £  \9c\9c \9c\9c\9c \9c£ª­±´±´´­´´´´»»»¾¾¾Â¾¾¾¾¾¾Â»¾¸±´±­­ªª§§££   ££§§ª±±±»»¾Å¾¾»¾¸´±§§£\99\85\81\85\81\81~~~~~~zz~zzztwwwtwtppimppmpmpptptwwwttzwt\81~\81\85\81\8f\8b\8b\92\96\92\8f\92\92\8b\8b\8f\92\8f\92\92\99\8f\99±´´´¸´¸¸»»»»»¾Â¾¾Â¾¾¾ÂÅÅÅÉž¾¸¸±±­´­­ª£  \99\96\8f\8f\8f\8b\8b\88\88\8b\92\92\99  £ª§ª±­­´¸»»ÅÌÉŧ \9c\99\99\99\99\96\96\96\99\96\99\9c £ ££ª§ªª±±±¸¸´»¸¸´­ª§ \9c   §£ \9c£  \9c £§§§§§§§ª§£££\9c£§££ \9c\9c\9c\99\99\8f\92\8f\88\81\81z~\81z\85~\81\81\81z~\81\81~\81\81\8b\88\8f\8f\8f\92\92\8f\88\81\88~z~~zz\\8b\81twtttpptmmpmmmmmmpmmpmmmiifccXUUURNNRNKGDGKDD===0:0%))%%\1f"""\1f")""%%%,,,00030,,0,,)0066:AGADAAA=A==:==::::==DNKG:=GGUcppwtcwwmmppitiztmtppmimfffcfcfccicc\c_ff__\\\\X\UNRXXXXXRRKGGDAAADDGGGKKNUX___cccc_ccccf\\\_____________cfffffffffffffccc__\\\\XXXXUUUURRRRNNNGGGGDAA===::::66666630000,%""\e\1f%"")),,0633666:==:=666300336:::::6=6:603666:30,)%%)%%"%,,,%,0336666,3,%%,,,,0:GGGNNRX\cipt~z\81\81\81\81~\81\81\81\81\81\85\85\88\8b\8fpppppppmppppptmpzz~zz~z~\88\92\8f\92\99\9c\9c £££§£§§§£££££ª±±±ª­ª§£§££££££\9c  \9c \9c \9c  £ª±´´´±´±±±´´¸¸¸¾»»¾Â¾¾¾¾Â¾¾¾¾¸´´­­ª§§ª§      £§£§­­­¸¸¾Â¾»»»´±­§£\88\85\81~\81~~z\81~zzzwzzwzzppttptmmmiippppmtppttttzwz~zz\85\81\85\92\92\96\8f\92\96\99\96\8f\92\92\8f\8f\92\96\96\99§­±­´´¸´¸´¸´¸¸»¾¸»Â¾¾Âž޾»´´±­­±­ªª  \9c\99\92\8f\8f\8b\88\88\85\88\88\8f\8f\96 ££§ªª­­­´¸¸¸ÂÌÌŧ£\9c\9c\99\96\99\96\99\96\99\92\99\99\9c£  £§§ª­±­­¸¸¸¸¸´´ª§£\9c\9c\9c\99\9c  \9c\99£ \9c\9c\9c §§ª§§ªªª§ ££\9c££§ \9c\9c\9c\9c\99\99\8f\92\8b\85\85~ww~w\85~z~~z~~\81~\85\81\88\8b\8f\8f\8b\8f\92\8f\85\81\81~zzzzzX\8b\81twttpmmpiimmmiiimmmmmifmiicccXRURNNGNKGDAAGAA6=:36))))"%\1f""\1f""%""%%%,,,00333,,,,,,,063=AGDADAA=A==:=::6::::GURN=DKKXmttzw~zzppptiwiwwpwtppiifficffcc_ifc\__cc__X_XX\XRRUU\UXURRKDGDAA=ADGDGGGKRX_\\_________cXX\_\_\______\\\cffffcfcfffffcccc__\\\\XXXXUUUURRRRNNNKKKKGDDAAA==:::66666633330)"%"""%),)000:66::=====:=::60366:====6::3630336363,0))%)%%%),,,,0036633600,)),,,,DGKKKRRU\_fmtw\81\81\85\85\85\85\81\85\85\85\85\85\85\88\88\8b\8fmmmppmmmmfmmmimpwtwzzzz\81\85\8f\8b\92\96\99\99\9c£££§§£§§§§§££ª­±±­ª­ª§ª§§§£§£         £§­´¸´´´´´±±´´¸´¸»»»¾Â¾¾¾¾Â¾¾»¾»´±ªªªª§§§£  \9c  ££ £ªªª´¸¾¾¾»¸¸´±ª£\96~\81~z~~~~~z~zzzzzwwwppmmmmiimiimmpmmpptttwz~z~\81~~\85\88\8f\96\99\9c\9c\9c\99\9c\99\92\96\96\96\92\96\99£´±±´±±´¸¸¸´¸¸¸»»»»¾Â¾¾¾ÂÂÂÂÂÂÅž»»»¸±±­­­­§ª\9c\9c\8f\96\8f\8b\8f\88\88\88\85\88\88\8b\8b\96   £ªªª±±¸¸¸¸»ÉÉÅ\8f§  \9c\96\99\96\96\99\96\96\99\96\9c£\9c ££§ªª­±ª¸\8b¸´´±±ª£\9c\9c\9c\9c\99\99\9c\99\9c\96  \9c   §§­§§ªªª§£§§ ££§ \9c \9c\9c\99\96\92\92\8b\85\81zww~t\85~z~zwz\81~~\85\81\85\88\8b\92\88\8b\8f\8f\81~\81z~wzwzU\88~twttmfimfffmiffiiiimiffmfffccXRRNKNGKGGD=AGA=::633),%)%""""\e"\1f"""%"%)00033363,),),,,63:AGDDDAAAAA=:=::6:6::D\85URAGNNipptzwzzztmttizzwztwwppmifffffffc_ffc_\___\\U\UUXUUUXUXXURRNNGDD===AADDGGGGNU\\\\\\_\_\\\_XXX\X\\\\\___\\\_ffffcccccfffcccc__\\\\XXXXUUUURRRRNNNNKKKGGGDDAA====:::66633333,%)%")),,,0336::=:AA=A==AA=666:6==:::36:333333333300,))))%),00000333633300,,,,0,6GKNNRUUX_cmpwz\85\85\88\88\88\88\85\85\85\85\85\85\85\88\88\8b\8fpmmmmiiiifiifiimttwwwtz~\85\8b\8b\8f\96\99\96  ££§§§§§ª§ª§§ª­±­­­±­£§§§£§§§££ £ £  ££§­±¸´´´´±´´±±´±¸»»»»¾»Â¾Â¾»¾¸±±­ª§­§£££   \9c   \9c  §£ª´¾¾»¸´´±­§\85\88~~zz\81~~~~z~z~zzzwwttpmmimmimffimmpmpmpwww~~z\81~\85\85\88\8b\92\9c\9c££ \9c\9c\99\96\99\99\99\96\99´´¸´´´´´±´»»´¸¸»¸»»¾»¾Â¾¾¾¾¾ÂÂÅž»¸»»´­­­­ª­§§\99\99\8f\92\8f\8b\8b\8b\88\85\85\88\88\88\8b\92\9c\9c  §§­±±¸¸¸´¾ÉÉÅ\8bª£  \99\99\96\99\99\96\96\99\96\99£  £ £§ª­­§¸\8b´´´±­§ \9c\9c\99\99\96\99\96\8f\99\92\9c\9c\9c\9c \9c§§ªª§­­ªª§§£ §§§\9c \9c\99\9c\96\96\96\92\8b\85~wztzp\81zzzzww\81z~\81\81\88\8b\8b\8f\88\8b\8b\8b\85z~w~zzz\X\85zttppicfic_fifcfmfiimfffmffc_c\NRKKKGGDDA:AD=:66603))%)"""%\1f\1f\1f""%"%%),00333666,),,,0036:DGGGGDDAAAA=:::::::6A\85XUDKNRmttwzzzzwwmtwmz~zwwwtpmmififiiff__cfccX_\\\XRXRRURURUXXXRNNNNKDD==AAAAADDGGNR\\\\\\\\\\\\_UUUXX\X\\X\\_\\\_ffffcccccccfcccc__\\\\XXXXUUUURRRRNNNNKKKGGGGDDAAA===::::6633330)))%,,000336::::=DA=A=ADDA=::::===6:336333633333600,),,),,)03333336336633,0,03GGKNNRUXX\_fpwz\81\85\88\88\88\8b\88\88\85\88\85\85\88\85\88\8b\8b\8fpmiiiffffcfifffipttttww~\81\88\8b\8b\92\96\99\9c £££§§§ªªªª§ª­±±±­­­ª§§§§§ª§ª§§£££££££§ª­´´´±¸´´´´´´¸´´»»¾¾¾»¾Â¾Â¾¾»»´´­­§ªª§££  \9c\9c\9c \9c\9c\9c\9c\9c\99 £ »¾»»´­­ª£\88\85~zwz~~~z~~~zzz~zwttppmiiiififiiiipimpttzz\81\81~\85\81\88\88\8b\96\96£ §§£££\9c\99\99\99 ´´¸¸»´¸¸¸´´¸»»¸»¸¸¸»»»»Â»¾»Â¾¾¾Â¾ÂÂÅž»¸»¸±­ªª­ªª££\9c\96\8f\8f\8f\88\8b\8b\85\85\85\88\88\8b\8b\8f\99\99  §£­±´¸¸´¸¾ÉÉÂ\8f§£ \9c\96\96\96\99\99\96\96\99\99\96 \9c £££§§ª\9c\9c¸¸±´´±ª£\9c\9c\9c\96\99\99\99\92\8f\96\92\9c\9c\9c\99  £ªª§ª­±­ª§£££ª§ª  \9c\99\9c\96\99\92\92\88\85ztwtzp\81zzwwww\81w\81\81\81\8b\8f\8b\8f\85\88\88\88\81~zzz~zwNX\81wtpfmf__fX\cfc_ciffiiifiicfc\_XRNNKGDADD===A=:663,0%%"%%"\1f"\1f\1f\1f\1f"%"))%000336:6:6),,,3036:DGGKGDGAADA=:===:=::D\85t~KNRUptpwww~ztwmptpwzwwtwfmpifimifffcc_cc__X\N\XRNUNRXURURXXXNKNKKGGAA=A==DDDDGGKN\XXXXX\XXXXX\UUUUUXXXXUXX\X\\_cccfcccccccc_ccc__\\\\XXXXUUUURRRRNNNNKKKGGGGDDDAAA===:::::66633,,,)00300366::===ADADAADGDA==:::==:6336033633630300,),0,0003663366:633666033=GKKNNRUX\X_cfw~\81\85\88\88\8b\8b\8b\88\88\85\85\88\88\88\85\88\8b\8f\92miffifcccccfffcmmptptww~\81\81\8b\8b\8f\92\99\99\9c ££§§ªª­ª­ªªª±±±±­ª§£§§ª§ªªª§§§§§££§£ªª­±±±´¸´¸¸¸´´´´´»»»¾¾»»Â¾¾»¸¸´ª­§§ª£££ \9c \9c\9c\9c\9c\9c\9c\99\99\99   ¸¾¸¸±ªª§\8b\85\85~~zzz~~~~~~~~z~zzttpppiiififfffiipmmtwwz~\85\85\81\88\85\8b\8f\8f\9c\99§ªªª§§§  £\99´¸¸¸»¾¸»¸¸¸¸¸»»»»»¸¸»¸»¸¾¾¸»¾Â»»»¾»¾ÅÂÅ»»¸¸±­­ª­ªª \9c\99\99\92\8f\8f\88\88\8b\85\85\85\88\88\8f\8f\8f\96\99  §§ª±±¸¸´»ÂÅÅ\9c\92§  \99\92\92\92\99\99\99\96\99\96\99 \99 £ £§\99\9c\99\99¸\8f´´´±§£ \9c\9c\99\99\99\99\96\92\96\92\99\9c \9c ££ªª§­­±­§§§§£§§§£ \9c\9c\9c\99\99\92\92\85\85~wwwzp\81zztwtw~t~\81\85\88\8b\8f\8b\81\85\81\85~zzwz~ztAc~tpfccc\XcUU_fc\_fffffiiifccc\\URRNNGAAAA:==A:6630\0,""""%""""\1f\1f""%"%))00066:::=:3,000,6:=DGGKGGGAAA=A===A====A\85t~N\UXtpmtttzwtwpppmmzzzttfipmfmpffffcc___\_XXRXUNRUNNUUNUNUUUKDNKGDGAD=D==AAADGGNKXXXXXXXXXXXX\RRRUUUUXXUUUXXXX_cccccccccccc___c__\\\\XXXXUUUURRRRNNNNKKKGGGGDDDDAAA===:::::6663000,03333666==:=ADDAAAADGGDA:::6A:660663606333633,,,),0033336:63:6=66636:36:GNNNRRUXXXX\cmz\81\85\88\88\88\8b\8b\8b\88\88\85\85\85\88\88\85\88\8f\8f\92mifffc__ccccfcfiimpppttz~\81\88\88\8b\8f\96\96\99 ££§ª§ª±­­­­­­±­­±ª§§ª§§§ª§ª§ªªªª§§§§ª­ª­­­±´±¸¸¸´¸´´´»¸»¾»»¾Â¾Â»¾¸¸´±§­§§§£  \9c\9c\9c\9c\9c \9c\99\9c\96\99\99\9c \9c´»´ª§§§\96\88\85\81z\81z~~\81~~\81~~\81\81~~~zttpptmmiifiifiiipmpttzz\81\88\85\85\8b\88\92\92\92 \99ª­­­ªªª£ª´´¸¸»¸¾»»»»´¸¸¸¸»¸¸»¸»¸»»»¾»»»¾¾»¾»»¸¾ÂÂÂÂÅ»¸´¸±­±ªªª§ \99\99\9c\96\8f\8f\8b\88\88\85\85\85\88\8b\8f\8b\8f\92\96  £§ª­­»¸¸»ÅÅÅ\9c\96£ \9c\96\92\92\96\96\96\99\96\96\99\9c \96 £ §§\99\99\96\99´\8f±´±±ª§£ \9c\99\9c\99\96\96\96\96\96\9c\99 \9c ££­ªª­­±­§§§§§§§§§£\9c\9c\9c\9c\96\96\92\88\88~zwwzp\81zztwwz~wt\81\81\88\88\8f\88~\81~\81\81zwtzzwtDfzpmi\X_XU_RU_cc\\cffcfiffi__cX\RNNNKKADA=:::=6630,\0)")%\1f%"%"""""%%%),)30366:::==6:6006:=ADGGKGGGDAAAA=AAAAAAADGpzRcX\ttipippwtwtpmmiwzzwwfftmimmifcf____\_\URNXRRRRKNRUKRNRUUDGKGGDKAA=D==AAAAGDKNXUUUUUXUUUUUXNNNRRUUUUUUUXUXX\ccccc_cccccc______\\\\XXXXUUUURRRRNNNNKKKGGGGDDDDAAA====::::66660330366336:6===ADDDDDAADGGD==6::=:633363336363330,,,,0333666:=6:A:A:::6::=:=KRRRRUXXXUUX_t~\85\88\88\8b\8b\8b\88\88\88\88\85\85\88\88\88\85\88\8f\8f\8fmfcfcc\\_ccfffcimptptttwz~\88\85\88\8b\92\92\96\9c £§§§ª±­­±­­±­±­­§§£§£§§§§ªªªª§ª§§§§ª­­­­­±´±¸¸»¸´´´¸¸¸¸¾»»»Â»¾¸»´´±­§ª£££   \9c\9c\9c\9c\9c\9c \9c\99\92\99\99 \9c ­¸±§£ \9c\8f\88\85\85\81\81z\81\81\81\81~\81\81\81\81\85~~~~tppppmifiiiifimimpttw~~\88\8b\85\85\8b\8b\96\96\96£§­±­­ª±­±±¸¸»»»¸»»»»¾¸¸¸¸¸»»»¸¸¸¸»¸»»¾»¸»»»»»»¸»¾¾ÂÅž´´¸­ª­­­ª§ \99\96\99\96\8f\8b\8f\8b\88\85\85\88\88\8b\8f\8b\8f\96\92  ££ªª­»»¸¾ÅÅÅ\9c\96 \9c\9c\96\96\92\99\96\99\99\99\96\96\9c \99   £§£\99\96§´\8f±±­­­ª£ \9c\9c\99\96\96\96\92\96\92\9c\9c£\9c  £ª­ªª­­­ª§§§§§ªª££  \9c\99\96\92\8f\8b\85zzztzt\81zwwwwwzwp\81~\88\85\8b\85~z\81w~wtpwwtpwztmff\RRRU\RU\cc\U_cc\cffcf\\cX\RNNKKKDA==66::333,)\ 3)),%"""\0""%%"%%%),)33366:======:::::ADDGGKGGGADAD=AAAAAAA=DKpwUz\_ppfmfpptwtpppmmtz~wzicwmmmifcfc____\\XURKUNRNNGKGRKRKNRRDKKDGAKAAADA==D=DDDKKUUUUUUUUUUUUXKKKNRRRUUUUUUUUU\cccc___c___c______\\\\XXXXUUUURRRRNNNNKKKGGGGDDDDAAAA====:::666:03336::363::==ADGGGDGDADDGD::6::=666666333333600,,,000333::==A=ADAD===::=A=ARUUUUX\XXUUX\~\81\85\88\88\8b\88\8b\88\88\88\85\85\81\85\88\88\88\8b\8b\8f\92ifcc\cX\__cfffcmpptpttpwz~\85\85\8b\8b\92\8f\96\99\9c £§ªª±±±­ªª­±­­­§§§§£§§§ªªªªªªªªªªªªªª­­­±±´¸¸»»¸´¸»¸¸¸»»¸»¾»»¸¸±±­­ª§§£ £\9c \99 \9c\99\9c\9c\9c\99\99\96\96\99\9c\9c ­´ª£\9c\9c\96\8f\88\88\85\85\81\81\85\85\85\85\81\85\85\85\85\85\81\81~~wtpppmmiimimimmmpmwww\81\88\8b\8f\88\88\8f\8f\99\92\99§ªª±­±­´±¸´»»»»»»¾»»¾»»¸´¸»»¸»¸¸´¸¸´¸¸»¸¸»¸¸¸»¸¸¸»¾ÂÅž»¸¸­ªªªª§£ \99\99\96\92\8f\8f\8f\8b\8b\88\85\8b\88\8b\8f\8b\8b\96\96  £§§§ª¸»»ÂÂÅÉ \96\99\99\9c\99\92\96\96\92\99\96\9c\99\99\9c \9c\9c  £§§ª\96­±±±±­­ªª£ \9c\9c\99\99\99\96\8f\92\96\9c\9c£ \9c £ªªªª­ªªª§§§ª§ªª£§££ \99\99\8f\8b\8b\81~z~twt\81zzzzzzztt\81\81\85\81\88\81\81~~tztpitwpmtwiiccXRRNRXURXc__X\_c__cc_cX\_U\UKRNKKDDA=3666030)%"),0""%"\a"%%%"))%),,33336:====AAA=A=:ADGGKKGDGADAD=AAAADDA=D~pwwz\wmfciimttwpmpmmpwwzwwifwmpmffcccc___\\XRNGRRNKKGGGUKNNRNUGKGDD=G===DA==AADAAGGUUUUUUURRRRRUKKKKNRNRRRUUUUUUXccc_______________\\\\XXXXUUUURRRRNNNNKKKGGGGDDDDAAAA====:::666:36036:6666:=A==DKKGGDADDADA::666:6363333030003300,,,03336:6AGDGGGGKA====ADKDUXXXXX\XXXUX\\81\85\88\88\88\8b\88\88\85\88\85\85\81\81\81\85\85\85\88\8b\8f\92ffcc\_X\_\_ffifptpttptpwwz\81\85\88\8b\8f\8f\92\96\99  §§§­­­±§§­­ªªª§ª§£§§ªªªªªªª­§ªªª­ªªª­ª­±­´´¸¸»¸¸¸¸¸¸¸»»¸¸»¸»¸´±´ª­ª£££ £  \99\9c\99\99\99\99\99\96\96\99\99\99\9c  ±­£ \9c\9c\96\92\8b\8b\88\88\85\85\88\88\88\85\88\88\88\88\88\85\85\81~zwtpppmmimmmmmppmtpwzz\85\8b\8f\8f\8f\8f\92\92\96\96\99£§­±´´±¸´»¸»»¸»¾»»»»»»¸¸¸¸»¸¸¸´¸¸¸´±¸´¸¸¸»¸¸»»¸»»¸¾ÂÅž»¸±§­§ª££ \9c\99\96\92\92\8f\8b\8b\8f\8b\88\8b\88\8b\8f\8b\8f\99\99  £§§ª­´¾»¾ÂÅÌ \99\99\96\99\96\8f\96\96\92\99\96\99\99\9c\99     £ª§­­±±´±­­ª§§ \9c\9c\9c\96\99\96\96\92\8f\99\9c\99  \99££ªªªª­­ªª§§§§§ªª£§§£\9c\99\99\8f\8b\88\81\81~zzzw\81~~~zzz~ww~~\81~\85~\85~~iwmmmpwpmpmfc_UURNNRUUN\c_c\\\c\\___cXX\U\RNRNKGDAD=6333330,%%)03%\1f)"\11\1f"\0%\0))\ 3),,33666:===ADDDADADDGGGKKKGGADADADADDDGAAD~mttzwtmfcmiipptpmtppttwwttmitimiffccc____\\UNKKNRRNNKGGRGRKNRRRNDADAD=A=DA====D:=DGURRRRRRNNNNNRGGGKKNNNRRRXUUUUX__c__c______\\\___\\\\XXXUUUURRRRRNNNNKKKGGGGDDDDAAAA====::::66=66333::36:::===AGKKKADAD=AA=636363030000,0,,000,,,,,0366:=GKKKKKNNRGGGAADGNUXXX\XX_\_\X\c\81\85\88\88\85\88\88\88\85\85\81\81~~~\85\81\85\88\88\8f\92cc_c\\\X\_cffiitwtwttttww~\85\88\88\8b\8b\8f\8f\8f\96\9c\9c£££ªªª­§§ªª§ª§§§£ §§ªªªªªªª­ªªªªªªªªªªª­±±´¸¸¸´»¸´¸¸¸¸¸´´»´¸´´±´­ª§§££  \9c\9c\9c\99\9c\99\9c\99\99\99\99\99\99\9c\9c£ª±­£ \9c\9c\96\96\8b\8f\8b\8b\88\88\8b\88\8b\88\8b\8b\8b\8b\88\85\85\81~zttpppmmmpmpmppptwww~z\8b\8f\8f\8f\92\92\92\96\96\96\99£ª±´¸»´»¸¾»»»¸»»»»»»¸¾»»¸´»¸¸»¸¸¸´¸±¸±´´¸¸´¸»¸¸¸¸¸¾ÂÂÂÅž¸±ª­ªª£§  \99\96\8f\92\8f\8f\8f\8f\8f\8b\88\8b\8f\8f\8f\92\99\99£ £§§ª¸´¾»ÂÂɪ\9c\99\96\96\96\96\8f\92\96\92\96\96\96\96\99\9c\9c\9c£ \9c§ª§±­´´´­±­ªª§\9c\99\99\99\96\99\92\96\96\92\99\99\9c\9c \99 £§ª§ª­­ªªª§§§§­ª§§££\9c\99\99\8f\8b\85\85\85\81~~~w\81~~~zzzzww\81zz~\81\81\85~zmpimmittmc__\XXUNKNNRUR\fcc_\Rc\U\\__XXXU\RNNNKDDDD=33303030)),36)",%\ 3"\1f\ 3%\ 3)%\0%,)3366::==AADGGDGDGGKKKKKGDGADADDDDDGGGDAGziptwtppf_mffppttmttptpwwtmmipiifiicccc___\\RNNKKNNNNKDGNDUGNRUURGAGDG===AAAAA:A===DRNNNNNNKNKKKRGGGGKKNNNNRURRUUX____\___\\\_\\\\__\\\XXXXUUUURRRRNNNNNKKKGGGGDDDDAAAA====::::66=3330666036:6:::=DGKG=A=AA===633330,0,\1f,,",,),,,)0,0,036:=DKNNNRURRUNNNGDDRUXX\\__cccff\\m\81\88\88\88\88\88\88\85\85\81\81\81\81~~\81\81\85\88\8b\8f\8f__\_XX\X\\cfimmwztwwwtwww\81\88\8b\88\8b\8b\8b\8f\8f\92\99\99  \9c§§ ª§§ªªª§§£££££ªª§ª­ªªª­­­ªª­§ªª§§ªª­±±¸¸¸¸¾¸¸¸´´¸´±±¸´´±±­±ªª§ª§ ££\9c\9c\9c\99\99\99\99\99\9c\9c\99\99\9c \9c£­­ª§£\9c\99\92\92\8f\8b\8b\8b\88\88\8b\88\8f\8b\8f\8f\8f\8b\8b\88\85~~wttpppppipptpptpwwz~\81\81\8f\92\92\92\96\96\92\99\96\99\9c§­´¸»¾¸»»¾¸»»´¸¸¸¸¸¸»¾¸»»¸¸»¸»»´¸¸¸´¸´¸±¸¸´¸»»¸¸¸»»¾ÂÅž»¸±­ªªª§£  \9c\99\92\92\8f\8f\8f\8f\8f\8b\8b\8b\8f\8f\92\96\96\9c££§ª§­»±¾ÂÂÅ£§\9c\99\96\96\96\96\92\92\96\92\96\92\99\99\9c\9c\9c\99£  §ªª±­´´±ª­ª§§£\99\96\99\99\96\99\96\96\92\92\99\96\9c  \9c £§ªª§­­­ª§§ªª§­ªª£ £\9c\99\96\8f\8b\85\88\81\81~\81~~\85\81~\81~~w~zw\85w~~\81\85\85\81zpmfmiippic_\\XXURKKNNUU_cfccXRcXR\X\\XXXU\RNNNGGGDAA36633333,,066)%0)%%"\a),\ 3)\0%),3366:=A=ADDGKGKGKKKNNKKGADAAADADDGGKGGDKwimttmtti\iifppptppptpmwwtmifmiififccc____XXNKRKNKKKNGDDKDRGNNRURKKGGKA=A=A====A:::ANKKKKKKGKGGGNDDDGKKKKNNNRRRRRX____\\\_\\\\\\\\__\\\XXXXUUURRRRNNNNKKKKGGGGGDDDDAAAD=A==:=::66A3363666,33:666:==DGDAD==A:=:30000,),)\e)%\1f%)%,))),,0)036==GNRRRUXUUXRRUXRXUXX\c_ccfiippmm~\81\88\88\8b\88\88\85\85\85\85\85\81\81\81~\81\81\85\88\8b\8f\8b\_\\XXXX_\_fip~z~wwtttwzz\81\8b\8f\8b\8f\8f\8b\8f\8f\8f\96\96\9c\9c\99£\9c\9c£§£§ª§§£££££§§§§ª­ªªª­­­ª­­ª§ª§£§­ª­­¸´¸¸»¸´´´±¸±±­­±­±­ª­§§§§§££ \9c\9c\99\9c\99\96\99\9c\99\9c\9c\99 \9c£§ª­­§ \9c\99\96\92\8f\8f\8b\8b\8b\88\88\8b\8f\8f\8f\92\8f\8b\88\88\85~ztwttpttppptwttwpzw~\81\81\88\92\96\96\96\99\96\96\96\99\99§ª±¸»¾Â»»¾¾»»¸´¸´´´¸¸»»»»¸»¸»»»¸´´¸´±´´¸´¸¸¸¸»»¸¸¸»»Â»¸´­ª§ªªª££ w\9c\96\96\92\92\92\92\92\8b\8f\8f\92\92\96\99\96 £§§§­±¾±ÂÅÂÉ££ \96\96\96\96\96\96\92\96\92\96\96\96\99\99\99 \96£ ££­ª­­´±±ªª§§£ \96\96\96\99\92\96\96\96\96\92\99\96\9c   ££§ªª§­±­­ªªª­ªª§§£ £\99\96\92\92\8b\85\88\85\81z~~\81\88\85~\81~\81z~~w\81z\81\85\85\85\81~ztififimmfc\RXXUURKNNNUX\cccc\UcXRXX\XXXXU\UNNKGGGGDA3:366666033::,)3,))%3))
+)%%))03:::=AAADGGKKNKKNNKNNNGADA=DDADGGGKKKRNtimppmtwmXmmitptwmppttmzwtpfcmiffficcc__\\XXKGNGKGGKKGGGGARKNRRUUKNKKN=AA=A=====:::AKGGGGGGDGDDDKADADGKKKKKNNRRRRU____\\\\\\\\\XX\\\XXXUXUUURURRRNNNNKKKKKGGGGDDDDDAAAG=A==:=::66=6630333)3366336:=ADD=A===::60,,,))%\1f"\18"\18\1f\1f%")),)0)0,03:A=KNRUUX\XX\UXX\\c\\\_fcffimmttww\81\81\88\88\8b\8b\8b\88\85\81\88\85\85\85\85\81\85\81\85\85\88\8f\8b\\XUUXXU\\cfmt~~~zzwwwz~~\85\8f\8f\8f\92\8f\88\8b\8f\8b\92\92\8f\99\8f \99\99\9c££§§££§££§§§§§ª§ª­­ª­­­ª­ªªª§£§§ª­­­´±¸¸¸¸±´´±´­±­­­­­ªªªª£§£££    \9c\9c\99\96\99\99\99\9c\9c\9c£ §ªª­­ª£\99\99\96\92\92\92\8b\8b\88\88\85\8b\8b\92\8f\8f\8b\8f\88\88\81\81wptttttwttpwzwzzz~~\81\85\81\8f\96\99\99\99\9c \99§\99§´¸¸»¾¾Â¾¾»¾¾»¸´¸¸´´¸»¸»»»´¸¸¸¸¸´´±´¸´±´´¸´´¸¸»»»¸¸»»Â¾¾±ª±ªªª­ªª£££w\9c\99\99\96\96\92\92\92\8f\92\92\92\96\99\9c\9c££ªª§±±Â±¾É  £ \99\96\96\99\96\92\92\96\96\99\96\96\9c\99\9c \99 £ §ªªª­±­­ª§££\9c\99\92\92\92\96\96\99\96\96\96\96\99\99\9c££ ££§§­ª­±­­ªª­­ªª§§   \96\96\92\8f\8b\85\88\81\81~\81\81\85\85\88\81\85\81\81~~\81\81\81~\85\88\88\81~zwpifiifiic_\U\XUXNNNRRRUX__cc\XcUUXXXUXXUX\RKNKGDGDGA6:6::6:6360:=0,60,,)6,)\ e,%%%,366:==AADDGKNKRRNRRNRNKDAA==ADDGGGKKNNXwwiimmiptiUimitptwippttpzwwmfcmiffficfc__\\UUKGKDGGGGGGDGAARKKNNRUGNNKN==A=====:::::AGDDDDDDDDDDDGDDADDGKKKKKNRRRRU____\\\\\\\\\XXX\\XXXUUUURRRRRNNNNNKKKKGGGGDDDDDAAA=K====::::66:6330030,0033336::AADA=::=663,,"%%%\1f\1f\18\14\1f\18\e\e\e\1f%%,,,),,,0:AAKNRXX\_\\\X\___f___cififmppwwzz\81\81\88\8b\8b\8b\8b\8b\88\85\88\85\85\85\85\85\85\81\85\88\88\8b\8b\\UUUXUU\\_fpw~~\81z~wwzz\81~\8b\92\92\8f\8f\92\8b\8b\8f\8b\8f\8f\8b\96\8b\8b\96\96\9c ££§££££ §§§£§ª§ªª­ªªª­ªª§§§§§§§ªª­±´´´´´´´´±±±±­ªªª­­§ªªª£££    \9c \9c\99\99\99\99\99\99\9c\9c §£ªª­±­ª£ \9c\99\96\92\8f\8b\88\85\85\85\8b\8b\92\8b\8f\8b\8b\88\85~~ttwtttwwwwtwz~~z~\81\81\85\88\8b\92\9c\9c\9c\9cªªª¸´´¸»»¾¾Â¾¾¾»¾¾¾¸¸¸´´´´»¸»¸¸´¸¸¸´¸´±±±´±´´±´±¸»»¾»»¸¸¾¸¾¾¾»±ªª­­§ª­ª§£££  \9c\9c\99\96\92\96\92\8f\92\96\96\99\9c  ££ªªª´±¾´ÂÅÅ\9c   \9c\99\92\96\96\96\96\96\96\99\99\99\99\96\9c\9c\9c\9c  §ª§§ª­ªª§£  \9c\96\92\92\92\96\96\96\96\96\96\96\99\9c\9c £££§ª§­­­­­ªªªªªªª§§\9c \9c\92\96\92\92\8b\88\88\81\81\81\81\81\88\88\88\85\85\85\85\81\81\81\85\85\81\88\8b\88~zwwmifiififf_\X\XX\RNRNRNRU\\cc\\cRX\UXUX\UU\UNNKKGGAGD:6=:=:::6:3==306300,:,,\11,%))0336:==AADDGNRRUUURUUUNNGAAAAAGDGGKKNRUtwwmfcifmffXfiftppwipptptwwtpf_miffffcc__\\XUUKGGGDDKDAKDDAARNGNNNRDKNGN:=AA===A::=::=DAAAAADAAAADDAADDDDGKKKKKRRNNU___\\\\\\\\\XXXX\\XXXUUURRRRNNNKNKKKGKGGGDDDDAAAAAA=N==::::::66A3330333,0033336:=DDDD==6=330))")%""\e\18\18\14\14\e\18\e\e""))),),,3:=DNNR\\___cfcfcfcicccffiiimttzz~~~\81\88\88\8b\8f\88\8b\8b\85\88\88\88\85\85\85\85\85\85\85\85\88\8bX\XUUURUXX_ipw~~~~~zzz~\85\85\8f\96\96\92\92\92\8f\8b\8b\88\8b\8b\8b\8b\88\8b\8f\92\99\96 \96££ ££ £££ £§§­§­ª­ªªª­ªª§§§§§ª§ª­´´±´¸´¸±­­±­ªªªª­ª£§ª§££££££ \9c \9c\9c\9c\9c\9c\99\99\9c  §§ªª­±­ª§£ \9c\99\96\8b\8f\85\85\85\88\8b\8b\8f\88\8f\88\88\85\81~ztwttwwwzwwwz~\81\81~\81\85\85\88\8b\96\96    ±´»¾»¾»¾¾Â¾¾¾¾¾»´´¸´±±´¸¸¸»´´´¸´´´´­´­´±¸±´´­´»»¾»»»»¾¸»»´¸­ªªªªª§­§§£££££ \9c\9c\96\96\96\96\92\96\96\96\99\9c ª­­­­­´´»±¾ÂÅ\9c£  \99\96\96\96\96\96\96\96\99\99\99\99\99\96\9c \9c\9c  £§§£§§§ª£\9c\9c\96\99\92\92\92\92\92\96\96\96\96\96\99\9c  £  §§ª§ª­­­­­ªªªªªª§§\99\9c\9c\96\96\96\92\8b\8b\88~\85\81\81\85\88\8b\8b\88\88\88\85\85\85\81\81\81\85\88\88\85zmttiififcfcc__U\\\XNNNNNNKU\_cf\\cUXXUXU\\RU\RNNNKGDDGD::A:===:6:6=A33:6330=00\ 30)),363::==AAGGKRXX_XXXXXXRNGDDAGKGDKGNKRUzwwtifccf_ff\cffpmmwmppttwtttmf\miffffcc__\XXUUGDGGGDGADGGGAANNKNKKNDKKDK:==D=====:::==A::===A=A=AAD==AADDDGKGKKNRNNR___\\\\\\\\\XXXXXXUUURURRRNRNNNKKKKGGGGGDDDDAADDA==ANA::::::636D00030000336366:=ADDAAA:3:0,,,)"%%%%\18\18\18\14\14\18\14\e\18\1f\1f%%,,)))3==GKNU\\cccfifififmffffffiimttzz~z~\81\88\88\8b\8f\8b\8b\8f\88\8b\8b\88\85\85\81\85\85\85\85\85\88\8bXXXURRRUXX_ipw~\81~~\81~zz\81\88\88\92\96\96\96\92\96\92\8f\8f\88\88\88\88\81\85\88\88\8f\96\92\96\92        £  §£ª£ª­ªªªªªªª§§§£§§£§­±±´¸´±´­­ª­ªª§ª§ª§§ª§§£§££  £  \9c   \9c\9c\99  £§§ª­­±±­ª§£ \99\96\8f\92\85\85\88\88\88\88\8b\88\8b\88\85\85~zztwwtwwwzzwzz\81\85\85\81\88\88\88\8b\8b££££ªªÂ¾¾Â¾Â¾Âž¾¾¾Â»»¸´´´­±´´´´¸¸´±¸´´´±±±±±´´´´±±´¸¾¾»»»¾»¸¸¸´­­ª§ª­ª§ª§§£ £ £  \9c\99\96\96\96\92\96\96\96\96 ª­´´±±­±¸¸±»ÂÂ\9c£  \99\96\96\96\96\96\92\99\99\99\96\99\99\99\9c \9c \9c\9c£££££§§§ \99\96\92\99\92\8f\92\92\96\99\99\99\99\99\9c   £ £ªªªªª­­­­­ª§ªªªª§£\9c\9c\9c\99\96\92\92\8b\8f\88\81\85~\85\85\85\8b\8b\88\8b\85\88\88\85\85\81~\85\85\85zwimpifffccfc_c_U_\_UKKKNKNKU\\_f_\cUUUUXR\\UU\RNNKGKGDGGA=D=AA==6=:AA66::663A00\03000666::==AAGKNffcfc\\\\XRRGGGAKURGRNRKXzwtttifccf_ff_cffppmwippttwpppif\mifffccc_\\XXURGDDDDDKDGGDDGD=KNKKGNGGG:A===DA===:::::=:::::==:=:==A====DDDDGGGGKNNNR___\\\\\XXX\XXXXUURRRNRNNNKNKKKGKGGGDGDDDADAAADD=A=AND::6:66633G,00000330063::::DGDDAA:660,))%"%%""\e\1f\e\14\18\18\18\e\18\e\e\1f)0,,%,3D=GKRU\_cfiimimimimiiccffiimptwwzz~\81\85\88\8b\8b\8f\8f\8f\8b\88\88\8b\85\81\85\85\85\85\81\81\85\88XXURRNRRXXcipt~\81\81\81\81~~~\81\85\8b\92\96\92\92\96\92\92\8f\8f\8b\8b\88\88\81\81\85\85\8b\92\8f\92\92\99\9c\9c\9c\9c \9c\9c  \9c£ \9c\9c§ª­ª­ª­ª§ª§££££ £ª­­±´±­±ªªªªª§§§£§££§§££££§£££    ££     §§§ª­±±±­ªª§£\9c\99\92\8f\88\88\8b\85\85\85\88\85\88\88\85\85\81~ztzzwwwzwzwzz\81\85\88\85\8b\8b\92\99ª§§­­¾ÅÅÂÂÅž¾Â¾¾¾¸¸¸´±±±±´±¸¸´´´±¸±´±­­±±´´´±´´´´»¾¾»¾»»»»¸´´­±ª§ª­§§ª§§£ £  £ \9c\99\96\96\96\96\96\92\99\99£­¸¸¸´­ª­´´´¸¾¾ £  \99\96\96\96\99\96\92\99\99\99\99\96\99\99\9c   \99\9c£ £££§§£\9c\96\92\92\96\92\8f\92\92\99\99\9c\9c\9c\9c\9c  £££§§ª­ª­­­ª­­ª§ªªªªª£  \9c\99\96\92\8f\8f\8f\88\85\81\81\81\88\88\88\88\85\8b\85\85\88\85\81\81~\81\81~wpiiffccc_ccc__cXc\_UKKNKGKNRXX\fc\cRXRUUU\_UU\RKKGGKGGGDD=GADDAAAA=DD::==::6D3336333::6:===AAGKRmifif__\_XURNKNRXXUXc\Rzwztpppicc_cccf_ffippmwipmpptmpmff\mifffcc__\\XUURGDDAADGGKGAGKG=GNGNDKGDK:AAA=GA====::::=6::=6:::====A:::=ADADGGGGGKNNR___\\\\\XXXXXXXXUURRRNNNNKKKKKGGGGGDDDDDAAAAA=AAA===ND6:3663303D,0003303006:AAAADGDA=A6:63))%%%))"%\1f"\e\18\e\18\e\e\e\e\18\e%0,0A3:GGGRRX\cmmmmpmpmmmimicffffimptwzwzz~\81\88\8b\8b\8b\92\8f\8f\88\8b\88\85~\81\81\81\81~\81\85\85XUURRRRRX\fimw~~\85\81\81\81\81\81~\81\8b\8f\96\92\92\96\92\92\92\8f\8b\8b\88\85\85\81\81\85\88\8b\8b\8b\8f\92\99\99\99\9c\9c\9c\99\9c\9c\99\99\9c\99\99£§ªªªªªªª§§£ £££ §ªª­ª­ª­ª§ª§§£££  £ ££  §££§ £   ££££££££§§ªª­­±±±­ªª§ \9c\96\8b\8b\88\88\85\81\85\81\81\85\85\81\81\81zzwzzwwwwzwwwz\81\85\8b\96\9c\9c\99´´ª´¾¾ÂÉÅÅÅÉÅÂÅÅÅž¾¾¾¾»´´¸¸±´­´´´´´´´¸´¸´´±­ª­±±±±´´´±´¸»¾»¾»»»»»±´ª­ªªªªªª§§£££££££  \9c\99\99\96\96\96\96\99\9c§±»»»´­ª­±±¸¸»» £  \9c\99\96\96\99\92\92\96\96\9c\9c\96\99\9c\9c\9c £\99    ££££ \99\92\92\92\92\92\8f\92\96\96\9c\9c  \9c    £§§§ª­­ª­­ª­­ª£§§ªªª£££\9c\9c\96\92\8f\92\8f\88\81\85\85\85\88\88\85\85\81\88\85\81\85\85\81~z~tzmmfffccc__c___cc\c\\UKNKKDGNNURXf__cRUNUXX\_RU\NKKKKKGDDDGAKDGGDDDD=DD=:===::G:::::::=::==:=AAGKptpimic___UURRNRX\\c_fmpwwzttppicc__c_f_ifmpmiwmpipmtmmiii_mifffcc__\XXUURDAAAAGKGGGDDNKAGKKNAGDDG=AAD=GD===:=:::=366=:::=====A:::==AADDDGDKGKKR\\\\\\\\XXXXXUUXUURRRNNNNKKKGGGDGDDDADAAA=A======:::NA6636300,0A03,0333633:=DDDDDGGDA=66:6))")%%)%%\1f%\1f\e\18\e\18\1f\1f\e\e\e%,,=D:=KKGU_fmmpppptmpmmmmmifffcfimpwwwwwwz\81\85\88\8b\8f\92\8f\8b\8b\88\85\85~\81\81\81~\81\81\85\85XURRUNNR\_ifmzz\81\81\81\85\81\81\81~\85\88\8b\96\92\92\92\92\92\92\8b\8b\8f\85\85\81~\81\85\88\85\88\88\8b\8f\96\92\96\99\99\99\99\99\99\96\99\99\96\99 £§§ªªªªª§£      £§£§§ª§§ª£§§£ £ \9c   £ £ £ ££££ ££££§§§§§£ªªª­­±±±­­ª§£\9c\9c\92\8f\8b\88\88\81~\81\81\81\85\85\81~\81zzwwzttwwwtwtz~\88\8f£±´¸»¸»¸ÂÂÅÅÅÅÉÉÅÂÉÉÅÅ»¾»¾»´´´´±´±´´´´±±´´´´´´±ªª­­­­­±´´´´´¸¾¾¾¸»¾¸»±´ª­ª­­­ªªª£§£££££££ \9c\96\99\96\96\99\99\9c ª±¸¸¸±­§­ª±¸»»£   £\9c\9c\96\96\99\8f\92\96\99\99\9c\99\9c\9c    \9c   \9c    \96\96\92\8f\92\8f\8f\8f\92\96\96\9c\99 £   £££ªªª­±­­ª­ª­­§ §§§ª§§§£\9c\9c\99\92\8f\92\8f\88\85\88\81\88\85\85\81\85\81\85\85~\81\81~zwzpificcf____\_\\_cf_c__UKKKKGDKKRRUccccRRNUXU\_UU\DGKGKGDGGDDDNGKGDDGDAGGAAADD==K==========A==A=AGNtwzzpiccc\\XUURX\__fcimptwwttpmfc_c___f_fimpiiwppmpppppiiicmiffcc__\\XXURNDA===DNGKKGDNGADGGK::ADD=A=G=GG===::::==6:::=:=:::::=666====AAADDGGKKN\\\\X\\\XXXXXUUUUURRRNNNKKKKGGGDDDDAAAAA=====::::::6N63333030,00,0,03666666AGGGGGGKDA::::6%)%)))%))")"\1f\1f\1f\18"\1f\e\1f\1f"),AGDGKRUXiipptttmtppmmpmpffccfffmpwwwwwzz\81\85\88\8b\8f\92\8f\8b\8b\8b\85\81\81~\81\81\81\81\85\85\85XXUURRUN_ciimwz\81\81~\81~\81~~\81\85\88\92\96\96\92\92\96\8f\8f\8b\8f\85\81\81~~\81\85\85\85\85\88\8b\92\92\8f\96\92\96\99\96\96\92\96\92\8f\96\99\8f\99£§§§§ª§ £ \9c\9c   £ ££§£ª§ ££   \9c\99 \9c  \9c    ££ ££§£§££§§§§§ª­ª­±±±±­­§£ \9c\99\8f\8f\88\85\85~z~~\81\85\85\85\81\81~~wwwwpwwtwttwz\8b\92´´¸»¾¾¾ÂÅÅÉÅÅÅÉÉÉÅÅÅÅÅž»¾»»´±±±±±±¸´´±±´´´±´´±±ª­ªªª­ª´´´¸¸¸»»»»»»»¸»´´ªªª­ª­ªªª§§§§§£££  \9c\99\99\96\96\96\96\99\9c§­´¸´±ªª­­±´¸£     \9c\9c\99\96\99\8f\96\96\96\99\99\9c\9c  £        \9c \9c\96\96\92\8f\8f\8f\92\8f\92\92\96\99\9c     £§§­­­ª±ª±ª­ª­ª£ £££ª£§§£ \99\9c\92\92\8f\92\88\88\8b\81\85\85\85\85\85\85\81\81~~~zwtwifcfc_c\\\\X_X\cfiffc_XNKKKGDGKNRR_ffcNRUXXU\_UU\DGKGGKDGGAADRGNGKKKGDKKDDGGGAAKAAAAAAAADAAA=A=AGN\88\88\88\8bwifff__\XXU\__fifmppptwttpmffcc_\_f_fiipifwmtpmmmpmifffmiffcc__\\XUUNNAAAAADKGNNGDNKDAGGG::=D==A:DADG=AA:=:::=:===:::::=::=666:A==AAAAADGGGNXXX\XXX\XXXXXUUURRNNNKNKKKGKGGGDDDDAAA===:=:::::66:6K33303000,,000,0333:6::DGGGGKKGAA6=:66%)))))%%%%,%""""%"""\1f")GDDGKRX\fmmttttwptpmpppppiccccffmtwzwzw~~\81\88\88\8f\8b\8f\8b\8b\8b\88\85\81~\81\81\81\81\85\85\85\85X\XURXXUcfmmpw~~\81z~~~z\81~\85\8b\8f\96\96\96\92\96\92\92\8b\8f\85\81~~\81\81\85\81\81\85\88\8b\8b\8f\8f\92\96\96\96\96\92\8f\96\92\8f\92\8f\8f\92 \99£££§£\9c \9c\9c\9c\9c\9c\9c\9c   £ §£  £\9c  \9c\99\9c\9c\9c \99\9c\9c \9c   ££§§£££§§§§£ªª§ª­­±±ªª£ \9c\99\96\8f\8b\85\81\81ww~~\81\81\85\85\85\81~\81wwtttttttptww\88\92¸¸»¾ÂÂÂÅÉÅÉÅÅÅÉÉÉÅÉÅÉÅž¾»»¸¸´±±­­­±´´±´±±±±±¸´´±­­­­­­­´±±¸»¸»»¾»¾¾»¸»¸±ª­ªª­­§ªª£§ª§§£§£  \9c\9c\96\96\96\96\96\99\9c£ª±´±­§­­­±±¸£ \9c   \99\9c\99\96\99\92\92\96\96\99\99\99\9c  £\9c \9c\9c \9c\9c \9c \99\96\96\8f\8f\8b\8f\8f\8f\8f\92\96\99\9c      §ª­­±­±­­ªªªª§ ££  §£§££ \9c\9c\96\96\92\96\92\8b\8b\85\85\85\81\81\81\81~~~zzwtpcfc___\_XXXXU\X_fimii__\RNKKDDGKGNKRcic\\X\\U\_XU\DKKGGGDGGDDGUKNKNNNKDKKDGNKNDDKDDDDDDDDGDDDAA=AGN\8b\8b\8b\8f\8b\85iifcc_____c_iiiipmpwwwtpmffcf_\_c_ifipmiwitpmmppimcicmiffcc__\\UURKKD==ADAGDKKDGNKGDDDD:6:A::=6DDAD==A:A:::A==A======:66::66:=::==ADADDGGKXXXXXXXXXXXXXUUURRNNNKKKKGGGGDDDDDAAAA===:=:66:66366G300000,,),003,30366::=DKGGKGKGAD:=:3:))%)%)%)%%,)%%%%%%%""%GDGGKNU\cippwwwwwttppppppmiffccffmpwzwzw~~\81\85\88\8b\8b\8f\8b\8f\8b\85\85\81\81\81\81\81\81\81\85\85\88\X\X\\ccfipmpw~\81~z~zzz~~\81\8b\8f\96\96\99\96\92\96\8f\8b\8f\88\81~~~~\81~~\81\85\88\88\8b\8f\92\92\96\96\92\92\8f\92\92\92\8b\8b\8b\8f\8b\92\92  £ \9c\9c\99\99\99\99\9c\99\9c\9c\9c £\9c£ £££  \9c\9c\9c\9c\9c\99\9c\99\99\99 \9c \9c   ££§££££§££ª§£§ªª±­§§  \99\96\92\8f\88\81~\81zzz~~\81\88\88\85\85\81\81ztttttpppppwt~\92»¸¾ÂÅÅÅÉÉÉÉÅÅÉÅÉÉÅÅÅÅž¾»»»¸´±´ªªª­±±±´­­±´´¸¸´±±ªª­­­ª±´´´¸¸¾¾¾»»»»»»¸´­±ªªªªªªª§ªªª§£ª££ \9c\9c\99\99\96\96\99\9c  ª­±­ª§ª­±´´»  \9c  £\9c\99\99\99\99\92\92\96\96\99\99\9c\99  £  \9c\9c\9c\9c\9c \9c\9c\99\96\92\8f\8f\8f\8f\8f\8f\8f\92\96\99\9c\9c ££ ££ª±±±±±­­ªªª§£ ££ \99§§§§£   \99\96\96\99\96\8f\8b\85\81\81\81~~~z~zwppmmfc_\_\XXURURUXXcfmpmf_c_URKGDGGKGNNRciccc_\_\\_XU\GNKKKGGGGGGGUNRNRRNNKNNNKRNRGKNGDDDDDDDKKGGDDAAGN\8b\8f\8f\8b\8f\88mmiifccccccmmpmmpptwwwtppii_f\\_c_ffimpiwmptmmmmfp_m_miffc___XXURNGGDAADA==AGGGKKGDA6A=666=66:6AAAA==A=D:A==AAA===A==::6:6336=::===A=ADDGKUUUXXXXXXXXXXUUURRNNNKKKKGGGDDDAAAAA====::::66:63333D000,0,,,))3,300336366=DGDGKKKGDD==:6=,,"%%%)))%)))))))))%"%GGKKKXXppmttwzzzzttppppmppmifffffmpwzwzw~~\85\85\88\8b\8b\8f\8b\8f\8b\88\85\85\85\81\85\81\85\81\88\85\8b_X\\fcifimpptw~~~w~zwzz~\81\88\8f\92\99\9c\96\96\96\8b\8b\8f\85\81~~\81\81~~~~\81\88\8b\85\8f\96\92\96\96\96\92\8f\92\8f\8f\8b\88\88\88\8f\8f\8f\8f\9c\9c\99\99\9c\99\99\99\99\99\99\99\9c\99\9c \99  £££ £\9c\9c \9c\9c\99\9c\99\9c\99\9c\9c \9c \9c\9c££££   £  §§£§§ª­ª£ \9c\9c\99\92\8f\8b\85\81\81~~z~~~\85\8b\8b\85\88\85~~twtttmmmmptt~±¸»¾ÂÅÉÅÉÉÌÌÉÉÉÂÉÉÉÅÉž»¸¾»¸´±±ªª­­­­±±±­±±´¸¸¸´±­­­ªª­­´´´´»¾¾¾»»»¾¾»¸±­­ªª­­ªªªªªª§ª§§£   \9c\99\9c\96\99\9c\9c£ §§ª§§ªª±±¸´ª  \99 \9c£\9c\9c\99\96\99\92\96\96\96\99\99\99\99  £ \9c\9c\9c\99\99\9c\9c \9c\99\96\96\92\8f\8f\8b\8f\8f\8f\92\96\96\99\99£ £ §£ª±±±±´­­ªªª£§   £\92§§§§£ \9c \99\99\96\96\96~w\81~~~z~z~zwtmpiffcX\_RUURNRUUU\ffmmmicc_XRKGGGGGGNNRRfffic_c___XU\NNNNKGDGKGGKXNRNRUURNRRRNURUKRNGGGGGGGGRNNGGGDDKN\8b\8f\8b\8b\92\8b\8b\85zwpiiiiffpptpptttwtwttmim_i\X\c_ciimpptmtwppmmitcm\miffc__\XURNKDDGDAA=A:D:DDGA:A=6::36333333==AAAAA=GADAAGD=A=A=A=:66=6336==::====AADDKUUUUUXXXUXXXUUUURRNNNKKKKGGGDDDAAAA====::::666663330A0,,,,,))%)003,303:66:AAGGGGGKGGAAA:::0)\1f"%)),)),))))),,,%")KGNNU_pttpwww~zzwttppppmptpmfiiffiptzz~z~~\85\85\88\8b\8b\8f\8b\8f\8b\8b\85\85\85\85\85\85\85\85\88\88\8bcfc_ifmimptttw~~~w~wwwz~\81\88\8f\96\96\99\96\99\99\8f\8b\8f\88\85\81\81\81\81~\81~~\81\85\88\88\92\96\92\96\96\96\92\8f\92\92\8f\8b\88\85\88\8b\8b\8b\8f\92\96\96\96\99\96\96\96\9c\99\99\99\99\9c\99\9c\99\9c\9c£ £ £\9c\9c \9c\9c\99\99\96\9c\96\9c\9c\9c\99\9c\99\99 ££ £\9c\9c \9c\9c££ £ §ª§ \9c\99\99\96\8f\92\88\85\85~z~z~\81\81\88\8f\8b\88\88\85\81~wwwttmmppttw~\92»¾¾ÅÅÉÉÉÌÌÌÌÉÉÅÌÉÉÅÅɾ»»¾¸¸´±±­­­­ªª±±±±­±´¸¸¸´±±±±ª§ª­¸´¸¸¸»»¾¾¾¾¾¾»¸­±­ªª­­ªªª§ªª§ª§£§££ \9c\9c\9c\99\99\9c\9c£ §££££ªª´±´±ª£ \9c \99£\9c\9c\96\96\99\96\92\96\96\96\96\99\9c\9c   \9c\99\99\96\99\99\99\9c\99\99\96\96\8f\8f\8f\88\92\8f\92\92\99\96\99\9c   £§£­±­±±´±±ªªª£§£  £\9c§§§§££\9c\9c\9c\96\99\92w~wwzzzw~w~ztipmmcfcXX_RURRRRUUX\iipmmicf_XNKGGGGGKNNRRciimmcccc_\X\URNNNGGKKGGKXNURURXXRURURUUXUX_KKKK\RRRpRRKKGGGK\88\8b\8b\8b\8b\8f\88\8b\88~\81zttpmmpttwttpptwtttppfpci\\Xc__ffppttmpwpppmppim_miffc_\\URNGGDDDAAAA==A=:ADA6A:6:636333333::=AADDAGGGKGKGKGA=ADA=AAD:666===:====AAADGUUUUUUUXUXXXUUUUNNKKKGKGGGDGDDDAAAAA==:::6:663333300:0,,,,)))%%3360336::6:ADDGDDGGGKAA==66,%\1f\1f"),,)),,,),)3,,:GKKNRXXmtwwtwzzzwwwwttpmmmpptmimmiimmpwz~~~\81\85\88\88\88\8b\8f\8f\8f\8b\8f\88\85\85\85\85\85\85\85\88\8b\88fimimpttttttww~~zzzzttz~\81\8b\8b\92\92\96\96\99\96\92\8b\8b\88\85\85\85\81\81\81\81~~~\85\88\8b\8f\92\92\96\96\92\92\8f\8f\92\8f\8b\8b\88\88\88\88\88\8b\8f\92\96\96\96\99\96\99\99\96\96\96\99\99\99\9c\99\9c\9c \9c§£  \99\9c\99 \9c\9c\99\9c\96\99\99\99\99\9c\96\99\9c£   \99\9c\9c\9c\99 £\9c  §§§ \99\96\8f\92\8b\8f\88\85\85\81\81\81\81\81\85\88\8b\8f\8b\8b\88\88\81zzzzwttpmmppwz\85\81»¾ÅÅÉÉÉÏÌÏÏÌÉÉÌÉÉÅÅÅž¾¾»»¸¸´±±­ª­­­­­±±±ª­±´¸¸´´±±±­ª§±´¸»»»¾¾¾¾Â¾»¸­±±ª­­­ªª§§ªª£§££££     \9c\9c\9c\9c  £££  ªª¸´±­ª  \9c \9c£\9c\9c\96\99\99\96\92\96\96\96\96\99\9c \9c\9c\9c\9c\96\99\99\9c\96\99\9c\99\99\99\92\92\8f\92\8f\92\8f\92\92\99\99\99  £££§§ª±±´±´±­ªªª§§§£ £ ªª§ª§§\9c\9c\9c\96\96zz\81~wtpww~izwtfpmmffcXX_RURRRRUU\_iimiiiff_XNKKDKGKKRNRN_mmppfcff__c\XURNRNKKKKGKXRXUXR\\NUUXUUXXX\c_cKmffmUtwXRRRR\85\88\85\88\88\8b\88\8b\85\8b\85\81\85~wwtpwwwwwtptptttttppcpfi__\c__ffpmwtptwtptwtpmmcmiff_\\XUNKKGDGDAAA==A=:::==:=:36363333333::=AAADAGKDNKNKNKD=AADADDG:363:==:::====DDGRRRUUUUUUUUUUUUUNNKKKGGGGDDDDDAAADA==A:::6663336000,6,,,),)))%%3330303:66:ADDDGADGDG==3:33)"\e\1f\1f),),,,,,,,,60DKKNNRX\ctwwwwzzzwwwtwtpmmmmpptpmpmmmppptz~~\81\81\85\85\88\88\88\8b\8f\8f\8f\8b\88\85\85\85\88\85\85\85\88\8b\88impmwtwwwwwwwz~~zzwwptw~\81\88\88\8f\8f\92\96\96\92\96\88\8b\8b\85\85\81\81\81\85~\81\81\81\85\88\88\8f\92\96\96\92\96\92\8f\92\8f\8b\8b\8b\85\88\85\85\85\88\88\8f\92\92\96\96\96\99\99\99\99\99\99\99\99\99\99\99\9c  ££ £\99\99\99\9c\99\9c\99\99\99\99\96\96\99\9c\96\99\99 \9c\9c\9c\99\99\99\99\96\9c \99 \9c£§§ \92\92\8f\8f\8b\8b\88\88\88\85\85\85\85\85\88\8b\8b\8f\8b\8f\8b\88\81\81zz~ztwtppptt~\88\81¾ÂÅÅÉÌÉÏÌÓÏÏÉÉÌÉÉÅÅž¾»»´´´±±±ª­­­­­­­­­ª±±´¸´´´´±±±±±´»»¾¾Â¾¾Â¾»¸±´±ª­­­­ªªªª§££££   \9c     \9c\99\9c £££  ª­¸¸´ªª£ \9c \9c£\9c\99\96\99\99\99\96\99\99\99\99\9c\99\9c\9c\9c\99\9c\96\99\99\9c\96\9c\9c\99\99\96\92\96\92\92\92\96\8f\92\92\99\9c\9c£££§§§ª±´´´´´­­­§ª£§§££§£­­§§§§ \9c\9c\96\92~z\81\85~tpwwziwtpitpmic_XX_RURRRRUX_cififffifc\RKNDKGGKNKRN\ppmticiffcf__UUNNRNKNKKK\NUX\X\_NXXXUUXU\_fcfmpimpmtzzzUX\81\81\85\85\85\88\8b\85\85\85\88\81\81\85\81zzwtzzzzwtpttttwtppp_tcic\X___ffmptttwwwttzwtppfmifc_\XXRNGKKDGA===:==::66A:6:63:360033000:==DAADDDNGRNRNRNGAADDDGGK63:66=:=:::==AAAGRRRRRUUURUUUUUUUKKGGGGGDDDDDAAA=AA==A===:6:63333000,0,,))))%%"%3630333663:=DAAD=ADAD,:%0,%"\e\18\e\e%,),,,,,000:=GNNRRUcppwwwwwwwzzwttttpimiippppptpppttttw~~\81\85\85\88\88\88\88\88\8f\8b\8f\8b\88\85\85\85\88\85\85\85\88\88\88pptpzzzzzzzzw~\81~zwttpttz~\85\85\8b\8b\92\96\92\96\96\8b\8f\8b\88\88\81\85\85\81\81\81\81\85\85\88\8b\92\92\92\92\92\92\92\92\92\8f\8f\8f\88\85\85\81\85\85\85\8b\8b\8f\92\96\92\96\96\99\99\99\99\99\99\9c\99\99\99 \9c\9c  \9c \9c\96\96\99\99\9c\9c\99\96\96\92\92\99\99\96\96\9c\9c\99\99\96\96\96\99\96\96\99\9c\9c\9c\99 ££\9c\92\92\8f\8b\8b\8b\8b\88\8b\88\88\88\88\88\8b\8f\8f\8f\8f\8f\8b\88\85\85~~\81zwztpttww\81\88\85»¾ÅÉÉÌÌÏÏÓÏÏÌÌÌÌÉÅÅÅ»»»¸´´´­±±­­ªª­ª±­±±ª­±±´´´´±´±´´´¸¾¾¾¾Â»¾¾¾»»´´±­±±­­­ªª§§£§££\9c\9c\9c\9c  \9c\9c\9c\9c\99 \9c ££££§±¸´¸­ª£ \9c \9c£\9c\99\99\99\99\9c\99\96\9c\99\99\99\99\9c\9c \9c\99\96\99\99\9c\96\99\99\99\99\99\96\99\96\92\96\96\8f\96\99\9c  §£§£ªª­´¸´´´´±­ª§ª§§ª§£ª§­ª§£§££\9c\99\99\96\81w\81\88\81tpzzzfwppmtpmfc_UX_UUNNURX\_ffcfccffcc_UNRKKKKNNGUKXpppXicmcmfifc\\NUUNNNKNN\NRU\\\\N\XURUU\\ciiiptpptptzzz~\81\81~\85\81\85\85\88\81\85\85\85~\81\81\85~~zw~~zzztppptttttppftcic\U___fippwttwttwtwwwppimfcc_XU\RNGKGGG=::=:::6:33=66:336633000000:==AAAGDDKGRRNRNNGDDGGGKKN366::=:=:6::A=AAGRRRRRRRUURRUUUUUKKGGGGDDDAAAAAAA==A=A::=66:63333000,,,))))%%%""33606633636=A6A:::A=%)\14\11,\ e"\18\14\14\18\18",,,,0),033=AKRXXcwwttzwwwwwtzzwtppppfiiippppttttptttww~~\81\85\85\88\8b\88\8b\88\8f\8b\8f\8b\8b\88\88\88\88\85\85\85\88\88\88ttwt~~~~\81~~~~~\85~wtppmtwzz\81\85\88\88\8f\92\92\92\96\8f\8f\8b\8b\8b\85\88\88\85\81\81\81\85\85\88\8b\96\92\92\96\96\92\96\96\92\8f\8b\92\88\88\88\85\85\85\85\8b\8f\8f\92\96\92\92\92\96\96\99\99\9c\99\9c\9c\9c\9c \9c\99  \99\9c\99\96\96\99\96\99\99\96\92\92\92\92\99\99\92\96\99\99\96\8f\92\92\96\96\92\96\96\99\99\9c\96\99  \99\96\92\8f\8f\8f\8b\8b\8b\8b\8b\8b\88\8b\8b\8f\8b\8f\8f\8f\92\8b\88\88\88\81\81\81~z~wttttw\88\88»¾ÂÅÉÉÌÏÏÏÓÏÏÌÌÌÌÉÉÂÅ»»»»´´±ª­±­­­­­­±ª±­­±±±±±±´´´¸¸¸¸´Â¾ÂÅ»»¾»»»´´±±±±±±±­­ªª£§££ \9c\99\9c \9c\99\99\9c\99\9c   £££§§±¸´¸±­§   \9c£\9c\9c\99\9c\99\9c\99\99\9c\9c\99\99\99\9c\9c \9c\9c\99\99\9c\99\99\9c\9c\99\99\9c\96\9c\99\96\96\96\96\99\9c  £§§£§ª­±¸¸´¸´´±­§ªªª§ªª§ªªª§§£§ £\9c\99\96\96~t\8f\8b\85wp~wzfwipwwmicc_UX\XUNRURX\\cc_\__fc_ccURRNNNNRKDUGUpmtXwzpmtmpifccUXUUURKNN\RNX\_\XRXXRNUR__cmmpwwttwmzz~~~\81\81~\81\81\81\85\85\81\85\81\81~\81\81\85~\81~z~~zzwwptpttttpttmwfmc_Uc_\ffmmwwtwwtwwztwptmmic_\URXRRKGKGD=:6::6:6:63:336333333000000::==DDDGGGGNUKNNKGDGGKGKKN3:==::=::6:6A:A=DNNNRRRRRRRRRRUUUGGDDDDDDAAAAA========:=:66633333000,0,))))%%%""30606636666:A3=,66%"\14\11\a\ 3\ e
+
+
+\ e\11\14\e%,,,00),336:DUR\zwzzwwzwzwwwtwwwtpmmmfffippttwtwttpttwwzz~\85\85\88\88\8b\8b\8b\8b\8b\8f\8b\8b\8b\88\88\88\88\85\85\88\88\8bwwzw~\81\81\81\85\81\81\81\81\85\85\81ztppmtwzz~\81\85\85\8f\8f\8f\92\96\92\92\8f\8f\8b\88\88\8b\88\81\81\81\85\88\88\8f\96\96\96\99\99\96\99\96\96\96\92\8f\8b\88\88\81\88\85\85\88\8b\8b\92\92\92\92\92\92\96\99\99\99\9c\9c\9c    \9c\9c\9c\92\96\96\92\99\96\92\96\99\92\8f\8f\92\92\96\99\96\96\96\96\92\8b\8f\8b\92\92\8f\92\8f\96\96\99\92\9c\9c\9c\99\96\92\92\92\92\8f\8b\8f\8f\8b\8b\88\8b\8b\8f\8b\8f\8f\92\8f\8f\8b\8b\8b\85\81\85\81~~wwtwww\8b­»ÂÂÉÅÉÌÌÏÏÓÏÌÌÉÌÌÅÉž»»»»´´­­­±±±±­±±±ª±±±±±­±­­±´±»»¸»±¾Â¾Â¾»»»¸¸¸¸´±´±´´±´±±­­§§£ \9c\9c\99\99\9c\99\99\96\9c\99\9c\9c £££££§´¸±¸´­ª£££\9c£\9c \99\9c\9c\9c\9c\9c\9c \9c\99\99\9c\99 \9c\9c\99\99\9c\9c\9c\9c\99\9c\9c\9c\9c\9c\9c\9c\9c\9c\9c\9c  \9c£§§£ª­±´¸»¸¸¸´´­ª­ªªªª­ª­ªª§§££   \99\99\96~t\92\8b\85\85p\81wzfwitzwifc_\UX\\XURU\XXXX\XX\\c_\__URRRNKRUNGRA\0tmw\z~ttwttmmiic\XXXUNRR\RK\__\XRXUKNXUcicpptzzwwzt~~\81~z\81~~\81~\81\81\85\81\81\81~~\81~\81~~~zz~zztwppppttttttpwfmfcUc_\ffmitwwtzwzwzwwppimfc_\UUUURKDGKAA::6=6:663333333330003,,0,,:===GADDGGGKRGKKNNGGGKKKNR36A===:::6:6D===ANNNRURRRNRRRRRRUGGDDDDAAAA=A===AA:::::::336300000,,,3,))))%%%""0,3333666:66=0:))\e\11\14\ e\a\ 3\0\ 3\a\ 3\a
+\11\14\e%)),03,0666DG\cm~z~zzz~zzzzwwwtwppmmifffipmptwwtttttttwzw~\81\85\88\8b\8b\88\8b\8b\8b\8b\8b\8b\88\88\88\8b\8b\85\88\8b\8b\8ftwzz~\81\85\85\88\85\88\88\88\88\88\81wppppttwz~\81\85\81\8b\8b\8f\92\96\96\92\92\8f\8b\8b\8b\8b\85\81\81\85\85\88\8b\8f\99\99\96\99\99\99\99\99\99\99\96\92\8b\8b\8b\85\8b\88\85\88\88\8f\8f\8f\8f\8f\8f\96\92\99\99\9c\9c  \9c ££ \99\9c\92\96\92\92\96\92\8f\8f\96\92\92\8b\92\92\92\99\96\92\92\92\8f\8b\8b\88\8f\92\8f\8f\8f\8f\8f\96\92\99\9c\99\99\96\96\92\92\92\8f\8b\92\8f\88\88\8b\8b\8b\8b\8b\8b\8f\92\8f\8b\8b\8b\8f\92\92\96\81~~zzwwz~±±¾ÅÂÉÅÉÉÌÌÌÏÌÉÉÉÉÌÉÅž¾¾¾»¸´´­±±­­±±ª±±´­±´­´­­±±­­±´¾¾»¾¸ÂŞŻ»»»¸¸¸´´´´´´´±´±´±­£ª \9c\99\99\99\96\99\96\96\96\99\99\9c\99 ££§£§ª´¸±¸¸±­§ £\9c£  \99  \9c    \9c\9c\99 \9c \9c\9c\96\9c\9c\9c \99\9c     £     ££\9c ££§­ª´´»»»¸¸´´±­ª­ª­§­­ª­ª§££   \9c\96\99\99\92t\92\8f\88\88\85\85zzfzptwtif_\\X\_\X\U\_XUUUXUUXU_\X\\XUURNKNXRGND\0wpz~~~twzzwpptmmi\\_URUR\U\____\RXUNRUUcmtttw~~wzzw\81\81\81\81~~~~~~\81~\85\81~\81\81~~~\81~~z~z\81zztwtmmttttttttwmpifUcc_ifmmpwwtzwwzwtwppfifc\\UURRRGDGGD=:=:=6:363336333003300000006:==DAGDDKGKRAGGRRKGKNNNRR36D=:A=:=6::D=::AKKKNURNRNNNRRRRRGGDDDDAAA====:AD=::6666663333000,,,)6)))%)%%"""\1f)06663:6636:,%\1f\14\18\ e\11\0\99\0\99\0\ 3\0
+\a\ e\14\18"%),,60066=GGmm~\81~z~z~z~z~wzwztwppmiifiimpmpptwtwttttptwwz~\81\88\8b\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\8b\8f\8b\8b\8b\8f\8b\8fwwz~~\85\85\88\88\88\8b\8b\8b\8b\88\85ttppptwwwz\81\85\85\8b\8b\8f\96\96\96\96\96\8f\8b\8b\8b\8b\85\85\85\88\85\8b\8f\92\96\99\99\99\9c\9c\9c\9c\9c\9c\99\96\92\8f\8b\88\8b\88\88\85\88\8b\8f\8f\8f\8f\8f\92\8f\96\99\9c\99   ££§£\9c\9c\96\96\92\92\92\8f\8f\8b\96\8f\92\8b\92\92\8f\96\92\8f\8f\8f\8b\8b\8b\88\8b\8f\8f\8f\8f\8f\8f\8f\8f\96\99\99\96\92\96\92\92\92\8f\8f\92\8f\88\88\8b\8b\8b\8b\8b\8b\8f\92\8f\8f\8f\8f\8f\96\96\99\9c\85\88~~z~\81\81´¾ÂÅÅÉÅÉÉÉÉÌÌÉÅÉÅÉÉÉÅÅ»¾»¸´´´±±±±­±´ª±­±±±´±´­­±­­­­¸»¾¾Â¾ÂÅÅÂÅ»»¾¸»»´´´´´¸´±´±´±´±§§\9c\9c\99\96\99\92\96\96\92\92\96\99   ££ªªª­´»´¸¸´­ª £\9c£  \9c   ££ £\99\9c\99\9c\99    \9c\99 ££ §£££§ª£§££ ££ £ £§±­¸¸»»»»¸¸´±±­­­ªª­­­­­ª  \9c  \99\96\99\99\92t\92\92\8b\8b\88\85\88zf~~wtpfcU\\\_c\__XccXURNNKNNRRXUXNURRRRNKUNDNG\0zt~\81\81~tz~~zttwtpm__c_UXR\c_\c__\R\RRRRXcppwww~zwz~z\85\85\85\81\81~\81\81~\81~\81\85\81~\81\81~~\81~~~z~~~zwwttmpttwwttwtzptmiUcccifpmmzwwzwt~tptpmcifc\XXXRNRGGKDDA===:::636333333333300000006::=ADDDGKGKNAKGUUUKNNNNNR33A:6A=:A:=6A===AKKKKRNNNNNNNNRRRDDDAAAAA==A==:=D:6:6666633300300,,,):)%%%%%"\1f\1f"\1f%03:36:6:03,\1f\18\14\11\14
+\a\99\99\99\99\99\0\99\a\ 3\ e\11\14\1f%%,,6306=GUK\81~\81\85\81z\81~~z~z~wzwztwpmimiimmmpppttwwwtttttwwwz~\81\88\8b\8b\8f\8b\8f\88\8f\8b\8b\88\88\8f\8f\8b\8f\8f\8f\8f\92wwz\81\81\85\88\88\8b\8b\8f\8f\8f\8f\8b\81twttttwzzz\81\85\85\88\88\8f\96\99\96\99\99\8f\8f\8f\8f\8f\88\85\85\88\88\8b\8f\96\99\9c\9c\9c\9c\9c  \9c \9c\99\96\92\8f\8b\8b\8b\88\85\8b\8f\8f\8f\8b\8b\8b\8f\8f\92\96\99\99   £§§§\9c\9c\99\96\96\92\96\8b\8f\8f\92\8f\8f\8f\92\8f\92\92\8f\8b\8b\8b\8b\88\88\8b\8b\8f\8f\8b\8b\8f\8f\8f\92\99\99\96\92\8f\92\8f\92\92\92\8f\92\8f\8b\8b\8f\8b\8b\8b\8f\8f\8f\92\8f\92\8b\8f\92\96\99\9c \99\99\81~~\81­¸¸ÂÂÅÉÅÉÉÉÅÉÉÉÉÂÅÂÅÉÅÅž»»¸´±´±±±±±´´­´±±´±¸´¸­´´­±­´´¸¾ÂÅÂÂÅɾ¾¾¸»´¸¸¸´±´±´´­±­±±´­§£\9c\99\99\92\96\8f\96\92\92\8f\99\9c £ §§­­­±¸»¸»»¸´ª££\9c£ £  ££§£ £\9c \9c \9c££££ \9c£§ª­­§§±ª­ªª§§ ££ £ £ª±±¸¸»»»»¸´¸´±±­­ªªªª­ª­­£ \9c  \9c\99\9c\96\92\96\8f\92\8b\8f\8b\85\8b\85\85\85\81zmfccU\\__fccccf_UUGGKGGKNNURUNRNRNNKGRNDKNizp\81\85\81\85\81z\81\81~wwzwwwt~zcX_U_icc_\_XU\UNRU\ipmttz~wtwzz\85\88\85\85\85\81\81\81\81\81~\81\85\81\81\81\81~~\81~~~z~~zztwtppppwzzwtztzttpmifccifpmmztzwtwztmpmi\ff_XXUURKNKKGDDA:==:66333363333333303000006::=DDDGGGGKNGNNXXXNNNNNNR3336:=::==A:=A:==KKKNNNKNKNNNNNNRDDDAAA===:=::::A6::63663033030,0,,))6)%%%"""\1f\1f\1f\e\1f03666::6,0"\1f\18\14\ e\ e
+\ 3\99\99\99\99\99\99\0\ 3\a\ e\11\11\e"%,,666:AKX\85\85\81\85\88\85~\81~~zz~~zzzzttppmmmfmppttpttwwttwtwtzwwz~\81\88\8f\8b\8f\8b\8f\8b\8f\8f\8b\8b\8b\8f\92\8f\92\92\92\92\96zzz~~\85\85\88\8f\8f\8f\8f\8f\92\8b\85wzwwwtwzz~\81\85\85\88\8b\8f\96\96\99\9c\99\96\92\99\99\99\8f\85\88\88\8b\8f\92\99\99\9c\9c    £ £\9c\99\99\92\92\8f\8b\8b\88\88\8b\8b\8f\8b\8b\8b\88\8f\8f\92\92\96\99\9c £ §££ \9c\9c\96\96\92\96\8f\92\8b\8f\8f\8f\8f\92\8f\8f\92\8f\8b\8b\8b\88\88\88\8b\8b\8b\8b\8f\88\8b\8b\8f\96\96\99\96\92\8f\92\92\92\92\8f\8f\8f\8f\88\8f\8f\8f\8f\8b\8b\92\92\92\92\92\8f\92\92\96\96\99  £\9c\99\96 ±»»ÂÅÉÉÉÌÉÉÅÉÅÅÅž¾»»¸´±±±´±±±¸´±´±´±´¸¸¸¸¸´­´´¸»¸ÂÅÉÅÅÉž¾´¸´´¸´±±±­±±ª­­­±±ª£ \99\99\96\96\92\8f\96\8f\92\8f\99\99£§§ªª±±±´¸¸»»»¸¸­§£ £ £ ££§££ £ \9c   £§ §£ ªª­±±ª´´±±±­ª§£££££££­­±¸¸¸»¸¸¸¸¸±±±±±ª­ª§ªª­ª§ \9c\9c \9c\9c \96\96\99\92\92\8f\8f\8f\88\8f\88\88\88\85wif__\\\c_iffffi\RUGGGDGGKKRNKNRNNKRGAGKGGRi~p\81\88\85\88\85z\81\81\81z~~\81~~z\81\81\92fi~_tff\XcXU_XRUUimmpttwzwptww\85\88\88\88\88\85\85\81\85\81\81\81\85\81~\81\81\81~\85\81~zzzzzzwwtppptwzzzw~tzpptimic_ifpip~pzwptwp_mifXcc\XUURNKKKGKDGD=:==66333333333333300003036=:=DDGDGGGKNNRUX\\RRRRNNR6333::=:==A=A=::AGGGKKKKKKKKNNNNNDGAADD===:=::66=66633333003030,0,,)):)%%%"""\1f\1f\1f\e\1f,3666=:3),""\18\14
+
+\a\0\99\99\99\99\99\99\ 3\ 3\a\ e\ e\11\e"",0:::=DN\85\88\88\85\88\88\88~\85zzz~~~~z~wttptmpmippmtwtttttwtwwwwzztz~\81\88\8f\8b\8f\8f\8b\8f\8f\8f\8f\8f\8f\92\92\92\96\96\96\92\99~~\81\81\81\85\85\88\8b\92\92\8f\92\8f\8b\85~zzzwwwz~\81\81\85\88\8b\8b\8f\92\99\99 \9c\99\92\9c\9c\9c\99\8f\8f\8b\8f\92\96\99\99   £ £§£  \9c\99\96\96\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8f\8b\8f\92\8f\8f\96\96\99  £§££ \9c\99\99\96\92\92\92\8f\8b\8b\8f\92\8f\92\8f\92\96\8f\8f\8f\8b\8b\88\8b\8b\8b\8b\8b\8b\8b\88\8b\8f\92\92\99\92\8f\8b\8f\92\8f\92\8f\8f\8f\8f\8b\8f\8f\8f\92\8f\8b\92\92\8f\92\92\92\92\92\96\99\9c££§ \9c­§´»»¾ÅÉÅÉÉÉÅÅÅÅÅž¾Â¾¾¾»»¸´±´±±´´´´¸´´±¸±´¸¸»»»¸¸»¸»¾»ÅÅÅÅž»´´´´´±­­­ªª±§ª­±­­§£ \9c\99\96\92\92\8f\92\8b\8f\92\99\99§ªª­­´´´´¸»»»¾¸»±ª£££ §£££££  £  ££££ª££ª§­ª±´´´¸¸´´´­ªª§§§ £§§­ª±¸¸»»»¸´»¸´±´­±­­ªª­ªªªª£   \9c\9c \99\99\9c\92\92\8b\8f\8f\8b\8f\8b\8b\8b\88iif_\__ccciiiiifRKUDGDDKDKGNNGNNKKGRGADGGDUf\81\81\85\88\88\8b\88\85\85\85\81~\81\81\85\81\81\85\88\8b\96\8b\8b\81~ziif\c\X_\RU\mpmmwttwtmppt\81\88\88\8b\88\85\85\85\88\81\85\85\85\81\81\81\81\81~\85\81~~zwzzwzztttttwzzzz\81w~mtwfmmi_mimip~twwpfiR_if_U\URURRRNKGKGKGDA=6::6663333333333330000006=A==GDGDDGGKNRUXX\XRRRNNKN:63366:6A:A:A:66=GGGGGKGKGKKKKNNNDDAAAA===::=66::66330300000,0,,00))%:%%%%"""\1f\1f\1f\1f%066:6:=,%"\1f\1f\14\11\a\ 3\a\99\99\99\99\99\99\99\a\a\a
+\ e\11\e""03=:=AKR\88\88\88\88\88\88\85~\85zzz~~~~~zwtwptptpmppmttpptttwtwwzz~zwz~\81\88\8b\8b\8f\92\8f\92\92\92\92\92\92\96\92\96\96\96\99\96\96\85\88\88\85\88\88\88\8b\8b\8f\92\92\8f\8f\8b\88\81\81~zwzw~~\81\81\85\85\8f\8f\8f\96\99\99     \9c  \9c\99\9c\96\9c\99\9c\9c££ £££§£££ \99\99\99\8f\8f\8f\8b\8f\8f\8f\8f\8f\88\8b\8f\8f\92\8b\8f\92\96\99\9c\9c ££ £ \9c\99\96\96\96\92\8f\8b\8f\8f\8f\8f\92\92\92\96\92\8f\8b\8b\88\88\88\8b\88\88\8b\88\88\8b\88\8b\8f\8f\96\92\8b\88\8b\8f\8f\92\92\8f\8f\8f\8b\8f\92\92\92\8f\92\8f\92\8f\92\92\92\92\8f\96\9c\9cª§ª­§±±´¸¾ÂÉÅÉÉÅÉÅÅÅž¾Âž¾Â¾»¾¸¸¸¸´´±±±±´¸¸¸¸»»¸´»»»¾¾»»¾»¾Â¾ÉÂÅɾ»¾¾¾¸´´±±±ªªª§ª§­§ªª­ª­ § \99\99\92\8f\8f\8f\8f\8b\8f\92\96\99ª­­±±´´¸´»»»¸¾»»±ª£§£££££££££\9c££ ££§§­§­±ª±­´¸¸¸»¸¸¸¸±­ªª§§££§£­§­´´¸¸¸¸±¸¸±­±­­­­ª­­ª§ª§£ £\9c\9c  \9c\9c\9c\8f\8f\88\8f\8f\8b\8f\8b\8f\8b\88ifc__ccfcfiimff\RGUDGDDKDGGNNGKNKGGRDDDDDDUi\85\85\88\8b\8b\8b\8b\88\85\85\8b\81\88\88\88\8b\88\88\8f\96\96\8f\8f\85\81~wiicc_X_\__fmmpmttmppfmpt\81\85\85\88\88\88\88\88\88\85\85\85\88\85\81~\81\81\81\85\81~~~wzzwwztttttz~~~~\85w~pwzmmpm_mmmip\81ptwpccK___URXNRURRNNGKGDGGDDA==:6633333333333333330306ADAAKADDDGGKNUX\U\XURNNNKN6:3333:3=6=:A666=GGGGDGDGGGGKKKKNDDAAA====:::666633330330,,,,,))00)%%6%%"""""\1f\1f\1f")36:=:6A)"%\e\e\11\14\a\a\ 3\99\99\99\99\99\0\99\ 3\a
+
+\ e\14\e"%3::=DDNR\8b\88\8b\88\88\85\88\81\85~zz~~~~~zzwwtwptpppppppmmtptttwwwwzzz~~\85\85\8b\8f\8f\92\92\96\96\96\92\96\92\92\96\96\96\96\96\96\96\88\8b\8b\8b\8b\8b\8b\8f\8b\8f\92\92\8f\8b\8f\8b\85\85\81~~~z\81\81\85\85\88\88\8f\8f\92\96\9c\9c  ££  ££ \9c \99 \9c  £ ££  £§   \99\9c\96\8f\92\92\8f\8f\8f\8f\92\8b\8b\88\8b\8b\8f\8f\8f\8f\92\96\99\99    £ \9c\9c\99\99\99\96\92\8f\8f\8f\92\92\8f\92\92\96\92\8f\8f\8f\8b\88\8b\88\88\8b\88\88\88\88\8b\88\8b\8b\92\8f\85\81\88\8b\8f\8f\92\8f\8f\8f\8b\8f\92\92\96\96\96\92\96\92\92\92\8f\8f\92\99\9cª­­­±±´´¸»»ÅÅÅÉÉÅÉÅÅÉÅžž¾Â¾¾»¸¸¸¸´´±´±´¸¸¸»»¾¾»»¾»»Â¾¾Â¾ÂÅÂÅÂÅž»¸»»»¸±±­±­§£§£ª£ª§§ªª§ª § \99\96\92\8b\8f\8b\8b\8b\8b\92\92\99­±±´´´´´´¸»»¸»»¸´­§§£££££££££ ££ £ªªª±ª±´­±±¸¸»¸»´¸¸¸±±­­§ª§£§£­£ª´±¸´´´±´¸´±­±­­ªª­ªªª§££\9c  \9c\9c  \9c\9c\8f\8f\88\8b\8b\8f\8f\8f\8f\8f\85iic__ffiiiiiifcKNAUAGADKDDGKKKNKKGDRDDDDDAXi\85\88\88\8b\8f\8f\8f\88\88\85\8f\88\8f\8f\8b\8f\8b\8b\92\99\96\8f\8b\85\85\81zmmffc\c\cciimpmppimm_mpp~\81\85\88\88\8b\8b\85\85\88\88\85\85\88\85~\81\81\81\81\81z~zwzwwtwwwtwwz~~\81\81\85w~ttzpmtt_mppit\81mptt_cG_XNDRUNRRNRNNKGGDDDADDAA:6633333333333330330606DK=NKAAADGGKRXX\UXXURNNKGK3=33336333:6=666:GKDDDDDDDGGGGKKKAA=AD:=:::6:66633330000,,),))%,,,%""6""\1f\1f"\1f\1f\e\e\1f%,63:A=:="""\e\18\11\11
+\ 3\0\99\99\99\99\99\ 3\99\a
+\ e\ e\ e\11\e\1f)0A==GGXR\8b\88\88\88\85\88\88\81\85~zz~~~~zw~zwwttttppppmmiipppppttwwzzzz~\85\81\8b\8f\92\96\96\96\99\96\96\96\92\92\96\96\92\92\96\99\96\8b\8f\8f\8f\8f\8f\8f\92\8f\8f\92\92\92\8f\8f\8f\8b\88\88\85\81\81~\85\81\88\85\8b\8b\8f\92\92\96\9c ££§§££§§£ £\9c£  £ \9c  \9c\9c £\9c\9c\9c\99\99\99\96\96\92\8f\8f\8f\8f\92\8b\88\8b\8b\8b\8b\8b\8f\8f\8f\92\96\96\9c\9c  £ \9c\9c\9c\9c\9c\99\92\92\92\92\92\92\8f\8f\8f\96\92\8f\8f\92\8f\8b\8b\8b\88\88\85\88\85\88\88\85\8b\85\88\8b~\81\81\88\8b\8b\8f\8f\8f\92\8f\8f\96\96\96\99\99\96\92\92\92\92\8b\92\92\99£­±±´´´¸´»»»ÅÅÅÉÉÅÉÅÅÉÉÅÅž¾¾Â¾¾»»¸¸¸¸´´´´´´´¸¾Â¾¾»¾»ÂÂÂÂÂÂÅÅÅÂÅÅÅ»»±¸¸¸´±±ª±ª££££§ £§£§ª£§ £\9c\99\92\92\8b\8f\88\88\88\88\8f\92\96±´±´´¸´´´´»»»¾»»¸­­ª££§£££ £§£§ª£§­­±´±´¸±´´´¸¸´»±´´´´±±­ª§§§\92 ª §´´¸¸´´­±¸´±­­­ª­­ªªªª§  \9c \9c\9c\9c \9c\9c\99\8b\8b\85\8b\88\8b\8b\8b\8b\8f\85ifcccifmmiiffcNGNAU=GADKDDGGGNKGKGDRDDDDGA\m\85\88\85\8f\92\92\92\8f\8b\88\92\8b\92\92\8f\92\8f\8f\96\96\92\8b\88\81\85~~ppiic\f\ffiiipimmfii_mmmz~\88\88\88\8b\8b\88\85\88\88\88\88\88\88~\81\81\81\81\81~~zwzwwtzzwwzz~\81\81\81\85\88~~wwwzmtwcwttft\81mptt\cG\\KDRRNRNRNNNNGGAGADDADA=6:66666663333666666=66DXARGAAADGGNN\_X_XXURNKKGG3=6333333333:666:GGDDDDDDDDDGDGGKAA==D:=:=6:663333000,,0,))))%),))"\1f\1f:\1f\1f\e\e\1f\e\e\1f\18\e)066:=:=:"\1f\1f\e\18\11\11\a\ 3\0\99\0\99\0\99\a\0\a
+\ e\ e\11\14\18",0DGKU\_\85\8b\8b\88\88\85\85\85\85\85~~~\81~~~zz\81zzwtwptppppmifimmpimptwwwwwz~\81\85\88\8b\92\92\96\96\99\96\96\96\8f\92\96\96\92\92\92\99\96\8f\92\92\92\92\92\92\92\92\92\92\92\8f\8f\92\92\8f\8f\8b\8f\8b\85\81\88\85\8b\8b\8f\8f\8f\92\99\99 ££§§§§§§££ § £   \9c\99\9c\9c\99\99\9c \99\99\99\96\96\9c\99\99\96\92\92\92\92\8f\8b\8b\88\88\8f\8b\8f\8f\8f\8f\8f\96\99\99 \9c\9c \9c\9c\99\9c\9c\9c\9c\96\92\96\92\8f\8f\92\8f\92\96\92\8f\8f\92\92\8f\8f\8b\8b\8b\88\88\88\88\88\88\88\81\81\81~\81\81\88\8b\8f\8f\8f\8f\92\92\92\96\99\99\9c\96\99\96\96\96\96\92\96\96\9c­±´´¸¸¸¸¸»»»ÂÅÅÅÉÅÅÅÉÅÅÅžž»Â¾¾»¸¸´´´´´±´´±¸»Â¾¾ÂžÅÂÅž´¸±»¸¸±´±§­§£ ££££££ £§£§£ \9c\99\96\8f\8f\8b\85\85\85\8b\8b\8f\96´´´´´¸´´´¸¸¸»¾»»»´±ª§££££££§§§ª­§ª±±´±´´´´¸¸´´´¸¸´¸´´´±±ªªª§§\92\92§\9c§¸´¸¸´±­´´´­±­­­­­ªª§ª£\9c \99\9c\99\9c\9c\9c\99\99\96\88\88\81\88\85\88\88\88\8b\8f\88ifcfipmppimfccNGNAU=GADKDAGDDKKGKGGUADDDGD_p\85\88\85\92\92\96\96\92\8f\92\96\8f\96\96\92\96\92\92\92\8b\8f\88\81~\81zzttiif\f\fifffmfii_fcciipw~\85\85\85\88\88\85\88\88\88\85\88\85\85~\81\81~\81~~zzwzzwwzzzzzz~\81\81\81\85\8b\81\81zwt~mtzcztpft\81mpwt\cD\\DDRRNNKNRKKKDGDDDAAADDA:=::666666666::====AAAG\DNKADAGGGKN\cXcfURNKGGDD3:63333330336366:DDADDDAAADADADDGAA=AA::::663330000,,,,,)))))%%)"%\1f\e\e6\e\18\18\18\e\18\18\e\14\18,3::=::A6%"\1f\1f\e\11\ e
+\a\ 3\0\ 3\ 3\ 3\0\a\ 3\ 3\ e
+\ e\11\14",3AGNN\_\88\88\88\8b\8b\88\81\85\85\85\85\81~\81\85\81\81~~~~zztttmppmmpmifffimiimpttttww~\81\88\88\8b\92\92\96\99\99\96\96\96\92\92\92\92\92\8f\8f\96\96\8f\96\92\92\96\96\96\96\96\92\92\92\92\92\92\96\92\92\92\92\96\88\96\92\8f\8f\8f\92\92\96\99\9c\9c ££§§§ª£§§£££  £\9c\9c\99\96\96\99\96\92\96\96\96\8f\96\92\92\99\9c\99\96\96\92\92\96\8f\8f\8b\88\88\8f\88\8f\8f\92\8f\92\96\99\99\9c\9c\9c \9c\9c\99 \99\99\9c\99\92\96\92\8f\92\92\8f\92\92\92\8f\92\92\8f\92\8f\8f\8f\8b\88\85\85\88\88\88\85\81\81\81~~\81\88\8b\8f\8f\8f\8f\92\92\92\99\99\9c\9c\9c\9c\99\99\96\99\96 \99±±´¸´»»¸¸¸»»»ÂÅÅÅÉÅÉÅÉÉÅžÂÂÅž¾Â¾¾»»´´´±±±±´­´»¾ÂÂÂÂÂÂÅÂÅÅÂÂÂÅž»¸¸´¸¸¸±±´§ª£§     § \9c £ ££\9c\9c\99\92\92\8f\8f\85\81~\8b\88\92­±¸´´´´´´´¸¸¸¸¾»»¾¸»±§§£££§§§ªªª±§±´±¸´¸¸¸´´¸±´´¸¸¸¸¸´´´±ª­ª§ª§\92\8f ª¸¸¸´´±­±±±ª­­­­­­ªª§§ \9c\9c\96\99\99\99\9c\99\96\96\8b\81\85\81\85\85\85\85\85\8b\8b\88ffcipwpttimff_RGNDU=GADKDDGDDGGGKGGUADDDKD\p\85\88\88\96\96\96\96\96\92\96\99\99\99\99\96\96\96\92\8f\88\8b\85~~~zwppimc_f\cfc\ciUXf_cc_fctz\81\81\85\85\85\88\88\88\85\88\88\88\85\85~\81\81\81\81z~zzzzzwzzwzwz~~\81\85\85\88\8b\85\81~wt\81ptz_zpmfz\81imww\cD\XAANRNKKNRGGKDDDAD=DDADD:==66:66:::::==AAAADDDKXGKKDDDDGGKR_fiwiRRKKGDAA3:36333330003333:DDAAAAAAAGAAAAADAA===::6:63330300,,)),))%%)%""%"\1f\18\18\143\14\14\18\14\18\14\11\18\11\1400=::=:D:%%\1f\1f\1f\14\11\11\a\ e\a\a\a\a\ 3
+
+\a\ e\ e\ e\14\18%06GKRR__\88\8b\85\88\88\88\81\88\85\85\85\81~\81\85\81\81\81~~~zwtttmmmmmmmiffffiiipptttttw~~\85\85\8b\8f\92\96\96\99\96\92\96\92\96\96\92\8f\8f\8b\92\96\8f\96\96\92\96\96\99\99\99\96\96\92\92\96\96\99\96\96\96\96\99\96\99\96\96\96\92\96\96\99\9c   £§§ª§ª§ª££  \9c\9c \99\99\96\92\92\92\96\8f\92\8f\92\8f\92\8f\8f\99\99\99\96\96\96\92\92\8f\8f\8b\8b\8b\92\8f\8f\92\92\92\8f\99\96\96\9c\99\99\9c\9c\9c\9c\9c\99\99\9c\99\96\99\96\92\92\96\92\92\96\92\92\96\92\8f\8f\8b\8f\8b\8b\8b\88\88\8b\85\85\85\81\81~~~\85\88\8b\8f\8f\92\92\96\92\96\99\9c\99\9c£\9c \9c\96\99¸¸¸´´¸¸¸»»»¸¸¸»»ÂÅÅÅÅÅÅÉÌÉÉɾ¾Â»¾Â¾»»¸¸¸´±­­­´±¸»¾¾ÅÂÂÂÅÉÂÅޞ¾Â»»»´´´´±±´ªª§§£\9c\9c\9c\9c£\9c\9c     \9c\99\99\92\92\8f\8f\85\81~\88\88\92±­¸´´´´±±±´¸¸»»»»¾»¾»ªª§§£§ªªª­­´­´´´¸¸¸´´¸´¸´¸´´¸¸¸´´´´±ª­­§­\92\92\8f§­¸»¸¸´´±±­­§­ª­­­­ªª££\9c\9c\9c\92\96\96\96\99\92\8b\8f\88\81\81~z\81~~\81\88\8b\88wiimwzwwtmpcf\UGNGUAGDDKGAGDDGDGKGDUDDDDND_p\85\8b\88\96\96\96\99\99\96\99\9c\9c\99\99\96\92\96\8f\8b\85\85\81~~zzwppimf_f_cc\\URUU_\c_cfcpz~~\85\85\88\88\88\88\85\88\88\88\81\81\81\81~~~zzzzwzzzzzzzz~z\81\85\88\85\8b\8b\85\81~wtmptw_wmmf~\81fmtwXfD_X=ANRNKKNNKGKGDDADADDDGG=A==::::=====AADDDDGGGKUKKNGDKGGGKUcfizfRNKGDA=:3:3:6:0330000033:DDAAA===AD=A===A==:::6666333300,,,,)))%%""%"%\1f"\1f"\18\18\140\14\11\14\14\11\11
+\ e
+\1100::=A=D=0)"\1f"\18\14\14\11\11
+
+
+
+\a
+\ e
+\ e\ e\11\e\e3:AKNUUmi\85\88\88\85\85\88\85\85\85\85\81\81\81\81\85\85~~~~\81zwttpmiimiimiffcffiimppttttzz~\85\81\8b\8f\92\92\96\96\96\92\92\92\92\92\8f\8f\8b\8b\8f\92\92\96\96\96\99\99\9c\99\9c\99\99\92\96\96\96\99\99\99\99\99\9c\99\9c\9c\99\99\99\99\99\9c  £££§§ª£ªª§   \99 \9c\9c\96\96\92\8f\92\8f\92\8b\8f\8b\8f\8b\8f\88\8f\96\99\96\99\96\96\92\92\92\8f\8f\8f\8f\92\92\8f\96\96\96\92\99\92\96\99\96\99\9c\99\99\9c\99\99\99\9c\9c\96\99\96\96\96\92\92\92\96\92\8f\92\92\8b\8f\8b\8f\8f\8b\8f\8b\8b\8b\85\81\85\81\81\81~~\85\88\8f\8f\8f\92\96\96\96\99\9c \9c§¾ÌÉ \99\9c¾»»¸´¸»¸»»»¸¸¸»»ÂÅÅÅÅÅÅÉÉÌÉÉž¾¾Â¾¾Â¾»»»´´´±±­­±±­¸»¾¾ÂÂÂÂÂÅÂÂÅÅžž»»´¸¸´±±±­ª§£ \9c \9c\9c \9c\9c\9c \9c \9c\99\99\96\96\8f\8b\8b\85\81~\88\99´±±¸´´´´±±±´¸´»»»»¾¾Â¾¸´ªª§ªª­­±­±±¸¸¸»¸¸´´¸´´±¸´¸´¸¸±´´´±­±±­±\92\9c±ª±¸»¸¸´´±±ªª§ªª­­±±­ª £\9c\99\9c\96\96\96\92\96\92\8b\8b\81\81\81tw~~~~\85\88\88\85\88t~z~zzwpmfcRUKNDUAGDDKGDGADGDKKKGUDDDGNA_t\85\8f\88\96\96\96\9c\9c\96\9c\9c \9c\99\96\92\96\8f\8b\85\88\81~zzwtptmmi_f\_\X\XRUU\\cU_fftz\81~\85\81\88\85\85\85\81\85\85\85\81\81\81\81~~z~zzzwzzzzzz~z\81\81\85\88\88\88\8b\8f\81\85~wwmtpt_tpif\81\81cmpwXfD_X=ANRNNNNKGGGKDDADADDGGGA=AA======AAADDGGGGKKKNRNKNGGNKGGNXccfwcRNGGD=::6636:=A3000000006DDAAA===DA:=:=6===::6663330300,,,,))%%%%"\1f""%\1f\1f\1f\1f\18\18\14)\14\11\11\11\ e\ e
+\a\ 3\ e,0:6=A=DA3,"%%\e"\18\e\14\14\11\ e\ e
+\ e\11\ e\ e\14\11\1f\1f:=DNRUXpt\81\85\85\81\81\85\85\85\85\81~\81\81\85\81\85~~z~~wwptmmiiiiimfffcffifmpmptttzz\81\85\85\8b\8f\8f\92\92\92\92\92\8f\8f\92\92\8f\8f\8b\8b\8f\8f\96\96\96\96\96\99\9c\99\9c\9c\9c\96\99\96\99\9c\9c\9c\9c\99\9c\9c  \9c\9c\9c\9c\9c  £§££ª§ª§ªª£ \9c\9c\99\9c\99\99\92\8f\8f\8b\8f\8b\8f\88\8b\88\8b\81\85\85\8b\92\99\96\99\99\99\92\96\96\92\92\92\92\96\96\96\99\99\9c\96\9c\96\96\96\96\96\9c\99\96\99\96\9c\99\9c\9c\96\96\96\92\92\96\96\96\92\8f\92\92\8f\8f\8b\88\8b\8b\8b\8f\88\8f\8b\81~\81\81\81\81~\81\85\8b\8f\8f\92\92\96\96\99\99 £ ­ÂÌÌ É\99¾¾»¸¸»»»¸»¸´¸»»ÂÂÅÅÅÅÉÉÉÉÉÅɾ¾¾Â¾¾»Â¾»»»¸´±±­­­ª­±±´¸¾»ÂÅÂÅޞÂÅž¾¾¸¸¸´±±±­ª§£ \9c  \99  \99\99\9c\99\9c\99\99\99\99\96\8b\8b\8b\85\81\81\8b\9c´´±¸´´´´±­±±´´»»¾»¾Â»¸­­ª­­­±±±¸´»»¸»¸´´¸´´±±´±¸¸¸¸­´¸´±±±±±±±´´´´»»»¸´±±±§ª§ªª­­±±­ª££\99\9c\9c\99\96\96\92\96\92\88\88\81~\81ttzz~z~\85\85\88\8bw\88\81~~zztif_UUNNGUAGDDKGDGAAGAGKGKUGGDDRA_t\85\8f\88\92\99\99\99\9c\99    \99\99\96\99\92\8b\88\88\81~~wtwptipfif\_XX\URRXX_cR\citz\81~\81\81\88\85\85\85\85\85\81\85~\81~~zzzzzwzzwwzzzz~~\81\85\85\88\8b\8b\8b\8f\85\88~wtpwpp_ptif~\81_mptXcG_X=DNRRNNNKKKGGGDDDAADGGDDAAD===AAAAADDDGGGGKKNNNNNKKKRKGGNU__XcUNKGDA=:=3306=AD:000000003DDAAD=GAGD::6:66==::66633000,,,)))%%"%""\1f\1f"""\1f\1f\1f\e\18\e\14,\14\11\11\ e\ e\ e\ e\a\0\ 3),63:==DD==%,0%%\e\1f\18\18\18\11\11\ e\ e\14\11\14\18\1f)3KNNNNU\tw~\81\81\81\81\85\81\85\81\81\81~~\81\81\81~~wz~wwtpiifffffifffcfiiimmmppptwz\81\85\85\8b\92\8f\92\8f\96\92\8f\92\8f\92\92\8f\8f\8b\88\8f\8b\96\96\96\92\96\99\99\99\9c\9c\9c\99\99\99\99\9c\9c\9c\9c\9c   £      ££§££ª§­ªª§  \99\99\96\99\96\92\8f\88\8b\88\8b\85\85\85\85\81~\81\88\88\8b\8f\96\99\96\99\99\96\99\99\96\96\96\96\99\96\99\9c\9c \99\9c\99\99\96\96\92\99\96\92\96\96\99\99\99\99\96\96\96\92\92\96\96\92\92\92\8f\92\8b\8b\8f\85\88\88\8b\8b\88\8b\88~z~~\81\81~\81\85\88\8f\92\96\92\96\99\9c\9c£»¾ÂÅÉÌÉÌÉÅ»»¸»¸»¸¸´´¸»»¾ÂÂÂÂÅÅÉÉÉÉÉž¾Â»¾¾¾¾»¸»¸´­±­­ªª­±´±´»¾¾Å¾ÅÂÂÅÂÅÂÅž¾Â¾¾¸¸¸´´­±ªª§££  \9c\96 \9c\96\96\99\96\9c\99\99\96\96\92\8b\8b\8b\85\85\81\8f ±´­´´´´±±ª±±´´¸»¾¾ÂÂÅž»±±­­±±´´±»¸¸¾¾»»¸´´´±±´´´¸»´´±¸´±´±´´´´´¸¸¸¸¾»¸¸´±±±§­§ªª­­±´±­££\9c\9c\9c\96\92\92\92\92\92\88\85~~\81ttwwz~z\81\81\8b\8f\8f\8b\8f\8b\81~~pic\XUNNGUDGGDKGDGDAGDGKGKUKKDGUAcw\88\8b\88\92\96\99\99\9c\9c    \99\9c\96\99\92\8b\88\88\85\81\81wtwtpppimf_\XX\URR\\\_U\_mtw~~~~\88\85\81\81\81\85\81\81~~z~zwzzzwzwwwwzz~~\81\85\88\85\88\8b\88\8b\8b\85\88~ztptpm_mticz\81\pttX_Dc\:ANURNNNKKKGGKGDDA=DGDDGAAAA=AAAAADDDDGGGGKKKNNRNKKKNNGKKU\\UXRNKGDA=::0336ADG=00000,003DDDDGAKDGD=66636::6633330000,,)))%%"""\1f\1f\1f"""""\1f\1f\e\18\1f\140\14\11\ e\ e\ e\ e
+\a\99\0
+\a
+06:=AAAA,:30)))\e\e\e\14\11\14\14\e\18\18\1f%0=NRRRUfiwz\81\81\85\81\81\85\81\85\85\81\81\81\81~\81\81~~wwzwtpmffffcccfffffiimmmippmppww~\88\85\8b\92\92\92\92\96\92\8f\8f\8f\8f\8f\8b\8f\8b\8b\8b\88\96\96\92\92\96\96\99\99\9c\9c \9c\9c\9c\9c  \9c    £££££  £§£§§£ªªª§§£\9c\9c\96\96\96\96\92\8f\88\88\85~~~z~z~z\85\85\88\88\8b\92\96\99\99\96\99\99\99\99\99\99\99\9c\99\9c  £\9c\9c\99\99\99\96\96\99\92\92\92\92\96\99\96\96\96\99\96\92\92\96\92\92\92\92\8f\8f\8f\88\8b\85\85\85\88\88\85\88\85zzz~\81\81~\81\85\8b\8f\92\92\92\99\99\9cª¸¾ÂÅÉÉÌÌÉÅž¾¾¾¸¸´¸¸´´´¸»»¾¾ÂÂÂÂÂÅÉÉÉÅ޾¾¾¾¾»»¸¸´±ª±ªª§ªª±±±¸»Â¾Å¾ÅÂÂÂÂÅÅž¾Âž¸¸»¸´±­ª­§§£  \99\99  \96\99\96\96\99\96\99\92\92\8f\8f\88\88\85\85\81\8b ±±­±´±±­±ª­±´´¸¸¾ÂÅÂÉÉ»´±±±±´¸¸´¾»»¾Â»»»´´´´±´´¸¸¸¸´±¸´´¸´´´¸¸¸»»¸»¾»´¸¸´±±ªª£§ª­±±´­­­£\9c \9c\96\92\92\92\92\92\8b\88z\81\81ttttz~z~\85\8b\92\92\8f\92\8f\85\81~pi_XXUNNGUGKGDKGAGDDGDGKKKUGNGGXAmz\8b\8b\8b\92\96\9c\9c\99\9c   \9c\99\9c\96\99\96\88\88\88\88\85~ztwtptpmmfc_XX\URR\X\cU\citz~~~\81\85\81~~~\81~~zzwzwtzzzzzwwwzz~~\81~\85\88\88\88\88\88\8b\88\85\85zztptmp_mpm_w\81XmtpX_Dc_KARURRRNKKKKGGGDDDADDADG==A==AAAAADDGGGKKKKNNNRNNKKKKKKGKR\XURNKKGDA=::060:AADA:3333,,,3ADGGKDKGDA=66633::6663330,,,,)%%%""\1f\1f"\e\e\1f\1f"""%\1f\1f\e\18\1f\143\14\11\ e\ e\ e\ e
+\a\99\99\a\0\ 3\ 3\ e\11:==A=D=660,,)\1f\1f\18\14\18\18\1f\1f\e),GGRUXU_itwz~\81\81\81\81\81~\85\88\85\81\81\81\81\81\81~zwtwtpmiccccX\_ccfcfiiiimmpppppww\81\88\88\8b\8f\92\92\92\99\92\92\8f\8b\8f\8f\8b\8b\8b\8b\88\88\99\92\96\96\92\96\99\9c\9c\9c \9c \9c   \9c£   ££§§§££££££ª§ª­­ª£ \9c\99\92\92\92\8f\8f\8b\85\85\81zzzwwwww\81\85\88\85\85\8f\96\96\96\92\99\99\99\9c\9c\99\9c\9c\9c £   \9c\99\99\9c\99\99\96\92\92\8f\92\92\96\92\92\92\96\96\8f\92\96\92\8f\8f\92\8f\8f\8b\88\8b\85\81~\85\85\81\81~wwwz\81~~\81\85\88\8f\92\96\96\9c §¸»ÂÅÂÉÉÌÌÉɾ¾»»´´´´±±¸»»¾»Â¾Â¾¾ÂÅÅÅÉÅÅž¾»¾»¸¸¸¸±­ª­ª§§§§±­´¸¸ÂÂÅÂÂÂÂÅž¾ÂÅž¾¾»¾¸±­­ªªª§££\9c\9c\99 \9c\96\9c\99\96\96\96\96\96\92\8f\8b\88\85\88\85\85\8b\9c­­ª­±­­­±ª±±´´´¸¾ÅÅÅÉÉŸ±±´­´´»´¸Â¾¾¾Å»»»´´´´´´´¸»»¸´´¸´´¸´´¸¸»»»¾»»¾»´¸¸´­±ª§£§ª­±±´±±±­§  \99\96\96\92\96\92\8f\88z\81\81ttzw~~~\81\85\88\8f\92\92\96\92\85\81\81pi_NUURNGUKKDDKKDGGDGGGKGNUDR\K\Aw~\88\8b\8f\92\92\99\99\96\99  \9c\99\96\99\99\99\92\8b\8b\8b\8b\85\85zzzwtwtmmif_\\\XRR\\\fX\cipzz~z~\81~z~~~~~wtpwtpwwwwzwzwzzzz\81\81\85\88\88\88\8b\85\88\88\85\85~wwptmpcmpi_p~D_p\U\D_\NDNUURRNNNKKKGKGGAADDDDDA===ADAADDDDGGGKKKKNNNNNNKKKGGGGGN\XURNKKGDA=::363:A=DD=6630,066DGGGNGGDD==66633663330000,)))%%""\1f\1f\e\e"\e\e"\1f""%""\1f\e\18\e\140\14\11\ e\ e\ e\ e
+\a\99\99\ 3\99\0\0
+
+6::=:AA::300,\e"\1f\1f\1f%""),3KKRU\Xcmwwz~\81\81\81\81\81~\85\88\85\81\81~\85\85~zwwptiifc___URX\__cffiimipppptppzw\85\88\8b\8f\92\92\92\92\99\96\92\8f\8b\8b\8f\8b\8b\8f\88\88\88\96\92\96\96\92\96\99\99\9c\9c£   £££ §£££§§§§§£ £§§§­ª­­ª§  \99\99\92\8f\8f\8b\8b\88\81\81~wtttpppt~\81\85\85\88\8b\92\8b\92\8f\96\96\99\9c\99\99\9c  \9c \9c\9c\9c\9c\99\99\99\96\96\99\96\92\8b\8f\8f\92\8b\8b\8f\92\99\8f\8f\92\92\8b\92\8f\8f\8b\8b\88\88\85~~\81\81zwwwzzw~~\81\85\85\85\8f\96\99\9c§ª±»¾ÂÅÅÉÅÉÉÅÉž¾»¸´´´´±±¸¸¸¾¾¾»Â»¾¾ÂÅÅÉÉž»»¾¸´¸´¸­±­ªª§ª§§­­´´´¾ÂÂÅÅÅÅžÂÂÅÅÅÂÅÂÅÅž»±±±ªªª§§ \9c\99\99 \9c\96\99\96\96\96\96\92\96\92\8f\88\8b\85\8b\88\88\92\9cª§ª­­­­­­ª±´´´´¸¾ÂÅÉÉÉÅ´±±¸±´´»¸»Â»Â¸¸¸´±±±´´¸»¸»´¸´¸´¸¸´´´»¾¾¾¾¾¾»»¸¸´´­±§£§§ª­±´´±´±±ª £\9c\99\99\96\96\92\8f\88~\81\81z~~z\81zz~\81\85\8b\8f\92\92\96\88~~pfcNUURNKUKKDDKKDDGDGDGKGRUGU_c\81Azz\85\8b\8b\92\92\96\99\96\99 \9c\99\96\96\99\99\96\8f\88\8b\8f\88\85\88\81~wwwwtpmic_\__\UR_\_f\__mpzzzzz~~zzzz~ztpptmmttwtwtzwwz~z\81\81\88\85\88\88\8f\88\85\88\85\81zzwptppfppi__z=_fXU_A\XRDNXURURNNNKKGGDDAAADGDDDAA=ADADDDDGGGGKKKKNNNNNKKKKKGGGGN\XURNKKGDA===0366==DDA366,0,:6DGGGNDDAA::66:333300000,,0)))%%""\1f\e\e\e\1f\e\e\1f\1f"""""\1f\1f\18\18\14%\14\11\ e\ e\ e\ e
+\a\99\99\0\99\99\99\a\99\11\e6:6==:=6366,,%"%,%%6=GNNRXcfimwz~~\81~\81\81\81\81\85\85\85~~~\81\85~wwtmpfcc_X\\XRUX_\ccfffimppttttpzw\85\88\8f\8f\92\96\92\96\99\96\92\8f\8b\8f\8f\8b\8b\8b\85\85\88\96\96\96\96\92\96\96\99\9c\9c£  £§§£ §££ §ª§§§§£§§£§ªªªªª\9c\9c\9c\99\96\92\8b\8b\85\88\81\81zwtppmppptz~\81\85\88\88\8f\8b\8f\8f\92\92\96\99\96\99\9c\9c \99\9c\99\9c\99\99\96\99\96\92\96\96\92\8f\88\8f\88\8b\8b\88\8f\8f\96\8b\8b\8f\8f\8b\92\8f\8f\8f\8b\85\85\81wzzzwtttwwzz~\81\81\85\88\92\99\9c£ª±´¾ÂÂÅÉÅÉÉÉÅÉÅž¾´¸¸¸´±±´¸¸»¾¾»¾»¾¾¾ÅÅÉÉž¾¾Â»»»´¸´´¸­±­ªª§ªª§­ª´´ª»ÂÅÅÉÉɾÅÅÅÅÅÅÂÅÅÅžŻ¾´±±ªª§££\9c\9c\9c\99\9c\99\92\96\92\96\92\92\92\96\92\8f\8b\8b\88\8b\8b\8b\96\9c§§ª­­­±±±­±´´¸´¸ÂÂÅÉÉÉÅ´±´¸´´¸¸»¸¾¾¾Å»¸´±±±´¸¸¸»´»´´±´¸´´´¸¸¸»»»Â¾¾¾¾¸´´´±±ª£§ªª­±¸´´´±´ª££  \9c\96\96\96\92\8b\81\85\85~\81\81~\81z~\81~\81\88\8b\8f\8f\92\85~zpffXUXRNNUNGDDKKDGGDGGKKNRXGXci\85D~z\85\8b\88\92\92\99\99\92\96\9c\99\96\96\96\96\96\92\85\85\88\8b\8b\88\8b\85\81~zzzwtmif\_c__XU__\f__cmpz~zz\0~~zz~zz~ppmpipppwptpwwww~z\81\81\85\88\85\88\8b\88\85\88\85\81wwwptpptpti_\w:_RUUcG\RUDNXUURRRNNKKGGDGAADDGGGDDD=ADDDDDDGGGGKKNNNNNNNKKKKKKKGGK\XURNKKGDA=::3336:=AD=3::0=,=:AGDGKAA==:666633330000,,,,))%%"""\1f\1f\e\e\e\1f\e\1f""""\1f\1f\1f\e\18\18\14\1f\14\11\ e\ e\ e\ e
+\a\99\99\99\99\99\99\0\99\0\0\ e6"6:6=:6::::,"303::AKNNX\fimpwzzz~~\81\81\81\81\81\81\81zz~~\81zttpicf\_XXXUUNRU\X__cfcfmmtwwwwtzz\85\88\8b\8f\92\92\92\96\96\99\8f\92\8f\8f\8f\8b\8b\88\85\88\88\99\96\96\92\92\96\96\99\9c\9c  £££§£££§§£§§§§§£££§§§§ª§§§\9c\99\99\96\92\92\88\85\85\85\81~~wtppimmptz~~\85\85\85\88\88\8b\8b\8f\8f\92\96\96\99\99\99\9c\96\99\92\99\99\96\96\99\96\8f\92\92\92\8b\88\8f\88\8b\88\88\8b\8b\92\88\88\8b\8b\8f\8f\8f\8f\8f\88\81~~zwwttttwwwwz~~\81\81\88\96\99§­¸´¸¾ÅÂÉÉÉÉÉÉÅÉžŻ¸»»¸´±±´¸¸»»¾»¾»¾¾ÂÂÅÉÅž¾¾¾¸»¾¸¸¸´¸±±±ªª§§ª§­ª±±ª¾¾ÂÅÉÉžÅÉÅÅÉÅÅÅÅÅÅž»´±±ª§£§£\9c\99\9c\9c\9c\99\92\92\8f\92\8f\92\92\96\96\92\8b\88\8b\8b\8f\8f\99\9c£ª­ªª­±±±±±±´¸¸»ÅÂÅÉÌÅÅ´´´¸´´´¸¸¸»¾»Â¾¾´¸´´´´´¸´»¸»¸´±´´´±´´¸´»»¾Â»»¾»»´¸¸±´­§ª­ª­´¸´¸´´±ª£§ £ \96\96\99\92\8f\85\81\88\81\85\81\81\81~z~~~~\85~\81\81\81zwpif\UXUNRURKDDKKDDGGGKNNRN\D\fm\81w\81~\85\8b\88\8f\92\96\96\92\92\99\96\92\96\96\96\92\8b\85\85\88\88\8b\8b\8b\88\85\81~zzwwpfi\\f_\\Xc__f_c_mpzzzz\0~zwwzzwzppmmimpttptptwww~z~\81\81\88\88\88\8b\8b\85\88\81\81zztpwmpwpwm_Ut=\NRUcK\NXGNXUXURRNNKKGGDGDAAGDGKGGGAAKGDGDDGGGGKKKNNNNNNKKKKKKKGGK\XURNKKGDA=::33033==A:06:=AAA==DAD=A:::::66633000,,,,,))))%%%""\1f\1f\e\1f\e\1f\e\1f\1f""%\1f\1f\1f\e\18\18\14\1f\14\11\ e\ e\ e\ e
+\a\99\99\99\99\99\99\99\99\99\99\ 3\ 3
+\e63::6=A==::::===DKKR\_impttwzw~~\81\81\85\81\81\81~zpzz~wppifcc\UUUUURKNRXU\\_f_fmpttwzww~~\85\88\8b\8f\92\92\92\92\96\96\92\92\8f\8f\8f\8b\8b\88\88\8b\88\96\92\96\96\96\96\99\99\9c\9c  £££ª§£§£§§§ª§ª§§§§£§££§£ £\9c\96\99\96\8f\8f\88\81\81\85\81~~wtppmmmptzz\81\81\85\88\85\85\88\88\8b\8b\8b\8f\92\99\99\99\99\99\96\96\99\96\92\96\96\92\8f\8f\8f\92\88\88\8b\88\88\85\88\8b\88\8f\88\8b\8b\8b\8b\92\8f\8f\8f\8b\81\81~zwttpttttwz~~~~\85\88\99\99­´»¸¸¾ÅÅÅÉÅÉÉÉÉÅÅÂÅž»¾»»´´´¸¸¸»»¾»»»¾¾ÂÅÅÅž¾¾»¸¸»»¸¸´´´±±­ªª§§ª­­­­ª»ÂÅÂÉÉÉÅÂÅÅÅÅÅÂÅÉÅž¾¾¸´­±­§§§£\99\9c\9c\9c\9c\96\92\92\8f\92\92\92\8f\92\92\8f\8b\88\8b\8b\8f\92 \9c£ª­ª­­­±±­­±¸¸¸¾ÅÂÂÅÌÅÉ´¸´´´´´´´´¸»»¾¾»¸¸±±±´´´´»¸»¸¸´´´¸´´´¸´¸¸»¾¸¸»»»¸»¸´´±ªª­­­¸»¸¸¸¸±ª§§£§ \99 \9c\92\92\88\85\8b\85\85\85\85\81~w\zzzz~z\81~wtpmcXXXUNRXNKGGKKDDKGKNNRUR\A_fp\85z\81\81\81\88\88\8b\8f\92\92\92\8f\96\92\8f\92\92\92\8f\88\85\85\88\85\88\88\8b\88\88\85\81wzwtpii__f___\c__fcccmpzzwz\0zzzzwzwwtpmmimmppptppwwwzz~\81\81\85\85\8b\8b\88\88\88\81\81~wtpzmtzmwm_RpA\KNR_NXK\KNXXUURRRNKKGGDDD==KAGNKKKAKNGGKDGGGGGKKKKNNNNNKKKKKKKGGK\XURNKKGDA=::63003::=:066AA=A::A=A==::66666633000,,,,))))%%%"""\1f\1f\1f"\1f\1f\1f\1f""""\1f\1f\1f\e\18\18\14\e\14\11\ e\ e\ e\ e
+\a\99\99\99\99\96\99\99\99\99\99\0\a\a\14\18\e66:ADAA====AAAGGKU__fmpttwwwzz~\81\81\81~~pwiwwwpifcc_UXURRRUNKNNRRXX\c_fmpwtwzwz~\81\85\88\8b\8f\8f\8f\92\8f\92\92\96\92\8f\8f\8f\8b\8b\88\88\8b\88\96\92\96\96\96\96\99\99\9c\9c £ ££ª£§§§§ªªª§ª§§ª§£§§££ £\9c\99\92\96\96\8b\8b\85\81\85\85\81\81~zwtmpmptwzz~\81\81\85\85\81\81\85\88\85\8f\8f\8f\96\96\96\96\99\92\92\99\96\96\92\92\92\8f\8b\8f\8f\88\8b\88\85\88\88\88\88\85\88\88\8b\8b\88\8b\8f\8b\8f\8b\8b\85\81zzztpttttwwz~~\81\81\85\8b §±¸»»»ÂÂÅÅÉÉÌÅÅÅÂÅÅÅž»»»¸¸´´¸¸»»¾»»»¾¾ÅÅÅÉɾ¾¾¸¸´¸»¸¸¸´´´´­­ªªªª­­­±­¸¾Â¾ÉÌÉÉÅÅÉÅÅÅÅÅÅÅž¾Â¾»´­±­§§£ \9c\9c\9c\99\99\96\96\92\92\92\8f\8f\8f\92\8f\8f\8b\88\8f\8f\92 £ §ªªª­­±´±±±´»¸¸¾Â¾ÂÉÅɾ¸¸´¸´´¸±¸´¸»»»¸´´´±´´´¸¸¸»¸´¸¸´´¸¸±±¸´¸¸»¾¸¸»¾¾»»¸´´±­ª±±±¸¸»¸¸¸±ªªª§£ \9c£\9c\96\8f\8b\88\88\85\81\88\85\81\81z\zwzzzz~wtpmic\\XXRRXNNKKKKGGKGKKKNUR\K\ip\85~\81~\85\85\88\85\8b\8f\8f\8f\8f\8f\8b\8b\8f\8f\8f\8b\8b\88\88\85\85\85\88\88\88\88\88\81zzwpmmic_ic___cccic_cmpz~wzzzwwzzzwwtpmimimpmttppwwz~zz\81\81\85\85\88\88\88\85\88\81\81\81zttzmp~mti\Ni=\DKUUKUK\NR\\XXURRNKKGGDGGA=NDKNKNNDNRKGGDDGGGGKKKKNNNNNKKKKGGGGGK\XURNKKGDA=::63303==A63:3AD===:=:=:=::66666633,,,))),)))%%%%%"""\1f""\1f"\e\1f""""\1f\1f\1f\e\18\18\14\18\14\11\ e\ e\ e\ e
+\a\99\99\99\96\92\99\99\99\99\99\96\ 3\ 3\11\14\1103:DGDDDAAADAAGGNU\cfmpttwtwwzz~~~~~ptittpmfc__\UUXRNRRKKKKRNUUU__fmtwtwzw~z\81\85\88\88\8b\8b\8f\8f\8f\92\92\92\8f\8f\92\92\8b\8b\88\8b\8f\88\96\96\96\96\96\96\99\99\99\9c  £§£ª§§ª§ªªªªª­ªªªª§§ª§ \9c \9c\96\8f\92\92\8b\8b\85\81\81\81\81\81\81~zwppptww~w~\81\85\81\81\81\85\85\88\85\8b\8f\8f\92\96\92\92\96\92\8f\96\92\96\8f\8f\8f\8f\8f\8f\8b\8b\88\88\85\85\85\85\85\85\8b\8b\8b\8b\85\8b\8f\8b\8f\8b\8b\81\81w~ztptttwtzzz~\81\85\85\8f§ª´»¾¾¾ÂÂÅÅÌÉÌÉÉÅÅÅž¾¾»»¸¸¸¸»»»¾¾¾¾¾ÂÂÅÉÅÉÉ»»»¸¸¸´»»¸¸¸¸´´­ªªªªª­­±±±»»ÂÂÉÉÌÉÉÅÅÂÅÅÅÅÅÉž»¾»»±±­ª§§§\9c\99\9c\9c\99\96\96\96\96\92\8f\8f\8b\8b\8f\8f\8b\8f\8b\8f\92\9c£§£§­ª­ª­±´´´´´»»»¾¾¾¾¾ÅÂÅ»»¸¸´´´­´±´¸¸¸±±´±±±´´´¸»¸¸¸¸´¸´¸¸±±´´¸¸»¾´»»»»¸»¸´´´ª­±±´´¸»»¸´±­ªª§£ \9c£ \99\8f\8f\88\85\88\81\85\88\85\85~~wtzwwwzwpmcf_\\UUUNURRNKNKGKKKGNNRRUXRXmp\81~~z\85\85\85\85\88\8b\8b\85\8b\8b\88\88\88\8b\8f\8b\8b\88\88\85\88~\88\88\88\85\88\85~zztmpiccmc__cfcfic_cmpz~wzwzztzzzwzwtpmimmmmtpppttwzzz~\81\85\85\88\8b\88\85\8b\81\81~ztpzmpzmpf\K_:\GKRUGUK_RU\\XUXXRRNRNKDGKAANKNNNRRGNRNGGDDGGGGKKKKNNNNNKKKKGGGGGK\XURNKKGDA=::60303:=A36:6DAA::::366:6:66666333,,,,)))))%%%)%"""%"%"\1f"\e\1f\1f"""\1f\1f\1f\e\18\18\14\18\14\11\ e\ e\ e\ e
+\a\99\99\96\92\96\96\99\99\99\96\92\0\ 3\ e\11\11\11%:DGGGGDDDGDDKGNR_fimpttwptwwwzzzzztmmimmic_\\\UUUNNNNKKGGNKKRRX_fmtwtwwzzz\81\85\88\85\88\8b\8f\8f\8f\92\92\92\8f\92\92\92\8f\8b\88\8b\8b\88\99\96\99\96\96\96\99\99\9c\9c ££§§ª§ª­§­ªª­­­ª­ªªªªª£   \99\96\8f\8f\88\8b\88\85\81\81\85\81\81\81~~zwwttwzzw\81~\85\81\85\81\85\81\88\81\88\8b\8b\8f\92\8f\8f\92\8f\8f\92\96\92\8f\92\8f\8b\8b\8b\8b\88\8b\88\85\85\85\88\88\88\88\8b\88\88\85\8b\8b\8b\8b\8f\88~\81~~zttwttwtwwz~\81\81\85§ª­¸»¾¾ÂÂÅÅÉÌÉÌÌÅÅÅÅÅžž»¾»¸¸¸»»»¾Â¾¾¾ÂÂÅÅÉÉÅ»¸»¸¸»¸»»¸¸¸´¸´±­­­ª­±­±´¸»¾ÅÅÉÉÌÅÉÅÅÅÅÅÉÅÅÅž»¾»¸´±±ªªª§ \9c\9c\9c\99\96\96\96\92\92\8f\8b\88\88\8f\8b\8b\8f\8b\8f\92 §ª§§­­­­±±´´´±´»»»¾Â¾¾¾¾Â»»´¸±´±±´±±´´¸´±±­­­´¸¸»»´»»¸¸»¸´¸±±¸´¸¸¸»¸»»»»»»¸¸¸´§±±±¸´¸»»¸±­±ª§§£ \99£ \99\92\8f\8b\81\85\81\88\88\88\88\81\81ztwwttpticcc_\\URURURRRNNKGKNNKRRRRU\UXmt\81zfz\85\85\81\85~\8b\8b\81\88\88\81\85\81\88\8b\8b\8b\88\88\85\85~\88\85\88\81\88\85\81~~wppifcmc\fccfficccmp~~wzwwzwzwzw~wttpmppmmppppttwwzz~\81\85\85\88\8b\88\85\8b\81\81zztpzipwpif\K\=XDKRUKUK_UR__\XX\RURURGDGNKDNNRRNNNKKRNDDDDGGGGNKKKNNNNNKKKKGGGGGK\XURNKKDAA=::333366:=6:6:DD===:663366666666333,,,,)))))%%%%"""%%""\1f""\e\1f""""\1f\1f\1f\e\18\18\14\e\14\11\ e\ e\ e\ e
+\a\99\99\92\8f\96\92\99\99\96\96\96\99\a
+\ e\11\11"=DKKKKGGGGGGKGRRcimppwtwpwtzwzzwwwpppmmii__\X_URRKKKKKKGGKKKKRU\ciptttzzzz\81\81\85\85\88\88\8b\8f\8b\92\8f\8f\8f\92\92\92\8f\8b\8b\8b\8b\88\96\96\96\96\99\99\9c\9c\9c\9c  £§ªªªª­ªªªª±ª­­­­ªª­§£££\9c\8f\92\8b\8b\88\88\88\85\81\85\85\85\81\85\81\81~z~www~~z~\81\85~\81\85\85\81\85\85\88\88\8b\8b\8f\8b\8b\8f\92\8f\8f\92\92\8f\8f\8b\88\8b\8b\8b\88\88\88\85\85\88\88\8b\88\88\8b\88\8b\88\8b\8f\8b\8b\8b\88\81\85\81\81ztwwwwwwwzzz\81~\85ª­´»»ÂÂÂÅÅÉÉÌÌÌÉÅÉÅÅÅž¾¾¾»»»»»»¾Â¾¾¾ÂÂÅÉÉÉž»»¸¸¸¸»»»»¸¸´´´­±­ª­­±±´»ÂÂÅÉÉÅÌÅÉÅÉÅÂÉÉÅÂÅž»¾»¸¸´±±­­­§   \9c\9c\99\99\92\92\8f\8f\88\8b\85\8b\88\8b\8f\8f\96\96 §ªª§ª­­­­±¸¸´´»¾¾¾¾Â¾¾¾»Â¾¾»¸±´±±±­±±­±±´±±±ª­­´¸¸»»»»¾»»»»¸´´±¸´»¸¸¸¸¸»¾»»¸´¸¸¸ª´´´¸´¸¸¸´´±­ª£§  \99£ \96\92\8f\8b\85\85\81\85\88\88\85\85\81zwttwpmpf_c__\\UNRUURRRRNNKNNRNRURUR\XXpw~icz\85\85~\88\81\88\88\81\85\85\81\81\81\85\8b\8b\8b\88\88\88\85\81\85\85\85\81\88\81\81\81~wttmifm_ci_fiimffcmtz~z~wwwwwwzwzwtttpptpppppttwwwzz~~\81\88\8b\8b\88\88\8b~\81z~wtwitpmfcXKXAUGKRRGXN_XR_\\\\_UXRXUKGKKNGRRUURKRNGNKGDDDGGGKNKKKNNNNNKKKKGGGGKK\XURNKGDAA=::6636636::636DDA=:6660033636666333,,,,))))))%%%%%%%%"\1f\1f""\e\1f\1f"""\1f\1f\1f\e\18\18\14\e\14\11\ e\ e\ e\ e
+\a\99\99\92\8f\96\8f\99\99\96\96\96\99\ 3
+\ e\14\11"ADKKNKKKKGGKKGNRcimptttttttwwzwttttptmiff__\\_XUNNKKKGGGGKKKKRRX_fppppwwwz\81\81\81\85\85\88\8b\8b\8b\8f\8f\8f\8f\8f\92\8f\92\8b\8f\8b\8f\88\99\99\96\96\99\99\9c   ££§§­­­ª­ªªª­±ª±±±±­­­ª§§£\9c\8f\8f\88\8f\8b\8b\88\88\81\85\88\85\85\85\85\81\81~\81~zz\81~~\81\81\81\81~\81\85\85\85\88\8b\88\88\88\85\85\88\8b\92\8b\8f\8f\8f\8b\8b\88\85\88\88\8b\88\88\88\88\85\88\88\8b\88\8b\88\88\8b\8b\8b\8f\8b\8b\8f\85\85\88\85\85~tzztzwwz~~~\85\81\85­­¸»»ÂÂÂÂÅÉÌÌÌÌÉÉÅÉÅÉÅÅÅž¾¾¾»»»»¾¾¾Â¾ÂÂÂÅÅÉÅÉž»»»»¸¸»»¾»¸¸¸´´´±±±­­­­´¸¾ÅÅÂÌÉÅÉÉÉÅÅÂÅÉÉÅž¾¾»¾»¸´±´±­­ª§££\9c\99\9c\99\96\92\8b\8b\85\8b\88\88\88\8b\8b\92\99\96ª±ª­ª­­±±­´¸¸´¸¾¾¾¾¾Â¾¾¾¾Â»»¸¸±´±±­ª­­­ª­±±­±ª­±¸´¸¸¾¾¾¾»¸¾»¸¸´±´´»¸¸»»»»»¸»´¸¸´´­´±´´¸´¸¸¸¸´±ª £\9c\9c\99£ \96\96\8f\8f\88\81\85\81\88\85\85\81~zwppttiic\___\\UKRUURRRRRRNRRRRRRRRNX\\tw~icz\81\85~\85~\88\88\85\85\85\85\81\85\85\88\8b\8b\8b\8b\88\88\85\85\85\85\85\88\81\81~~ztwpmfpcfmciimmiifmw~~zzwwwwwtwzzwwtwttwppppttwwwwzzz~\85\85\8b\8b\88\88\8b~\85wzwptipmmcc\KUAUKKNRGXK_XN___X\_XUUXUNKKKKKURUURGRKGRGKDDGGGGNNKKKNNRRNKKKKGGKKNN\URRNKGDAA==::66660306303AD==6363,000333363333,,,,,))))))%%%%%"%%\1f"\1f\1f\e\1f\1f"""\1f\1f\1f\e\18\18\14\e\14\11\ e\ e\ e\ e
+\a\99\99\8f\8b\92\8f\96\99\99\99\96\99\0
+\ e\18\e%DDNKKNNKNKKKGGNR_fmmtttttptwwwwwwptptifcc_\\\\XURNKNGKGGDGGKKNRU\cmimmttwz\81\81\81\81\81\88\8b\88\8b\8b\8f\8f\8f\8f\92\92\96\8f\8f\8f\92\8b\99\96\99\96\99\99\9c   £ §§­±­ª­§ª§ª±­±±±´­±­­§ª \99\8f\8b\8b\8f\8b\88\88\8b\81\85\88\88\85\88\88\85\81\81\85\81~~\81\81\81\81\81\81~\81\81\81\81\81\88\8b\8b\85\85\85\85\85\85\8f\8b\8f\8b\8b\88\8b\8b\81\88\88\88\88\85\88\88\88\8b\8b\88\8b\8b\8b\88\88\88\8b\8b\8f\8b\8b\88\85\85\85\85\81z~~tzwzz~~\81\88\85\99­±»»»Â¾ÂÅÅÉÉÉÌÉÉÌÉÉÉÉÅÉÅž¾¾»¾¾¾¾¾ÂÂÂÂÅÅÅÉÂÅ»»»»»¸¸»»¾»»¸»´±¸±±´±±±´´¸»ÉÉÅÉÉÉÉÉÅÅÅÂÉÉÉÉ»¾»¾¾¾»¸´´±­±ªªª§\9c\9c\9c\9c\96\96\8f\8b\88\8b\8b\88\8b\8f\8b\92\9c­­´­­­­­±±±´»¸´¸Â¾¾¾Â´´¸´±´­­ª­­­ª£­­­­±­­±´´´´»Â¾¾¾»»»»¸±´¸´¸¸»»»»»»»»¸¸´¸´±´­´¸¸´»»¸´´±ª\9c£ \99\9c \9c\96\92\8b\8b\85\85\88\85\85\81\81~zwtimppfX_\\_\\\URRUUNRUNUUNURRURNRNDX__tzzmc~\81\85\81\85~\88\85\85\85\85\85\81\85\85\88\88\8b\8b\88\8b\88\85\85\85\85\88\88\81\85~\81~~zppfpfmmimiimiiiptzz~zwzwwttwzzzzwzttwttpttwwwwwzzzz\85\81\8f\8fK\8b\8bz\85z~tttimmpcf_NU=UNKNNK\G_UR___\\c\UUUXRNKKGNRNURRGNNKRKGDDDGGKRKKKNNNRRNKKKKKKKKRNXURRNKGDA==::663:330,30))=D=")630,000033333333,,,,,,))))))%%%%""%"%\1f\1f\1f\1f\1f"""\1f\1f\1f\e\18\e\14\18\14\11\ e\ e\ e\ e
+\a\99\99\8b\8f\8f\92\96\99\99\99\99\99\96\a\ e")%GNRKNNNKNNGGKGRRccmmtttwtttwwwwtwtpppiffc___\\URRNNKGGGGGGGKKNRU\_miiimtwz~~\81\81\81\85\8b\85\8b\8b\8b\8b\8f\8f\92\92\92\92\92\92\8f\8f\99\99\99\99\96\99\9c\9c\9c  \9c£§ª­­ªª§§£§­ª­±±´­±±±ª§£\99\92\8b\8b\8b\88\8b\88\88\85\85\88\8b\88\8b\88\85\81\81\88\85\81\81\85\85\81\81\81\81z\81\81~\85\85\8b\88\8b\85\85\81\85\81\85\8b\88\8b\8f\8b\88\8b\8b\81\85\88\85\88\85\8b\8b\88\8b\8b\88\88\88\8b\8b\8b\88\8b\8b\8b\8b\8f\8b\88\88\88\85\81~\81~w~zz~\81\81\81\88\88­­´¸»¾Â¾¾ÂÂÅÉÉÉÉÅÌÉÉÉÅÅÉÅɞ¾»¾¾¾¾Â¾ÂÂÂÅÅÉɾž»»¸¸»¸»»¾¾¾»»¸¸±¸±±¸´±´¸¸¾¾ÉÉÂÌÉÉÉÅÅÅÉÅÅÉÅɾ»¾¾¾Â¾»¸¸´±±±­­­ª£   \99\92\8f\8b\88\88\88\85\88\8f\88\92 ±­´±­±­­´´±´»¸´¸Â¾Âž¾»¾´±´´´±­±­­­ª§£ªªª­­ªª±´±¸´¾Å¾»»¸»»¾»´¸¸¸´¸»¸»»»¸»¸¸´¸¸´´±±¸¸¸´»»´´±­§\9c \9c\96\9c\9c\99\92\92\8f\88\88\88\88\81\81~~wwtf_iifcXR\X\\\\XUNRUNRUNUURUUUUUNRRG\_cw~wpc\81\81\85\81\81\81\88\85\85\85\85\85\81\81\85\88\85\88\8b\88\88\88\88\85\88\88\88\85\85\85\81\85\81\81~ttmtfppmpiimmfmtt~~~zwwzwtwtzzwzwzwtwttttwwwwwwzzz~\81\85\92\8fK\8f\8bz\81z~ttwiippficURAURUNRG\K_XNc\\XXc_XUXXUNKKNNURUUUKKRNUNDDDKGGNNKKKNNNRRNNKKNNNNNRNXURNKKGDA==:::336360,0,,%:A="%300,000003333333,,,,,,)))),))%%%%%)"""\1f\1f\1f\1f"""\1f\1f\1f\e\18\18\14\18\14\11\11\ e\ e\ e
+\a\99\99\0\0\8b\96\96\99\99\99\99\99\96\a\11%:AKRRRRRRKNRKGGGRRffmmptttttwwwwtwtwpppifif_\\X\XRRNNKKGGDGGKGKNRU\_iiffmttwz~\81\81\85\85\8b\85\88\8b\8f\8b\8f\8f\96\96\96\96\92\92\92\92\9c\9c\99\99\96\99\9c\9c\9c\9c\9c\99 £§ªª§§§£ £ª§­­±±±±­­­£ \99\92\8f\8f\8f\88\8b\88\88\85\88\88\8b\8b\88\8b\88\85\81\85\85\85\85\85\88\85\81~\81~\81\81\81\81\85\88\88\8b\85\85\85\85~\81\85\85\88\8f\8b\8b\8b\8b\85\85\88\81\88\85\88\8b\8b\88\88\88\85\8b\8b\88\8b\8b\8b\8b\8f\8b\8f\8b\8b\8b\8b\88\85\81\81\81z\81~~~\85\85\85\8b\8b±±´¸»»¾¾¾ÂÂÂÅÉÅÅÅÌÉÌÉÉÅÅÉÉɾ¾Â¾¾ÂÂÂÂÂÅÅÉÉ»»¸¸»¸¸¸¸¾¾Â»»¸¸´´±±¸´´¸»»ÂÂÉÉÅÉÉÉÉÉÉÅÅÅÅÉÅžŻ»¾Â»»¸´±´±±±±­ª £\9c\9c\8f\92\8b\88\85\88\81\8b\8b\8b\92£´±¸´±±­±¸¸´´»¸¸»Â¾ÂÂÂÅž¾»´±´´´±±±­­ªªª£§£­ª­­­±´±¸´¾Â¾»¸»¾»¾»´´¸»¸¸»»»»»¸¸´´´´¸´´±´¸¸¸¸»¸´±­££\9c\9c\99\96\9c\92\96\92\92\8b\88\88\88\88~~tzttic\fc\\URXXX\\X\XNNURRXRURUXUUUURUUK_cfz~zti\81\81\85~\81\81\8b\85\85\85\88\81\85\81\85\85\85\88\88\8b\8b\8b\88\88\88\88\88\88\88\85\81\88\85\81\81wwtwttpppiimmippt~~~zzwwwtttzzwzzzwwwwttwwwwwwwzzzz\81\88\8f\8fK\8f\8f~\81wztptffppimffNAUUXNRG\K\XR_XXXXc\\X\XXNKURNUUUXUKGRRXRDGDNGGRKNKKNNNRRNNNKKRKNRURXRNNKGGDA==::633,33,)),)%)=:"%%)0,,,0000333333,,,,,,))))0)))%%%%%%""""\1f\1f"""\1f\1f\1f\e\18\18\14\e\14\14\ e\ e\ e\ e
+\a\99\99\ 3\a\0\96\96\99\99\99\99\99\99\a\183ADNUUUUURNKNGGGKXRfimmptptptwwwwwwwwptmiiif__\\\UURRNKKGDDGGGDGNNU\_ffcciptwwz\81\85\85\88\8b\88\8b\8b\8f\8b\8f\92\96\99\96\96\92\8f\92\96\9c\99\99\99\96\96\9c\99\9c\99\99\96\99 £§\96£ £ \9c §£ªª­­­­ªªª  \99\92\92\8f\92\8b\88\88\88\85\88\85\8b\8b\8b\8b\88\88\85\88\85\85\85\85\85\81~~\81\81~\81\85~\85\88\88\88\85\85\85\81~\81\85\81\88\8b\88\8b\8b\88\88\85\88\85\85\85\88\8b\8b\85\85\85\85\88\88\88\8f\8b\8b\8f\8f\8f\8b\8f\8b\8b\8f\88\88\81\85\85\85\85\81\85\81\85\85\88\8f­±±´¸»»¾»¾¾¾ÂÅÉÉÂÉÌÉÌÌÉÅÉÅÉ޾ÂÅÅÂÅÅÅÉÉɾ»»»¸»¸¸»»¾¾¾»¾¸´¸´±´¸¸¸»»¾ÅÅÉÉÅÅÅÉÉÅÅÅÅÅÅÅÅž»Â¾¾¾Â¾¸»¸±¸´´±´±­§£ \99\96\92\8f\8b\88\88\88\8b\8f\8f\92£¸´¸´±´±´»¸¸¸¾¸»¾ÂÂÅÅÂÅÅ»¸´´´´´­±­­ªª­§§§§ª­±±±±¸±¸¸Â¾¾»»¸¾»Â»¸¸»»»»»¾¾»»¸¸´´¸´¸¸¸±¸»¸»»»¸±­ª£  \9c\99\99\99\96\92\8f\92\8b\8b\8b\85\85pzpzimf_\\_XXURXUXXX\\\URUUUUUURUUUXUUUXU__fi~~\81\85\81~\85\85\81\81\81\8b\81\85\85\88\85\88\85\81\85\85\88\88\8b\88\8b\88\88\8b\8b\8b\8b\8b\88\85\88\88\85\81zzwzwtttpmippmpmp~~zzzwzttptwzwzzzwwwzwwwwzwwwwzzzz\81\88\8f\8fK\92\8f\81\81wztppiimtmpiiKAUX\NRDXG\XR_XU\Xc\_UXUURXXUNUXUXUNDNN\XGXXUGXNNNKKNNNRRNNKKNNNKRUUURNNKGGDA==::660,30)),))%%%0%%",0)),,000033333,,,,,,,,)),)))))%%)%%""""""""\1f\1f\1f\e\18\18\18\1f\14\11\ e\ e\ e\ e
+\a\99\99\a
+\a\96\0\99\99\99\99\0\0\a)6DGRRXXXXNNNNKKGR\_fmmmptpttttwwwzwwwppiiiifc_X\XXUNRNNKGDGGDGDGKKR\_cfc_fmptw~\85\85\88\88\8b\8b\8f\8f\8f\8f\8f\92\96\99\96\92\92\8b\8f\92\99\9c\96\96\96\96\99\99\99\96\99\96\96\9c \99\92\8f\99\99\99\99\99\9c §§ªªª£££§\9c\9c\99\92\92\8f\8f\8b\85\88\85\85\88\85\88\8b\8b\8b\88\88\88\88\85\85\88\85\85\81~z\81~~\81\81\81\85\85\85\85\85\81\81~~\81\81\85\88\88\88\8b\8b\8b\8b\85\88\85\81\88\85\88\88\85\85\85\85\88\88\88\8b\8b\8f\92\92\8f\92\8f\8f\8f\92\92\8b\8b\88\85\88\88\85\88\88\85\8b\8b£±±±´¸¸¸¾¸»¾¾ÂÂÅÉÂÅÉÌÌÌÌÉÅÉÉÅÂÂÅÂÂÂÅÅÂÂÅÅÅÅÉÉÉÉɾ¸¸»»»»¸¾¾¾Â¾»¾¸¸»´´¸»¸»¾¾ÂÂÅÉÉÉÉÅÉÉÅÅÅÉÅÅÅž¾Â¾¾Â¾¾Å»»»±´´±´´±±­§£\9c\99\92\92\8f\8b\88\8f\8f\92\92\92¸¸¸¸¸´¸´¸»»¸»¾»¾¾ÂÅÅÅÂÅÅŸ´´¸´´¸ª±±­­­­£ª§ª­­±­±­´±¸´¾Â¾¾»»»¸¾¾»»¸»¾¾»»¾¾»¸»¸´¸´¸¸´´¸¸¸»¸¸¸±£§£   \99\99\96\96\92\92\8f\8b\88\8b\88\81ppizifcX\\cUUUR\UXXX\\\\UURRUUXUUUUURUU\R\cpm~\81\85\88\85~\85\85\81\85\85\8b\85\85\85\88\88\88\85\81\85\85\88\88\8b\88\88\8b\8b\8b\8b\8f\8f\8b\88\88\8b\88\88\81~~z~zwtttpimmpmmpzzw~zwwwttwwwww~zzzwzzzzz~zzzzzzzz\81\85\8b\8b\8f\8f\92\85\81wztppmfipimfmKDX\\RUGUGXUR_XUXX_X\RXXXU\\XRUXUURRARK_\G\\XRXRRNNKNNNRRNNKKKKNKNRRURNNKGGDA=:::63,,0)))),)%%%,"%\1f0,%),,,00003333,,,,,,,,,,))))))))%%%%%%"""""\1f\1f\1f\e\e\18\18"\14\14\ e\ e\ e\ e
+\a\99\99
+\ e
+\ 3\ 3\0\0\a\a\ 3\14
+,:GKUUX\XURNRNGGKX_cfimimptttttttwztwtmpfiiifccX\\XURRNNKKDGDADDGGGRX\_c__fimpt~\81\85\88\8b\8b\8f\8f\92\92\8f\8f\8f\92\96\92\8f\8f\88\8f\8f\96\99\96\92\96\96\99\99\99\96\96\92\8f\92\8f\88\88\81\85\81\88\8b\96\92\9c £ §£\9c \9c \9c\99\99\96\8f\8f\8b\88\81\85\81\85\85\88\85\8b\8b\88\8b\88\8b\88\88\85\85\81\81~~w~~~~\81\81\85\81\85\85\81~\81\81\81\81\81\85\85\85\8b\8b\8b\8f\8b\88\8b\85~\85\81\88\85\81\81\81\85\88\88\88\88\8b\92\92\92\92\96\92\92\92\96\99\99\8f\88\8f\8b\88\88\8b\8b\8f\96\96­±´´´¸¸¸»¸»»¾ÂÅÅÉÅÅÉÉÌÉÉÉÉÅÉÅÅÅÅÅÅÂÅÅÅÅÅÉÉÉÉÌÉÅž¾»¸»»»¾»¾¾¾Â¾»»»»¸¸»¾»»»Â¾ÅÉÉÉÅÅÉÉÉÉÉÅÉÂ޾¾¾ÂÂÅž¾»±±´´´´´´±ª§£ \96\96\92\8f\8f\96\92£\96»»¸¸¸´»¸»¾»»»»»¾¾ÂÅÅÂÅž¸¸´¸´´´­±±±ª­ª£ª§§­ª±­­±´±´´»¾¾Â¾¸»´Â¾»»»¾¾Â¾»»»»¸»»´»¸»¸´´¸¸»»¸´¸­£§£  \9c\99\99\92\96\92\8f\8b\8f\85\8b\8f\81pmizfc_X\\cXURR_XX\\_\__XUURUXXUURRRUXU\UGfwp\81\81\88\88\88\81\85\85\81\88\88\8b\88\85\85\8b\85\88\88\85\81\85\88\88\8b\8b\8b\8f\8b\8b\8b\8f\92\8f\88\85\88\85\8b\85\81zzzzztwttmpptpptwww~ztwtttwwwwwzzzzz~~~~~\81~~zzzzzz\81\88\8f\8b\92\8f\96\85\81zzwpppc_\_iciN_\_\UXGXGUUR\XRUU\XXNX\XX\XXUUXXXUNARNc_c_\\UUURRNKNNNRRNNKKKGKKKGNURNNKGDAA=:::33,,,,))))%%%%)"%"0)%%)),,0003333,,,,,,,,,,,)))))))))%%%%%%""""\1f\1f\e\e\e\e\1f\18\11\ e\ e\ e\ e
+\a\99\99\ e\11\ e\a\a
+
+
+\ e
+\18
+:=GKXX\\\XURRRGRU\c_fimmipptppptwwzwttmmfifffc_XX\XURRRRNKGGDADADDGRUX\___ccimpz~\88\88\8b\8b\8f\92\92\92\92\8f\8b\8f\92\8f\8b\8b\85\8b\8b\92\96\92\92\96\96\96\96\99\92\92\92\8b\8f\8b\81\81~~\81~\88\8b\8b\92\9c \9c£ \99\96\99\96\9c\96\99\96\92\8b\8f\88~\81~\85\81\85\81\88\88\88\88\88\8b\88\85\88\81\81\81~~z~z~~~\81\81\85\85\81\81\81~\81~~\81\85\81\88\8b\8b\8b\8b\8b\88\88\81zz~\85\81w~~\81\85\85\85\85\88\8f\92\92\99\99\96\96\9c\9c \9c\99\99\92\8f\8f\8f\88\8f\96\9c±±±´±´¸´»»»»¸¾ÂÂÅÅÉÅÅÉÌÉÌÅÉÅÅÅÉÉÅÅÅÅÅÉÉÉÉÌÉÉÉÌÅ»»¾¸»»»»»¾Â¾Â¾¾¾»¾¾»¾Â¾¾¾ÂÅÂÅÅÉÉÉÂÅÅÉÉÉÅÉÂÅž¾¾ÂÉž»´´¸´´´´´´­§§£\99\99\96\96\9c´\9c¾»Â¾¾»»»¸»¸»¾¾¾»»»¾¾ÂÅÅÅÅÉ»»»¸¸´´´±­­­­­§£ª§ª­­­­­±´´±±»¾¾¾¾¸»¸¾¾¾¾¾¾¾¾¾¾»»»»»¸´¾¸»¸¸´¸»»»¸´¸ª§£   \9c\99\96\92\96\92\8f\8b\8f\8b\8f\92\81pifzf_\U\\cUURU\U\\\___cX\XRXX\XXURUUXR\XGpzp\85\81\88\85\8b\85\85\88\85\88\8b\8b\88\88\88\8b\85\88\8b\88\85\88\85\88\8b\8b\8f\8b\8b\8f\8b\8b\8f\8b\85\81\85\85\88\85\81~~~~zwwttpttpptptwtzzwwtttwwwwzzzz~z~z~~\81\81z~~~~zz~\85\8b\8f\8f\92\8f\96\85\81~ztpmp_\XRRNfR\_c\UUDXKUUR\URRUUUUU\X\U\\XUX\XUUKDRR___c\\XXUNNNNNNNRRNNKKKKGGGGGUNRNGGDAA=:::03,,)))%%)%"%"%%)%,%"%%),,0000333,,,,,,,,,,,,,,,,)))))%%%%%"""""\1f\1f\1f\1f\1f\e\e\18\18\18\ e\ e
+\a\0\99\11\11\ e
+
+\ e\11\11\11\11\e\14=AGRc\__\\XUUUUXX_fcifimimppmpptwwzzttmiifccfc_\\\XXUUUUNKGGDAADDGKNRUX\_\cccmiwz\85\85\8b\8b\8f\8f\92\92\92\8f\88\8b\8f\8b\85\88\85\88\85\96\92\92\92\96\96\96\96\96\8f\92\8f\88\8b\88\81\81zz~zz~\88\88\92\99\99 \9c\96\92\96\92\99\96\96\92\92\88\8b\85z\81z\81\81\81~\85\85\88\88\8b\88\85\85\85\81\81~zzz~zz~z\81~\81\85~\81~~~~\81\81\81~\88\88\8b\88\88\88\85\85~wz~\81~twz~\81\81\81\81\85\8b\8f\96\9c\9c\99§£ ­­   \99\9c\92\9c  ¸´´±´´¸¸´»»»¾»¾ÂÂÂÅÉÉÉÉÉÌÉÉÅÉÉÅÅÉÉÅÅÅÉÌÌÌÌÏÌÌÉÉž¾»¾»¸¸¸¾»»Â¾Â¾Â¾Â¾¾Å¾ÅÅÅÉÉÉÉÅÂÉÉÉÉÉÅÅÅž»¾Â¾¾ÉÉž¸±¸´´´¸´´±§ª§£\9c\9c  »»Â¾¾¾¾¾»¾»¾»¾»»»»¾»¾¾ÅÅÉÉÉÉÅž¾¾»¸´¸´­­±­ª­££ª§ª±ªª­±±±´´´¸¾¾»»¸»¸¾»¾¾Â¾»¾¾»»»»¾¾»¸»»»¸»±¸¸¸»»´´§§£ \9c  \99\99\96\99\92\92\8b\8f\8f\8f\96\85ticzf\\U\\cUURUXU_\\\ccc\_\_\\\\XXUXXXR_\Gt~t\85\85\88\85\8b\88\88\8b\88\8b\8b\8f\8b\8b\8b\8b\88\88\8b\88\88\88\85\8b\8b\8f\8f\8f\8b\8b\88\88\8b\88\81~\81\85\85\81\85\81~~~zztwttttmpppwwtwwwwwwtwwwwzwzzz~~~\81\81\85\85~\81\81\81\81~z~\85\8f\8b\8f\92\8f\92\81\81~wppimcXXRRKNUX\_\URAUNRRRXURNRRXKXX\XR\\XU\\UXUKGf\cc\__\XUUNNNNNNNRRNNKKGGKDDGGRNNKGGDAA=:::03,0,))%),%%)"%%)))""%%%),,000333,0,0,,,,,,,,,,,,))))))))))%%%%%"""""\1f\1f\e\e\e\18\14
+\a\ 3\0\11\14\ e\11\ e\14\14\18\18\14\18=DKR\f_cc__\XX\X\\_fcfifiiippppptwwzzttmifcccfc__\_\XXUUURNGGDAADAGGKNRU\\\__ciipz\81\85\8b\8b\8b\92\92\92\8f\8f\85\81\8b\85\81\85\81\88\88\99\92\92\92\92\92\96\92\92\8b\8f\8b\85\88\85\81~wwtwwtwzt\92\92\99\92\92\8f\8f\8f\96\92\92\8f\8f\88\8b\88\81\81z\81~~~\81\81\88\8b\88\88\85\88\88~\81~~wwzzzzz~z~\81\81~~~~~~~~z\85\85\88\85\85\85\81~wtwz~zppwz~z~~\81\85\8b\92  £­ª»¸±ª´´¸¾¾¾¾¾»¸´´±´¸¸¸»¾»»¾¾Â¾ÅÅÉÌÉÌÌÉÅÉÂÉÉÅÅÉÉÅÉÅÌÏÏÏÏÓÏÌÌÉž»»¸¸»¾¾¾¾ÂžÂÅÂÅÂÅÉÉÉÉÉÅÅÅÉÉÉÉÉÉÉÅž¾Â¾ÂÅÅž»´»¸¸´´´´´±­ª§§ª­»¾¾¾¾¾¾»¾»»»¾¾¾»»»¾¾¾¾ÂÅÉÌÌÉÌÉɾ¾¾»»¸¸´±­±­§ª£§§ªª­­­ª­±±±´´¸¾»»»»»»Â¾¾¾Å»¾¾»»»¸¾»¾¸¸»¾¸»±¸¸»»¸¸±§§  \9c  \99\99\99\99\92\92\8f\92\92\92\92\88wmfzf\XX\\cUURXXX_\\Xccf\c_c____\XXUX\U__wp\81\85\88\85\85\88\8b\88\8b\8b\8b\8f\8b\8f\8f\88\8b\8f\8b\88\8b\88\8b\8b\88\8b\8b\8b\8f\8f\8b\88\88\88\88\85~~~\85\81~\81\81\81\81z~~twtptpimppwttwwwwtzwwwwwwwzwz~~~~\81\85\85\81\81\81\81\81~\81\81\88\8f\8f\92\92\92\92\81\81ztmpii_UUNRKNUUX\\RN=RKGRNXRNNRNUN\NXXU\X\U\XRDRGKc_cf\_\XXRRNNKNNNNRRNNKKKGKDGGKRNNKGGDA==:::00,,0)%),))),%))))%%"%%%)),,00333,,,,,,,,,,,,,,,,,,,,,)))))))%%%%%"""\1f\1f\1f\1f\1f\e\18\18\18\18\ 3\11\14\11\14\11\e\18\1f\1f\e=DKfUcicffcc_X\_\__cfcfffifimppppwwwzwtwmmicccfc___\\XXUUXRRKGDAADADKNKNUX\\_\cimpz\85\88\88\8b\8f\92\92\8f\92\8f\88\81\85\81\81\81\81\88\8b\99\96\92\92\92\92\92\92\8f\8b\8b\85\81\85\81~zttpptptpmw\8b\8f\8f\8b\8b\88\88\88\8f\8b\8b\8b\88\8b\85\85~z~~z~~~\85\88\85\88\85\88\8b~\85\81zzwzwzzzzzz~\81zz~~~~~~w\81\81\85\81~~~~zptwmmpmtwzwww~\81\88\8f\9c£§±¸Â»¾¸¸¸»¾¾¾Â¾¸´±±´´¸»»¾»»¾¾ÂÂÉÉÉÌÉÉÉÅÂÉÅÅÅÉÅÉÅÅÉÉÌÏÏÓÓÓÏÏÌÅÅ»»¸¸¸¸¾¾¾¾Â¾ÂÂÂÅÂÂÂÂÅÂÂÅÂÅÂÅÅÉÉÉÅÉÅÅÅÉÉÌÅÉÅÅÅÅÂÅžÂÂÅÅÉž»»¸¸´´´¸¸´±­ª­­±¾Â¾¾¾¾¾¾¾»¾¾»»»¸¾¾¾ÂÂÂÉÉÉÌÌÌÌɾ¾¾»¸»¸´´±­±ªª£ª£§ªªªª­ª±±´¸¸¸¾»»¾»»»Å¾¾Å¾¾¾»»´¾¸¾»»»¾¸»±»¸»¸´¸±ª§  \9c\9c\9c\9c\99\99\99\96\96\92\8f\96\96\8f\8bzpizc_UX\\cUURXX\_\_Xcci\fcfccccXXXRX_X_cwp~\85\8b\85\88\8b\8b\88\8b\8b\8b\8f\8b\8f\8f\8b\8b\8f\8f\8b\8b\8b\8f\8f\8b\8b\8f\8f\8f\8b\88\88\88\88\85\81\81~~\81~\81\85\85\81\81z~~tttppmmmpptwtttzwtwwztzwwwwwwzz~~\81\85\85\85\85\85\85\85\81\85\85\8b\8f\92\96\92\92\92\81\81zpimff\NRKNKNRXXXXNK=NNDRNURNRNRURXNXXX\XDRXUUDNGNXc_f\\XXXNNKKNNNNNRRNNKKGKGGKKGRNNKGDDA==:::0000,,),0),,0),%%%"""%%%)),,00033,,,,,,,,,,,,,,,,,,,,,,,,)))))))%%%%%"""""\1f\e\e\e\e\18\14\18\18\18\18\1f\1f%,6G_ficfifficc_\_c___cfcffffimmmpttwwwzwtwpmifccf_c__\\XXUUUUNKGDAAAADKKGKRU_\c_cimmz\81\88\8b\8b\8f\92\92\92\8f\8b\88\81\85\81\85\81\85\85\8b\99\92\96\8f\92\8f\92\8f\8b\88\85\81~\81~ztppmmmmimmp\85\85\85\88\81\85\85\88\8b\88\88\88\88\88\85\88\81~zzwzw\81\85\85\85\8b\85\85\88\81\81~zzwwwwwwwzww~zz~z\81\81z~z~~zwzwzzwtptiimiippittw~\85\8b\99§­¾¾Å»¾»¾Â¾¾Â¾»»´±´´¸»»»¾»¾¾ÂÂÂÅÉÉÏÌÌÅÉÅÉÅÉÅÅÅÉÅÅÉÉÌÏÓÓÖÓÏÏÌÉÉž»¸¸¸»¾¾¾¾ÂÂÂÅÂÅÂÅÅžÂÂÅÅÉÉÅÅÅÅÅÅÉÅÉÉÅÉÉÅÅÅÅÅÅ»ÂÂÅÉÉÅž¾¾¸¸¸´´¸¸¸±±­±¸´¾Â¾¾»¾¾¾¾¾»»¸¸¸»¾»¾¾ÂÂÉÉÌÏÌÏÏ̾¾»»¸¸±±­±ª­§§££ªªª§­­±´´¸´»»»»»»¾¾Â¾¾»¾¸¾»¾¾»¾»¸¸´¸»¸»´´­­§ £\9c \9c \9c\9c\9c\96\99\92\92\96\96\8f\88ztizfcXX\_cXXNX\\\\_\cffcifffc__D\XRX\\__tm~\85\8b\88\85\8b\8b\88\8f\8f\8b\8f\8f\8f\8b\8b\8b\8f\8f\8b\8f\8f\8f\8f\8b\8f\8f\92\8f\88\88\88\88\85\81\85\81\81~~\81\81\88\85\85\81\81~~tptmpimmtptwwttzwtwwzwzwzzwzwz~~~\81\81\85\81\88\85\88\88\85\88\88\8b\92\92\96\96\92\96\85\81zmfic_\GRKNKNNXURUKGANKDNRRRRRRRRUNRU\X\XGN\URDKDNU_cf\_UUUKKKKKKKNKRRNNKKGGDGNNGRKKGGDDA==:::00,,00,00%,,,,)"""\1f""%%%)),,00033,,,0,,,,,,,,,,,,,,,,,,,,)))))))))))%%%%""\1f\1f\1f\1f\1f\e\18\e\1f\1f\1f%))0:Uciififfcffc\\_c_c_cccffciimmpmtwwwzzwtwpificffc_\_\XUXUURRNKKGDA=ADKNKKNR\\c_fimpz\81\88\8b\8b\8f\92\92\92\8f\8b\85\85\85\85\85\85\85\85\8b\96\92\92\8f\8f\8b\8f\8b\88\85\81zzzzttmmiiiifiimpt\81\81~~\85\85\88\85\85\88\85\88\88\85\85~zzw~z\81\81\85\81\8b\88\88\88\85\81\81zwwwttwwtwtwzwwz~\81\81~zz~~wwttwwmpipfimfffmippwz\81\85\92§»ÂÂÉÅž¾¾¾»»´±¸´¸¾¾¾¾¾¾¾ÂÂÅÅÉÌÏÌÉÉÉÅÉÉÉÉÉÅÉÉÉÉÉÌÏÓÓÓÖÏÏÌÌÉÉž»¸»¸»¾¾¾¾ÅÅÅÅÂÅÂÅÂÂÅžÅÂÅÉÉÉÅÅÅÂÅÉÉÉÅÌÉÉÅÉÅÅÅž¾ÂÂÉÉÅž¸¸´¸´»¸¸´´±´»±»¾¾¾¾¾¾¾¾¾¾»»¸»»¸¾»¾¾ÅÅÉÌÌÏÏÏÌÉÅž¾»»¸¸´­­­ªª§££§§­ªª­ª­¸´¸¸»¸»»¸¸¾Â¾Â¾¾Â¾¾Â»»»¾¾¾¾¾¾»¸¸¸¸»»»¸´­ª§££\9c     \99\99\99\92\92\96\92\8f\85zwmzcf\X\_c\\N_\_____fiffiffccccD_XRUX__\pmz\85\88\88\85\8b\8b\8b\8f\8f\8f\8f\8f\92\8b\8b\8f\8f\8b\8f\8f\8f\8f\8b\8f\8f\8f\92\8f\8b\88\88\88\81\85\81\81\81~z~~\85\85\88\81\85\81~wmtipippttwzwwtwwtzwzz~wzwwzzz~~~~~\85\81\88\88\8b\8b\88\8b\8b\8f\92\92\96\96\96\92\85\81wiif_XXGRKNKNNUXRKKGDKGGNRRRRRURRRNRUX\\\GN\XNGGGNR\_c__RXUGGKKKKKNKRRNNKKGGDDKKKNNKGGDDA==:::03,,0003,),00,%\1f\e\1f\1f""%%%)),,,0333000000,,,,,,,,,,,,,,,,,,))))))))))))%%%%%"""""\1f\e\1f"""),,3=Xcifffcfccc__\___c__ccfffiimmmmtwwwzzwwtmmficffc_\_\XUURURRNKKGGAAAGGKKGKNXX_cfipp~\85\88\8b\8f\92\92\92\8f\8f\8b\88\88\85\88\88\85\88\85\8b\92\8f\8f\8f\8b\88\8b\85\85\81~wwttppmmmfffffiiim~\81~~\85\85\85\85\85\88\85\88\88\88\81~~~z~z~\81\85\85\88\88\88\85\88\81\81zwwzwwwtwtttwztw~~\81\81~~zzwtttttimimfiiicfifmmtwz\85\92»¾ÅÅÉÉÉÅÅž¾»¸´±¸´¸»Â¾¾¾¾ÂÅÉÅÌÌÏÌÉÌÌÉÉÉÌÅÌÉÅÅÉÅÌÌÏÏÏÏÖÓÏÉÌÌÌÉž»¸¸¸»»»¾ÅÉÉÅÂÉžÂÅÂÂÂÂÉÉÉÉÅÂÂÅÌÉÌÉÉÅÌÉÉÅÅÉÅÂÂÂÂÅÉÉÅÅ»»¸¸´»»¸´´±±¸±¸´»¾¾¾¾¾¾¾»»»»»»¸¾¾Â¾ÅÉÌÌÌÌÌÏÌɾ¾»»»¸±ªªªªª§§§§§ª­­­­±´¸¸´»»¸¸¸¸¾¾»¾»¾Â¾»»¾Â¾¾»»¾¸¸¸»»»¸´´±§§§§   \9c\9c\9c\99\9c\99\96\96\92\8f\8f\88ztmzff_X\_c_c\c\ccc_cffciiifcfffccX_R\__N_mw\81\88\85\81\88\8f\8b\8f\8f\92\8f\8f\8f\8b\8b\92\8f\8b\8b\8b\8f\8f\8f\8f\8f\8f\8f\8f\88\88\88\88\81\85\81~~\81t~~\81\88\8b\85\88\85~zttmpmmmtpzzwzwwztzwzz~z~zzzzz~~~~~\85\81\88\88\8b\8b\88\8f\8b\8f\92\96\96\96\96\92\85\81wiff\UXGRKNKNNRXNNKDDGGDKNUUUUURRRRUXXXX\GNXXKKDKRN_\___RXRGGKKKKKKKRRNNKKGGDDNKKNKNGGDDA==:::00,,00330,0,,)\1f\e\e\1f\1f""%%%)),,,033300000000000,,,,,,,,,,,,,,,)))))))))))))))%%%%%"\1f"%%%,00KXU_fcccccccc\\\\\__c_c_fffffmmppwwwwwwwtpmmffcifcc_\\\XRRURNNGGGGDAAGKGGDGKNU\ccipp~\81\88\8b\8b\92\92\92\8f\8f\88\88\8b\85\88\85\85\88\88\88\8f\8b\88\8b\81\85\81\81zwztipmimiiiccffcfiipz~~~\81\85\85\88\85\88\85\88\88\8b\81\81~~~~~\81\81\85\85\88\88\88\88\8b\81\81zzzzwtttwtpppwwz~~\81\81\81~wwwtppmpfmiififf_cfcimptz\85\8f¾ÂÉÅÉÉÉÉÅÅÅž¾¾»´¸´¸¸»»ÂÂÂÂÂÂÅÅÅÉÉÏÓÌÌÌÌÌÉÌÌÉÉÉÉÉÉÉÌÌÌÌÌÏÓÏÌÌÏÏÌÌɾ»»»»¾¾ÂÉÌÉÉÂÅÂÅÅÅÂÂÂÅÂÅÂÅÉÉÉÉÉÅÅÅÌÉÌÌÉÉÉÉÉÂÅÉÉÂÅÅÅÅÅÅÉž¾»´¸¸¸»¸±´±­´±ª´»¾¾¾Â¾»»¸¸¸¸»¾»»»¾ÂÅÉÌÉÌÏÌÏÌž»»»»´±ª§­ªªªª££ªª±±±­´¸¸»¸»»´¸´¸¾»¸»»»¾¾ÂÅ»¾¾¾Â»»»¸»´¸´¸»»¸±±±ª§ª£   \9c\99\99\99\9c\99\99\92\8f\92\8f\8bzppzff\\ccfffffXcf_cfcicmmmifiifffXcN\\\G_mw~\88\85~\88\92\8b\92\92\92\92\8b\8f\8f\8b\92\8f\8b\8b\8b\8f\8f\8f\8f\8f\8f\8f\8f\88\88\88\88\85\85\81\81\81\81w\81\81\85\88\8f\88\88\81\81zwtptmppptz~~~zwzt~z~z~~\81~zz~z~~\81~\81\81\85\88\8b\8b\8b\88\8f\8b\8f\92\96\96\96\92\92\81\81wifcURXKRKNKRRRXRNKGGGGDGNXXUUURUURX\XUXXGKUDGKGKUK\X\\\RUNKKKKKKKKKRRNNKKGGDGKKKNNNGGDDA=:::6000,,,00,,0),)\1f\18\1f\1f\1f""%%%)),,,03630000000000000000,,,,,,,,,,,,,,,)))))))))))))))%"%)))00:NXX\c\_c_ccf_X\\\\\_c_fccffiippttwwzzwwttmimfcffcccc_\XXRRRRKKGGGGDDDDGDGADGKRX__imtz\81\85\8b\8f\92\92\92\92\8f\85\85\8b\88\85\85\88\85\88\88\88\85\85z~zz~wtppimififf_c_ccffiitwz~z~\81\85\85\81\85\88\88\88\8b\85\85~\81\81\81~\81\81\81\81\85\85\85\85\8b\85\81~~zwwttpwtpppttw~~\81\81~~wttpmmimciiiiiifcfccimmtw\85\92ÂÅÅÅÉÉÉÉÅÅÅɾ»»´¸´¸»¾¾ÂÂÅÂÂÂÉÅÉÅÉÓÓÏÌÏÏÌÉÌÉÉÉÌÌÉÌÌÌÌÌÌÌÏÏÏÌÌÏÏÏÏ̾»»¾»¾ÂÂÉÉÉÉÅÅÂÅÅÅÅÂÅÅÅÅÂÉÅÉÉÅÌÉÅÉÌÅÉÌÉÉÅÉÅÅÂÅÅÂÂÂÅÂÉÉÅÂÅž»¸¸´¸»´±±­ª­­§±»¾»¾Â¾»¸¸¸¸»»»¾¾»ÂÂÂÅÌÉÌÌÌÌɾ»»»¸´­§ªªªª§§££ªª­´´±´»»»»»»±´´´»´¸¸¸¸»»¾ÅÅž¾Â¾¾»»¸¸¸±¸¸´¸¸»­­­­ªª££   \99\99\99\9c\99\99\96\88\8f\8f\8f~itzic_cfiiiiii_ff\fi_ifippmimifif\fK_XcG_mzz\85\81z\88\92\8f\92\8f\92\92\8f\92\92\8b\92\92\8b\8f\8f\8f\8f\92\8f\8f\8b\8f\8f\8b\88\85\85\85\85\81\85\81\85z\85\85\88\88\8f\88\85~\81~zwttptpww~~\81\85~~zt~~~~\81\81\85~~~z~~~\81\81\85\81\85\88\8b\8b\8f\8b\8f\8f\92\92\96\96\96\92\96\85\81wif_XUXNRGNKRUUURNGGGGGGGR\XUUUURUR\XUXUXGNRGNNKNRKXXXXXRRKGGGGGGGKKRRNNKKGGDKGKNNNNGKDA==:66600,,0)00,,,%)%"\18\1f\1f\1f""%%%)),000033333333000000000000000,,,,,,,,,,,,,,,)))))))))))%)),,63GNU\X_\\__cfccX\\\_____cfcffiipptwwwzzzwwtpmiicfcfc__\_UUNNNRNKGGDGDDDADDDAAAGGK\Xfipw\81\88\88\8f\92\92\92\8f\8b\88\85\88\88\85\85\85\88\88\88ww~wzwtttmiffifffcc__\__cfmmttwzw~~\81\81\81\85\85\88\8b\88\88\85\81\85\81\85~\81\81\81\85\81\81\81\81\8b\88\85~zwttttttpmpppptzz~~zzwwpmiififfiffifcccfffippz\85\96ÅÉÅÅÉÉÉÅÉÅÅž¾»¸¸¸´¸¸¾¾ÂÂÂÅÂÂÉÅÌÉÌÓÖÓÏÏÏÌÌÌÌÌÌÉÌÉÌÌÌÉÌÌÌÏÏÏÏÌÏÏÏÓÌÅ»¾¾¸¾ÂÂÉÉÉÉÂÅÅÅÅÅÅÅÂÅÉÅÅÉÉÌÉÅÌÌÉÌÌÉÉÉÉÉÅÉÅÂÂÅžÂÂÅÂÌÉÅÂÅÅž»»¸´¸¸±­­ª§ªª£­»¾»»¾¾»»¸¸»»»»¾»¾¾ÂÂÅÉÉÌÌÌÌÉž¾¸»¸´´ªª§§§§§££§ª­±¸±´¸¸¸»¸»¸±´±±¸±´±´´¸¸»Å¾»»¾¸´´´´¸´´¸¸¸ªªª­§§§£ £ \9c\96\99\99\99\99\92\88\8f\8b\8b\81i~wpicfimmmiimfifXciciiipppimmificfU__fG_mww\81\81~\85\8f\8f\92\92\96\96\92\96\92\8f\92\96\96\8f\8f\8f\8f\8f\8b\8f\8b\8b\8f\8b\88\88\85\85\81\85\85\81\81~\85\85\88\88\8f\88\85z\85~~wwttwpzz\81\81\85\88\81\81z~\81~\81\81\85\81\85\81\81~z~~~~\81\81\81\85\85\8b\8b\8f\8f\8f\92\92\96\99\99\99\96\92\85\81wif_UXXRRKNNRRUUUKNNGDKKGR\XUUUURXR\\XXXUKKUGRKNNNNNUUUXNNNGGGGKGGGGRRNNKKGGDGAKRNRRKKDAAA:66600,,,)0,)))")"\1f\e\e\1f\1f""%%%,,0,,003633333333333000000000000000,,,,,,,,,,,,,,,))))))))),0:DKNRX\\\X\_cccc\_\___cccccfffiipttwwtzwzzwtppiicfffc\\X\URRRNRNKDGDDDDA=AAA=AADGKRXfimw~\85\85\8b\8f\8f\8f\8f\8b\88\85\88\85\81\81\81\85\88\8bpttmtppmpif_cf_cc__\\\__ffmmptwww~z~\85\81\81\85\85\88\85\88\85\81\88\85\85\81\81\81\81\85\81\81~~\88\85\88~zwwwpttppmmmmmpwwzzzwttpmmffifcifiiffcffffittw\85\96ÉÅÅÅÅÅÅÅÉÅÅÅ»»¸¸¸¸´¸¸Â¾ÂÅÂÂÉÉÌÌÏÓÓÏÏÓÏÏÏÌÏÏÉÌÌÌÌÉÌÉÉÌÌÏÏÏÓÌÏÏÏÓÌÉž¾»ÂÂÅÉÅÉÉÅÉÅÉÉÅÉÅÅÅÉÉÉÉÉÌÌÉÌÏÉÌÏÌÌÉÅÉÉÉžžÂÂÂÅÌÉÅž»¸¸´´¸¸­ª§§ §§ £»¾¾»¾¾»»»¸»»¾¾Â¾¾ÂÅÅÅÉÌÌÏÌÌÅž¾»»´±±ª­££§§££§ªª±±´´¸¸»»»»¸¸´´­±±­±±±´¸¸¸Â¾Â¾¾¾»»´¸±±´´´´¸»´££§ª§§§  £ \9c\96\99\99\96\99\92\8b\8b\8b\8b\81z\81wtmmimpmmmimiifUficfmipptmptmfmicXcciG\ptt\81\81~\81\8b\8f\92\92\96\99\92\96\96\92\96\99\99\8f\92\92\92\8f\88\8b\8b\88\8f\8f\88\8b\88\81\81\85\81\81~\81\85\85\85\88\8f\88\81w\81~zztwwww~z\85\85\85\8b\85\85\85\81\85\81\81\85\88\81\85\81\81\81w~~\81~~\81\85\81\85\88\8b\8b\8f\8f\92\92\99\9c\9c\99\96\92\88\81wmfcX\XRRNNRRRUUURRRKKGNKU\XUUUUU\U__\U\XNGUKUNNNRNNUKRUKKKGGDDGDDGDRRNNKKGGDDAGNNRRKKDDAA:66600,,),,0))""%"\e\1f\1f\1f\1f""%%),00,,30636333333333333333000000000000000,,,,,,,,,,,,,,,),),03AGNRUUXXXUX__ccc_c\_cccc_cffifmmttwtwwwtwwtpmmifficc_\\U\URRRRNKKDGDDGAA==AA==AGGNRXciitz\81~\88\8b\8b\8f\8f\8b\88\85\88\85\85\81\85\88\88\8bppmmpmmfif\_______\XX\\ccfmmpwwtwzzz\81\81~\85\85\85\85\88\85\85\85\85\81~\81\81\81\81~\81~~~\81\88\81~twtmtpppmmimmmpttwzwttpmifcffciffiffffffimwwz\81ÅÉÉÉÅÅÅÅÉÅž¾¾»¸¸¸¸»¸Â¾ÂÅÂÂÉÌÌÏÓÓÓÏÏÓÏÏÏÌÌÏÌÌÏÉÉÉÌÅÉÌÌÏÏÏÓÌÓÌÏÏÌÌÅžÂÅÅÌÅÉÉÅÉÉÌÉÉÅÅÉÅÅÉÅÉÉÌÏÌÏÏÌÌÏÌÌÉÂÉÅÅÅžÂÂÂÅÉÉÉÉÅÅ»»»¸´´´´­§£££££\9c ¸¾Â¾»»¾»»»»¾¾ÂÂÂÂÂÂÅÅÌÏÏÏÌ̾¾¾»»´´±ªª £§£§ £§ª±±´±´´¾»¾¾»»´±ª­­ª­­±´¸´´¾»¾¾¾»¾»¸´´±´´´´±´¸±£££§§§§    \9c\96\96\96\92\96\92\8f\8b\8f\8f\85~\85zwppmptppmmpmmiXiifiiitptppwpmpmf\ffiG\pmt~\81z\81\88\8b\96\92\99\99\96\99\96\96\99\99\99\92\96\92\92\8f\8b\8f\8f\8b\92\8b\8b\8b\85\81\85\85\85\81\81\81\85\85\88\85\8b\88wz~~zwtzzwz\81~\88\88\88\88\85\88\88\85\85\85\85\85\88\85\85\81\81~z~z\81\81~\81\81\81\81\88\8f\8b\8b\92\96\96\99\9c\9c\96\96\96\85\81zpfcU\XUUKNRURUXUUUUNNGNNU\XUUUUX\X\_XU\XNKRKRRKKRKKRNRGGGGGGDDDDDDDRRNNKKGGGGADKNNNKKGAA=:66600,,))),%)"%%%\1f\1f\1f""""%))),0,,30:3666666333333333333333000000000000000,,,,,,,,,,,,,,36DKRNRUUXXUU\\_cfcc_cccffccffmimptttwtttpttpmiiiffic__\XXXURRNRRNGGGDDD===:A==AAGGRRX_fipw~~\85\8b\88\8b\8f\8b\88\88\88\88\88\81\88\88\8b\8fpmiiifcfi_\\_\_\X\XXXX\_ffmppwwtwzzw~~~\81\85\85\85\88\85\85\85\88\81\81\85\81~~~~zz~\81\85\81zwtpptppmiiiiifmfmtwtptpiiccffcffffiiffiffmwz~\85ÉÉÉÉÉÅÅÉÅÉÅž»»»¸»¸¾Â¾ÅÂÂÂÅÂÂÉÌÌÌÏÖÖÓÏÏÌÏÌÌÏÏÌÏÏÉÉÉÉÉÉÌÌÌÏÏÓÏÓÌÏÏÌÏÅÉÅÅÂÅÅÅÌÉÉÉÉÉÌÉÌÉÉÉÉÅÂÉÉÅÌÌÌÏÌÌÌÏÏÌÌÉÅÅÂÅžÂÂÂÅÌÉÉÅÉž»»´´±±±­£ £ £ \96\9c¸¾¾¾»»¾¾»»»¾ÂÅÂÂÅÂÅÅÅÉÏÌÌÏ̾¾»¾»»»¸´­§§ ££§£ £§­­±±´´¸Â¾¾»±´­±­ª­­±±´´±¸¸»»»¾»»´´¸±¸±´´´´´±§£££§§§   \9c\9c\99\96\92\92\92\92\8b\8b\8f\8f\85\81\81~ztttptppmpppim\fmfmmfpptttzpptpmcfiiG_pmwz~z\81\85\88\99\92\99\99\99\9c\99\99\99\99\9c\96\96\96\92\92\92\8f\8f\8f\96\8f\8f\8b\88\85\88\85\85\81\85\81\85\8b\8b\81\88\85wwz~zttw~w~\81~\88\88\88\88\88\88\8b\85\88\85\85\85\88\85\85\85\81zzzz~~z~~\81\81\88\8b\88\8b\92\96\96\99\99\99\96\96\96\81\85zwf_\_XXRNNRURUURXUURRNRNX\XUUXX\\X\_XU\UNKRNNUKKRGKNNRGGGKGGGDDDDDDRRNNKKGKDDDGNNRNGGGA==:66600,,,)))%,)"%%\e\e\1f""%%%,),,,0,006366666666666333333333333300000000000000000,,,,,,,,066GNNRRRRXXUX\X\cfcfcffffcffffmmppttttppmipmmifficcf_\\XXXUUUURUURKGGDAA::=:=:=A=GKRRU\fmpt~~\85\88\8b\8b\8b\8b\8b\88\85\85\88\85\88\8b\8f\8fmiiffccff_\\\X\\XXXXUX\_fimmptwwzzzz~~~\81\81\85\85\88\81\81\85\85\81\85\85\85\81~~zzz~~\81~zwwtpptpmiiiiffiiiptpptpiiffifffcffffiiifipwz\81ÅÉÉÉÉÉÅÅÅÅž»»»»»¸¾ÅÂÅÅÂÅÂÂÅÉÌÏÏÏÓÓÏÏÌÏÌÌÌÌÌÌÌÌÌÉÉÉÉÉÉÉÏÏÏÓÏÓÏÏÓÏÏÅÌÉÅÅÉÉÉÌÌÉÉÉÌÌÉÌÉÉÉÉÉÂÅÅÉÌÌÏÏÌÌÌÌÏÏÉÅÅžžÂžÂÉÌÉÉÉÅ»¸´´±ª­ª££ \9c \9c\99\92»¾»»¾¾»¾»»¾¾ÂÅÂÅÉÂÉ\99ÉÌÓÌÉÌɾ»¸¾¾»»¸±±§£ £§§££§ª­­±´´¸»ÅÅž±±­­­­±­­±±±´¸¸¸¸¸Â»»¸¸¸´´±±±±¸´­ª£§£§§£  \9c\9c\9c\99\99\92\96\96\92\88\8f\8f\92\88~~~zwwwtwppmttpipfcpfipcpptpwwzttppffimGfmmw~~z\81\81\88\9c\92\99\99\99\9c\9c\99\9c\99\99\99\92\96\92\92\96\8f\92\92\96\8f\92\8b\8b\85\88\85\81\85\85\81\81\8f\8f\81\85\81zwzz~pwtzz~\85z\8b\85\85\85\88\88\8b\85\88\85\85\88\8b\85\85\85\81~zz~z~z~\81\81\85\88\8b\8b\8b\92\96\96\99\99\99\96\96\92\81\85~zf_ccXXUNNRURXRRXXRUURRNX\XUUX\_\\\\\XXRNKNNKRNGNKKGKNGGGGGKDKDDDDDRRNNKKKKDDDGKNNRGGGAA=:66600,,,))%%0,%))"\18"""%%)0%0,03,=0366666666666666666333333333300000000003000000000,003:=GKNNRRRUUUUXU_cfffffiifffifipppppptpmmiiiiif_cf__c\XXXUUXURRUXUNNGGDDA==:::::AAGKRRX\fmttz~\88\88\8b\8b\88\88\8b\88\85\85\8b\88\88\8f\8f\92mifffcccc\\\\\\\\X\UUX\cfipppptwz~~~~~z~\81\85\85\85\85\81\85\85\85\81\81\85~~~z~zzz~zwtttptpppmiffffcffiimptmmiiiifffffiicfiiimpz~\85ÂÅÌÌÉÉÉÅÅÅž¾¾¾»»»»ÂÅÅÅÅÂÅÂÂÅÌÌÌÓÏÏÓÌÌÉÌÌÉÉÉÌÌÌÌÉÌÉÅÉÉÉÌÌÏÌÓÌÏÓÏÓÓÓÏÌÌÉÉÌÉÉÌÉÌÉÌÌÌÌÌÉÉÌÉÅÅÉÉÅÉÌÌÌÉÌÌÌÌÏÉÅÂÂÂÅÅÅÂÂÂÅÅÅÂÉÉÌÌÉɾ»¸´¸±ª­ª   \9c\9c\99\99\96»¾¾¾¾¾¾Â¾¾ÂÂÂÅÅÅÅÅÉ\99ÌÌÏÏÌÉž»¸»»»¸¸´±§££££§£££ª­±±´´¸»ÉÉž±­­­ªª±ª­­±±´´´±»¸Â»¸´¸¸¸´±´±´¸´­­§ª§£§§   \9c\9c\99\99\96\96\96\92\85\8f\8b\8f\88\85\81~zzwzttpmmtttmtiftifp_tmtpwt~tpptitppGmmmw~~w\81~\85\99\96\99\99\9c\9c \96\9c\99\99\99\96\96\92\92\99\92\96\96\96\92\96\8f\88\88\8b\85\81\85\85\85\81\92\8f\85\81\81zwzw~twwzzz\81w\88\85\85\85\88\88\8b\88\8b\85\88\88\88\88\85\85\85~~~~~~zz\81\81\85\85\8b\8b\8f\96\96\96\96\99\96\92\92\8f\85\85\81~fpi_X\UNRNXRXUUXXRRXUUN\\XXXX_cX_\XX\UNRNKRNRNGKGGGGKGGGGGNRNDDGDDRRNNKKGGDDAGGNKRKKDA==:66600,,))%,,33),,%\e"""%),,),0336A33::66666666666666666666333333333300000:0000000000306=AGKNNRNUUUUXXX_cfffffififiifmppppmmpmiifiicf___c\\_XUUURRXURRUXURKDDGDAA=::6::ADGNNUX_cittw\81\85\88\8f\8b\8b\8b\88\88\85\85\8b\8b\88\92\92\96mifffcccc___\_\\\X\XUX\cimmppttwz~~~\81~~\81\81\85\81\81\81\85\85\81\81~~\81\81~~z~z~wzzztwwtttppimfcfcccfiiippppmmmiifffiiffffiippz\81\88ÅÉÌÌÌÉÉÉÅÅž¾¾»¾¾¾»»ÂÂÅÂÅÂÅÂÂÅÌÌÏÓÏÏÏÌÉÅÉÉÅÌÉÉÉÌÌÉÉÉÅÌÉÉÌÉÌÉÏÌÏÓÓÓÓÓÓÏÏÌÌÌÉÌÌÌÌÉÌÏÌÌÌÉÉÌÌÉÅÌÅÅÉÉÉÂÅÌÉÌÌÌÉÅÂÅÅÅÅÂÂÅÅÅÅÅÅÌÌÌÌÉÉÅž¸¸´±ªª§  \9c\9c\9c\99\99\99»Â¾Â¾Â¾ÅÅÅÅÅÂÅÂÅ\99ÉÉÌÌ̾¾»¸»±¸¸¸´±ª§§§£§££§ª­±­´´¸»ÌÌÉ»±­ª­­­­ª­­±±´´´±»¸¾¾¸¸¸´¸´±´´¸¸±±±ªª§§£§ £\9c\9c\99\99\96\96\96\96\92\8b\8f\88\8f\88\88\81\81z~zzwtpmpptpmtiiticm\wmtpwp~wwpti~ttGpmmw~~w\81\81\85\96\99\99\99\9c\9c\9c\99\99\99\99\99\99\96\96\96\96\96\99\99\96\96\96\92\8b\8b\8b\88\85\85\85\88\8b\92\8b\85\81\81zzwwzwtzzww~t\8b\85\88\88\85\88\8b\88\8b\85\88\88\88\88\85\85\85~\81~~\81zzz~\81\85\88\8b\8f\92\96\92\96\96\96\96\92\92\8f\85\85\85~itmcX_UNUR\UXUXUUUUXUUU\\XXX\_c\_X\UXXRURKRKNNKKKGKGGKGGKKRURDDDGDRRNNKKGGDDDGKNNNNGDA==:66600,0))%03A6,00)\e"%\1f)),,,,330:=63::66666666666666666666666333333333333G0000000000636ADGKNNNNRUUXX\\_fficfiicifiiimppmpmmmmfffiffc__\_XXRUURRNNURRUUUUUNGDDAA=::=:::ADDNRU\_fmttw\81\81\88\8b\8b\8f\8b\88\88\88\88\8b\8b\8b\92\92\92iifccccccc____\\\\XXUU\ffimpmttwz~~\81\81~~~\81\81\81\81~\81\81~\81z~~~\81~~z~~w~zzwtwwtttpmmffffccffffmmppmpmmmiifffiffiiftt\81\81\8bÅÉÌÌÌÉÌÉÂÅž¾¾¾»¾¾¾¾ÂÅÅÅÉÂÅÅÅÉÉÌÌÏÌÌÌÌÉÂÉÅÂÉÉÉÉÉÌÌÉÌÉÌÌÌÌÉÏÌÏÌÓÓÖÖÓÖÓÏÏÏÏÌÉÌÌÉÉÌÌÏÌÌÌÉÉÌÏÌÉÉÂÉÅÅÂÂÉÉÉÌÌÉÉÅÅÂÅÅÅÅÅÅÅÅÅÉÅÏÏÏÌÉÌÅÅž¸´±±§ª£\9c \9c\9c\99\96\9c\9c»Â¾¾¾ÂÂÅÂÂÅÅÅÂÂÂÂÂÅÉÉÅÉÉÉ»¾»»´»±´¸¸´±­ªª£§§£§§ª­±±´¸¾ÏÌÌÉž»´±­ª±­­­ª­­­´´±±¸»¾¾¸»¸¸¸´´´´´´±´­­ª§§§§££\99\9c\99\9c\96\99\99\96\96\8f\92\8b\8b\88\8b\85\85\81~~zwppptptmptimpifp\wmptwt~wzpt~\81zwGtppw~~w~\85\85\96\9c\9c\9c\99\9c\9c\99\99\96\99\99\9c\96\99\99\99\99\9c\9c\99\99\96\8f\8f\8b\8b\85\85\85\85\8b\8f\92\88\85~\85z~zwzztzzttzp\88\88\88\88\85\88\8b\88\88\88\88\88\8b\85\88\88\85\81\85\81\81~~~~\81\81\85\88\8b\8b\8f\92\96\96\96\92\96\92\8f\8f\81\85\81~iwpmXcUNUU\XXXXURURUUUX_\\UU\__\\\_X\XUUUNNNNKKKGGKGKNKKNNNRUDDDGDRRNNKKGGGDDDNRRRNDDA==:66600,0,))36D:033,\1f")")),,,003,:::666:6666666666666666666666333333333333f33:::06300:6:DGKKKKNKRUXUX\\_fiifififiiimimppmppmiiffiicfc__\\XXRURNNKKRNNRRUXURDGA===:===6=AGDKRU\_iptwz\81\85\88\8b\8b\8f\8f\8b\88\88\8b\8f\8f\8f\96\92\92iff__cffccfffcffc_\XUU_cimppptpwwzz~~~~z~~~~z~~z~~~~~~\81~zzzzz~zwttwwttpmpiicffcffcfifmmppppppifififiiiitw\85\85\8fÉÌÌÌÉÌÉÉÅž¾¾Â¾ÂÂÅÉÉÉÅÉÉÉÉÅÏÉÏÌÉÌÌÉžÂÅÅÅÅÅÌÉÉÌÌÏÌÏÏÌÏÏÌÏÓÖÖÖÖÖÖÏÏÏÏÏÌÌÌÌÌÌÌÌÉÉÌÉÉÌÌÌÌɾÉÅÉÅÂÅÉÉÉÌÅÅÅÉÅÉÅÅÅÂÅÉÅÅÌÉÏÏÌÌÉÌÅÅž»´´±§ª§\9c£\9c\99\9c\99 \9c¾ÂÂÂÂÅÂÅÅÂÂÂÂÂÅÂÂÂÉÉÅÅÉÂÅ»»»¸´¸´´¸¸´´±­ª££ª§§§­ª±±´¸ÏÓÌÉÅ»¸±±±­­­­­­±­±´´´±»¸¾¾»»»»¸¸¸´±±´±±­­ª§§ª£££\99\99\9c\9c\99\9c\99\99\96\92\8f\8f\8b\88\8b\88\88\85\81~zztppptwmmpiitmfpcwmptz~\81\81\8ftt\81\85~zGwttw~~z~\85\85\99\9c\99\9c\9c \99\96\9c\96\9c\96\9c\96\99\96\9c\9c\9c \99\9c\96\8f\92\8b\8b\85\85\85\85\88\92\8f\8b\81~\85~\81~t~~p~zptwm\88\88\85\88\88\88\8b\88\88\88\88\8b\8b\88\88\85\85\81\85\85\85~\81~~\85\81\85\8b\8b\8b\92\92\96\96\96\92\92\92\8b\8f\81\85~~fzmp_fUNUR_\X\XXRXRRUX\_\_XXX_\XX\_X\XUXXRKNKNKGGKKGKKKGRKKNRGGDKGRNNNKKGGDDADRUNNKDGA==:66600,,0,,3:G:36\e0"%%%,,),,,,0066:66666666666666666666666666333333333333m6D===6:630=6=ADGGKKKKRU\XX\__cfifiiiffiimmppppmmiiffcffcf__\X\UUNRNKGKGNNNRNRURNAGA===::==6=AGGKR\_impwwz\81\88\88\8b\8b\8f\92\8b\8b\8b\8f\92\92\92\92\92\96ffccccffffmiiiiifc_XXX_ciipttttwtwwzz~zwzzzzwzwwzzz~zz\81~~wzw~zwtttttttpppmmfffcffcccciimpptptmfiiiffimmw~\88\88\92ÉÌÌÌÉÉÉÉÂÅž¾¾¾Â»ÂÅÂÉÉÉÉÉÉÉÉÅÌÌÏÌÉÉÉž¾¾ÂÂÂÉÉÌÉÉÌÏÏÏÏÏÏÓÓÏÓÓÖÚÚÓÓÓÓÏÏÓÏÌÉÌÌÌÌÌÌÌÌÌÉÌÌÌÌÉÉÂÅÉÉÅÂÂÉÉÉÉÉÅÂÅÅÉÉÉÅÅÉÌÉÉÉÌÌÏÏÌÉÌÉÅž»´¸­§§£   \9c\9c\99 ÂÂÅÂÂÂÅÂÅž¾ÂÂÂÂÅÅÅÂÅž»¸»¸´¸´±´´´´­­­§£ª§§§ª­´´´»ÓÏÉž¸´±­±­­­­±±±±´´´´±¸¸»¾¾»¸»´¸¸´´±´´±­­ªª§ª££ \99\9c\9c\9c\99\99\96\96\96\8f\92\92\88\8b\88\8b\8b\88\85\81~~tttppwtppmmtpitfwppt~\85\8f\8f\92t\8b\85\85\81~zwwwwz~~\81\85\8f\99\99\99\9c\99 \9c\92\9c\99\99\99\99\96\96\96\9c\9c\99 \99\9c\96\8f\92\8b\8f\85\81\88\88~\8f\8f\8f\85\81\85\81\85\81pz~tzzmpwm\85\88\88\85\85\88\8b\88\88\88\8b\8b\8b\85\88\81\85\81\85\85\85\81\81~\81\81\85\88\88\8b\8b\8f\92\96\99\96\92\8f\92\88\8b\85\85~zf~pmciURUXc_XfX\U\UUX\_c\\\\\\\UXX_\_\XUUUKKKKGKKGGGKKGKNGGKRKKGKDRNNNKKGGDDDAURRKGDDA==:666000,,,)0"D63\1f\e,")%%))),))),066:33:66666666666666666666666333333333:AA\996GAAA:=633A:AADGGKGKNUXX\X__cfiffiimiiffmmppppmifffccffcf___\XRRNNKKKGGGKNNNRUUNGKA=A====A=AAGKNR_cmptzz~\81\8b\8b\8b\8b\92\92\8f\8f\8f\92\92\92\96\92\96\92ccfffffiffpmmmmmicc\\\cffmmpppttpttzzzwtwwzzttttwwwzww~zztwtzwttttttttpptmmiicccc_c_ccciptwtwpmmiiffimpw\81\8b\8b\96ÉÌÌÌÌÉÉÉžž¾¾¾Â»ÂÅÂÉÅÅÅÉÉÉÌÉÉÉÌÉÌÉɾ¾»¾¾ÂÅÅÌÌÌÌÏÏÏÓÓÓÓÓÏÓÖÖÚÚÓÓÏÏÏÏÓÏÌÅÌÉÉÌÌÌÌÌÉÉÌÌÌÌÉÉÅÅÅžÅÅÉÌÉÉÅÅÂÅÅÅÅÂÅÉÅÅÉÌÌÌÌÌÌÌÉÅž¾¸¸­ªª £ \9c\9c\9c ªÅžÅ¾¾¾»Â¾ÂÉÅÂÅÅž¾»¸¸´´´´­´±´´±­±ª§­ªª£­±¸´´»ÏÌž¾¾»´±­­±±­±±´±´´¸±¸´¸¸»¾»»¸¸¸¸´´´´±±±­ªªª§§§£\9c\9c   \99\99\99\96\92\8f\8f\8f\8b\8f\8b\8f\8b\88\88\81\81~wwtptzwtppmtpmtizppw~\92\92\99\96\8b\8f\88\88\85\81zzwwwzz~~\88\92\99\96\96\9c\96\9c\9c\96\99\9c\99\9c\99\92\92\99\99\9c\9c \9c\9c\99\8f\8f\8b\8b\88\81\88\8b~\8f\92\8b\88\85\88\85\81~iz~wzzmtwm\81\85\85\85\85\88\88\8b\88\88\88\8b\88\81\88\81\85\85\85\85\85\81~~\81\85\85\8b\88\8b\8b\8f\96\96\96\96\92\8f\8f\88\8b\85\85zwzzpiwt\UU\fcXp__U\UX\_cf_\\\\X\X\X\\c_\RRRKKNKGNGGKKGGGNKGGKNKKKGGRNNKKKGGDDA=RRNKGGDA==:666000,,)),6A:0\1f\e,")%"%)))%)),,63633666666666666666666666666333333336KDD\9c3DAAA=A:66A=A=ADDKGKNUXX\\_ccfiffiimffffmmppmmimifffccc_c___XXURNNNKKGGGKKKNRRURKKAAAA=ADDAADGKUcffmpwz~\81\85\8f\8f\8f\8f\96\96\92\92\92\96\96\96\92\92\96\92cffifiiiiitpppppiff___fffimpmpptpppwwwwtttwwpmmptttwttzwwttpwtpptttttwppppmiffccc_c_cccitpwtztpmmmccmpmz\85\8b\92\92ÌÌÌÌÏÌÉÉž¾¾Â¾¾ÂÅÅÉÅÉÅÉÉÉÉÉÉÉÉÉÉÉÉž»»»¾¾ÂÂÉÌÏÌÌÏÏÓÖÖÓÓÓÖÖÖÚÚÓÖÓÏÏÏÏÏÌÉÏÉÌÏÏÏÏÌÌÉÉÌÉÉÉÅÉÉÅÉÅÅÂÅÅÉÉÉÅÅÅÂÅÅÅÉÅÅÅÂÂÅÉÉÏÌÏÌÌÌž»¸±­­££ \9c\9c£ª­ÅŞž¾»»»Â¾ÂÅÅÅÂÂÅÅ»¾»¸´¸±´´±´±´±±±±­ª±­­§­±¸´¸»ÌÉž»»¸±±±±±´±±´±±´´»´¸¸»»»¾»¾»»¸¸¸´´±±­±­ªªª££££  \9c \9c\9c\99\99\96\92\92\8f\8b\8f\92\8f\92\88\88\88\85\85\81w~wwpzztttitmiwizwt~\96\96\96\9c\96\8f\92\8b\88\85\81~zzzw~~~~\85\96\99\96\96\99\92\99\99\99\96\99\99\9c\99\96\96\99\96\9c\9c\9c \9c\99\92\8f\8f\8b\8b\81\88\8b\81\8f\92\8b\8b\88\88\88wzizzzwwppwp~\81\81\81\85\8b\85\88\88\88\85\8b\85\81\85~\81\81\85\85\85\81~~\81\85\88\8b\88\8f\8b\92\92\96\96\99G0\8f%\88\81\85zw~zmiwwwU\_ifXwi_U\X\\c_fc_XX_\\\\\\_c_\NNUKKKKGRKKKKKKGKGGGNKGGKKGRNNKKGGGDDA=NNKKGDDA==:666000,,,,)366,\e\e),%%\1f"%%%,,)3,303336666666666666666666666663333333:DNGG 3AA====:33DAA=ADDGDKNU\X\__cfffffffiififimmpiiiiffffcc_c____X\URNNNKKKGKGGKNNNRRNNDGDDADGGGDGNUffiiptz~\81\85\88\8f\8f\8f\92\96\96\92\92\96\96\96\96\96\96\96\92ffffiiimmmtptttppiicccfifimpmmttpmmttttpppttpmmppptppptppppmtpmptttptwtppmpificcc__\cccitpzzzwtimmffimpw\85\8b\96ÉÉÏÏÌÏÌÉÉž¾¾¾ÂÂÂÅÅÉÉÉÅÉÅÉÉÉÉÅÌÉÉÅÅ»»»»»»ÂÅÌÏÏÌÏÏÓÖÖÖÓÓÖÖÖÚÚÖÓÓÓÏÏÏÌÌÌÏÌÏÏÏÓÏÏÌÌÅÌÅÉÅÅÅÅÂÅÉÅÅÅÅÅÅÌÉÅž\8bÉÉÉÌÌÌÌÉÉÅž¾¸´­­§£ \9c\99§­¾ÅÅž¾¾»»»¸»¾¾ÂÅÅÅÂÂÅž»¸´´´±±±±±±±±±±´­­±­­ª­´¸¸¸»Éž´¸¸±±´´´¸´´´´´¸´¸´»¸»»¾¾»»¸¸¸´´´´±±­­ªªªª§   £ \9c  \9c\99\99\96\8f\96\8f\8f\8f\8f\8f\8f\8b\88\88\85\85\85\81\81zzt~zzppiwpizizzt\81\99\99\99\99\96\92\92\8b\88\85\81\81~~zw~z\81~\81\92\96\96\96\96\92\99\96\96\96\99\9c\9c\99\96\96\99\99\9c\9c\9c \9c\9c\96\8f\8f\8b\8b\85\8b\8b\85\8f\92\88\88\88\88\85wziwwztwtpwpz~~~\85\88\88\85\88\85\88\88\85\81\81~\81\81\81\81\81\81~~\81\85\88\8b\8b\8f\8f\92\96\96\99\99D0\92%\8b\81\85zz~zmizzzi__mi\zpc\\\__fci_\\\c_\\\\\___XRNUNNKKKRNKKKKKGGGGGKDDDGGDRNNKKGGGGDA=KNKKGGDA==:666000,,,,,0,),\1f\e)0)"\1f%")%00)::603333333336666666666666666663333336=GKGD 3===:=3633DAA=ADDGGGRX\\__ccccfffcfififfiiimfffifiifffcc\c\_\\RRNKRKKKKGGGGNNNNNKKGKKGDGKKKGKU_iimmpwz~~\81\88\8f\8f\92\92\96\96\96\92\96\96\92\92\92\96\96\92fffiimimppttwwtttmpfffiiimmmmptppmipmppmmmmimiimtmpmmmmimmmmmmptttttttwttppmimfccc__cccftpz~~zwmpmiimipz\85\96­ÌÌÏÏÏÏÌÌÉÅž¾Â¾Â¾¾ÂÂÅÅÅÉÌÉÅÉÅÌÅÉÅÉÉÅÅž¾»¾¸»»¾ÅÏÏÏÌÏÓÓÓÖÖÖÖÖÖÖÖÖÖÖÖÓÏÏÏÌÌÌÌÏÓÏÏÖÏÌÌÉÂÌÅÉÂÅÂÅÂÂÅÅÅÅÅÅÅɞ¾¾¾¾Â\8fÅÅÉÉÌÉÌÅÅÅž¾¸±±­ª§  \99¸»ÂÅÅÅ»»»¸¸»»»»¾ÂÅÉÅ»¸´´´±´±­±­±±±±´´±±´±­­±¸¸»¸¾É¸¸¸´´´¸¸»¸¸¸´´¸¸»¸¸¸¾¸¾»»»¸´¸´´¸´±±±­­ªª§§£    \9c\9c \9c\99\99\99\92\92\8f\8f\92\8f\8f\92\8b\88\88\85\88\88\85\85~~~~\81~ctmztmzmz~t\92\99\99\96\99\92\92\92\8f\88\85\81\81~~zz~z\81\81~\8f\92\96\96\99\96\96\99\96\96\99\9c\99\9c\96\96\99\99\9c\99 \9c\9c\9c\99\92\8f\8f\88\8b\88\8f\88\92\92\8b\85\88\88\85~zitwwpwppwpwzzz\81\88\85\88\85\81\88\85\85~\85\81\81\81~~\81\81\81\81\81\85\88\88\8f\92\92\96\99\96\99\99\960\8f\8b\8b\81\85wwzzmm~z~mc\mi_~ticc_cifci_c__c____\\_\\\RUURNNNNNNNNKKKKGGGGGDGGGDARNNKKGGGDDA=ANKKGDDD==:6660000,,00))%,"\1f,,)""%%)3336==:003300000033333666666666666633333:DDGGDAi3=::6:3333A====DDDGKRU\__cc_c_cccccffiffffficfciiiiffffc_c\\XXUNNNRKNKKKGGKNKNKKKKKNNKGKKNNKNXcimpptwz~\81\81\88\8b\8f\96\8f\96\96\96\92\96\96\92\92\92\92\96\96ffiimpmppptttwwwwptmiiiiimmpppppmmiiiiifmifiiffipimicfifimiimiptttttttwtwttmmmicc___cccfptz\81z~tppmifimt~\85ª­ÉÌÏÏÏÏÌÉÉÅɾ¾¾Â¾Â¾»ÂÂÂÅÅÅÌÌÉÉÉÉÉÉÅÅÉÉÅÉÅž»¸»»»¸ÂÂÏÏÌÏÏÓÓÓÖÚÚÚÖÚÚÖÖÖÖÓÏÏÏÏÏÏÏÏÓÓÏÏÓÏÌÏÉÅÉÉɾÂÂÅÅÅÅÅÂÅÅÂÅÉž¾¾»¾»»¾¾ÂÂÅÅÂÉÅÉÅÅž¾¸±±­ª£  \99»¾ÂÅÅÅž»»»¸¸¸»¸¾»ÂÅÉÅž¾¸´±±±­±­ª­±±±±±´±±±´±±±´¸¸»»ÂÅÅž¾¸´¸¸´¸»»¸»´¸´»´»»»»»»¾»»»¸´¸´´¸´´´±­­­ª§§££\9c\9c\9c \9c \9c\9c\99\96\92\8f\92\92\8f\8f\8f\8f\8f\88\85\85\88\88\88\85\81\81\81\81\85\81\wwztw~p\92\85t\96\96\96\96\96\8f\92\92\8f\8b\88\81\85~~~~~~\81\85~\8f\92\99\99\99\96\99\99\96\99\9c\99\9c\99\99\96\9c\9c\9c\99 \9c \9c\99\96\92\92\88\8f\92\92\85\96\8f\8b\88\8b\88\85\81~ftwwpwptzpzzz~\81\88\88\85\88\81\85\85\85\81\81~~~~~\81\81~\81\81\85\88\8b\8f\96\96\96\99\99\99\99\99,\8f\8f\8f\85\85wwwzpmzzzpi_imf\81wmficfmffmcfcc_c_c__\_\X\XXXUURRRNRNNNNKKGGGGDDDDDAARNNKKGGGGAA=ANKKGDDA==:66600000,3,,)))%",),%%)),666:A==0033,,,,,,0000033333666666663333=KKGGGA=f3=66:63633=A=:=AGDGKRU\_\__\c_____ciffffcfffcc_ffiffcccc__X\XXUNRRRNNKKNKKKNNKGGGKKNRNKKKNRNR\fptppwwz\81\81\85\88\88\8b\92\8b\96\96\99\96\96\92\92\96\92\92\96\99ifmmpmmppptptzwzztwpimmimmppppppmiffffffifcfcccfmfifcfccfiiiimmpttwtttwwwwtmpmicc___ccfimww~~ztptififpt~\81­±ÅÉÌÌÏÌÌÉÉÅž¾¾Â¾¾¾ÂÂÅÅÉÉÌÉÉÌÉÅÅÅÅÉÉÉÂÉž¾¾¸¸¸¸¸»ÂÅÌÌÏÓÏÓÓÏÖÚÚÚÚÚÖÖÚÖÖÓÓÏÏÌÏÌÓÓÖÓÏÏÓÏÏÏÌÉÌÉÅÂÅÂÂÂÂÅÅÂÂÂÅÅÅž»¾»¸¸»Â¾Â¾ÅÅÂÅÅÅÅž¾¾»±­±ª§£ \9c¾ÂÅÅž»»»¸¸¸¸¸¸¾¸ÂÉÉÉž¾´´­­­­ª­ªªª­­­­­±±­´´´´´´»»¾¾ÅÅÅÉ»¸´»¸»»»¸¸¸¸¸»¸¸¾¾¾»¾»¸¸»´´¸¸¸¸±´´´­­­§§§££\9c    \9c\9c\99\99\96\96\92\92\8f\92\92\92\92\92\8b\88\85\85\88\85\85\85\85\85\85\88\85c\8bzz\8f~\81t\96\96\96\99\96\92\92\92\92\92\92\8f\8b\8b\81\81~~z\81~~\81\88\85\92\92\99\9c\99\99\99\99\96\9c\9c\9c\99\99\99\99\9c\9c\9c\9c\9c\9c£ \99\96\96\92\92\96\96\96\85\96\8f\8f\85\88\85\85\85\81itwtttttzt~zz~\81\85\88\81\85\81\85\85\85~~~z~~~\81\81~~~\85\88\88\8f\96\96\99\96\99\9c\9c\99,\92\8f\8f\85\85tztzppwzwmtzipm\81zpttpimiimfif_cc____\\\\X\\XXXUURRURRNNKKKGGGDDDAA==RNNKKGGGDAA=ANNKGGDA===6660000000,,,))%)))0)%,,0:66=A=:3033)))))),,,,000000333336663333ANNKDD=:G3::3663633=AA=AAGGGNRUX\X\\\_\\\\\fffffc_cc_c__cfiffccfcc_\\XXURRRRRNKNRNNNRKKGDGKKRRNNKGKNKRXftwtpwwz\81~\81\88\88\8b\8f\8b\92\96\96\96\96\96\92\96\92\92\92\96ifiippmpppttwzz~zwztwmmmpppttppmpiffcfccffcfc_fcffcccccciiiimmmtttwtwtzzzzzppiiccc_\_cfiizz\81~zttwmmiipw~~±´ÂÅÌÌÏÌÉÉÉɾ¾¾ÂÂÅÉÌÌÌÉÌÉÉÂÉÉÅÉÅɾž¾»¸´¸¸¸¸ÂÅÉÌÏÏÏÓÏÏÖÖÖÚÚÚÖÚÚÖÓÖÓÏÏÌÏÏÏÓÖÖÓÓÓÌÓÏÌÉÉÌÉžžÅÂÂÂÂÂÅÅÅÅ»¾¸¾»¸´»¾¾ÂžÅÅÅÅÅž¾»»´±´ª£ \9c\9c»¾Éž¾»»¸¸¸¸¸¸»»»ÂÉÅÅž»´­±­­­ªª£ª§ª±ª­ª±­±´´¸´¸´»¾¾ÂÅÅÂÅÅÅ»»¸»»»»»¸»¸¸¸»¸¸¾¾¾¾»¾»¸¸´´¸¸¸»´¸¸¸±±­ª§§££      \9c\96\96\96\92\92\96\92\92\8f\96c\92\8b\88\81\85\85\85\85\85\88\88\85\8b\85\92\8fwz\92\8f\8f\92\92\99\99\99\92\92\8f\8f\8f\92\8f\8b\8b\88\85\81~~z~\81\81~\85\88\96\96\99\9c\99\96\9c\99\96\99\9c\9c\99\99\99\9c\9c\99 \9c\99\9c \9c\99\99\99\96\96\99\99\99\99\96\8f\92\81\88\85\81\88\81itwptptpzt~z~~\81\85\85\81\85\81\85\81\88\81~~~~z~~~z~\81\85\88\88\8f\96\92\99\96\99\99\990)\92\8f\8f\85\85tztzptwwwiw~mt\81\85~wwwtmimmpiiccccccc_\\_X\__\\\XXUUURRRNNKKKGGDDAAA==RNNKKGGDAA==ANRNKKDA=A:6660000003,,,))),)),,)003636:==63033)))))),,,,,00000000003333363DRRNGD==K3:66:63336DAA=ADDKDKUUUXUUXX\XXXXXccfcccc___c__cficffccc_\\XXXUUURUNNNNRRRNNKNGGDGKRNNKKGGKGRUcwzwpwwz~~\81\85\88\8b\8f\8b\92\92\96\96\96\96\92\96\96\92\96\92fimmppppptttz~~~zwzwzppppttwwtppmmfc_fc_ccccc\cc_fcc_ccciifimippwwwtww~z~~~wwpmcfcc__ccfmwz\81~zwwtppmipt\81\85±±¾ÂÉÌÌÌÉÉÉÉÂÂÂÂÅÂÂÂÂÅÂÅÉÏÏÌÉÏÌÉÉÉÉÉÉÅÅž¾¾¸¸¸´´´»¾ÅÉÌÌÏÏÏÓÓÓÓÖÚÚÚÖÖÚÖÓÖÓÌÏÏÏÏÏÓÖÓÖÓÖÏÓÏÌÌÉÌÉž¾Â¾¾Å¾¾»¸»»»¸»¾¾ÂÂÂÅÂÅÅÅÅÅž¾»¾¸´´­ \9c\99\99 ÂÅÉž»»¸¸¸¸´´¸¸»¾¾ÅÉÂÅ»»´­±­­ª§§£§£§­ªª­­±´´´´±¸´»ÂÂÅÅÅÅÅž¾»¾¾¸¸»¸»¸¸´»»»¾Â¾Â»¾»»¸´¸¸»¸¸´¸¸¸´±­ªª£££   \9c\9c \9c\99\96\99\96\92\92\92\92\92\92c\8f\88\8b~\81\85\88\85\85\88\8b\8f\92\8f\96\92w~\92\92\92\96\96\99\96\96\8f\92\8b\8f\8b\92\8f\8f\8b\88\85\81~~~~\85\81z\81\8f\99\99\9c\99\9c\99\9c\99\96\9c\9c\99\96\96\9c\9c\9c\96 \99\99\9c\9c\99\99\99\99\99\99\9c\9c\9c\9c\96\92\8f\81\88\88\81\85\81iwwmtppmwtzz~\81\81\81\85~\81\81\85\81\85\81\81~~zz~zz~\81\81\88\88\88\8f\92\92\99\96\96\99\99,)\920\92\81\85tztwtwzwwmz~m~\85\88\81zz~wwfpmpiffcfccc__\__X\c_\_\X\UXURRNNNKKKKGDDDAA==RNNKKGGDAA===NNKGKDA==:666000003000,,,,0,%00,0063366::30033%)%%%),,,,,,,,000003300333:3GUUNNAA=N=:3:::6363GADADGGKGNRRRRRRUUXXUUUU__c_c__\_\___ffffcc__c\\\\\XUXUUURRNRURRRNNNGGDKKNKNKKGDKGRUmz~ztzz~~~\81\81\85\8b\8f\8b\92\92\96\96\99\96\96\96\96\96\96\8fimimppttttttw~~~zz~zzttttwwwzwtpmmicccfcc_cc_\c_\fc__cfcfiimpiptwtwwtz~~\81\81\85zzzmffccccc_imzz~z~zztptpptz§ª­±»¾ÅÉÌÉÉÉÉÅÅÅÂÂÅÂÅÂÂÅÅÅÉÌÏÏÌÏÌÌÌÉÉÌÉž¾¾»»¸¸´´´»¾ÂÉÉÌÌÌÏÏÓÓÖÚÖÚÖÚÚÝÖÖÚÓÏÓÓÌÌÓÖÖÏÖÖÖÓÖÏÌÉÉÉÅž¾Âž¾¾Å¾¾¾»¸»¸»¾¾ÂÂÅÂÂÅÅÅÅÅÅž»¾¸¸´­\9c\99\96\96\99\96ÅÅž»¸¸¸¸´¸´´´¸»»¾ÂŸ¸±±±­­§££§£ £­§§ª±´´¸´´´´¸¾ÂÅÉÉÉɞ¾¾¸¸»»¾»¸±¾»¾¾Å¸¾»»¸¸»»¸»¸¸»»´±±­ª§£££   \9c\99\9c\99\9c\96\9c\96\92\96\92\92\92\92c\8f\88\88~~\81\85\85\85\88\88\92\96\92\99\92z~\99\96\96\99\96\9c\99\99\92\92\8b\8f\8b\8f\8f\8f\88\88\88\81\81\81~~\85\81z\85\92\99\99\9c\9c\9c\99 \99\99\9c\99\96\92\99\99\9c\99\96 \9c\99\99\99\96\99\99\99\9c\9c\9c \9c\9c\99\96\8f\81\85\88~\85~mwzmtpmmzt~z~\81\81\81\85~\81\81\81\81\85~\81zzwwz~z~\81\81\88\88\88\8f\8f\92\96\96\96\99\990A\920\8f\85\88w~wwtwzzz~~\81\88\81\85\88\81~~\81wztmptmffffcccc__c\X\f_\c\XXXUURRRNNKKKKGGDDAA==RNNKKGGDAA==AKNGKKDD=::666000003000,,003,)00,,,360336630033%,%%%)))))),,,,,00000333336RDURRRN==NA66:6:33:6KDDDGKKNKNNNRRNRRRUUURRUX\_\_\\X\__c_ffcc__\__\XX\XXUXUXXUURURRRRRRNKGGKKKNNKGGDGGRUp~\81~wz~~\81~\81\85\88\8b\8b\8b\96\92\96\96\96\99\99\96\92\96\92\8bmmmptttttwwwz~~~z~\81zzwtwwzzz~zwpppicfcccc_c__\__\c___cfcfiimpmptwtzzzz~\81\85\85\88\88~\85pimffccffmmzz~z~~~~wwwtz£ª­±­¸»ÂÅÉÌÌÉÉÉÅÅÂÂÅÅÅÅÅÅÉÉÌÏÌÏÏÏÏÌÏÌÌÌɾ¾¾»»¸¸´´¸´»¾ÅÅÅÉÉÌÏÏÓÓÓÖÚÚÚÝÝàÚÚÚÖÓÖÖÏÏÏÖÖÓÖÓÖÓÓÓÌÌÌÅÅÅÅÂ޾¾»¾»¾¸»»¾¾ÂÂÂÂÅÅÅÅÅÉÅ»¾´¸±ª\99\9c\96\99\99\99ÅÅ»»¸¸¸¸´¸´±±´¸¸¾¾Â¸´´±±­­­§£ § \9c ª£§­­¸¸´´´¸´¸¾ÅÉÌÉÉÉÅžž»»»»»»¸´¾¾Âž»Â»¸»¸¸¸»¸»¸¸¸¸´±­ª§£   \9c\9c\99\99\99\96\99\99\99\99\92\99\96\96\92\8f\96\92\8b\8bzz\85\85\85\85\88\8b\96\99\99\9c\96\9cz\9c\99\99z\99\9c\99\9c\96\92\8f\8f\8b\92\8f\8b\88\88\85\81~\81\81z\81\81z\85\96\99\99\9c \9c\9c \99\9c\99\99\92\92\96\96\9c\96\96 \9c\9c\99\92\92\96\99\99\9c\99\9c\9c \99\96\96\8b\81\81\85~\81zmtwmtpmmzt~~\81\81~\81\81~~~\81\81\81z\81wwwwwzz~\81\81\88\88\88\8b\8b\8f\92\96\99\99\960\92,\8f\8f\81\85w~zztz~zz\81\81\85\8b\81\81\8b\85\85\81\85~zwpttmifffccc_____X_cc_c_XXXUUURRRNNKKGGDDAAA::NNNKKGGDAA==AKKKKKDDA=:6663330003000,0000,000,,033006630033)))%%)))))),,,,,,,000000036NDXAAUR=ARA3366663::GGGDGKKNGKGKNNNNRNRRRNNRXX\X\\XX\\\__cc____X\\\XX\UXUUXX\XXUXUURRNRRKKKNKNNNKKKKGGUUt~\81~zz~~\81~\81\88\8b\8b\8f\8b\96\96\99\96\99\99\96\96\92\92\8f\8fmmpppttwwzzwzz~~z~\81zzzwzw~z~~~ztppiifc_fc_c\\X__\____ffmmmmmtppwtwzz~~~\85\8b\8b\96\8f\8f\88\81tpmifiiiptzzzwz\81~\81z\85~z §ª­±­´¸¾ÉÉÉÉÉÅÉÂÉÂÅÅÅÅÉÅÉÉÌÌÌÏÏÓÓÏÏÏÏÌÌÉ»»»»»¸´¸¸´¸¸»ÂÅÂÌÌÌÏÏÓÓÓÖÚÚÚÝÝÝÚÝÝÚÖÖÖÓÓÓÖÓÓÖÏÖÖÓÓÏÉÌÉÉÅÉÂÅÂÂÅÂÂÂÂÅÅž¾¾»¾¸»»»¾¾¾ÂÂÂÅÉÅÉÅÅÉÅž»»´´´§\9c \92\99\99\96ž»¾¸¸¸¸´´±±­´¸´»¾»¾±­±±­­­ª§  £\9c\9c §£§ªª¸´¸¸´¸¸»ÂÅÉÉÉÉÉÅÅÅžɻ»¾»¸»»»¸¾¾ÂÅÅž»´¸¸»»»¸¸´¸´´´±ª§££    \9c\99\9c\96\96\96\99\9c\9c\96\96\96\99\96\92\92\8f\8b\8b~z\81\85\85\85\85\8b\99\9c\9c \99 ~ \9c\9cw~ \9c\99\99\92\8f\92\8b\92\92\8f\8b\88\88~~\81\81~~\81~\85\92\99\96\99\9c\9c\9c\9c\9c\99\96\99\92\96\96\92\99\96\96\9c\9c\9c\99\92\96\96\96\99\9c\96\9c\9c \99\92\92\8b\81\81\81~~tittmwpmmzp\81~\81\81~\81~~~~~~~z~wwtwwwz~\81\81\88\88\85\8b\8b\8f\96\96\99\99\963\8f,\8f\8f\81\88t\81zztwzz~\85\85\85\8b\85\85\8b\88\88\85\88\81zztttpmfficcc___c_\cffc_\\XXXUURRNNKKGGGDDAA=::NNKKKGGDAA===KKGGGGDDA=66633333300030033,00000,,00036603033))%)%))))))))),,,,,,,0000663AD=AXUK=U=:3633:36:GGDDGKKNGNGGNKKNNNRRRNNNUU\\XXUXX\\\\____\\\XXXXXXXXXUXX\XUUUUUURRURNKKKNNNKKKNNKKUXw~~\81~~~~~\81\85\88\8b\8f\92\8f\96\99\99\99\99\99\92\92\8f\8f\8b\8bpppttwwzz~zzz~~~~~\81~~zzzz~~~~~~ttppmtfiif_c\\X\_\___cfipppmptptzzz~~\81~\81\88\96\99\9c\92\99£\88zwpmmmmmpwzzzzz\81~\88~  ~£§§­­±´´¾ÅÉÉÅÉÅÉÅÉÅÅÅÅÅÉÅÉÌÌÌÌÏÏÓÓÓÓÓÏÌÌÉž»»¸¸»¸´´´´´¸¾¾ÉÅÉÌÌÏÏÓÖÖÖÚÖÖÝÝàÝÝÝÚÖÓÖÖÖÓÖÓÖÖÓÖÖÏÏÓÉÏÌÉÅÅÅÅÅÅÅÂÅÂÂÅž¾¾»¾¾¾¾»ÂÂÅÂÅÉÅÅÅÉÉɾ¾»»¸´´£ \9c\96\96\96\96ÅÅ»»¾»»¸¸¸±±±­±´±¸»¸»±­­­­ª­ª§\9c £\9c\99\9c£ §ª­¸´¸»¸»¸¾ÅÂÅÅÅÅÉÉÉÅÂÅž¾¾»»»¸¸»ÂÂÅÂÅÅ»»´´»»¸¸¸¸¸¸¸¸´­ª§££   \9c \99\99\99\99\92\9c \9c\99\96\96\96\96\96\8f\8f\88\88\81~\81\85\81\81\85\8b\99\99  \9c\9c\81   z~ \9c\99\96\96\8b\8f\8b\92\8f\8f\8b\88\85z~~\81\81z\85\81\88\8f\99\92\96\9c\99\9c\9c\9c\9c\96\99\8f\99\96\96\96\96\96\99\9c\9c\9c\92\96\99\96\99\99\96\99\99\9c\99\92\92\8b\81\81~~~tmttpwpmmzp\81\81~\81~\81~~~z~~zwzwwtwtwwz\81\81\88\88\88\8b\8b\8f\92\96\96\99\96\96\8f,\8f\8b\85\88t~z~www~\81\85\88\88\8b\88\88\8b\8b\8b\88\8b\85~~wwtmifficfc__cfcX_fcc_\\XXUURRNNKKGGDGDAADA::NNKKGGGDAA==AKGGGGGDDD:66633366633303303303000,,,0063600333,,,,,,,,,,,))),,,,,,,00006:063ADUXNA\:=6:33:636KDAAGKKKGKGGKKGKKNRNNNKNRUXXUURUU\\\X_\___\XX\UXX\X\XX\\\XXUUXUURRUUNNKNNRRNNNRRNRXpzz~\81~~\81\81\81\85\88\8b\8b\8f\92\92\99\9c\99\96\99\99\92\8f\8f\8b\8b\88twwwwwz~~~~~~z~~~z~~~z~zw~~z~~\81wwttpwmmicc_\\X\\\_cfffmptpptttwz~z~\81\85\85\88\9c £§££§\99£zwttttmzz~~~~\81\88\88\99\9c££§§§ª­ª­±´¾ÅÉÉÅÌÉÉÅÉÅÅÅÂÅÅÉÉÌÌÌÉÌÏÏÏÓÏÏÌÏÌÉɾ¸»¸´»¸´´±¸´»»¾ÉÅÉÌÏÏÏÖÖÚÖÚÖÚÝààÝÝÝÚÖÓÖÓÓÓÖÓÖÓÖÓÓÏÓÏÉÏÌÉÅÉÉÉÉÉÉÅžÂÉž»¾¾¾¾Â¾Â¾ÂÂÅÅÅÅÅÉÅž»¸»´±± \9c\99\92\92\92\92Å»»¾»»»»¸±±±­´´­´¸±¸±­±­­ªª§§\9c  \9c\96\9c£ §ª±»¸¾¾¾¾»ÂÅÂÂÂÂÅÅÉÅÅÅÅž»»»»»¸»¾ÂÂÅž¾¸¸¸¸»»»»»»¸»¸´­§£££ \9c\9c\9c \99\99\99\99\8f\9c \99\99\99\99\92\92\96\92\8b\8b\88\81~\85\81\85\85\88\88\85\96\9c\9c  \81\9c  ~~£ \9c\99\99\8b\85\8b\92\8b\8f\8b\88\85z\81z\81~w\85\81\88\88\99\92\99\99\9c  \9c\9c\99\99\92\96\92\96\96\92\96\99\9c  \96\99\99\96\96\96\96\96\99\99\96\96\92\8b\81\85~~~pptptwpppzm\85\81\81\81~~~z~z~zztwtttttttz\81\81\88\88\88\8f\88\92\92\96\96\99\96\96\92\92\8b\8b\85\85t~w~zzw\81\81\88\88\8b\8b\88\88\8f:\8b\8b\8b\88\81\81tttmifffcfcc__cc\_fc__\XXUURRNNNKKGGDDDDAAA::NNKKGGDDAA==AKGKDDDDGG=:66333:::66333636636333,003066603333000000,,000,,,00,,,,,,,0336003DGRXND_3A:=66:666GDDDDGGKGKGDGKKKKKRKRNKNRRUUUUURX\X\\_\___\XU\UX\\\X\\\\_\XXXXXRUUUURRNRNRRRRRUX\pttz~\81\81\81\81\81\81\85\88\88\8b\8f\92\96\96\9c\99\99\96\96\99\8f\8b\8b\8b\88\88zzzzzz~~~~\81~~~~~~z~~~~~~z~\81zz~~zzwzzztppii_cXX\___fmimmtwttwwwzz\81\81\85\85\88\88\96££ªª§ªªªªªªzw\88\81~\88\92\85\8f\81\85\85\8b\99\9c ££§ª§ª­ª±´´»ÅÉÉÉÉÌÉÉÅÅÉžÂÅÅÉÌÉÌÅÌÏÌÌÏÌÌÌÌÌÉÌɾ»¾¸¸¸¸´´±´¸¸»¾ÅÉÉÌÏÏÏÖÚÚÖÚÖÝÝÝàÝÝÚÖÖÓÓÖÓÓÓÓÓÓÓÓÓÏÓÏÉÌÌÉÉÌÉÌÉÉÌÉÉÅÂÅÉž»Âž¾ÂÂÅÅÉÅÉÅž¸´»´­­ \99\96\8f\92\8f\92ž¾¾¾»¾»»¸´´±±±´­±¸´±­­­­­§ª££  £ \99\9c££§ª±»»Â¾¾Â¾¾ÂÂÂÉÉÅÉÉÉɾ»»»»»»¸¾¾ÅÂÉÅž¾´»¸¸¸»¾»¸¸¸¸¸±ª£ ££ \9c\9c\9c \9c\99\9c\99\92  \99\9c\9c\96\96\92\96\8f\8f\8b\88\81\81\81\81\88\88\88m\85\8b\9c £\9c\81\9c££ ~§£ \9c\9c\8b\81\8b\92\8f\8f\8b\8b\85z\81z~~w\88~\85\8b\99\96\9c\96\9c  \9c\9c\99\99\96\92\92\96\96\92\99\9c\9c\9c \99\99\99\96\96\96\96\8f\96\96\96\96\92\8b\81\85\81~~ptpppwppmzm\85~\81~~\81~z~~~wztttttttwwz~\81\88\88\8b\8b\8f\92\8f\96\92\99\99\99\96\92\8f\8f\85\88wzw~zzw\85\85\8b\8b\8b\8b\8b\8b\8f6\88\8b\8f\8b\81~ttwmiiffffcf_c___cf_\\XXUUURNNNKKGGGDDDAAA=::NNKKGGDDAAA=DGGGGDADGD==:6366=:=:336363::666300000036300333333333000000000000000030663306AGNUNGc3A=::6::6:GDDDDGGNGGGDKGGKGGNKNKGKRRRXRUXUX\XX\_____X\U\X\\\_\_\____\\\\XXXXUUURRURRURUX\_ftwwz~\81\81\81\85\81\81\88\88\8b\88\8f\8f\99\99\99\96\96\96\92\99\8f\8b\8b\8b\88\88~~~~~~~\81\81~\81~~~~~~z~~zz~\81~\81\81~z~z~~z~~~zwtmmff\\\ccfipmpttzztw~z~\81\85\85\88\8b\8b\92 §§­­ª­­­­­­£§ \99\9c  \9c\92\99\99\99\99\9c   £ª§ªªª­­´´»ÂÉÉÉÉÌÉÉÉÅžÂÅÅÉÉÅÉÅÌÏÉÏÌÉÌÏÌÏÌÏ̾¾¸¸»´±´´¸¸»¾¾ÉÉÌÌÌÓÏÖÚÝÚÚÖÝàÝàÝÚÖÓÖÖÓÖÖÓÓÖÓÖÓÖÓÏÏÏÌÌÌÉÅÌÉÉÌÉÉÉÌÉÅÉÉÅž¾Âž¾ÂÅÅÉÅÉɾ»´¸±±ª£\96\96\92\92\8b\92¾¾¾»»»»¸´´±´´±´¸¸­ªªª­­§ª£££ ££ §ª§ª±´¾¾ÅÅž¾Â»¾ÅÂÅÉÉÉÉÉɾ¾»»»¸»»»»¾ÂÅÅÂÅ»¾¸»¸¸»¸¾¾´¸»¸»±§§ §£    \9c\9c\9c\9c\96\96  \99\9c\99\92\92\8f\92\8b\8f\8f\8b\85\85~~\85\88\8bm\88\8f\9c £ \81 £ \9c §£  \9c\8b\85\8f\96\8f\8f\8f\88\85z\81~\81zw\8b~\81\88\96\96\9c\99\99\9c\9c\9c\9c\99\99\99\96\8f\96\92\96\9c \9c\9c£\9c\9c\99\96\96\96\96\8f\92\96\99\96\96\8b\85\88\85~~wwpmtwtpmzm\85\81\81~~\81z~~~zzztttttttzw~\81~\88\88\8b\8b\92\92\8f\96\96\99\9c\99\96\92\8b\8f\85\88tzw\81zzz\85\88\8b\8f\8b\8f\8f\8b\8f6\8b\88\8f\8b\85zttwpiffffcci_fcc_fc_\\XXUURRNNNKKGGDDDDDAD=::NNKKGGDDAA=AGKGGDAAADAA=:63::==A:3666::==:3:63333033:333633666666333330333300033063::063:6D0RNKc3=::666=66GDDDDDGKDGDGKGGGKKNKKKKKRRUURUXU\_\\__cc_c\_X\X\\X____cccc____\\X\XXXUUXUXXXU\mtwwzz~z\81\81\85\85\81\85\88\88\8b\8b\92\92\99\99\96\92\92\92\8f\96\8b\8f\8b\8b\8b\8b\81\81\81~~~~\81\81~\81z~\81~\81~z~zz~~\81\81\81\81~zzw~~z\81\81\81~zwwpmicccfimmtptww~~~\85\81\81\81\88\88\88\8b\8f\8f\96£ªª±­­±±±±±±§ª£\9c ££  \9c\9c\9c\9c \9c £ §§ªª­±±´¸»ÂÅÉÉÌÉÉÌÉÉÅžÂÂÂÅÅÅÅÅÉÌÉÏÌÌÌÏÏÏÏÏÏÅ»¸»´´´´¸»»¾ÂÌÉÌÌÌÏÏÖÚÚÖÚÚÝÝÝàÝÚÚÓÖÓÓÓÖÓÓÖÓÓÏÓÓÏÌÌÌÌÌÉÉÉÅÉÉÌÌÉÌÉÉÅÉÉÅÅÂÂÂÂÂÂÂÅÅÅÂÂÂÂÉÂÅÅÌÅ»¸¸­­§£\96\96\92\92\8b\92ž¾¾¾¾¾¸»¸´´´¸´¸¸»±ª§ª­ª§§§§£ §§ªª­ª­´¸¾ÂÉÉž¾¾¾¾ÂÅÂÉÉÅÌÉÉÅ»¾»¸¸»»»»¾ÂÂÅÅ»¾»»¸¸¾»¾»¸¸»»»´ªª£££    \99\9c\9c\9c\99\99\9c\9c\99 \96\8b\92\8f\8f\8f\8f\8f\8b\88\85~z\88\85\8fm\88\8f\99\9c \9c\85 ££ £§  £\9c\99\85\8b\96\8b\92\8f\8b\85~~\81\85ww\8f~\81\85\92\96\99\99\99\99  \9c\9c\99\99\96\92\96\96\92\99 \9c £ \9c\99\99\99\99\99\8b\96\96\99\96\96\8f\85\8bt\81\81~zpmtwwpp~m\81\81\81~~~~~\81z~wztwttttwzw~\81~\88\8b\8f\8f\96\92\92\99\99\9c\9c\99\99\92\8b\8b\85\85wzz\81~~z\81\85\8b\8f\8f\8f\8f\8f\8f6\8b\85\8f\88\81wttwpiiiffccfcccc_fc\XXUUURRRNNKKKGGDDAAD=A=::NNKKGGDDAA=DDGGDDD==ADDA=:3:=A=A=6:::==:=:6::66663336663:66::::::6666633333333333:6==333=3D3NKGc3:==:66::6GDDADGGKGGDGKKGGGKKKKKNNRUUXUXXX__\_ccffcc_c\_X__\_ccccccfc__c__\_\\\XX\\\_\c_zwzww~~z~~\81\81\85\85\88\88\8b\8f\8f\92\99\99\96\8f\8f\92\8f\92\8b\8b\88\8f\8b\8b\81\81\81z\81~\81\81\81z\81~~\81\81\81~z~zz~~\81\85\81\81\81~~z~~~\81~\85\81~zztzmffimmpmwtwzw~\81\81\88\88\88\88\8b\8b\8b\8f\92\96\99§§­­ª­­­­´­­ª­§§£§§££    £ £££§§§ª­±´¸»¾ÅÅÉÉÉÌÌÌÅɾ¾¾ÂÂÅÅÂÅÉÌÌÏÏÌÌÏÏÏÏÓÓÉÅÅ»¸¸´´¸¸¾¾¾ÂÅÌÉÌÌÏÓÓÖÚÚÖÚÝÝÝÝàÚÚÖÓÓÓÓÓÓÓÓÓÓÓÏÓÏÓÌÏÏÌÌÌÉÌÅÉÉÉÌÌÌÉÉÉÉÉÅÉÂÅÂÅÂÂÂÂÅž¾ÂÂÅÅÅÅÉÅÂÅž»´­­ª£\99\92\92\8f\8b\96¾»»¾¸¸´´¸¸»»»±§£ªªª§ª§§££ªª­­±­±¸»ÂÅÅÅ»¾¾ÂÂÂÂÂÅÉÅÌÉÉÅ»»¸¸»»»»¸¾Â¾Â¾¾¾¸¸»»¸»¸¸»»¾¸´­ª£ £££  \9c\9c\9c\99\9c\96  \9c \8f\88\92\8f\8f\92\8f\8b\88\88\88\81~\88\88\8bm\8b\8f\85\99\9c\9c\85\9c §££££££ \9c\85\8f\96\8b\96\92\8b\88\81z\81\85ww\8f~\85\85\92\92\96\96\99\99\9c\9c \9c\9c\99\96\8f\96\96\92\99 \9c  £ \9c\9c\99\9c\99\8b\96\99\99\96\96\8f\88\8bt\85\85\81~~~wzzmt~m\85\81\81~~~~~\81~~zwtzttttwzw~\81\81\88\8f\8f\92\96\96\96\99\99\9c\99\9c\99\96\8f\8f\85\85wzz\81\81~w~\85\88\8f\92\92\92\8f\8f6\88\856\88\81wtwtmmmipiffcc_fc\c_\XXUUURRNNKKKKGGDDAAA===::NNKKGGDDAAAAGGGDDD==:AA=A=6=ADAAA:=:=:A:=::=::::666636:3:66:::::::::::666663333366:A=36::6D6GKD_33AA=6:666DAAAGGKKKGGGKKKKKKGGNNRRUXXXXXXX____ffific_f_c\___ccfccccccc_cc___\_\\\\__ccpw~z~zz~z~z~~~\85\88\88\8b\8b\8f\92\96\99\96\96\8f\8b\92\8f\92\8f\88\8b\8f\8f\8b\85\81\81~\81~~\81~z~~~\81~~~z~z~~\81\81\85\85\81\81~\81~\81\81\81\81~\88\85\81~~t~tiimpptmtwzzz~\85\85\8b\8b\8b\8b\8f\8f\92\92\96\99\9c§§­ªªªªª£±­ªª­§ª§§£ £     £  ££§§ª­±´¸¾¾ÅÅÅÉÉÉÉÌÉÅ»¾¾¾ÂÅÂÂÅÉÌÌÏÌÌÌÏÏÏÏÏÓÌÉɾ»»´¸»¸ÂÂÂÅÉÌÉÌÌÓÖÖÖÖÚÖÝÝÝÝÝÝÖÖÓÓÏÓÏÏÏÏÓÓÓÓÏÏÏÓÏÏÌÌÌÉÉÉÉÉÌÌÌÌÉÉÌÉÌÉÉÉÅÅÅžÂÅÅ»¾¾ÅÉÅÉÉÉÅÉ»´±­ª§\99\92\8f\8b\8b\96¾žž¾»»¸¸»»¾¾¸­§£§ª§§§ª£§§­­±­±±´»¾Å¾¾¾¾¾ÂÂÂÂÂÉÅÅÉÉÅž»¸¸»»¾¾»¾Â»¾Â¾¾¾¾Â»»»»¸¸»´¸¾¾»¸¸­§£££ ££ \9c \9c\99\9c\9c  \9c\9c\8f\8b\8f\92\8f\92\92\8f\88\85\85\85~\88\85\88p\8b\8b\81\96\99\99\85\8f\9c£   §§£ \9c\99\8f\96\92\99\8f\8f\8b\85\81\85\85\8b\88\8b~\8f\85\92\92\92\96\99\96\9c\9c\9c\99 \9c\99\92\96\96\96\99 \9c   \9c\9c\9c\99 \99\8f\96\99\99\99\99\8f\8b\8bt\88\88\85\81\81\81~z~mt~m\85\85\81\81z\81~~~~~~wtwtttwwzw~\85\85\88\8f\8f\96\99\99\99\99\99\9c\99\9c\99\96\92\92\88\88t~z\85\81\81w~\81\85\8f\92\96m\8f\8f6:\853\88\81wtztpmimtmffcf_c__c_\XXUURRRNNKKKGGDDAAAA===::KKKKGGDDAA==GGGDAA==:==:==6:DD==A=ADA6D=::=AA===::6:66:6666======:::===::::6666633==AD:==6A:AGA\G3=A=66666GDDADGKKGGKKNNKKKNKGRRUUX\\XX\XX_c_ffmmimfcicf___ccffccccccc_cc_\_\_\\X_ccfftz~w~z~~zzwzz~\85\85\88\8b\8b\8f\92\96\96\92\92\8f\8b\8f\8f\92\8f\88\8b\8f\8f\8b\81~~~~~z~\81w~~z\81~~~~~~\81\81\85\85\85\85\81\85\81\81~\81\81\81\81~\88\85\85\81\81wzwtmpttttwww~~\81\85\88\8b\8f\8f\92\92\92\96\96\9c §ª§±§§§§§£­ª§§ª£§££  £    £   £££§ª±´¸»¾¾ÂÅÅÉÉÉÉÉɾ¾ÂÂÂÅÂÅÅÉÌÏÏÌÏÌÏÏÏÏÓÓÌÉɾ»¾¾»»¾ÅÅÂÉÌÌÌÌÏÓÖÖÓÖÚÖÝàÝàÝÚÖÚÏÓÏÏÌÌÌÌÏÓÏÏÌÏÌÏÌÌÉÌÌÉÉÉÉÉÌÉÌÌÌÉÉÉÌÉÉÅÅžÂÂÂÅžÂÂÉÉÉÅÉÌÉž¸´­­­ª\99\8f\92\96\8b\96¾ÂÅž¾¸¾»»¾¾¾¾¸ª§£§ª§£§§§§ª­­±±±´´»¾Â¾¾¾»»¾»¾ÂÅÅÅÅÅÅÉÅÉÅ»»¸¾¸¾¾¾¾Â»¾¾¾¾»¾Â¸»¾¸¸´»´»¾»¸»¸±ª££££   \9c\9c\99\9c  \9c \99\99\8f\8f\92\92\8f\92\92\8b\88\81\85\85\81\85\81\85\81\8b\88\85\96\99\96\88\92\8f£\9c  §§   \9c\99\96\96\99\92\8f\8b\85\85\85\81\8b\88\88\81\92\88\8f\92\92\96\99\96\9c\9c\99\96\9c \9c\96\96\96\96\99\9c\9c \9c\9c\9c\99\99\99 \9c\92\96\99\99\9c\99\8f\8f\88t\88\8b\85\85\81\85\81~~mw~m\85\85\81\81~\81\81~\81~~~wwwtwttw~z~\85\88\8b\92\92\96\99\99\99\96\99\9c\99\9c\99\96\92\8f\88\85t~z\85\81\81w~~\81\8b\92\i\92\8f::\880\85\81twzttmiiwpiffc______XUUURRRNNKKGGGDDDAAA====::GGGKGGDDAA=ADDDAA==:::66:=36GA::==DGD:A=6=ADDDDDAA=:6:6:6::AAAAAA===ADAA:=::::::66=:=D=A=:=6AG=\K6A=A66:6:GGADDKKGKKNKNNNNKRNRRUUU\_\\XXXXcffimppmpmiific_cffffc_ccccc_c_\\\\_\\\_cfiiwz~z\81~~~wwtzz~\81\85\8b\8b\8f\8f\92\92\92\8f\8f\8f\8b\8f\8f\8f\8b\88\8b\8b\8f\8b\81\81zzzzzz~z~~z~~~\81~\81~~\81\85\85\85\88\85\88\85\81\81~~~~~\85\85\81~\81zzzwptwwwwwwz\81\81\85\85\88\8f\8f\92\96\96\99\99\99 £ªªª­§£§ £ ªª££§££    £\9c\9c\9c\9c \9c   §£§­±´¸»¾¾ÅÅÉÅÉÉÉÉÅÅÅžÂÅÅÅÅÅÉÏÏÏÌÏÏÏÏÓÏÓÏÏÌÌŸ¾ÂÅÉÅÉÉÌÌÌÏÖÖÚÓÖÚÚÝÝÝÝÚÚÖÚÏÏÏÌÉÌÉÉÏÏÅÌÉÌÉÌÉÉÉÌÉÅÅÌÉÌÉÌÌÌÌÉÉÉÌÉÉž¾ÂÂÂÂÅÅÉÉÅÉÌÉÅÅ»¸¸±­­­\96\9c\92\9c\8b»ÅÅÅÂÅŞ»¾¾¾Â»»¾´§££§§££§§§§ª­±±±±´¸»»¾»»¾»»¾»»ÅÅÂÅÉÉÅÅÉÉÉ»»»¾¾Â¾Â»¾¾»¾»»¾´¸»¸¸´»´»»¸´¸¸­­§£££   \9c\9c\9c \9c£\9c \96\96\8f\8f\92\92\92\8f\8f\88\85\81\81\85\85\85\85\88\85\8b\8b\88\92\96\92\88\8f\8f£\99 £££   \9c\9c\96\99\96\8f\8f\88\88\88\85\81\88\88\81\85\8f\8b\92\8f\8f\96\96\96\9c\9c\96\96\9c£\9c\99\96\96\99\99 \99\9c\9c\9c\9c\99\96\9c \99\96\96\9c\99\9c\99\8b\8b\88\88\8b\88\85\85\85\85\85\81z~z~p\85\85\85\81\81\81\81~\81z~~wwtttttz~~\81\85\88\8b\92\96\96\99\99\9c\99\99\9c\99K\99\96\92\8f\85\88t\81~\85\81~w~~w\88\92Xi\92\8f::\880\85\81pzzwtmmittffcc___cc_XUUURRNNKKGGGDDDDAAA====::DDDGGDDDAA=AADAAA=::66663:),6=66::DKD===:AAGGGGGGGAG:=:=:=:ADAAAAAAAKGDD::::::::::=6:A:D===6=G:\GADAD6=::=KDDAGKGKKNKKNRKNNRRUUUUUX\XXX\\_fiimpttpppmmmmifcfcffccf_cc_\_\\\XX\\\\\cimmzzzz~~zzwwtzz~\81\85\8b\8b\8f\92\92\8f\8b\8b\8f\8f\88\8b\8b\8f\8b\88\8b\88\8b\88~~~zzzzz~~z~z~z\81\81~\85\81\81\81\85\88\88\88\88\88\88\85\85~\81~~~\81\81~z~zzzwwwzwwzzzz\81\85\85\88\88\8f\92\96\99\99\9c\99££§ª§­ª£££££\9c£§   £   \9c £\9c\9c\9c\9c\9c   \9c§£ª­±¸»¾¾¾ÂÅÅÅÅÅÅÉÉÅÉÅÂÂÂÂÅÅÅÂÅÉÏÏÏÌÏÓÏÓÓÓÏÌÓÌÌÉÅžÅÅÅÉÉÉÌÌÌÏÓÖÚÓÖÚÚÝÝÝÝÚÖÓÖÏÏÏÉÉÌÅÉÌÌÅÉÅÉÅÅÉÉÅÉÅÉÅÉÅÌÉÌÌÌÌÌÉÌÌÉÉÅÅž¾¾»Â¾¾¾¾ÂÉÌÉÉÉÉÅÅÅ»¸¸´±±­§§\99­ »ÂÅž¾¾Â¾¾¾»»±§ £§§££§§£§ª±­±±±´¸¸¸»¸¸»¸»»¸»ÅÂÂÂÉÅÅÂÅÉÉÅž¾¾ÂÂÅž»¾¸¸»´´¸¸¸¸¸´¸¸¸´´´­­§§£££ £   £\9c \99 \96\92\8f\8b\8f\8f\92\92\8f\85\88\81~\85\81\85\81\85\88\88\8b\88\8f\92\8b\88\8f\8b \9c £  £\9c£\9c \99\96\96\8f\8f\88\85\8b\88\85\8b\8b~\88\85\8b\8f\8f\8f\96\96\92\99\9c\8f\96   \99\99\96\99\99\9c\96\9c\9c\9c\9c\99\96\9c\9c\96\99\96 \99\9c\99\8b\8b\88\88\88\88\85\85\81\85\81\81~~z~t\88\88\88\88\85\81\81~~zzzzztttwwz~\81\85\85\88\8b\8f\96\96\9c\96\9c\99\99\99\99G\96\92\92\8f\85\85w\81\81\85\81~w~\81w\85\8fUm\8f\8f::\883\88\81pzzzwpimttfifc___cf\UURRNNKKKGGGGDDDADAA====::DDADDDDDAA===AA===::666636%),066:=AGD=A==D=KKKKKKKGKKNKA:KADDDDDDDDANKDK==U=:::=::=66=6G==A::D=XDDGDA6A=6=KDGDGGKKGNGNRRNNNRUXUUURXXXXXX\cimmpttwtttpmppmmiffiffcfc_c\X_XXXUUX\XX\_iipwzww~zzwwttwwz\81\85\88\8b\8b\92\92\8f\8b\8b\8f\8b\85\88\8b\8b\8b\8b\8b\88\88\85z\81~zzz~z~~z~z~~\81\85\81\85\81\85\85\88\88\88\8b\8b\88\85\88\85~\81~z~z~ztzw~~zzzwzwzz~z\81\85\88\88\8b\8f\96\99\99\99  §§ª­ª­§§£ £ \9c £\9c\9c\9c \9c\9c\9c\99\9c£   \99\9c  £ §§ª­±¸¾Â¾¾ÂÅÅÂÂÂÅÉÉÉÅžÂÅžÅÉÏÏÏÏÏÓÓÓÓÓÓÏÓÏÏÌÉÉÂÅÂÂÅÉÉÉÌÌÌÌÏÓÖÚÖÖÚÖÝÝÚÝÚÖÖÖÏÏÌÌÉÌÉÉÉÉž¾ÂÂÅÅÂÅÉÅÅÅÂÉÉÌÌÌÌÌÌÌÉÉÉÉÉž»»¾¾¾Â¾ÅÉÉÅÅÉÉÅÅž¸»¸´´±ª­§´»¾ÂÂÅÂÅž¾Â¾Â¾Â¾¾»­§\9c§§§£§§§§ªª±­­±±±´´¸¸»´¸¸»¸´¸Â¾Â¾ÅÂÅÂÉÉÉÉžÂÂÅÅÅž¾¾»¸¸¸±¸´¸¸¸¸¸­´¸±±±ªªª££§ £    \9c\9c\96\9c\99\8f\8b\8b\92\8f\8f\8f\8f\85\85~~\85\81\85\81\88\85\85\88\85\8f\92\8b\8b\8f\8f\9c\9c\9c  £  £\9c \99\96\92\92\8f\88\81\8f\8b\88\8f\8f~\88\85\88\8f\8f\8f\92\96\92\99\99\92\96 \9c \9c\9c\96\9c\9c\9c\99\9c\9c\9c\9c\99\96\99\9c\92\99\99 \9c\9c\9c\8b\8b\88\85\85\85\85\85~\85\81~~zw\85t\8b\8b\8b\8b\85\85\81~~zwzzwwttzz~~~\85\85\88\8b\8b\96\96\9c\99\99\99\96\99\99=%GG\8f\85\85z~\81\81~zwz\81z\85\8bGm\8b\8b::\8b0\85\81mzwzwtmippfiif___ccXURUNNKKKKGGGGDDDADADA=:=6:AADADAAAAA=A=A==::::666336"%,0366:=DDADNAGANNNNNNNKNNRNRNNNGGGGDDGGDRUGR==XA====:::::=6D:AA66:AU6GGGA:D:6:KDDADDGGDKGNRUNRRRXXUURRUUXUX\_fimptwwwwwtttttppmiiiiifff__\\\XUURUXXUUX\ffttzwzzzwttttttw~\81\88\8b\8b\8f\92\8f\8f\8f\8f\8b\88\88\8f\8b\8b\8f\88\88\88\85z~~~zz~~~~~~z~~\81\85\85\85\85\85\85\88\8b\8b\88\8b\88\88\88\88~~~~~wzwtwwzzz~zz~zz~~~\85\85\8b\8b\8f\92\99\99\9c\9c £ªª§ªªª£££  \9c\9c  \9c\99\99\9c\99\9c\99\99\9c££  \9c   ££§ªª­±»¾Â¾Âž¾ÅÉÅÉÅžÅÅÅÅÂÉÉÏÏÏÏÓÏÓÓÓÓÏÓÓÏÓÏÌÌÅÉÅÅÉÉÉÉÌÏÌÌÏÖÖÖÚÚÖÖÝÝÚÚÖÓÓÖÏÌÉÉÌÉÅÅÉÅž¾¾¾ÂÂÂÉÅÅÅÅÅÉÉÉÌÌÌÉÌÌÉÉÉÌÅž¸»¾»¾¾ÂÂÂÅÅÂÂÅÅÅÂÅ»»¸¸¸´±´ª»¾ÂÂÅÅÅÅž¾Â¾¾Â¾¾»ª§ £§ª§§§ªªªª±±±´±´±¸´¸¸¸¸´¸´±»¾»Å¾ÅÅÅÅÉÉÉÉÅÂÅÅÅÂÂÅž¾¾»´´¸´¸´´´¸´¸ª´¸±±­­ª§££§ £ \9c\9c\9c\9c\99\8b\99\99\81\81\8b\8f\92\8b\8b\8b\81\85\81\81\85\81\85\81\85\85\85\88\88\8f\92\8b\8b\8f\92\99 \9c \88£ ££  \9c\99\96\96\92\8b~\8b\8f\8b~\8f\8b\85\88\85\8b\8b\8f\8f\96\96\99\99\96\99 \99£  \96\9c\9c \9c \9c\9c\9c\99\96\99\99\96\99\9c \9c  \8b\8b\85\88\85\85\81\85w\81\81~z~~\88t\8f\8f\8f\8f\85\85\85~zwzwzzwwt~z\81\81~\85\85\88\8f\8b\96\99\9c\9c\99\99\99\9c\99:%3\e\92\85\85z~\81\81zztz~z\88\88Gi\85A::\8b3\85\85iwtwwtiimmfffc__\_f\RRUNNKKKGGGGDDDAADDA==:=6=AAAAAAAAA=======::::633303\1f")0036:=AADDRDKURUURRRURRRUNURRRRGKKGGGGRX\N\ADU=A======::::A:D=66:AN6DGKA6A666GAA=ADDD6GGRURNRRRX\XURNRRUUX\cfmppwwzzzzwwwtwtttmmmmiiffccX\\XRRRRUUURUXccptzwwzwwtppppptz\81\88\8b\8b\92\8f\8f\92\92\92\8f\8b\8b\8f\8b\8b\8b\8b\88\88\81w~~~~z~~\81\81~~~\81\81\81\88\85\85\88\88\88\8b\8f\8b\8b\8b\8b\88\88\85z~zzzttppptpwzzz~~z~\81~\81\85\85\8f\8f\96\96\9c\99   §§ªªªªª£§£     \9c\99\96\96\99\96\99\99\99\9c£§£  £££££§ªªª´»»Å¾Âž»¾»ÂÅÂÅž¾ÂÂÅÅÅÅÉÌÏÏÏÓÓÓÓÖÖÓÓÓÓÓÖÏÏÌÉÉÅÉÌÌÌÌÌÌÏÏÌÖÖÖÖÖÖÖÚÚÚÖÓÓÓÓÌÌÉÌÌÉÅÂÅž¾¾¾»»ÂÅÅÅÅÅÅÉÉÉÉÏÉÉÌÌÌÉÅÉÅÅÅ»¾»¾¾»Â¾ÂÂÂÂÅÅÅž¾¸»»¸´¸»¾ÂÅÅÅÅÅÅž»¾¾¾¾Âž»ª§£§ªªª§§ªª­ª±±±±´´´´¸¸´´´±´±±¸»¾ÂÂÂÂÉÉÅÌÉÉÉÅÅÅÂÅÅÅž¾»¸´¸´´¸±±´´±¸±¸¸´±±±­ª£§£ £\9c\99\99\99\99\99\8b\96\96\81\81\8b\8b\8f\88\8f\8b\81\81\81\85\85\81\85\85\88\88\88\8b\85\92\92\8b\8f\8f\92\99\9c  \88£ £££ \9c\9c\99\96\8f\8f~\8b\8f\8bz\8b\8f\81\8b\85\88\88\8f\8b\92\92\96\99\99\99 \9c  £\9c\9c\9c   \9c\99\9c\99\96\96\99\99\99\99\9c\9c\9c \8f\8b\85\85\85\85~\81z\81\81\81~\81\81\8b\88\8f\8f\8f\8f\88\88\85~zwwtzzwzwzz\81\81~\85\85\85\8f\8b\96\96\9c\9c\9c\99\99\99\96:%0\18\92\85\88z~~\81zztz~w\85\88Gi\85=6=N0\88\85fttttpmiiifcfc_c\_cXUNRRRNKKGGGDDDGDDDG=AA==:=AA==A======:==::6666333303\1f"%,036:=AADDUGN\UXXRURXUUUXRRURUURNGGDDKU\_c_\GUAD=A====:::::=A=:::=N6ADGD:=666D=A:AAA=3DDRRRNRUUXXXURNURUX\_ffmptwzzz~zwwzwwwwwttpmiiffc_\\\XRRNRRNURRU\_mtzwwwwttppppptw~\85\8b\8f\92\92\92\96\96\96\8f\8b\8b\8b\8b\8f\8b\8b\88\8b\81tz~~~~~\81\81\81\81\81\81\85\85\85\88\88\88\8b\8b\88\8b\8f\8b\8f\8b\88\88\85\81zz~wztppmptptw~~z\81~~\81\81\85\88\88\92\92\99\99   \9c££ªªª§ªª§££\9c  \9c\9c\9c\96\96\92\99\99\99\96\99\9c££§£££££§§§ª­­´»»Â¾¾Â»¸»¸¾Â¾»Â¾»¾¾ÂÅÅÅÉÅÌÏÓÓÓÓÓÓÖÖÓÓÖÓÖÓÓÓÏÌÌÉÉÏÉÌÌÏÌÏÌÌÚÖÚÚÖÚÓÚÖÖÖÏÓÓÓÌÌÉÉÉÅžž¾¾¾¾¸»¾ÂÅÉÂÅÅÉÅÉÅÌÉÉÉÉÌÌÉÉÅÅž»»»¾»¾¾¾»¾Â¾ÂÂÅž»¾¸»¸»¾ÂÅÉÉÅÅž»Â¾ÂÂÂÂÂÅ»­ª§§­ª§§ªª­­­´±±±´±¸¸¸¸±´±´´±±´»¾¾¾ÅÂÉÅÅÌÅÅÉÅÅÅÂÂÂÅÂÂÅ»¾»¸»´±¸±±´´­´´¸´±±´±­ª§§   \99\99\96\96\96\9c\8f\96\92\81\81\88\88\8f\8b\8f\88\85~\81\85\81\81\85\85\8b\8b\8b\8b\88\8f\92\8b\92\8f\92\9c  £§   £  \9c\99\9c\96\92\8f\85\8b\8f\88~\8b\8b\85\8b\88\85\85\8b\8b\8f\92\92\99\99\96   £  \9c\9c  \9c\9c\96\9c\96\96\96\9c\9c\99\99\9c\9c\9c\9c\92\8b\88\81\81\81z~~~\81\85\81\81\85\88\88\92\92\92\8f\8b\8b\81~ztttwwwzzzz~\81\81\85\85\88\8b\8b\92\96\9c\9c\9c\99m\9c\99:U0\18=\85\85z\81\81\81z~pz~z\85\8bGi\85A6:K0p\81ctttptiiiffcc_cfccfUXRNNNNKKKGDDDGGAADD:A==:=:AA=========:=:::6666333003\1f"%)036:=ADGGUKK_X\\\U\\XXX\XRXUUXURNGGGNX_cc_\\UAAADA=====::::=:::::N6AADD=:666::=6===:6AANNNRRUU\XXXURURU\_ciiptwzz~~~~zzzwzzwzwwtmmiff____\XURNRNNRNNRX_ftwwtwttptpppptwz\85\8b\8f\92\92\92\96\96\96\92\8f\8b\8f\8f\8b\88\88\88\8b\85twzz~~~\81\81\81\81\81\81\85\88\88\88\88\88\88\88\8b\8b\8f\8f\8f\8f\8b\88\88\81~zzzzwppmtpppw~~z\85\81\85\85\85\85\8b\8b\96\9c\9c\9c££  £§­ª§ªª§§£§\9c £\9c\9c\9c\99\99\96\99\96\96\96\9c ££§§§£§§§§§ªª­´¸¸¾»»¾¾»¸¸´¸¸»¸¾»¸»¾ÂÅÅÂÅÉÌÌÓÓÓÓÓÓÓÖÖÖÖÖÖÓÓÏÓÌÏÉÌÏÌÌÉÌÌÌÌÏÚÚÚÚÖÚÓÚÖÓÖÏÖÏÏÏÌÉÌÉ޾¾»»»¸¸»¾ÅÉÂÅÅÅÂÅÅÉÉÅÅÅÌÉÅÉž»¸¸¸¾»»¾¾¸¾¾»ÂÂÂÅž¾»»¾¸»¸»ÂÅÅÉÉÉÅÅÂÅ»¾Â¾¾¾Â¾ÂÂÅ­ªª­ªª§ªªª­­´±±±´´¸´¸¸±±±±´±´´¸»¾¾ÂÂÅÅÉÉÉÅÅÅÅžÂÂÂÂÅž¾»¸¸¸´´´´´±±¸¸¸´±±´­­ªª§£  \99\99\96\96\92 \92\96\92\85\85\8b\88\8b\8b\8b\8b\88~\81\85\85\81\85\85\8b\8f\8f\8b\88\8f\92\8f\96\8f\96\9c£ §§££ £  \9c\99\9c\92\92\8f\88\8b\8f\8bz\8f\8b\85\88\85\85\81\8b\88\8f\8f\92\99\99\99  £ \9c£   \9c\9c\9c\92\99\99\96\99\9c\9c\99\99 \9c\9c\99\96\8b\8b\81\85\81~~\81\81\81\85\85~\85\8b\8b\96\96\92\92\8b\8f~z~tttwwwwzzz~\85\81\85\85\88\8b\8b\8f\92\9c\9c\9c\99m\99\99\eU,\e=\88\88~\81\81\85wzpz~z\81\8bGi\81A6:30_~\tttptiiiffcc_fifffUURNNKKGGGDDDDDDA=AA:=::::6AA=====:=:=:=:::66663000,0\1f"%),36:=ADGGRKKc\___X_\X\\\\U\XX\XURRRG_ccccc\\XDAADD======:::::::::K6==DA=6666=6:3:66:66=KDKRUUU\X\XXUX\\_cfimptwzz~\81~~~zwz~~z~zzwpmiiccc\\XXURNNKNNKKNX\fptwtttttpppmptwz\85\8b\8f\92\92\92\92\96\96\92\92\8f\8f\8f\8f\88\88\8b\88\85ttzwz~z~~\81\81\81\81\88\88\8b\88\8b\8b\8b\88\8b\8b\8f\8b\8f\8b\88\85\85\81~wwwzzptptptptz~\81\88\85\8b\8b\88\88\8f\8f\99 \9c £§££§§ª§ª­­ªª§£ £§\9c \9c\9c\99\99\99\99\99\99\99\9c£££§§§§§§§ªª§­±´´»¸¸»»¸´´±´´´­¸¸±¸»¾ÂÅÅÉÉÌÏÏÓÓÓÓÓÓÖÖÖÓÓÖÏÓÓÏÏÏÌÌÌÌÌÌÉÌÌÏÏÖÚÚÚÖÚÖÖÓÏÓÏÓÓÏÏÌÉÌÉÉž¾¾¾¾¾»»»»¸¸»ÂÅÅžÂÂÅžÉÅž´»¾´´­»¸¸»»¸¾»»Â¾»¾»»»»¾¸»ÅÅÅÉÉÉÅÅ»¾¾Â¾Â¾¾ÂÂÂÅÅű­­­­ªªª­§­­±±±±´¸¸¸¸´­±±±±±±¸»»Â¾ÅÅÅÅÉÅÅÅž»Â¾Âž¾»»¸¸¸¸´´´´´´»¸»´±´´­±­ª§§\9c\9c\99\99\96\99\92\9c\96\96\92\88\85\8b\8b\8b\8f\8f\8f\8b\85\85\88\85\81\85\88\8b\8f\8f\8b\8b\92\96\8b\92\92\99 ££§£§£\9c££\9c\9c\9c\99\92\92\8b\8b\88\8b\88z\8f\8b\88\88\88\88\81\88\88\8f\8f\92\96\96\96 \9c£ \9c£   \99\99\99\92\99\99\81\99\9c\99\9c\96\9c\9c\9c\99\96\8b\8b\85\88\85\81~\81\81\85\81\85\88\88\8f\8f\99\96\8f\92\8f\8b~wztttwtttzwz~\81\81\85\85\8b\8b\88\8b\8f\99\9c\9c\9cm\99\9c
+f)\1f\9c\85\85~\85\81\85wwmzzw\81\8fGf==6:00_wXppptpiifcc__\fiiffURRKRKGGGDDDDDAAA==:::6:666AA===:::::::=:66333300,,),\1f"%),06:==ADGNNNf____\_\XX\__X\\\\XXUUURcfcff_\XUAAAAD========::::::=N::AA==6666:,66636:6::=AGNURUX\\X\X____ffimttw~~~~~~~zzz~~zzzzztmmmc__\\\\XUNNKNKGKKUXippttppttpppmpttz\81\8b\8b\8f\92\92\92\92\92\8f\8f\8f\92\92\92\8b\88\88\88\81ptwwzzw~z~~~\85\88\8b\8b\8b\8b\8b\8b\8b\88\8b\8b\8f\8f\8b\85z\81~zwttzztwtwptppzz\85\8b\88\8f\8f\8b\8b\92\99   £§ª§ §£§§ªª­ª­ª§£££ \9c \9c\9c\99\99\99\96\9c\99\9c££ ££§§§§ªªª§­­±±´±´¸¸¸ª±­±±±­ª´­´¸»¾ÂÂÉÌÌÏÏÓÓÓÓÓÓÖÖÚÖÖÖÓÓÏÏÏÏÉÌÏÌÉÌÌÌÌÏÏÖÚÖÖÖÖÖÖÓÏÓÏÓÓÌÏÌÉÌÌÉÅ»»¾¾»»»¾»»»´»¾ÅÂɾ¾¾¾¾»Â¾»»¾Â¾»¾»­¸»´±­¸´´¸»¸»¸»¾Â¾¾¾»»»¸»»»¸»ÂÂÅÉÉÅÉž¾¾¾»¾¾Â¾ÂÂÂÅÅÉÉ´±±­±­­ª­ª±­±­±±´¸¸¸¸´ª­±­±±±¸¸¾Â¾ÂÅÉÉÉÉÅž¾»¾»¾Âž¾»»»´¸´¸±´´´¸´¸¸´´±±­­ª§§\9c\9c\96\96\96\96\92\99\96\92\96\85\88\8b\88\8b\8f\92\8f\8b\88\88\88\88\88\85\8f\8b\92\8f\8f\88\92\96\8b\99\92\99££§ª§ª£ § \9c\9c\9c\96\92\8f\88\8b\85\88\85~\8b\88\88\88\85\85\85\88\85\8b\8b\92\92\92\92 \9c £\9c \9c \9c\99\96\99\92\96\96\81\99\9c\99\9c\92\9c\9c \99\99\8b\88\88\88\85\85\81\81\81\85\85\85\8b\8b\8f\92\96\92\92\8f\8f\8b\81wztttwtwtwww~\81\81\81\85\88\8b\8b\88\8b\96\99\9cp\9c\9c\9cA=""\9c\85\85\81\81\81\81wwi\81zw~\92Gf=A6:00__Xpmmtmfffcc_\_ffffcXNNKNKGGGDAAAD=A=::66:66336AA===::::::6=6663330,,,)%)\1f"%),03:==ADGKNNc_c_c__X\\\_\\X\\\\\XXXXfifiic_\RDDAAAAAA==AA===:::==R=:D=::6666:06330666:::=DKRNRU\\XX\cccciiimtww~~\81~~~zzz~~~z~zzwtpmic\\XX\\XXRRNKKGGKRXfpppppptpmmmmpttz\81\88\8b\8b\8f\8f\92\92\92\8f\8f\8f\92\92\92\8f\8b\88\88\88mpwwwwwzzzzz\81\85\88\88\8b\8b\8b\8b\88\88\8b\88\8b\8b\88\81wwzwtptwzwztwtttpzz\88\88\8b\92\92\8f\8f\96\9c£ ££§§§££§££§§ªªª­ª§§§£ £  \9c\9c\99\99\9c\9c  ££££§§ª§ªªª§ªª­ª±±±´´´ª­ª­­­ªª±§±§¸±¸¾ÅÉÉÏÓÓÓÓÓÓÖÚÚÖÚÖÓÓÓÏÏÏÏÌÌÌÌÅÉÌÌÌÏÏÖÖÓÓÖÖÓÖÓÏÓÓÖÏÏÏÉÉÌÉÉÅ»»»»»¸»»»»»¸»»Âž»¾¸¾»¸»¸¸¸¸¸±´¸ª±¸±­­±±±¸¸¸¸¸¸»Â»»»»»¸´»¸¸¸»¾¾ÅÅÉÅɾ»»¾Â¾¾Â¾ÂÂÅÅÉ̸´±±±±­­±­­­±±±±¸¸»¸¸¸ª­±±±±´´´»ÂÂÂÅÌÉÉÉÅÅž¾»Â»»¾Å¾¾¸»»¸¸´¸±¸´±¸¸´»¸±±´±­ªª§\9c\9c\96\96\96\96\92\96\92\92\92\88\8b\8b\88\8b\8f\8f\8f\8b\8f\88\8b\8b\8b\8b\92\8f\92\92\92\8b\96\99\8b\9c\8f\9c§£§§§§  £\9c\9c\9c\99\92\8f\8b\88\88\81\88\81\81\88\88\85\8b\81\85\85\88\88\8b\8b\8f\8f\96\92£  £ \9c\9c\9c\9c\96\96\99\96\96\99\99\9c\9c\99\9c\96\9c\9c \9c\99\88\8b\8b\88\88\85\81\81\85\85\88\88\8f\8f\92\8f\96\92\8f\8b\8f\88\81wztttttwtwwtz\81\81\85\85\88\88\8b\8b\8b\92\96\99m\9c  \9cm")\9c\85\88\81\81\81\85wwi\85zw\81\96Gf=A6:00\_Xmimpifff__\X\fccc_XKKGKKKDDADD=A==:::66666336=====::::6:::6633300,,))%)\e\1f,,336:=AADGKNR____c__\_XX\\\X\X\\\XXX\ifcmifc\KGDDDDAADAA=====:::==UA=A:666666:0300366:::6:AGNGNR\XXX_ffcfimmptwz~~\81~~zwwz~~zzzwwwppii_\XXXX\XUUNNKGDGGRXcppppppppmmmpptwz\81\85\88\85\8f\8b\8f\8f\8f\8f\8f\8f\92\92\92\92\8b\8b\8b\8bmmttwtzwzwzw~\81\85\88\8b\8b\8b\8b\88\88\8f\8b\88\88zwtttppppt~zzwwwwww~z\85\85\8f\92\96\92\96\9c §££§§£££§£ £§£­­­ª­§ªª£££    \9c\9c \9c£  £ £§§§§ª§§§§§ªª­­­´±ªªª§ªªªªªª£§§ª±´´ÂÅÉÓÓÓÓÓÖÓÖÚÚÖÚÓÖÖÓÏÏÏÌÌÏÏÌÅÉÌÌÌÏÏÖÖÓÓÖÓÓÓÓÓÓÓÓÏÏÏÉÉÉÉž»¸»»¸»»»»»»¾¸Â¾Å»¸»´»¸´¸´´¸´´±±§£ª­­ª­­­±´¸´´´»¸¾¾¸»¸¸¸¸¸¸¸»»»»ÂÂÅÉÉÅÅÂÅ»»¾¾¾¾¾ÂÂÂÂÅÌÉ»¸­±±±±­±±­±±±±´¸¸¸´¸´ª±±­­±±¸±¾¾¾ÅÂÉÉÉÉÉž»¾»¾¾¾ÂÅÅž¾»»»¸¸´¸´¸¸¸¸´¸»¸´±¸±­ªª£\9c\9c\96\92\96\92\92\92\8f\92\96\8b\8b\8b\85\8b\92\8f\92\8b\92\8b\8f\8f\8f\92\96\92\92\92\8f\8f\96\99\92 \8f §§§§ªª  £\9c\9c\99\96\8f\8b\88\88\88\85\85~\85\88\85\88\88~\85\85\88\88\8b\8f\92\8f\99\96£\9c § \9c\9c\99\99\92\96\96\96\92\99\99\99\99\99\9c\99  \9c\9c\96\88\8b\8b\8b\8b\88\85\85\88\88\88\8b\8f\8f\92\8b\96\92\8b\8b\8b\85~wwttttptwwwtw~\81\85\88\88\88\8b\8f\88\8f\92\99pi\9c  £   \96\8b\85\85\81\85tti\8b\8f\88\8f\92GfAA6:00\_Xmimmiffc_\\X_c___\UGGDKGGDAAAA==::::666666336==:=::::6666:6633000,,),%)\e)0066:=ADDGGKNRUccc_c_X\XXXX\\\X__\\\\_fcfmii_\NKGGDDDAAAA=======::AXDA=::666666,3303366663==DGDKKXUUXcficiiimpwz~~~\81~~wwwzzzwzwtttmmff\XXUXXXURRNKKGDGDNU_mppppppppmmppwzz\81\85\88\88\8b\88\8b\8b\8f\8f\8f\8f\92\96\96\92\8f\8f\8f\8fmiptwtwtwtwpz\81\85\85\88\88\88\88\88\8b\8f\8b\88~zwpppmimptzzzzzzzwz~\85\88\88\92\92\99\96\9c £§§§§§££ £  §§£ª­­­­ª­ª£§£££ £  £\9c£  £ £££§£§§§£§§§ªª­ª±­§§\9c£§§­ª§ª§§§§­­±¾ÂÏÏÓÓÓÓÖÓÚÚÝÚÚÖÚÚÖÌÏÌÌÌÌÌÌÉÉÌÌÌÏÓÖÓÓÓÓÓÏÓÓÏÓÏÏÏÌÌÉÉÉÅÅ»»¸¸»¸»»»»»»»¸¾»Â»»¸±¸´´´±\9c´±§­§£££§ª ªªª­±¸±´´¸¸´»¸¸´´´´¸´¸»¸»»ÂÂÅÌÅÂÅ»¾¾¾¾¾¾ÂÂÂÅÉÌ̸´±±±±±±±±­±±±´´¸\85¸¸¸±­­±±±­­¸±»¾»ÅÂÅÅÉÉÅÉž¾¾Â¾Å¾¾¾»¸¸»±¸´¸»»¸´»¾¸¸´´´±ªª \99\99\96\92\92\92\92\96\8b\92\92\8b\8f\8b\8f\8f\92\92\96\92\96\8f\92\92\92\96\96\92\96\92\8f\92\92\9c\96£\8f£ªªªªª§£  \99\9c\99\96\92w\88\88\85\81\85z\85\85\81\85\85~\85\85\85\88\8b\8f\92\8f\99\96£\9c£§  \9c\99\96\8f\96\92\92\8f\96\99\99\99\99\9c\9c \9c\8f\99\92\8b\8f\8b\8b\8f\88\88\88\8b\88\88\8f\8f\8f\92\8f\96\8f\8b\88\88\81ztttpttpptwttw~\81\85\88\88\8b\8f\8b\88\92\92\96\99m\9c £££££\99\8f\92\85\81\88tpm\8f\92\8b\92\8fGcA=6:00X_Xifimiccc_\XU__XRKRRKGDKGDDAAA=::::::666333003==::::::6663:6633000,,,))),033::==DDGKKNNR\ffc__\\\\XXXXX\\__\\\\\cfimif\X\UKKKNGDDDAA=====A=:DUDA=:6666666)03363:3366=:ADAGGURRU_fiffmmppw~~\81~\85~~zwzzwwwwtpppiicc\UUUXUURRNKKKGDGGKRXmmptpptppmpptwz~\81\88\88\88\88\88\8b\88\8f\8b\8b\8f\92\96\92\8f\92\92\92\8fiipptpwptpttt\81\85\85\85\85\88\88\88\88\8b\88\85~zzppmmmmttzwzz~~~z~\81\88\8b\8b\8f\96\99\99 £§ªª§§£§  ££££££§ª­±­­­ª£ª§£££§£ £\9c£££     £ §§££££§ª­ª§­ª££\9c £ªª§§ª£§£ªª§ª­¾ÓÓÓÓÓÓÖÖÚÚÚÝÚÚÚÖÖÏÓÌÌÌÏÏÉÉÌÌÏÓÓÖÖÖÖÖÓÓÏÓÏÏÓÏÌÌÌÌÅÅÅÅ»»¸¸¸´»¾¾¾¾¾¸»»»¾»»¸´¸±±´±\9c± £ª£  ££  §§£ªª´±´´¸¸´¸´´±´´±´´¸¸¸¸»ÂÂÉɾÅ»¾¾¾¾¾ÂÂÂÅÉÉÌ̸´´±´±±±±­±±´´±´¸\85\85¸´±ª­±±±­±¸´»¾¾Â¾ÅÂÅÉÉÉž¾¾Â¾¾Å¾»»¸´¸­¸¸¸»¾»¸»»»»¸±´­ª§\9c\96\96\96\92\92\92\96\96\8f\96\8f\8f\8f\8f\92\8f\96\99\99\96\99\8f\96\96\92\99\96\96\92\96\8f\96\9c \99 \8f §ªª­§£££ \9c\9c\99\96\92t\88\88\81\81\81~\81\85~\81\85~\85\85\85\88\8f\8b\92\8f\99\92£\9c§§\9c£\9c\9c\99\92\92\92\8f\8f\92\96\9c\9c\99\9c \9c\99\8f\96\8f\8b\8f\8b\8f\92\88\8b\8b\88\8b\8b\8f\8f\8b\8f\8b\96\8f\88\85\81~tpppptpppptttt~\81\85\88\88\8b\8b\8b\8b\92\8f\96\96\9c\9c\9c£§ ££\99\99\96\85~\88ppi\92\96\8b\8f\8bGcA=6:00U\Xfcimf___\\UR\\KNKKGGDAGDAAAA=A:::666633333000::6:6:666663666330000,0,,,0366:=AADGGNNRcU_fccc_\\\\XXXXX\X__\\\\X_ifpfcXU_XNNNRKGGDDAAAA===A=DUA=:::666666,,366663666::===DKKKNR\cffimippw~\81\81~\81\81~zw~zwtwttpmmmfc__RRRURNNNKGGKDDGGKNXmmppppttpptttwz\81\85\88\88\85\88\88\8f\8b\8f\8b\8b\8b\8f\92\92\8f\92\8f\8f\8fiimppttmtmttw~\81\81\81\85\88\85\88\85\88\85\81~wzppmimmttwwzz\81\81\81~\81\85\8b\8f\8f\8b\99\9c\9c£§§ªª§§££\9c   £££ £­ª´±ª­ª§ª£ ££§£££ £§ \9c\9c\9c\9c\9c ££§£££§ªª­ª£ª§ \9c \9c£§§§§§§§£§ª§§ª±ÖÖÖÓÓÓÖÖÚÚÚÚÝÝÚÚÖÓÓÏÌÌÌÌÌÉÌÏÏÖÖÚÖÖÖÓÖÓÏÓÏÏÏÌÌÉÉÉÂÅž¸»¸´´¸»¾¾¾¾¾¸¸¸»»»»¸¸´­­±­\99   £ \9c\9c££\9c\9c §  §£­±´´¸´´±´±´±­ª´¸¸¸¸¾ÅÅÉÅž¾¾»¾¾Â¾ÂÂÂÂÉÌÌÏ̸´´´±±±±±±±´´­´´\81\85´±­ª­±­±±´»¸¸»»¾»ÅÂÉÉÌÉÅÅž¾¾»»Â¾¾¾¾¸¸¸´´­»»»»»¾¸¾»¸»¸±±ªª£\92\96\96\96\92\92\92\92\92\8f\99\92\92\92\92\96\99\99\9c\9c\99\99\92\96\99\96\99\96\92\96\99\92\96 £\9c \92\9cª§ªª§§§£ \9c\9c\99\96\92\88\8b\85\85\81\81~~\85~\81\85\81\85\81\85\85\8f\8f\92\8f\9c\99£\9c££\9c£\9c\99\99\92\92\92\92\8f\92\92\99\9c\99\9c\9c\99\92\92\92\8f\8f\92\8f\92\92\92\8f\8f\8b\8b\8f\8f\8f\8b\8b\88\92\8b\85~~ztppppppppptpttz\81\81\88\88\8b\8b\8b\8f\92\8f\92\92\99\9c\9c£§£££\99\9c\81\81\99\85mmf\8f\92\88tzG_A=6:00U\\ccfic__\XXRN\KKKGGGDDDDAD=A=:=::6666333300,,066366666:6666663330000,,0,36::==ADGKKRRR_Xcfcf___\XXXXXUXXX__\\__Xcfcmi_XRc\RNRRGKGGDAAAAAA=RAAUA::::666663,0036:6666666::=AGGGGKU_cffiippz~\81~\81~\81~~z~zwtwtppmmiff_\UUURRNKKKGKGGDGGKNUimpppptttttttwz\81\85\85\85\85\85\8b\8b\8b\8b\8f\8b\8b\92\92\92\92\8f\8f\8f\8fiimpptpmppttwz~\81\85\85\85\85\85\81\85\81z~zztppiiiptwzz~\81\81\81\81\88\88\8b\92\92\92\96  £§£ª§§§     ££   §ª­±±­­ªªª££§§£§££££§\9c\9c\9c\99\99\9c ££§£ §§ª­­­££  \9c\9c\9c££§££§££§§ª§§­±ÖÓÖÖÓÓÚÖÚÝÚÚÚÚÚÚÖÓÖÏÏÌÌÌÌÌÌÓÓÚÚÚÖÖÓÏÓÓÏÓÏÏÌÉÉÉÉÉÅÅÅ»»´¸¸»¾¾¾Â¾¾»»¸»»¾»»´´±£ \9c\96\99 \9c \99 \9c   \99 £\9c ££ª­±±¸´¸±±±±­­§±´¸¸»ÂÅÉÅÅɾ¾¾¾¾ÂÂÂÅÉÌÏÏϸ´´´±±±±­´±´´­¸´\81\88´´±ª­±±´´´¸»»¾¸Â»ÂÂÅÉÉÉÅŞ»¾Â¾¾¾¾»¸¸¸±´¸»»»»¾¸¾»¸»´±­ª§\96\92\92\92\92\92\92\92\92\92\8b\99\96\96\96\96\92\9c\99 \9c\9c\99\96\96\99\99\99\96\8f\96\96\96\99££ £\8f ª£§§ªª£ \9c\99\99z\96\92\88\8f\81\85\85\81~~\81~\81\81\81\88\85\85\88\8f\92\8f\92\9c\9c§££§ £\9c\99\99\92\92\8f\8f\8f\8f\8f\96\99\96\99\99\92\96\92\8f\8f\8f\8f\92\8f\92\96\8b\92\8f\8f\8f\8f\8f\8b\8b\88\8f\88\81~zzttppppppppppppw~~\85\88\8b\8f\8b\8f\92\8b\92\8b\92\99\9c££§£§\9c\99\81\9c\9c\85imf\8b\8f\85ptG\A=6=30X_\_ccfc_\XUURKXKNGDDDADAAADA=:::666663330000,,,0003636:::::666333300000006:==AADDGKNUUUcX_cff__\\\XXXXXUUX__\\\\Xcicii\XRc_RRNNKKKGGDDDAAA=U==X=:::::66666030666:666666:===DGGGGRX_ccfimtz\81~\81\81\81\81\81\81~~zttwpmppmmifc_XUURNNKKKGGDDGGGNNRimmttpwwwttttwz~\81\85\81\85\81\88\88\8b\8b\8f\8b\8b\8f\92\8f\8f\8f\8f\8f\8fimmppppppmpttwz\81\85\85\81\81\81~\81~~\81zwtttmmipttwz~\81\81\85\85\8b\8b\8b\92\92\96\99 \9c££§§§££££      ££§ª±­­±­­§ª£§££ ££ £ £\9c\9c\9c\99\99   £§§£§ªª­­ª§£££ \9c\99  ££ § ££§§ªª­­ÓÖÖÚÖÖÚÚÚÚÚÚÚÖÚÝÖÖÖÓÏÌÌÏÏÌÏÖÖÝÖÖÚÖÓÏÓÓÏÏÏÌÌÉÉÅÉÉÅž»»¸¸»»»¾¾Â¾»»¸¸»»»¸´´±\9c\96\99\92\99\9c\99\99\9c\9c\9c\9c \9c\9c  \99   £§­ª´´¸´±­±ªªª±´¸¸¾ÂÅÌÅÅÅž¾¾¾Â¾ÅÅÌÏÏÏÓ¸´´´´±´±­´±´´±´¸´\88´±±ª­±±´¸´¸¾¾¾»Â¾ÅÂÂÉÉÅÅž¾¾Â¾¾¾»¾¾»»¸¸¸¸»»»»»¾¸»»»¸´±±­£\96\92\92\92\92\92\92\92\92\92\8b\9c\96\99\96\99\96\9c\9c\9c\9c\99\99\96\92\96\99\96\99\92\92\99\96\9c££ £\8f §§§ªª§  \99\99\99z\92\92\88\8f\81\85\81\81~\81\85~\85\81\81\88\85\85\88\8f\92\8f\96\99 ª§§§£ \9c\99\99\92\96\92\8f\8f\8b\8f\92\99\92\96\92\92\92\92\8f\8b\8f\92\92\8f\92\92~\92\92\8f\8f\8ft\8b\88\8b\8b\88\81\81~wwppppppppppppptzz\81\8b\8f\8b\8f\92\92\8b\8f\8b\92\99\99  £§§\9c\99\81\9c\99\88mif~zwmmGXD:6=60\__\_ff_\XURRUKXNNDDDDDD=ADA==::66666330000,,,)),))06066=:==66663333300,,0:=A=DADGKKNURXc\cffc___\\XXUUUUUU___\\\ififcm_\U__RNNRNKNKGGDDDADNX==X::=:::6666636336::66366:::==DDDDGKR\__cfmtz\81\81\81~\81\85\85\81\81\81~tttmippppiffc\XURRRNKKKGGDGGGRNRfmmpwtwzwwwtwzz~~\81\85\81\81\88\85\8b\8b\8b\8b\8b\8f\92\8f\8f\8f\8b\8f\8fimmppppppmpptw~~\81\81~~~~z~~\81zwtttpppmttwz~\81\81\85\88\8f\8b\8f\96\96\99\9c  £££§££££  \9c\9c\9c\9c\9c££§­±±­­­­§ª£§£    £  £\9c\9c\99\96\99    §§§ª­­­­ªª£§  \9c\9c  £££§  §§ªª­ª­ÏÖÖÖÚÚÚÚÖÖÖÚÚÓÚÚÚÓÖÓÓÏÏÓÏÏÓÚÚÝÖÖÖÓÓÏÏÓÏÏÏÌÌÌÉÉÉÉÅž¾¾»»»¾¾¾¾Â¾¾»»¸»»»¸¸´±\99\92\88\92\96\99\96\99\99\99\9c\99 \9c\9c\9c\9c\99 \99\9c £§ª§±´¸±­±ªªª­±¸¸»ÂÉÉÉÅÅÉÂÅž¾¾Â¾¾Â¾ÉÉÌÏÏÓÓ»´´´´´±±±´±´´±´¸´´´±±­±´´¸¸¸»¾¾¾¾¾¾Â¾Åɾž¾¾¾¾¾¾Â¾¾¾»»¸¸»¸»»¸»»¾»»»¸»¸¸´±±­\9c\96\92\92\92\92\92\92\92\92\96\8f\99\99\99\96\96\99\9c\9c\9c\9c\9c\99\92\96\96\96\99\99\96\96\9c\92\9c  £§\9c£§§§§§£  \99\9c\99w\92\96\88\8f\81\85\85\81~\85\88\81\85\85\85\8b\88\88\85\8f\92\92\99\99 ªª§££ \99\99\99\96\99\92\8f\8f\88\8f\96\96\92\92\8f\8f\8f\92\8f\8f\8f\92\92\8f\92\8f~\92\92\92\8f\8ft\8b\8b\8b\8b\85\81\81\81wzttppttpppppmptwz~\88\8f\8b\8f\92\92\8b\8b\8b\92\96\96\92\9c £§\99\96\81\9c\96\8biicfft_cGXG:6A::_\\\\cc\XURNUXK\RRRKGDDAAAAA=::666633333000,,,))%%%)3,::=:A=6:663333000003=ADADDGGKNNRRUc__iff__\\\XXXUUUUU___\\\iificmc_X__URRRNKKKGGGGGDGRXA=\=:::::6666366606::6636::6::=ADDGKNRX_\ffmpw~\85\81\81\85\88\81~\81\81~ttpmipppmmfif\\XUURRKKGGGDGGKRRUcimpwwwzwzzwwzz~~~\81\81\85\88\88\88\8b\8b\8b\8b\8f\8f\8f\8f\8f\8b\8f\8fiipppptppptptwz~~~~~zzz~z~ztttwpttippwz~\81\81\88\88\8f\8f\92\99\99\99\9c ££££§£££££\9c   \9c   §ª­­±­±ª§§ ££        \9c\9c\9c\99\9c £ £§§§­­­±­ªª££ \9c  £\9c££££££££ªªª­±ÌÚÖÖÚÚÖÖÓÖÖÖÖÓÚÖÖÖÖÓÓÓÓÖÓÓÖÚÚÝÖÖÓÓÓÏÏÏÏÏÌÌÌÌÉÉÌÉÅÅž¾¾¾¾¾¾Â¾¾Â¾¾¸¸¾¸»»¸±´\99\8f\88\8f\92\92\96\99\96\96\9c\9c \9c\99\99\9c\9c\9c\96\9c  §§§­±¸´­±­§ªª´¸¸¸ÂÉÌÉÉÉÉÂŻ¾ÂÂÉÌÏÏÓÓÖÖ¸´±´´±´´´´´±­±´´±±´´­­±¸¸»¸»Â¾Âž»Âž¾¾¾Â»»»´¸¸¾»¸»¾¾¾»»»¸»¸¸±±­\96\92\92\92\92\92\92\92\92\92\96\92\96\99\99\96\99\99\99\9c\99\9c\9c\99\92\96\92\92\96\99\99\92\99\8f \9c £§ §§§§££ \9c\9c\99\99\99w\96\96\88\8f\85\85\85\81\85\88\85\85\85\85\88\8b\88\8b\88\8f\92\96\99\99£­ª§£  \99\99\96\99\96\92\92\8f\88\8b\96\96\8f\8b\8b\8b\92\92\92\92\92\92\92\8b\8f\8b~\8f\92\8f\8f\8f\8b\8b\8b\8b\8f\88\81\81~wzwwppttppppppmtw~~\88\8b\8f\92\92\92\88\8b\88\8f\92\923\99\9c £\81\92\81\99\92\88_fcfcm\_GXK:6=A\_\\\\__XRRNRX\U_UUUNKGAA===A:::666633363000,))%%"""%3%=6===:66336333333336ADDDGGGKKNNRRXcc_fffc__\\XXXXXURR___\__iifici__\_\UUNNUNKKGGGGDGGNUUU_=====:::6663663:6=6:66:=6:==AAGGKKRU\Xccimw\81\85\85\85\85\88\81~\81\81\81wpmmmmpmiiiif_\XXURNKKKGGGGKNRUXcfiptwzzzz~zzzz~z~~\81\81\85\85\88\8b\8b\8b\8b\8f\8f\8f\8f\8f\8b\8f\8fmippppttpttttzzzz~~zwzzzwzwppptptwmppwzz~\81\88\8b\8b\92\96\99\9c\9c ££  §§£§£ £   \9c   £§­­­­­­§£§££   £     \9c\99\99\9c  £  ª§ª­­­±ªªª§£  £  \9c£    ££§­ª­±±ÌÖÖÖÚÚÚÖÓÖÓÓÓÖÖÖÖÓÓÓÓÓÏÓÏÓÚÖÚÚÖÖÓÖÓÏÓÓÏÏÌÏÏÌÌÌÉÅÅÅž¾Â¾¾Å¾Â¾¾¾»»»»»»´´±\99\8b\8b\8f\92\92\92\99\96\92\9c\9c\9c\9c\99\9c\9c\9c\9c\96\9c\9c £§£ª­´´­±­ª§­´¸¸»ÂÅÉÉÅÅɾ¾»ÂÂÂÂÂÂÅÌÌÓÓÖÖÖ»´±¸¸±´´´´´±­±±´´´´±±­­»»»»¾Â¾¾¾¾Â»¸¾¸¾Â¾Â»¾Â¾¾¾Âž»»¸´»»¾»¸»Â¾»¸¾¸»¸¸´±­\96\92\92\92\92\92\92\92\92\92\92\8f\92\96\96\96\96\99\99\99\99\9c\99\96\92\92\92\92\96\96\96\96\9c\8f\9c\99  ££ª§££  \9c\99\99\96\96\99w\96\96m\8f\85\85\85\85\88\8b\88\88\88\88\88\88\88\8b\8b\92\96\96\99\9c§­ª§£  \99\99\99\99\96\92\92\8f\8b\8f\92\92\8b\8f\81\8f\92\8f\92\92\92\92\92\8f\8b\8b\85\8b\8f\8b\92\8f\88\8f\8b\88\92\8b\81\81~zzwzwtttptppppppz\81\81\88\8b\8f\92\8f\92\88\8b\88\8b\8b\8f30:\9c ~\85\81\8f\8f\85_f_ccc\XGXK:6U\_\\XXXX\URRNUX\X\RUXRNGAAA====:6666333033300))))%%"\1f"0):3A===63006003033336ADGGGGKKNNNRUU_f_fcc___\\XX\\UURR___\\cifim_i\c\cXRRNNXKKKGGGGDKGKRRX_=AA:=:::66:6:66:6::::::=::::AAKKKNRXX\_cfmz~\81\85\85\85\85\81\81\85\81~wppmmmmififfc\\UXRRNKKGGGGGNNRXX_ffmtwzzz~~zzzzzz~\81\81~\85\85\88\88\8b\8b\8b\8f\8f\8f\8f\8b\8b\8f\8fpimptttwttwwwzz~zzzwwwzwwwtmpmttpwptttzw~\85\85\8b\8b\92\99\9c  £§§££ª§§£££  £  \9c £§§­­­­­ªª£ª§££    \9c   \9c\9c\9c\99 \9c   §§ªª­­±ª­ª§§£ £££ £ £   £§ªª±´´ÌÓÖÚÚÚÖÖÓÓÓÓÓÓÓÓÖÏÓÓÏÏÓÓÓÖÖÚÚÚÖÖÖÖÓÓÏÓÏÏÌÏÏÌÏÌÌÉÅÅž¾¾Â¾¾Â¾¾¾»»»¸»¸¸´\96\8b\8f\92\92\8f\8f\99\99\96\9c\9c\9c\99\9c \9c\9c\99\92\9c   §£§ª±±ª­­ªª±´¸¸»ÂÂÅÅÅÅɾ»Â»¾Â¾ÂÅÅÉÌÓÓÖÖÚ¾¾¸¸´´¸´¸±±±±­±±´±±±´­ª»»»»¾Â¾¾¸¸»»Â¾Â¾¾¾Â¾¾ÂÂÅž¾»¸»¾¾¾»¾¾Å¾¾¸¾¸»¸¸±±±\96\92\92\92\92\92\92\92\92\92\96\8b\96\92\96\96\99\99\99\9c\99\99\96\92\8f\92\8f\8f\92\99\96\96\99\92\99\92££ §§§   \9c\99\96\96\92\92\99\96\92\99i\8f\88\88\85\88\8b\8b\88\8b\8b\88\8b\8b\88\8b\92\96\99\96\9c §­ª§§£ \99\9c\99\99\99\92\92\8f\8f\92\8f\8f\88\8b~\8f\8f\8b\92\92\8f\92\92\8f\8f\88\88\8b\8f\8f\8f\8f\8b\8b\88\88\8f\88\81\81~~zwzzwttttppppttz~\85\8b\8f\8f\8f\8f\8f\88\88\85\88\88\8b3\ 30\8b\99z\81\85\8bpp_c_cccXUGXN::XX\XXUNUUXRNNRXX\\\UXUUKDAA====::66633303366,,)%%)%)"\1f%\1f,\1f0=::=300,300033336:DGGGKKKKRRRRUU_ccffcc__\\XX\\UURR\\\___icmm\fXcX_URNNN\KKKGGKGGGDGNNXc===:A:=6666666:6:=::=:==:6::ADGKKNUX\X\cip~~\85\81\85\88\85\85\85\85\81\81wptpmmiicfffc__UUUNNKKDGGGGNRRXX_ccipwzzz~~~z~z~~~\81\85z\85\88\88\8b\8b\8b\88\8f\8b\8f\8b\8b\8b\8b\8bpimttwwztwwwwz~~~zwwwtzwttpmmipppwttwtwz~\85\85\8b\8f\8f\9c ££§§§§§ªªª§£££ ££  ££§ª­±±­ª­ª£§§££ ££ \9c\9c  \9c  \99 \9c \9c £§ªª­ª­­ªª§£ £££§£§£ £ ££ªª­´±¸ÏÌÚÝÚÝÖÚÓÓÏÏÓÓÓÓÓÓÏÏÏÓÓÖÖÓÚÚÚÚÚÚÖÖÓÓÏÓÌÏÌÏÏÏÓÌÏÌÅž¾Å¾Âž¾¾Â»¾¸»»¸¸±\92\8f\92\92\92\92\92\96\96\96\99\9c\99\99\9c  \9c\9c\92\9c\9c\9c\8f££ §ª­ªª­ªª±´¸¸»ÂÂÂÂÅÅž»¾¾Â¾Â¾ÂÅÂÉÏÓÖÚÚÚÝ»»´¸¸´´´­±­­­±±±±±´ª§¸¸¾¾Â¾Â»»¸¸»¾¾»¾¾ÂÂÂÂÂÅÅÉÅÅž¾»»¾¾¾¾¾»¾Â»»»»»´±±±\96\92\92\92\92\92\92\92\92\92\96\8b\96\96\96\92\96\99\99\9c\96\96\96\8f\92\8f\8f\8b\92\96\92\96\9c\92\99\96 §\9c§£££\9c\9c\9c\96\8f\92\92\92\96t\8f\99p\8f\8b\8f\8f\88\8b\8f\8b\8f\8b\8b\8b\8f\8b\8f\96\99\99 \9c ª­ª§ª£ \9c\9c\9c\99\99\96\96\92\92\92\8f\8b\85\88~\8b\8b\88\8f\8f\8b\8f\92\8f\8b\8b\8b\8f\92\8f\8b\8b\8f\8f\85\88\8b\8b\85\85~~~z~~ztttptpttwwz\81\85\8b\8f\8f\8f\8f\8b\88\85\81~\85\880\0
+\8b\92z\81\81wmm\c__c_XXGUR::UUXUGRKNRRNKKRUUXXXRURRGDA===::::66333000063)),%))),"\e)\e,\e0:===300,000003336:DGGKKKNNRRRUUUc__ff_c_c_\\XX\UURR\\\__cffmm_fX_XcXRRNN\NKNGGKGDDDDKG\c==A==::6666::6:::=::=:==:666AAGGKRUX\\_cmt~~\85\81\85\88\85\85\81\85~\81wtwtppiifcfffc_XUUKNKGGKGGGRRUUX\_cimwwzz~z~~~~\81~\81\85\85\81\88\88\8b\88\8b\88\85\8b\8b\8b\88\88\88\8b\8bmmptwzzzwwzwwz~zzzwwwtwwttpmimmpptttwwzz~\81\85\8b\8f\92\9c£§§ªªªªª­­ª§§§§££  ££§ªªª­­ªªª§£§§ ££££ \9c\9c \9c\9c\9c \9c \9c£\9c£§§ª­ª­ª­ªª§££££§££££  £§§ª­±¸´»ÌÌÚÚÝÝÚÚÓÓÏÏÓÏÓÏÏÏÌÏÏÏÓÓÖÓÖÚÚÚÚÖÖÖÓÓÓÓÏÏÌÏÏÌÏÏÓÌÉÅžÂÂÂÂÂÅÅÅɾ¾¾¾Â»¾¸»»´¸± \8f\96\96\96\8f\96\96\92\96\99\9c\99\9c    \9c\99\9c  \8f£ £§ª­­ªª­§±¸¸¸¾¾Â¾»Å¾¾Â¾ÂÂÂÅÅÌÏÖÚÖÚÚàž»´»¸´±´±´­­­±±±±±±­­»¸¾¾Â¾¾Â»»¸¸»Â»¾»Å¾¾ÅÅÅÅÉÅž»¾¾»¾¾»¸¾¾Â¾¾»¾»¸´´±­\96\92\92\92\92\92\92\92\92\92\96\8f\96\96\92\96\96\96\96\9c\92\92\99\8f\8f\8b\92\8f\96\96\92\96\9c\96\99\99 £\9c§§ \92\99\99\99\92\92\92\92\8f\96p\92\99t\92\8f\92\92\8b\8f\8f\8f\92\8f\8b\8b\92\8f\92\99\99\99£ £­­§ªª§£   \9c\9c\99\99\96\92\8f\8f\8f\85\85\81\81\88\85\81\8b\88\8b\8f\8b\88\8b\8b\8f\8f\8f\88\88\8f\8f\88\88\8b\8b\88\85~~~~~~~twwttptwwz~\85\88\88\8f\8b\8b\8b\88\85\81~~\81\81\1f\a%\8b\88z~~wii\c__c_XUGURRURRURGNDKNNGGGNRRUUUNRRNGDA===:::66633303,,30)%)%)%,,\1f\1f,\e)\1f\0\e:=\06,3\0,,,00366:=GGKKKfNNRRUUUX_\cccccc____\X_XURR\\__cffimpcc\\U_\RUNNXNKKGKGGDDGDDGXf=A==:::66::::6:=:===:==::336=AGGKRU\\_cipw\81\81\85\85\85\85\88\88\85\85\81\85~tttmpiifffffc_\UUNNKGGKGGKRRUXX\\cimttwwzzz~~~~\81\81\85\85\85\88\8b\8b\8b\8b\88\85\8b\88\88\85\88\85\88\8bmpptwzzzzzzzz~z~wzwwwtttptmmmmmpppppwwzw~\81\85\88\8f\96\9c£ª§­­­­­±ª­ªª§£§§ §§§ªª­­­­§§§§§££££££   \9c\9c\9c\9c\9c\9c     £§§§­ª­­ªªª§£§£§£§£§ £££§ªª­´¸¸»ÉÏÚÝÚÝÚÚÖÓÓÏÏÓÓÌÌÏÉÏÏÌÏÓÖÓÖÚÝÝÚÖÖÖÖÓÓÓÏÌÌÌÌÌÓÓÏÏÌÉÅÅžÅÂÂÉÉÅɾ¾¾»¾»»»¸´´£ \99\99\96\92\96\96\92\96\99\9c\9c\9c\9c \9c  \9c\9c \9c\92£ £§§ªª­­­ª´´¸¸¾»¾»»Â¾Â¾¾Â¾Â¾ÅÅÂÂÉÏÌÖÖÝÝÝÝž»¸»´´±´±´±­ª±±­±­­±±»»¾¾Â¾¾¾¾Â¾´´¾¾¾¾¾¾Å¾ÉÉÅÅÉÅÅÉÅ»»»¾»»¸¸»»¾¾»»¾»¸´±±ª\96\92\92\92\92\92\92\92\92\92\96\92\96\92\96\92\96\99\92\99\8f\96\96\8f\92\8b\8f\8f\92\96\92\99\9c\96\99\9c   §£\9c\92\96\96\96\92\8f\92\8f\8b\96p\8f\99w\96\92\96\8f\8f\8f\92\92\92\8b\8f\8f\92\92\96\9c\9c\9c§£§­±ª­­§£     \9c\99\99\8f\8f\8b\8b\85w\81\81\85~\81\85\85\88\8b\8b\8b\8b\8b\8f\8f\92\8b\88z\8b\8b\88\8b\88\85\85~\81\81\81~zzwzwwppwwzz\81\85\88\8b\8b\8b\88\88~z~z~~\81\1f\0)\8b\88zzztfiX_\\c\URGXRUXUNNKDKADKK=AGKKNNRKGNRKGDA===:::66333663,,),%)%)%",)"\e0\18%\e\ 3\18\0\0\0:00\0),,00336:=KKNNRiRRRUUXXX\_cccfcc_____\\\URRX\\_fifiimf__XXU_RXRRUNKRKKGGDDDDDD\iAD=A:=::::===:=:=A::==:=:66:AADGKNUX\_cmtw\81\85\88\88\88\88\88\88\85\81\85\85\81zttptmiiffffc_\XXRNGGKKKKKUUUXXX\cfptwwwzzz~~\81\81\85\81\85\88\88\8b\8b\8f\8b\88\88\85\88\88\88\85\85\85\85\8bppttzz~~~~~~~~~\81wztwttttttimmmmmmpttwwzw~\81\81\85\8b\96\9c§ªª±±±±±±­­ª­ª§§ª±ªªªª­­­±­ ££§£££££ £ ££\9c  \9c\9c\99\9c £ ££§££­­­­§ªª§§ª§§§§£§ £§£ªª­±¸»»¾ÌÓÖÝÚÝÚÚÖÓÓÌÓÏÏÌÏÏÌÌÌÉÌÓÓÏÓÖÚÝÚÚÖÖÖÓÓÓÏÉÌÏÌÏÓÏÏÏÌÌÉÉÅÅÂÂÂÅÂÂÅÉÉɾ»¾¾»¸´±±§£\9c\9c\99\96\99\96\96\96\9c\99\99\9c\9c\9c    \9c\9c \96£££ª§§ª­ªª­´±¸´»»¾¾¸¾»Â¾»ÂÂÂÅÂÅÂÅÅÉÏÌÓÚàÝàÚ¾»¸¸´´±±±±­­ª­­­±­ª­´¾¾¾Â¾Â¾¾Â¾¸¸»»ÂÂÂÂÉÅÂÌÅÅÉÉÉÉɸ¸»»¸¸´´¸´»»¸»»»»´±­§\99\92\92\8f\92\8f\8f\8f\8f\92\96\96\96\96\92\96\92\96\92\96\8f\92\92\8f\8f\8b\92\8b\8f\96\96\99\9c\96\9c\9c£\9c ££\9c\92\8b\8b\92\92\8b\92\8f\8f\92t\8f\99z\96\8f\96\8f\8f\8f\92\96\92\8b\92\92\92\92\99\9c  §§ª­±ª±­ª§ £   \9c\96\96\8f\8f\88\88\85w~\81\85z\81\81\81\85\88\88\88\8b\88\8f\8b\92\8b\88w\88\8b\8b\8f\8b\88\85\81\81\85~~zzzwtwttwzz~\81\81\85\8b\88\88\85\85wwttzz~):\88\8b\88zzzpcf\c_\c\UUXXUUXRKDGAD==KA::DGGKKKNGKNKGDA===::666360::3,)%%%,"%\e\1f0%\1f\1f\e\14\1f\11\a\11
+\ 3\ 360\e\ 3%\0,0036::GKKNNimRUUUUXX\_\cccc_c_\\____\URR\__\fifmmpi\cXUU\RURRXNNUKGGGDKDGAAXfUAA=::::66AAA===:=:::::=6666A=ADNNU\_cipwz\85\88\8b\88\88\88\88\88\88\81\85\88\85~wtttpmiffficc_\XUNKKNNNNUXXX\\\_ccptwwwzzzz~\81\81\85\85\85\88\8b\8f\8b\8f\8b\88\85\85\85\88\85\81\85\85\85\8bttwwz~~~\81~~~~z\81~zwwwptppppmmmmmpppttwwzz~~\81\85\8b\96 §­ª´´´´´±±±­±­ªªª´­­­ª­±­­ª£ £§£££ ££§££§ £ \9c\9c\99\9c £££§§££ª­±­ªªª§ª§ª§£§§§££§§§­±´¸¾»ÂÉÏÓÝÚÝÚÚÚÓÓÏÓÌÏÏÏÌÏÌÌÌÏÏÏÏÖÖÚÝÚÚÚÖÖÖÓÓÏÌÌÌÏÌÏÏÏÏÌÉÉÉÅÂÅÅÂÅÅÂÅÉÉÉÅÅž¾¾¸´´´­§£  \9c\99\99\99\99\99\99\96\99\9c\9c\9c \9c \9c\9c\9c£\99££§ªª§§ª§­­´´´´»»»»¸¾¸¾¾»ÂÅÅÉÅÉÅÉÉÌÌÏÏÝçàÝϾ»»¸´´±´±±±ª­ª­­ª­­­­´¾¾¾Â»¾Å¾»¾¾»»¾¾ÅÅÅÅÅÉÅÉÅÅÉÉÅÅž¸»»¸±´±´´´¸¸»»»»¸¸±­ª\9c\92\8f\8f\8f\8f\8f\8f\8f\92\92\99\99\96\8f\96\8f\92\92\8f\8b\8f\8b\8b\8b\88\92\8f\8f\96\96\99 \99\9c\9c£\99 § \99\92\8b\8b\92\96\8b\92\8f\8b\96~\92\99\96\96\8f\92\8f\92\8b\8f\96\92\88\92\92\96\96\96\99 \9c§§ªª­ª­ªª§£   \9c \96\99\8f\8b\8b\85\81wz~\85~~~w~\88\85\85\8b\88\8b\88\8f\8b\8bz\8b\8b\8b\8f\8b\8b\88\85\81\85~~~~zwtwwwwwz\81\81\81\85\88\85\85\81\81wttpwz~,\88\88\88\8b~zzp_fXfc\_XXU\\XUXUGGG=D::K=::AADDGGKGKKGGDA==:::666363:=36)%""0\e%\e\1f\18"\e\e\18\14\a\0\e\0\14\a\a\0,\a\a\0\ 3),036:DUNNRXmpRUUUUXX\\_cffcc_\\_\\c_XXRU__c\immmmpiUcXUXXRRUR\RNXNKGGGNGDAAUiDDA=:::=66DAAAA:==6::=:=6::6AADDKRX_ccmtz~\85\88\8b\8b\88\88\88\88\88\85\88\8b\88\81zzttpmiffiiff_\\XUNRNNRXXXX\_\\\cfptwwtwwz~~\81\81\85\88\85\85\88\8b\8b\8b\8f\88\85\85\85\88\85\81\85\85\85\8bttzwzzz~\81\81\81\81~~\81~zwwztptpmppppppptttwwwzz~~\81\85\88\99££ª­¸¸´¸´±´´±´±­ªª´­±±±±­ªª§£\9c £££££££§£§§£  \9c\9c\9c\99 £££§££ ª­±ªªªªª§§§§§§§££§ª§ª±±¸»¾¾ÅÉÓÓÝÚÝÚÖÖÖÖÓÓÌÏÏÏÌÌÌÉÉÌÌÌÏÓÖÝÝÚÝÝÝÚÚÖÏÌÌÌÏÏÏÓÓÓÏÏÌÉÉÉÅÉÉÂÉÅÂÉÉÉÉÉÂÂÅ»¸´±ªª§ \9c\9c\9c\99\96\99\99\9c\99\99\99\9c\9c\9c\99\9c\9c \9c \9c£££§ª§§ª§ªª±±´¸»»»¾¸»»»¾»ÂÅÅÅÉÉÉÅÌÉÓÖÖëëÉÅÅ»»¸¸´´±±­±±­­ªª­§ª­ª­´Â»»Â¸Âž¾¾¾¾¾ÂÂÂÅÅÉÂÅÉÉÉÅÅÅÅž¸¸¸´´±­´´´´´¸»¾¸»¸±­­\9c\96\92\92\8f\8f\8f\8f\8f\92\8f\96\99\96\8f\92\8b\8b\8f\88\8f\8f\88\88\8f\8b\8f\92\92\96\96\99 \99\99\9c£\96££ \8f\92\88\88\92\92\8b\8f\8f\8b\96\81\96\99\96\96\92\96\92\92\8b\8f\92\92\8b\92\92\96\96\96\9c\9c\9cª§§ªª­ªª§ª££££  \96\99\8f\8b\8b\81\81zz~\81~~~tz\85\81\85\88\88\8b\88\8b\8b\8b~\8f\8b\88\8f\8b\88\88\85\85\85~\81~zwwtwzzzz~~\81\81\81\85\81\81~zwptptw~,\88\88\85\88~~wmccUcc_cX\R__\XUUDGD=D==K=:==AADDDKKKKKKDA==:::6:6660:A0:)%"\1f0\e%\e\1f
+\e\e\e\18\11\ 3\99\99\99)%%\a\18\99\11\a\a),03:AR_RRXimpcUUUXXX\\_cffcf_\\_X___U\R\cc__iipmpmfXcXXXUURUU_UUUNKKKKRGDADRfADA=::=::6AADA==AA6::===::6:=DDGKR\_cmpww~\88\88\8b\8b\88\88\88\88\85\88\88\8b\88\85~~tttpmiifmiif__\\RU\fc\\_\\_\__cipptwttwzz~\81\81\85\88\85\85\88\8b\8b\8b\8b\88\88\85\85\85\88\85\85\88\88\8btpwwzz~\81\81\81\81\81\81\81~\81~zzztpptmtpppttptwtwwzz~\81\81\85\8b\8f\9c£­­±¸¸¸»´´¸¸±´´±­­±­±´´´ª§§££\9c  ££§§£££§§§£££  \9c\9c    £§  §­­­­­ªª§§§§£§£££§ªª­±¸»¾ÂÂÂÉÓÏàÝÝÝÖÖÖÖÓÏÏÌÏÌÉÌÌÌÅÏÌÌÏÏÖÚÚÖÝÝàÝÚÖÓÏÏÌÏÏÏÓÓÓÏÏÏÉÌÌÅÉÌÌÉÅÅÉÉÌÌÉÂÅÅž´´´­§ª\9c \9c\9c\99\99\99\96\99\99\99\99\99\99\99\96\99\9c\9c    §§§§ªª§§ª­­±´´»¸¸»¸¸»¸¾¸ÂÅÅÅÉÌÌÅÌÅÚÚÚî»´¸¸¸±´±±±±±­­ªªª§§ªª±¸¾¾»Â¾¾ÂÂÂÂÂÂÂÂÅÅÅÅÉÅÅÅÉÉÅÉÂÅž¾»´¸´´´±­±´¸¸´¸¾¾¸¾¸´±ª\9c\99\96\92\92\8f\8f\8f\8f\92\8f\92\96\92\8f\92\8f\8b\8b\8b\8b\8b\85\85\8b\88\8b\96\96\96\99\99£\99\99\9c£\96£ \9c\8f\8f\88\85\92\8f\88\8f\8f\8f\96\99\96\99\96\99\96\96\96\92\8f\8f\92\92\8f\8f\8f\92\99\99\99\9c §§£ªª­§ª§ª£§§  \9c\99\96\8f\8b\88\81~zz~\81zzztt\81~\81\85\85\8b\88\81\88\88z\8b\8b\88\8f\88\8b\85\81\85\81~~~~zzwzzz~z~~\81~~\81~zzttppmpw~\88\88\88\85\85zzti_f\c_c_U_Rcc_XXUNKGAD:=K=:====AADKNNNNKDDAA=:::==:606D,=%"%\e0\e%\e\1f\ e\18\18\18\18\14\0\99\99\99\99)\99\11\99\99\99\11
+%,06AGXcUU_mimfXXXXXX\\_cffcfc_\c\_\\X_R_cc_ciitipmc\_XXXXXUUX\UXRRRNNKUKGDGRfAAA:=:=::6AAA===A=::::==:::==DDKKN\_mptwz~\88\88\8b\8b\88\88\88\88\88\88\8b\8b\8b\88\81\81zwttpimmpmmifffffiiifc_c______fmtttwwwwww~~\81\85\88\85\88\88\8b\8b\8b\8b\8b\88\85\88\85\88\85\85\88\88\88tpttzz\81\81\81\81\81\81~\81\81\81\81~~zttptpppptwwwwzwwzzz~\85\85\8b\8f  ª±±­¸¸´¸¸¸¸¸´¸´´´±´±´´¸¸ª££  \9c££§£§§£££££§£§££  \9c\9c\9c \9c££ \9c£ªª­±­ªª§££§ §£§£§ªª±´»¾¾ÂÅÂÌÏÏàÚÝÝÚÚÖÖÓÏÏÌÌÏÌÏÉÏÉÏÌÌÌÌÖÚÚÚààäàÝÚÚÓÓÏÏÓÓÓÓÓÓÏÓÏÏÏÌÌÏÏÌÉÉÌÉÌÌÌÅÉÅÅÂÅž¸±¸±ªª\9c£  \99\9c\99\96\99\99\96\96\99\99\96\96\96\99\9c\9c££ §ª§§§§£§§ª±±±´»»´¾¸´»´¾»ÅÅÅÅÉÌÌÂÏÿõõõõ¾»»»´¸´´±´±±±±­­ªª­ªª£ªª´¸¾¾»¾Â¾Â¾ÂÅÉÉÉÉÉÅÅÉÅÉÉÅÂÅ»»¸¸¸±´±­±±´´´¸»¾»¾´´´§\9c\99\96\96\92\8f\8f\8f\92\8f\92\8f\92\92\8b\8f\8b\88\88\8b\88\8b\81\85\8b\8b\8f\92\92\96\99\99 \9c\9c\99£\96 \99 \8f\8f\88\81\92\8f\88\92\92\92\96\99\96\96\99\99\96\96\99\96\92\8f\96\8f\8f\8f\92\92\96\99\99\99 §££ªªªªª§ª§§§  \99\99\92\8f\8b\85\81~wz~\81zzzppz~~\81\81\8b\85\81\8b\8bz\8b\8b\8b\8f\8b\8b\81\85\85\81\81\81\81\81~~z~z~~w~z~~~~zwwpppmmmwz\85\85\85\81\81wwmf\c_c___X_Ucc\XUURNKDD6:K=:=====DDGKNNNKGDAA==:=AA=:6,D)A%"%\1f0\18"\1f\1f
+\14\14\14\14\14\99\99\99\99\99\99\99\99\99\99\99\99\11%)0:DR\fUUmpiiiX\\X\\\\_cffccc__c_\\_UcRc_f\fffpfmi\\_XXXXXXX\\U\RRUNNNXK_GKNiA=DA:::66:DD==AA=A::==AA=A=AAGDGKNX\ptpw~~\88\8b\8b\8b\8b\8b\8b\88\8b\88\8b\8f\8b\88\85\81~ztwpmmppppmimiiimmmifcfccc__cfppttwwwzww~z\81\81\85\88\88\88\8b\8b\88\88\88\85\85\85\88\88\88\88\88\88\88ppptzw\81\81\81\81\85\81\81\81\85\81\85\81\81zwwpttpwwwzz~z~zz~wz\85\88\92\99 £§­´´±¸¸¸»»»¸»¸»»¸¸´¸´¸¸»»ª§££\9c £££§§§§£££ §££§£££    \9c  \9c\99£§§­±ª­§§££§£££££§ª­´¸¾ÂÂÅÅÉÏÌÚàÝÝÝÚÚÖÓÓÓÏÌÌÏÌÏÌÌÌÌÌÉÏÌÖÚÚÝààäààäÝÚÓÖÖÓÖÖÓÓÓÓÏÓÓÓÏÏÏÓÏÌÌÌÌÌÌÌÉÅÉÅÂÅÅ»¸´´±­ª £  \9c\99\99\96\96\96\96\92\96\96\92\96\96\96\99\99£££ªª§§ªª§§ª§­´­±»¸¸»¸´¸´»¸ÂÅÅÉÌÏÏÂÿÿõøøø¾¾´¸´´±´±´±±­±­­ªªª­ª£­ª±´¾¾»ÂÅÅžÅÂÉÉÉÅÉÅÅÉÅÉž¾»¾¸´¸´´±­±­±±´¸¸»¸»§±´£\9c\99\92\96\8f\8f\8f\8f\8f\8f\8f\8f\8b\8f\8b\8b\88\88~\8b\88\88\81\88\8b\8b\8b\92\8f\92\99\99£\9c \99£\96\9c\96\9c\8b\8b\8b\81\96\92\88\96\92\96\99\99\99\99\96\99\96\99\99\96\92\92\96\8b\8b\8f\8f\92\96\99\99\9c\9c§££ª­ª­­§ªª£§ \9c\99\96\8f\8f\8b\81\81~zw~\81zzzmp~~~\81\81\88\81~\88\88z\8f\88\8f\8f\8b\88\81\88\85\81\81\81\81\81~~~~~~~zzzz~\81~ztwtppmmmtw\81\81\81\81\81twic\_c___c\_Xf_XXXUURNDD6:K=:::==AADDGRNNKGDA===:ADDA=:,A)=%%%\1f,\e\1f\e\1f\a\ e\ e\0\11\11\99\99\99\99\99\99\99\99\99\99\99\99f")0:GpttXpppmiiX\\\\__\_ciifcc___\\\_UcUc_c\ficm_im_\\\\\X\\\X\U\UUXRRRUNcfNKiDDDD=:=:66ADAADDAA==AAADDGADDGKKNN\_pttz~\81\88\8b\8b\88\88\8f\8f\8b\8f\8b\8f\8f\8f\8b\88\85\85\81~wwptttttmmpmmmpmmiiffffc__ffptpttwwzwzzz\81\81\85\85\8b\88\88\88\8b\88\85\85\85\85\88\88\88\88\8b\88\88ppptwz\81\81\85\85\85\85\85\85\85\81\88\81\81zzwtwwwzz~~~\81\81\81~~\81\81\81\8b\92\9c £§ª±´´±»»¸¾¾»»»»¾¾¸»¸»»¸»»¾§ª§£   §§£§ª§£££ £  ££ £\9c£££    \99 £§ª­ª­ª§§§££§£§§§­±´»¾¾ÅÉÌÌÌÓÝÝÝÝÚÚÖÓÓÓÏÌÌÉÌÌÏÏÌÉÌÌÌÏÏÖÚÝààääääçàÝÝÚÚÖÖÖÓÖÓÖÏÖÓÓÓÏÓÏÏÌÌÌÏÏÏÌÌÅÉÉÅÅ»´´´±±ª  £ \9c\99\99\92\92\92\92\92\92\92\92\92\92\96\99\96 §£ª§§ªªªª§ª§­±±´¸¸´»¸´´´¸¸¾ÉÉÌÏÏÓÏÿÿüøøë»»´´¸´­±±±­±±±­ªªªª­ª§ª±´¸»»»ÂžÅ¾¾ÅÂÉÉÉÉÉÉÉÉÅž»¾¾»Â»¾¸´¸´´´±±­­­´´±¸´±§­\96 \99\99\92\92\8b\8f\8f\8b\8b\8b\8b\8b\88\8b\8b\88\88\88~\8b\88\85\85\8b\8b\8b\8f\8f\92\92\99\99£\9c \99£\96\9c\99\99\8b\88\8b\85\99\96\88\96\92\99\9c\9c\9c\99\99\9c\96\9c\99\92\96\92\96\8b\88\8f\8f\92\96\99\99 \9c£§§§ªªª­ª­§££ \9c\96\92\8b\8b\88\81\81zww~\81z~zipzzz\81\81\88\81~\88\8b~\8b\85\8f\8f\88\8b\81\85\85\85\85\81\81\81\81\81~~~\81~zzwzz~zztttpppmmpwz~~~~ttf_\_____c__\f_XXXUXRNGD==K=::=:ADADDGNRNKGAA==:=DDAAA=,=%"%%)\1f)\e\1f\18\e\0\ 3\99\ 3\0\ e\99\99\99\99\99\99\99\99\99\99\99\99\\1f)3=Ntww\tmpmmm\\_\____cciifff___\\X_XfX_cc_cf_i\cmc\\\\\\\_X\XXXXXXUUUURfiRNmRGGG=AA=:6DGDDDGDDAAAGKKKNNNNKNKRRXcptw~~\85\88\8b\8b\8b\88\8b\8f\8f\92\8f\8f\92\8f\8f\88\88\88\85\81~ztwwwwwpptppmmmmiiifiifc_fimppttwwzzzz~\81\81\88\85\8b\88\88\88\8b\85\85\81\85\85\88\88\88\85\8b\88\88ppptwz\81\81\85\85\88\85\85\88\88\85\88\85\85~~zwwwz~~\85\81\81\88\85\88\81\85\81\85\85\8f§§ª­±­´¸´´»¾»¾¾¾¾¾¾¾Â¾¾»¾¾¾¾¾­§ªª§£  £££§§§£££ £ £££ § £§  \9c\9c \99\9c\9c§§­­­ª£§§§§§§§ªª´´´»ÂÂÉÉÏÓÌÖÝÝÚÝÚÖÓÓÓÓÌÌÌÉÌÌÏÏÌÅÌÌÏÓÓÖÚàààääççëäààÝÝÚÖÚÖÖÖÖÓÚÖÖÓÏÓÓÏÏÏÌÏÓÏÌÉÉÅÅÅɾ¸±´´±­ª££  \99\99\96\92\8f\92\8f\8f\8f\92\8f\92\96\99\9c\99££§ªªªªªªª§ªª±­±±´¸±¸´±±±±¸»ÅÉÌÓÓÓÓÿøüçä¾»¸´´´´±±±­­±±­ª§­ªªªªª±´´¸¸»¾Â¾ÅÂÂÂÂÂÂÅÂÉÉÅÉÅÅÅÅž´¸¸»»Â¸»¸´»´´±±±±­±±±­±±­§ª\96\92\96\96\8f\8f\8b\8b\8b\8b\8b\8b\8b\88\88\8f\8f\85\85\88~\8f\85~\85\88\8b\88\8f\92\96\92\9c\99§\9c \99£\96\9c\99\9c\8f\8b\9c\99\9c\96\92\99\99\99\9c\9c\99\9c\9c\9c\92\9c\9c\96\96\92\96\8b\8b\8b\8f\92\96\99\96   §§§ªªª­­ª£££\9c\9c\96\92\8f\88\85\81\81wzw~\81zzwipzz~\81\81\88\81\81\88\88\88\88\88\8b\8f\8b\8f\88\88\85\85\88\81\81\81\81\85\81\81\81\81\81~~zzz~wztwttppmptwwzzzzppi_X_\\___\\_ccUXUXXRRGDAAKA=::=AADGGKRRNNGDA====AD==AA))"")%,"%\e\1f\18\e\99\99\99\99\ 3
+\99\99\99\99\99\99\99\99\99\99\99\99X\e)3Azwwzttptpppf_______ffiifffc___\\\Xc\\_c__c_f_cp_\\\\\\\\\\XX\XXXXUUU_cfURpUNKKGGD==AKKGGDGGGAGGKRXURRRRNRNRRXfmtw~~\85\88\8f\8b\8b\8b\8f\8f\8f\92\92\92\92\92\92\8b\8b\8b\88\81\81~wzzzzztttppmmiimiiiimffcfimppttwwzzz~~~\81\85\85\88\8b\88\85\88\88\88\85\85\85\88\88\88\85\88\88\88pptww~\85\81\88\88\88\88\88\8b\88\88\88\85\85\81~zz\81~\85\85\81\8b\8f\8f\8f\8f\96\8b\8b\88\88\8b\99ª­±±´±´¸¸¸¾¾¾¾ÂÂÂÂÂÂÅ»¾Â­§ª§§§££ £££§£ £  £     §  §£ \9c  \99  £§±­­ª§­ªª§ª­ª±±¸¸´¾ÅÅÉÏÓÖÓÚÚÝÝÚÚÓÓÓÓÓÌÌÏÌÌÌÏÌÌÉÌÌÏÓÓÖÚäÝàääçççäääààÝÝÝÚÚÚÚÖÚÚÖÓÓÓÖÓÏÌÏÏÏÏÌÏÌÅÉÉÅ»´±´±±­ª££  \9c\9c\99\96\92\92\8f\8b\8f\92\92\92\96\96\9c\9c£§§ª­§ªªª­§§ª±­­­±¸´´±´´±±¸¸ÂÅÉÖÖÏÓÿàÝÝྻ¸´´´´´±±­­±­­ªªª­­­­­´¸¸»»¾Â¾ÂÅÅžÅÅÅÉÅÉÌÉÅÅÂÅž»´´¸»¾Â»¾»¸¸¸¸´±­­­­±­ª­­ª££\96\92\96\92\8b\8f\8b\8b\8b\8b\8b\8b\8b\85\88\8f\8b\88\85\85\81\8f\85\81\85\88\8b\85\8f\96\92\96\9c\99§\9c \99£\96 \99\9c§\9c \9c \99\96\9c\9c\99 \9c\9c \9c\99\92\9c\99\99\96\92\99\96\8f\8f\92\96\96\99\96£\9c£§§§­­­­­§   \99\99\96\92\8f\88\85\81\81w~t~\81zwwimzw~\81\81\88\81~\85\88\8b\88\8b\8b\8f\8b\8b\8b\85\88\88\85\81\81\85\81\85\81\85\81~~~~zzzzwztzwtptmptwwwwtwmmfcU\X\\__\X___UXXUURRDGDAK==:=ADDGGKNNRNNGGAAA==AD=A=A,)"")),"%\1f\1f\14\18\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99U\e,3zzwwwwwmwttpi_ccccc_cfiiiffcc__\\XX_XX____c_cccmc_____\\__\\\\XXXXXXXc_iXftXRNNKKGGGDNNKKGNKGKKKNU\XXUUUUURRRciptz~\81\85\88\8b\8b\8b\88\8f\8b\8f\96\96\99\96\92\96\8f\8f\8f\88\85\85\81z~~zzwtttmmiiiimiiiimfffimmpptwzwzzz~\81\81\81\85\85\85\88\88\88\88\88\85\88\88\88\88\88\85\88\88\85\85ppwzz~\81\85\88\88\88\88\88\8b\88\8b\88\85\85\85\81~\81\85\81\8b\8b\8b\8f\96´±\96»±\8f\8f\96ª­­±´´¸´¸»¸»¾Â¾ÂÂÅÅÂÅÅÉÅÂÂÅÂÅÅÅ­§ª§£££££   £ £££ £  ££ ££ ££ \9c\9c\9c\99 \9c£ª±±­±±±­­¸´¸±´´¾»¾ÂÉÉÏÓÖÚÖÝÝÚÚÚÚÏÏÏÓÏÌÏÏÌÌÌÏÏÌÌÌÏÏÏÓÚÝäààçäççççäçäààààÝÝÝÝÚÚÚÖÖÓÓÓÏÏÌÌÏÓÓÏÓÏÌÉÌ´´­´±±ª§§££ \9c\99\9c\96\92\92\8f\88\8f\92\92\96\99\99\99\9c§ªª­­ªªª§ª£§ª­±­ª­´±­­´±±´´´¸ÂÅÓÓÏÏÖÖÚÝ»»»¸´´¸´´±´­­±ª­ªªª­­±±»¸»»¾¾¾Â¾ÂÉÅÅÂÅÅÅÅÅÉÉÌÉž»»¸¸»»¾Â¾¾»¸¸¸¸±±±±±ª­­§ª§§  \96\8f\92\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\88\8f\8b\85\88\88\85\8f\88\85\88\85\8f\88\8f\92\8f\96 \9c§\9c \99£\96£­\9c­§£§£\9c\99\9c \99£\9c\99 \9c\99\99\9c\99\99\99\96\9c\99\92\96\96\96\96\99\9c \9c§££§±­±­ª§  \9c\99\96\92\8f\8b\88\85\81\81t~t~\81zzwppzw~\81\81\88\85\81\85\88\8b\85\88\8b\8f\8b\8b\8f\88\8b\8b\85\0\81\85\81\81\81\85\81~z~~zzwzwwtzwtttppttwttpwiic_U\XX__\XX_\\RUUUXRRGKDDKA===ADGGGNRRUNRKGA===A=D==:=0%"\1f),)")\1f\1f\11\14\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99X\e,:zwwzzztptpwtmccfcfccffiiifffcc_\\\XXXR_______c_i___________\__XXXX\\\f_f\it\URRNNNNNGRRNKNRNNNNNNX_\\XX\XUUUXfmttzz\81\85\88\8b\88\8b\88\8f\8f\92\92\92\99\96\92\96\92\92\92\8b\88\88~zzzwwtpttmiimimmiimimiiiimppptwzz~z~\81\81\85\81\85\85\85\88\85\88\88\8b\88\88\88\88\88\85\85\85\85\85\85ttwzz~\81\85\88\85\88\88\88\8b\88\88\88\85\85\85\85\81\85\88\88\8f\8f\96\99¸¸´´»´´±´­±±´¸¸¸¸¸¾»»ÂÅÂÅÅÂÅÅÂÅÉÅÅÅÅÅÅŧ§ª§££ £\9c \99 \9c       £  £§ ££ \9c \9c\9c\9c\99 ª±±±¸´¸¸»»»»»¾»Â¾ÂÅÉÌÓÖÚÖÚÚÝÚÖÚÖÏÏÏÏÌÉÏÌÌÏÌÏÌÌÌÌÏÏÓÖÝààààçäççäëçëçääääÝàÝÝÚÚÝÓÖÓÖÓÏÓÌÌÌÓÓÏÖÏÏÌÉŸ±±±­±§ª§£££\9c\99\99\96\96\92\8f\88\8b\92\8f\96\9c\9c\9c ªª­­±­­ª£ª§ª§­­­§ª±±­ª±±­´±±¸¾ÂÏÏÌÏÓÓÓ¸´¸»¸´´´±´±±±±­ª­ªª­­­´´¾»¾¾Â¾»ÂÉÂÅÅÅÅÅÅÉÌÉÉž¾¸¸¸´´»»¾Â¾¾»¸»¸¸´´±­±§ª­§£§§\9c\99\96\92\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\8b\8b\8b\81\88\88\88\8f\88\88\85\88\92\8b\92\92\8f\96£ ª\9c \9c£\96±±\9c±ª§ª§£\9c £\9c  \9c  \99\9c\9c\9c\99\9c\96\9c\9c\96\99\99\96\99\9c   £§££´­´­§ª  \99\99\92\92\8b\8b\85\81\81\81wzw~~zwwtt~w~\81\81\88\88\85\85\88\88\85\8b\88\8f\8b\8f\8f\8b\8f\8b\88\0\85\85\81\85~\85~~~~~zzzzwwtzwwtwtptptppmtfcc_U_UX\_XUX\\XURUUURRKKGDKAAAADGGGKKNURNRKDDA===:D=:3:0%"\1f),,"%\1f\e
+\11\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\\e,Awwtzwwtttmttpcpfcccfiiiiiifffcc_\\XX\Ucccccc_ccm____________cc\\XXXX_ic\\it_UUURRURRNUXUUR\X\RRUR\c__\\_\XXXfmpwww~~\85\88\88\88\8b\88\8f\8f\92\92\92\92\96\92\96\92\92\8f\8b\8b\85zzzztttpptmmmmmmimimmmmmmmppptttzz~z~\81\81\85\81\88\85\85\88\85\88\88\8b\88\8b\85\88\88\85\85\85\85\85\85pttwzz\81\81\88\88\88\88\88\88\8b\88\85\85\85\85\88\85\88\8f\8f\96\96¸´»»¸¸»¸´´¸±´±¸»»»»¸»¾¾ÅÉÅÂÉÅÅÅÅÅÉÉÉÉÅÉÉÅÅŧ£ª§££\9c \9c\9c\99\9c\99\9c \9c  \9c     £ £ \9c\99\9c\99\99\99\99 ª±´´»¸»¾¾¾¾¾¾Â¾ÅÂÅÉÓÖÖÚÖÖÚÚÚÚÓÖÓÌÏÌÏÉÅÌÌÌÏÌÏÌÌÉÏÏÏÖÚàÝàààäääääççëçççççàäÝÝÚÝÚÓÖÖÖÓÏÏÌÉÌÓÏÓÖÓÓÏɸ±±±­­ª§££££\9c\9c\99\92\92\92\8f\8b\8f\92\8b\96\9c\99 £ªª±±´±­ª§§£ª£­ª­£§£­­ ­´­´±­¸»»ÌÌÉÌÓÓÓ±´´»¸¸´´´´´±±­ªª­ªª±­±¸¸Â¾¾¾¾ÂžÅÉÅÅÅÅÅÅÂÅÉÉÅž¾»¸¸¸´±±¸»¾¾¾¾¾¸»¸»¸´±±´ªª­§£££\9c\99\99\8f\8f\8b\8b\8b\8b\8b\8b\8b\8b\8b\8b\88\8b\88\8b\81\8b\88\88\8f\88\88\81\88\8f\8b\96\96\8f\99£ ª  ­­\99´´±´­ª­§§ ££ ££ ££\9c \9c\99\99\9c\99\99\9c\99\9c\9c\99\9c £  §ª £¸´±­£§\9c\9c\96\99\96\96\8f\88\85\81\81\81tzz~~zwzwp~zz\81\81\88\8b\85\88\88\88\88\88\88\8b\8f\8f\8f\8b\92\8b\8b\0\85\85\85\85z\81\81~z~~~z~zzzwzzztttttpppmmpffc\U_RXX_XU\\\XRUUUURRNKGGKAAADGGGKKNRURRRNKGD==:=G==3=0)%\1f,),%"\1f\e
+\ e\0\99\99\0\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99\1f3GRtpwtwwwwmwptftwtciffimmiifffcc__\\\XUcccccciccic___________c_\\\\\\cfc\_ft\XXXUUXUUR_c\\U_\_XXXU_f____c_\\ciptwwz~\81\85\88\8b\8b\8b\88\8f\8f\96\92\92\92\96\8f\92\92\8f\8b\88\88\81wwwwpppmmppmmppmmmmpmmpppppppptwzz~z~\81\81\85\85\85\88\85\88\85\8b\8b\8b\8b\8b\85\88\88\81\85\81\85\81\81ppttz~\81~\85\88\88\88\88\88\88\88\88\88\88\88\8b\88\8b\92\92\9c\9c»¸»¾»»¾¸¸¸»´´´¸¸»»¸¸¸»»ÉÉÅÅÉÅÉÉÅÉÌÉÌÉÉÉÉÅÉÅ­§§£  \9c\9c\99\99\99\96\99\99    \9c   \9c  \9c£\9c\99\96\99\99\96\99\99 ª±´¸¾»¾ÂÂÂÂÂÂÅÂÅÅÉÌÖÚÚÚÚÚÚÚÖÖÏÓÏÉÏÉÌÌÉÏÏÏÏÌÏÌÌÉÏÓÌÚÚààäàààäàääççëçëçççääÝÝÚÝÚÖÖÓÖÓÏÏÌÉÌÓÏÖÖÓÓÏɾ´­±­­ª§££££ \9c\9c\99\92\8f\8f\8b\8b\8f\92\88\96\99\9c £­±±´¸±­­§ª§­£ª§ª£§ ª± ­±±´­­»»¾ÅÌÉÉÓÖÖ±´´¸¸¸´´¸´´±­­§ª­ªª±±´»»¾Â¾¾¾ÂÂÂÂÅÉÂÉÅÅÅžÅÅÅÂÅ»»»»¸¸´´´¸¸¾¾Â¾»»¾»¾¸¸´±±­­ªª§§ \99\9c\96\8b\8f\8f\8b\8b\8b\88\88\88\88\88\8b\88\88\8b\8f\88\88\88\88\8f\8b\88\85\85\8b\8f\99\96\92\99£\9cª\9c\9c±±±´¸´´±­­ªª£§§£ ££££ \9c\9c\9c\9c\99\99\9c\99\99\9c \9c\9c £\9c§ªª\9cª»¸´­£§\9c\9c\99\99\96\92\8f\88\85\81\81\81tz~~~zz~zp~~~\85\81\85\88\81\8b\8b\88\88\8b\88\8b\8f\92\92\8f\8f\8f\8b\8b\88\88\85\85~\81~\81~\81~\81z~zzzzzzzwwtttmmmmmmfc_\U\NXK_XX\\XXURUUURRRKKGKDDDDGKKKKNUURRURNNGDA:AG=:0=3)%\1f0),%"\e\18\ e\ e
+\99\99\a\99\99\99\99\99\99\99\99\99\99\99\99\99\99\99,:KRpptwtwtwpttwiwwwwmfmmimiifffffcc_\\XUcccccfmfficcc_________fc_\\\_\fif_cfwXXXXXX\X\Ufff_Xc_c\\\Xciccccfc_cfmtwtw~\81\85\88\88\8b\8b\8b\8b\8b\8f\92\8f\92\92\92\8b\8f\8f\8b\88\85\85\81wtwtmppmppppptpmmmppppppppttpttwwz~~~\81\81\85\85\88\88\85\88\88\8b\8b\8b\8b\88\88\85\88\85\85\81\85\81\81mmppzz~z\81\85\85\85\88\8b\8b\8b\8b\88\8b\8b\8f\8b\8f\99\96£»¾»¾¾¾¸»»¸¸»¸¸¸»»¸¸´¸´»¾ÉÉÉÅÉÅÅÉÉÌÌÌÉÉÌÉÉÉÉű§§ £ \9c \99\99\96\92\96\99\9c\9c\9c \9c\9c\9c\9c\99\9c \9c \99\99\96\96\96\92\96\9c ª­´´¾¾ÂÅÅÅÅÅÅÅÅÉÉÏÌÚÝÝÚÚÚÖÖÚÓÌÓÉÉÌÉÉÌÌÏÏÏÏÉÏÌÉÌÓÖÏÚÝàäääääçàäääççëëëçëçäàÝÚÝÖÖÖÓÓÓÏÏÌÉÌÓÓÖÓÏÏÏÉ»±ª±­±­ª££££  \99\99\92\92\92\8f\8b\8b\8f\8b\96\96\9c£ ±´¸´¸´ª­§ª§­ª­§§§§ §±£±±±´±´¾¾ÂÅÉÉÉÏÖÖ´´´»¸¸¸¸¸±±±­±§ª­­ª±±´¸¸»¾Â¾Â¾ÂÂÅÉÂÅÂÂŻ»»¸»¸¸´¸´»¸¾Â¾¾¾¾¾Â»¸¸±±­­ª§££\9c\99\99\96\8f\8f\8f\8f\88\8b\88\88\88\88\88\8b\88\8b\8b\8b\8b\85\88\88\8f\88\88\88\88\8f\92\9c\96\92\99§ ­\9c§´±´¸´´´´­ªª§§§ª§££££ £   \9c\99\99\9c\99\9c\9c   ££ ªªª\9c­»»¸­£§\9c\9c\99\96\92\92\8b\8b\88\81\81\81wz~~~~~~~z\81\81\81\85\81\88\88\81\88\8b\88\8b\88\88\8f\8f\8f\92\8f\8f\8f\8b\8b\88\8b\85\85~\81\81\81\81\81\81\81~~~z~~~zzwwttpmpiiimcf_\U_NUG_UX_\XXRRRRUNRRNKGNGGGDKKKKKNRRUUUURRKGDDDG=6,:6))\1f0%)%\1f\e\14\11\18\ e\99\99
+\99\99\99\99\99\99\a\99\99\99\99\99\99\99\993ANR_mptwwttpttwitwwztfpppmmmiffffcc__\XUcccccfpffmfcf__cc_____f_c_\\ciimfcccz\\\\XX\X_Xmiiiifcf___\fmffc_ffcfimtzwz~\81\85\88\88\8f\8b\8b\8b\8b\8b\8f\8b\8f\8f\88\88\8b\8b\85\85\85\85~wtwmptpmttptptpppppptptptpttpttwwz~~~\81\81\85\85\88\88\88\8b\88\8b\8b\8b\8b\88\88\85\88\81\85\81\85\81\85mmptwzzz\81\81\81\81\85\88\8b\8b\8f\8b\8b\8f\8f\8f\92\9c\9c§¾¾¾Â»»¸¸»¸»»¸´¸¸¸¸´´´´¸»ÅÅÉÉÌÅÉÉÌÉÌÌÉÉÉÉÉÅÅ´ª£££  \9c\96\96\92\92\96\99\99\99\99\9c\99\99\99\99\99\99\9c\9c\9c\96\96\92\92\92\92\96\9c£§±¸¸ÂÂÅÅÉÅÅÅÅÅÅÌÌÓÚÚààÚÚÚÚÖÖÓÉÏÉÌÌÉÌÏÏÏÓÓÌÌÏÌÌÌÏÖÓÖàäçäääçäàäääçççççëëçääàÝÚÚÖÓÓÓÏÏÏÌÌÌÖÖÖÖÏÏÌŸ´­­ª­ªª£ ££ \9c\99\99\92\92\92\8f\8b\8f\92\8f\92\8f\9c £±¸»¸´´­ªª§ª±­­­­§§ ª´­¸´±¸´¸¾¾¾ÂÅÅÉÌÓÓ¸¸¸»¸»¸»»±±±±­ª§­ªª±­´´´´»¾¾ÅÅÂÅÅÂÉÅÅ»¾Â¾¾¾»¸¸¸¸¸´´¸»»¾Â¾¾»¸±±­ª§§££\9c\99\99\96\8f\8b\8b\8f\8b\8b\8b\8b\8b\8b\8b\8b\85\8f\8f\8b\8f\88\8b\8b\8f\88\85\8b\85\92\96\9c\96\92\99£ ª ª´±´´´±\85±­ªª§ª§ª§§§§£££   \9c\9c\9c\99\9c\9c\9c \9c £§£­ª±»»¾»¸±§£\99\9c\99\92\92\92\8f\8b\85\81\81\81zwz~~~~z\81~\81~~\85\81\85\85\85\88\88\88\8b\88\88\8f\8f\8f\8f\8f\8f\8b\8b\8b\8b\88\85\88~\81\81\81\81~\85\81~~~z\81~~~ztwppmppiiiicGc_U_RUG_XX\\\XRRRUURRRRRNRGKGGKKKNKRNNUXXURUNKDGDD:3,=3))"3),)\e\18\18\14\e
+\99\99\a\99\99\ 3\99\99\a\ 3\a\99\99\99\99\99\99):DNU_pipttptttwwmwzz~wptttppmiifiiffcc_\Xccccffpciifcc_________ccc_\\cmimcf__~\_\_\\\\c\pmmmmiffcccfimiiccfffimmwzwz~\81\85\85\88\8f\8b\8b\8b\8f\8b\8f\8b\8b\8b\88\88\88\85\85\85\81\81~wtwmtptpttttptppppptwtttttwttttzzw~z~~\81\85\85\85\88\88\8b\8b\8b\8b\8b\8b\88\85\81\85\81\81\81\81\81\81imptwzww~z~\81\81\85\8b\8b\8f\8b\8b\8f\92\8f\96  ª»¾¾Â»¸¸¸¸´»¸´´´´¸´´±±´´¸ÂÂÅÅÉÅÉÅÉÉÏÉÉÉÉÅž¸§§§§   \96\96\96\92\92\96\96\99\96\99\96\96\99\96\96\96\99\99\96\96\92\92\96\92\8f\96\9c ª±¸»ÅÅÉÉÌÉÉÉÉÂÉÉÌÖÝÝÝàÚÚÖÚÓÓÓÉÏÌÌÌÉÌÌÌÌÓÏÏÏÓÌÌÌÓÖÖÚàäçàäàäàààäääëäçëçëçääàÝÚÚÖÖÓÏÌÏÌÌÏÏÖÚÖÖÓÌÉ´´­±±ª§§£ ££  \99\96\96\96\96\8f\8f\8f\96\92\96\92\99\9c§­»Â»¸´­­ªªª±±­±±ªª£­¸¸»¸»»»Â¾¾ÂÂÅÂÉÉÏÏ»»»»¸»¸»¸´´±­­ª§­ªª­­±­­´¸¾ÂÅÅÂÂÂÂÉÅÅÂÂÅž»¾¾»»»¸»»»¸´¸¸»»¾Âž¸±±­ª£§ £\9c\96\99\96\92\8b\8f\92\8b\8b\8b\8b\8f\8b\8b\8f\8b\92\92\8f\92\8b\8f\8f\8f\8b\8f\8f\88\92\96\99\99   £ª£­±±´´¸´\85±­ªªª§£ª\8f§ª§££§ £   \9c\99\9c    ££££ª§¸»¾¾¸¸±£ \99\9c\96\8f\96\92\8f\8b\85~\85\81zzw~~\81\81~\85~\81~\81\88\81\88\88\85\85\88\88\88\88\8b\8f\8f\8f\8f\8f\8f\8b\88\8f\8b\85\88\88\81\85\81~\81\81\85\81\81~~~~~~~zptmmmmmififRKf_X\RXG_\\___UURRXXUNUUURURNKKNNNKNNKKRUUUUUNNGDGA660:3)%"6,),\1f\14\e\18\1f
+\99\99\ e\0\99\ e\99\99\ 3\0\ 3\a\99\99\99\99\99\11=GNX\mfppttwwwzwwzz~~ztwwwttpiiiiifffc__\ccfcffpfmfic_c___________c__cpiicf\\z\\\_\\\_c_tppmmmiifffimimmfciiimmpwzz~~\81\85\85\88\8b\8b\8b\8b\8f\8b\8b\88\8b\88\88\88\85\81\81\85\81\81~ztwppptpwwtwttttpttwwttwtwwtwttzzwz~~~\81\85\85\85\85\85\88\8b\88\8b\88\88\85\81\85\85\81~~~~\81mipttwzwzz\81\81~\88\88\8f\8f\8f\8f\8f\96\92\99££­¸»»¾»»¸¸´¸¸¸´¸±´´´±­´±´´Â¾ÉÅÅÉÌÉÉÌÌÉÉÅÉ»´ªªª£  \9c\99\96\96\92\92\92\96\96\92\96\92\92\96\92\92\92\99\96\99\96\92\92\92\92\92\99 £ª­»ÅÉÌÌÌÏÉÉÉÅÅÉÌÏÖÝàÝÝÚÚÚÖÓÓÏÌÏÌÌÌÌÌÌÌÌÏÓÏÌÏÏÏÏÖÖÖÝàääàäääàääçççëçëëäëëäàÝÝÚÚÖÖÏÏÌÏÏÏÏÓÖÖÚÓÓÉɾ¸¸´±´­ª££ £££ \9c\96\96\96\92\92\8f\92\96\96\96\96\99\9c£ª¾Å»¸´ª±­­­±±±´´¸ª§­»¾¾¾¾¾ÂžÂžÅÅÅÉ»»¾¾»¾»»»´´±±­­ªªª§­­­ª­±´»¾ÂÅÂÅÅÅÌÉž¾Â¾»»¾¾»¸´»»»»´¸»¾»¾Âž¸´±±ª§§\9c \99\96\96\96\92\8f\8f\92\8b\8f\8f\8b\92\8f\8f\92\8f\92\8f\92\96\8f\92\8f\92\8f\92\92\92\92\99\9c\9c££ §­£­±­±´´´\85­­­­\88ª \88\8f£ªª§§§ §   \9c\9c\9c  ££££££§§»¾¾»´¸­ £\99\99\92\8f\96\92\8f\88\85\81\81\81z~t~~\81\81\81\85\81~\81\81\85\85\88\85\88\88\88\88\85\88\8b\8f\8b\8b\8b\8b\8b\8b\88\8b\88\85\85\85\85\85~~~~\81~~~~z~~zzwmfiiiiiffffRNfc_X\\K_\___\UUURXXXNXXXUUURNKNRRNRNKKNRRUUUNKKGDD:6060,%"60),"\14\e\18\1f
+\0\a\11\18\99\18
+
+\0\18\0\ 3\0\99\99\99\e6AGRX\mfppttwww~zz~z~~~wwwwtttimmiiiffccc_ffffiipiicic__c_c_c_____c__ccmmmff_\~\\\\\\\__\ttpmpmiiiifmmmmppimmmmptwzwz~~\81\85\88\88\8b\8b\88\8b\8b\8b\88\8f\88\8b\88\85\81\81\81~\81~~zwwptttwwwwwwttttwtwttttwwwwwwzzz~~~~~\81\81\85\85\81\85\88\85\88\85\85\81~\81\81~wzzz\81pmptwwwwzz\81~\81\85\85\8f\8f\92\8f\8f\99\96\9c£§±´»¸»¸¸´¸¸¸´´´´´±±±±±±´´¸¾ÂÅÅÉÉÉÌÌÌÌÌÉÉž¾¾¾¸±­­ª£ \9c\99\96\96\92\8f\8f\92\92\92\8f\8f\8b\8f\92\8f\92\92\96\96\96\96\92\96\92\96\96\99 §­±»ÉÌÏÏÏÓÌÉÌÅÅÅÏÓÚàààÝÚÚÚÓÏÏÌÌÏÏÌÉÌÌÉÌÌÌÓÏÏÏÏÓÓÖÖÝààäàààäààäääëëëëëëçîëçäàÝÚÚÖÓÏÏÌÏÏÏÓÖÖÓÖÏÏÌÉ»»´¸¸¸±ª§£££§£ \9c\99\92\99\96\96\92\96\99\96\99\99\9c ªª¾É¾»´­­ªªª­±´´¸¾Â¾ÅÅÉÂÂÂÂÅÉÅÂÅŪ»´Â»Å¸¸»»»»¸»»¸¸´±­­ªª­§­­­­±±´¸ÂÂÂÅÂÅÉÉÉž¾Â¾»¾¾»»»¸»»»»¸¸»¾¾¾¾Â¾¾Åž¸´´±­£§ \9c\99\96\92\92\92\8f\8f\92\8f\8f\8f\8f\8f\92\96\96\92\96\8f\96\92\8f\96\92\92\8b\96\92\96\96\99\99\99 § £±§­±±±±±±\85\85ªªª\88§£\88\8f ª§£§££§£  \9c \9c ££££§£££§¾¾»¸±´ª §\99\96\92\8f\96\92\8b\8b\85\85~\81zzw~\81\85\85\81\88\85~\85\81\81\81\85\85\88\88\85\85\85\8b\88\8b\8b\8f\88\88\88\88\85\88\0\85\81\81\81\81zzzt~zzzzwzzwwticcfffccccfRKc_c__\Nc____\XXUU\XXX\XXXXXURNRRNNNKGKKNURRRNKGGAD63,300)%30))"\1f\1f\e"\11\18\ 3\18\e\ e\1f\a\a\0\e\0\0\1f\99\99\99\11:DKR\\mimmpwwwz~~~~~~~~zttwtttmpimfmifccccffffmmpiffif______fc_c_c__cc_iiiccc\z\\\\_\\_\_tppmmmmmmmippmpttpmmmmptwwww~z~\81\85\88\88\88\88\88\8b\8b\88\8f\8b\8f\88\88\81\85\81~\85\81~~zzttpttwzwtwttwtwwwwwwtwwwwwwzzzzzz~z~~\81\81~\85\85\81\85\85\81~~~\81ztwzz~ppttwtzw~~\81~\85\81\88\8f\8f\8f\96\92\99\99 £§±´¸¸»´¸´¸¸¸´´´´±±­±­­±´¸´Â¾ÂÅÉÅÌÌÌÉÌÉÌÅž»»¸±­­§£\9c\99\96\96\96\8f\8f\8f\8f\8f\8f\8b\8b\88\8b\8f\8f\8f\92\96\92\92\96\92\92\96\96\99\9c£ª­´»ÌÏÓÓÓÏÌÌÌÉÅÉÖÚÝààààÖÚÚÖÓÓÌÌÏÏÌÉÏÉÉÌÉÌÏÏÏÓÓÓÓÚÝàääçääàààààääççëççëëëëëçäàÝÝÚÖÓÓÏÓÏÓÓÖÖÖÖÏÏÌɾ»¸»»¸´­§§£££   \9c\96\99\99\96\92\99\99\92\99\9c £­´»Å¾´±±ª­ª­­´´¾ÅÅÅÉÌÌÉÉÅÅÉÌÅÅŪ´´±¸¸´´¸¸»¸´»¸¸¸¸´­­§­­ª­ª­­´­¸»¾ÂÅÅÅÅÉÌÉž¾Â¾¾¾Â¾¾¸¸¸»»¾»¸¾¾»Â¾Âž»´´­­§§£ \99\96\96\8f\92\8f\92\92\8f\92\8f\92\92\99\99\99\96\96\92\92\96\92\96\96\96\8b\99\96\96\99\99\96\9c\9c§£§±ªª±­­­ª­ª\85§§ª\88§£\88\8f\9cª£££ £££  \9c  \9c£££££££§Â»»»´±§££\99\99\92\8f\96\92\8b\8b\85\85\81\85~~z~\85\88\85\85\88\88\81\85~\81\81\85\85\85\88\85\85\85\8b\85\8b\8f\8b\88\8b\88\85\81\81\0\81~~~~pwwpwwwwwtwwppmc_________cNNRUfcc_Xc_ccc_\UUXX\\\\\X\XUXRNNNKKNGGGGKRNNRNKDD=A6300,3))0,,%%""""\1f\e\1f\1f\1f\0"\ 3\ 3\ 3\1f\0\0"\99\99\11\a=DNRX\iipmpwww~~~~~\81\81~~~tptttpppiiiiiifcccfffimppmcfiicccc__ffcc____c_cffi_c_\w\_\_c\\\\_pmmppmppppmmppppwtpmpmpttwwtzzz~\85\88\88\85\88\88\88\88\8b\8b\8f\92\88\88\85\85\85~\85\85\81\81~~wtpttwwwtwtwwttwwzzwwwwwwwwzzzzzzzz~\81\81\81~\81\81~\81\81~zzz~tptwwztttwzwzz~\81\81\81\85\88\8b\8f\92\96\99\96\9c\9c£§§­´´´¸¸´´´´¸¸±±±´±±­ªª­±´±ÂÂÂÂÅÉÌÌÌÏÏÌÌÉÅ»»¸¸±ªª£ \99\96\92\92\92\8f\8b\8b\8f\8b\8b\85\8b\85\8b\8b\8b\8f\8f\92\96\92\96\96\96\99\99\9c §­´¸ÉÌÏÓÓÓÓÏÌÌÌÅÌÚÝàààààÖÖÖÖÓÓÏÏÏÌÌÉÏÉÌÏÌÏÏÏÏÓÓÓÖÚàäçççäàààäààäççëëëëëëëëëççäààÝÚÖÖÓÓÓÓÖÓÓÚÖÓÌÌž¾¸¾¾»´±ªª§§£   \99\99\9c\9c\99\96\99\9c\9c\9c£§§±¾¾Â¾±­­­ªª­±´»ÂÉÌÉÌÏÏÌÌÉÌÌÏÅÅÉÅ­±´´´´±´´¸»§£»¸¸´´´ªª§±­­­­±±±±¸»Â¾ÅÅÅÉÉÌɾ¾Â¾»Â¾¸»»¾¾¾¾»»¾¾Â¾ÂÂÅ»»´±ª±ª§§ \9c\99\99\92\8f\8f\92\92\8f\92\8f\92\92\9c\9c\99\99\99\96\96\99\92\96\96\99\9c\9c\99\9c\99\99\9c\99\99£§ª­­§±ªªª§  £\9c §§§£\88\8f\99§££££ ££\9c \9c   §§£§££§§¾Â»¾»´±§££\9c\99\8f\92\92\92\88\8b\88\85\85\85\81\81~~\88\88\88\88\8b\8b\85\85~~\85\85\88\88\85\85\85\85\88\88\8b\8b\8b\88\0\85~~~\0~wwtppptmmtpttptpmccc_\X\\\\XX_KKRUiffc___ccc_\UXUX_\_\_\_XXXRKKKKGKGDDDGNKNNKG=A:=3033,0)),))%%%%%%"\1f"""\1f%\0\ 3\0"\0\0%\99
+\a:AGNUX\fimmmwwtz~~~\81\81\81~\81zwtwpppppimmfimfffcfifmppmmcciicccfccccc___c____ccf_f__w\\\__\\\\\miimmmmptpppttttwwtppptttwwtwzz~\81\88\88\81\88\88\85\85\88\8b\8f\92\88\8b\88\88\88~\85\81\85\81\81~wwtptwzwtwwwwwwtwwzzwwzwwwwzzz~zz~~~\81\81\81~~~w~~ztwwzpmpttwttwzwz~z\81\81\85\85\88\8f\8f\92\99\99\9c  £§ªª­´±¸¸¸±´¸´¸¸±´±±±±­ª§­­¸­¾ÅÂÅÂÉÌÌÏÏÏÏÌϾ»»±´±§§ \9c\96\96\92\92\92\92\8b\88\8b\88\8b\88\88\85\88\8b\88\8b\8f\92\92\92\92\96\96\99\9c\9c£ª±¸»ÌÌÓÓÖÓÏÏÌÌÌÉÌÝààààÝàÖÖÖÓÏÓÏÏÏÏÌÌÓÉÏÌÉÏÏÏÏÓÓÖÖÝääçççäääàäàääëçëëëëëëîëëççäàäàÚÚÚÓÖÖÖÓÖÖÚÖÖÏÏÅ»¾»¾¾»¸±ªª£§§£  \99\99\9c\9c\9c\99\9c\9c  ª­­´Â»±­­ª­ª­±´¾ÌÌÏÌÏÓÓÏÏÌÏÏÓÌÅÌÉÅ´±´´´±±±¸¸§£¸¸¸´±±§ªª­­±ª±±­±´¸¾¾ÂÉÂÅÉÅÌÅž¾Â¾Âž¾»Â¾¾¾¾¾Âž¾¾Â¾¸¸±­­­ª§§ \9c\99\99\92\92\92\92\96\8f\92\8f\96\92  \9c\9c\99\99\99\99\96\99\96\9c\9c\99\99 \96\99 \9c\99§ª­­ª£­§§§\9c \9c\85\9c §££ \88£\96§££§££££\9c   £ §§§ª£¸ª¾¾Â»¾¸±´£  \9c\96\8b\8f\92\92\88\8b\88\85\85\85\85~\81~\88\88\88\8b\88\88\88\81\81\81\85\85\85\88\85\85\81\85\85\85\8b\8b\88\85\0\85~~zzzwtmpmpimmpmimmpmc_X__XUUXUXXX\KKNRfiffc_cfcf_\XXXX_Xc_c__U\URGGGGGGDAA=)%:KK==:=6:0330,,)),))))))))%%%)"")\0\0\0)\0\0)\99)6=DKNUX_cfmmmtwtwzzz~\81\81z~zwtwmtpptimmiiififfiffmtmipccffcccccccccccc___c__cccc_\z\_\\_\\\\\ifiimmptttptwwwwzzwttttptwtwww~~\81\88\85\81\88\85\85\85\88\8b\8f\8f\8b\8f\88\8b\8b\85\85\81\81\81~~zwwptwzwwzwwzzzpwwzzwwzzzwwzzz~z~~~z\81\81\81~wzwzwwpttwmmmmmtwwz~z~\81\81\85\85\88\88\8f\92\92\99\9c\9c ££§ª­­­±±¸´¸´´´´´´±±­±­­±­ª­±´±¾ÂÂÅÅÉÌÌÌÏÏÏÏϾ¾¸¸±±­££\99\96\96\92\92\8f\8f\8f\88\88\88\88\8b\85\88\88\88\8b\88\88\8b\8f\92\92\96\96\96\9c\9c §­­»¾ÏÌÓÓÓÓÏÏÌÌÉÌÏÝààààÝÝÖÖÖÓÏÓÏÏÓÓÏÌÓÉÓÌÌÏÏÓÏÏÖÖÚàääçäçäääääààäëçëîëëëëîëëçççääàÚÝÚÓÚÚÚÚÚÚÚÚÖÓÓ¾¾¾»»¸´±­­§§§££ \9c\9c\9c\9c \9c  ££­±±¸Â¸±±±­ª­±¾ÉÌÏÏÓÏÓÓÖÓÓÏÓÓÓÏÌÌÌÉ´´±´´±±±¸´ª§´´¸±­±§ª­ª±±­±±­´¸¸¾»ÂžÉÉÉÉÉÅž¾ž¾ÂÂÅž¾¾¾¾»»¸±­ªª§§££\9c\9c\99\92\92\92\8f\92\92\92\92\96\96 £\9c\9c\9c\9c\99\96\99\96\99\9c \9c\99£\96\99£  ª§ªª§£ª£  \96\9c\99\81\9c £  \9c\88 \99££££££ £    £\9c£§ª±¸»ª¾»¾¸¾»­± £\9c\99\92\88\8f\8f\8f\8b\88\88\88\85\88\88\81\85\81\88\88\8b\8b\88\88\88\81~\81\81\85\85\85\81\85\81\81\85z\88\88\85\81\0\81zzzwztpipimfiimiiifiiXXU\\NRNUUUXXUNKKNRfcffcfifc\_\X\X\\_cc\\XXUNGGGGGDA=:6)%600,,0:33,30,0))))))))))))))),%%)\0\0\0,\0\00\1f,:AGKRU\_cfmmmtwwtwww\81~~wzwtpwmpmppiiiiiiiifiiiimpifmccfccccccccfcccfc_c_c___cc__z\\\\_\\\\\fcffmpptttttwzwwzwzwwtppwwwwwz~~\85\85\85\85\85\85\85\88\88\88\8b\8b\8f\92\88\8b\88\88\85\81\81~~z~zwptwwzwzzzzzzwwwzzzzzzzzwz~~\81~~\81~z~~~zwwttwtppppiifmipzz~\81~\81\85\85\85\85\8b\8b\92\96\9c\9c  £§§ªª­­±±±´±´±±´´´¸´±±±­­­­­­­´´»ÂÂÂÅÉÉÏÌÏÏÏÌÉ´´­­ª££\9c\99\92\8f\92\92\8f\8b\88\88\88\8b\88\85\85\85\88\88\88\88\8b\8b\8f\92\96\96\99\9c\9c£§­ª»ÂÌÏÏÓÏÏÏÏÏÌÉÌÏÝààààÝÝÚÖÖÓÓÓÓÏÏÓÓÏÓÌÓÏÏÓÏÓÏÓÖÖÖäçäççççääçääàççëîëëëçëîçëçäçàäàÝàÝÚÝÚÚÝÚÚÚÚÖÏÓž¸¸¸´­±­§££   \9c\9c     £§§±´´¸¾Â¾¸±±´±­­´ÉÌÓÓÓÖÓÏÖÖÖÖÓÖÓÖÓÏÏÌÉ»´´±´±±´¸±­£´´´±­­ªª­­­±±±±±±¸»Â¾ÂÉÂÉÅÅÌÉɞ»ÅÅÅÂÂÉž¾Â¾¾¾Â»»»´­ª§ª£§££\9c\9c\9c\96\96\92\92\96\92\92\92\99\99\9c£ \9c \9c\96\96\96\92\9c\99\9c\9c\9c£\9c\9c§ £§\9c§§§\92  \99\96\96\99\96\81\99\9c \9c\9c\96\99\9c\9c  ££££\9c   £ £ £§­´»¸ª¾¾Â¸¾»£´  \99\96\8f\81\8f\8b\8f\8b\8b\88\88\88\8b\88\85\88\85\88\88\8f\8b\8b\85\85\81z~\81\85\85\81\85\85\81\81\85z\88\85\81\81~~wz~wzwpmmmmfiicfiiff_UURUXNNRRRRUUUNKGKRc_ccfiiic__\\\\X\_c_XXXNRKDGDDD==:,)))0,,,,,,0,)0,,,)))),,,,,,,,,,,0)),\0\0\03\0\03%6=DGNRU\_cfmmmpttpttw~~ztwwttwmpmmmmiiiimimifiiimtifmfficfcccfccccccc_c___c_____cw_\\\\\\\\\ccffmptttwttwzwwzwztttmtwzwzw~~z\81\88\85\85\81\88\85\88\88\88\88\8b\8f\8f\8b\8f\8b\8b\88\85\81\81~z~zztwzwwzzwzz~zztwwwwwwzzzzzz~\81~\81\81~z~~zzwtpttpmimmfffiip~~\81\81\81\85\88\88\8b\8f\8f\92\96\96 ££§§§ª­ª­­±±±´±±­´±´´´±±±±­­­ª­­±´´¸ÅÂÂÅÉÌÏÏÏÏÌÉÉž­±­ª£££\9c\99\96\92\92\8f\8f\88\88\88\88\88\85\85\85\85\88\88\88\88\88\8b\8f\92\96\96\99\9c  §­ª»ÂÉÏÌÓÏÏÏÏÌÌÉÏÓÝàààààÝÚÖÓÏÓÏÏÓÓÓÓÓÓÏÓÓÓÓÓÓÓÓÖÓÖäçäççççääçäçàççëëëëççëëäççàäàäàààÚÝÝÝÝàÝÚÚÚÚÓÖÏž»´±¸±±­ªª§§   \9c \9c    §ªª±±¸¸¾Â»»´´´¸¸±ÅÌÏÖÖÓÖÖÓÖÖÖÖÖÓÓÖÖÓÏÉɾ´±´´±´´¸±±£´¸´±­­ª­­­±­±±±´´¸¾ÂÂÅÉÅÉÉÉÌÉÉž¾ÅÅÂÅÅÉÉž¾¾¾Â¾¾¾Â»¸¸´ªªªª£§££  \9c\99\96\96\92\96\8f\96\92\9c\9c\9c  \9c\9c\9c\96\99\96\96\9c\9c \9c\9c£  §£§£\9c§\9c£\92\9c\99\99\92\92\8f\92\85\96\99  \9c\99\99\99\9c\99  £  \99£  £££££ª±¸¸¸»¾¾¾»»»£±£\9c\96\96\8b\81\8f\8b\8f\8b\88\88\88\8b\88\88\88\88\88\88\8b\8b\88\88\85\85\81~z\81\85\85~\85\85\81\81\85z\88\88\85\81z~zzzzwwtpmmiiiifif\0fcXUUNRUNNRNNRURRKNKKN_R__ffiffc__\X\UX\_\XUUNNGDDDDA::0,)))0)))))))),,,,0,,,,,,,,,,,,,0,0,,0\0\0\06\0\0:):ADKNRU\\fcimmpppptttzzwttwwwwppmmmmmimimiimimiimwiiifmiffffffcccccfc_c_____c__cct_\\\\\\\\\c_fimmptwtwwwzwwzwzttppptwwzz~\81~\81\85\81\81\81\88\85\85\85\85\88\8b\8f\8f\8f\8b\8f\8f\88\88\81\81zzzzzwzwzzzzwzz~z~wwwwwwwwzwzzz~\81~\81\81\81~~zwwtttttpmimmccciim\81\81\81\81\85\88\8b\8b\8f\92\92\96\99\9c£§§ªªª­±­±­±±´±´±ª´´±´±±±±­±­­­­±±´´¸ÂÂÅÅÉÌÏÉÏÏÌÅžªªª§§£ \9c\99\96\92\8f\8b\8b\85\88\88\85\85\85\85\85\85\85\88\88\88\88\8b\8b\92\92\92\96\9c \9c£­­»ÅÉÌÌÓÏÌÏÌÌÌÌÌÓÝàààààÝÝÖÖÏÓÏÏÓÓÓÖÖÓÓÓÖÓÖÖÓÏÓÓÖÖàçäçäççäääääàçëëçëëççççäççàäàäààÝÝàààÝàÝÝÝÝÚÓÖÓÅ»´±´±´ªª§§§  £ £\9c   £§ªª­´´¸Â»»¸´¸»»¾ÉÌÓÚÖÖÖÖÖÖÖÖÖÖÖÓÓÖÓÏÅÅ´´±´±´´¸±´§´¸±±±±§­±­±­±±±±¸»»Â¾ÉÉÉÅÉÅÉÉÉÅÅ޾ÅÅÅÉÉÉÉž¾Â¾¾Â¾¾¾¾¾»´´±­­ªª§§££   \96\99\96\92\96\8f\96\92 \9c\9c \9c\99\99\9c\99\96\96\99\9c £  £££§£§£\9c§\9c \8f\99\92\96\8f\8f\8f\8f\88\8f\92\9c \99\99\99\92\9c\9c£  \9c \96£  ££§§ª­´¸´ »»Â»»¸»£­£\96\8f\92\8b\85\8f\8b\8b\8b\85\88\88\88\8b\8b\8b\88\88\88\88~\8b\85\81\81\81\81~\81\85\85\81\85\85\85\81\85z\88\88\85\85z\81~~zwwzwtpmimmiiic\0c\\RRNNNNNNRNRRNRNNNKNUNU\fcifccc\\UXKUXNXUNRNKGGDDA=63,,))),)))))))))),,0)0)),,,,00000,03003\0\0\0D\0\0K3=DGKNUX_cicimmppppttttwwttwwzwtpmmmmmimimiiimmmmpztifipffffcccccccccc_______cc__ft__\\\\\\\\_cffmptwwwtwzwwwwwwtpppppwwz~~\81\81\85\81\81\81\81\85\85\81\81\85\88\88\8f\8f\92\8f\92\8f\8b\85\81\85zzzzzwwwzzzztzz~zzwwwwwwwwzwzz~~\81\81~\81~~zwwttttpppiiiifcciip\85\81\81\85\88\8b\8b\8f\92\96\96\99\9c §ªª­­­­±­±±±±´´´±­±±±±­±­±ª­±­­­±­±´»¾ÂÂÂÅÉÉÉÌÉÌž»§ª§§££ \99\96\96\96\8f\88\8b\88\88\85\85\88\85\85\85\85\88\88\85\88\8b\88\8b\8f\92\92\96\9c\9c\99£­­¸ÂÅÉÌÏÌÌÌÉÌÌÌÌÓÝààààààÝÝÖÓÖÓÓÏÓÓÖÖÓÓÓÖÖÓÖÏÓÓÓÖÚàçäçäçäääàääàäëëçëëçäççççäàäàääÝÝàààäàààààÝÚÓÖÓÅÅ»´±±±´­ªªª££     £  £§§§ª´´´¾Â»»»¸»¾¾ÂÅÉÓÚÖÖÚÖÖÚÖÖÓÖÖÓÓÖÓӾ¾¸¸¸¸´´´¸­´§´´±±±±§±­±±±´´±´´»¾ÅÂÅÅÉÉÉÉÉÉÅÅÅÉžÂÂÂÅÉÉÉÅÉÉž¾¾¾¾»¾¾»»»»»¸±±­­­ª§£££§££ \9c\9c\96\99\96\92\96\96 \9c \9c\99\96\92\99\96\92\92\99\9c £££§§§§§£ \99§\99\9c\8b\88\8b\92\8b\8f\8f\88\85\85\8b\99\9c\96\99\99\96\9c\99  \9c\99\9c\96   ££§ª­±¸¸´ ¸»Â»»´¸§­ \96\8f\8f\8f\88\8f\8b\8b\8b\85\85\88\88\8b\8b\88\85\88\8b\85~\8b\85~~~\81\81\81\85\85\81\85\85\81\81\85z\85\88\81\85~\81~~~zz~zwtmmmmiifc\0c\_NNNNNNNNNKRNRRKNNKRURUNfcfc___XXUUNUUNURKNKGDDAA=::0,,,)),%%%%%%))))),,,,,,,,,,,0000,,0336\0\0\0G\0\0R:ADKNRUfimipmmmppppttttwwwwwwzwwtpmmmmmmmpmiiimmmpwwmimtifffccccccfcccc__cc__c_c_ct_c\\\\\\\\\_cfittzwzwwzwwwwtwwttpttzwz\81\81\81\85\81\81\85\81\81\85\85\85\81\85\85\88\8f\8f\92\8f\92\8f\88\88\85\81zzzzzwwwwwzwtzz~zzwwwwwtwwwwww~z\81\81~\81z~wtwtpppppmiififcciip\81~~\81\85\8b\8f\92\96\99\9c\9c££§­­±±­­±±´±´´´´´±­­±­±­±±­­ª­­±ª­­´¸¸¾ÅÅÅÅÅÅÅÉÉɾ¸¸ªªª£££ \9c\99\96\92\8f\8b\8b\8b\88\85\85\88\85\85\85\85\88\88\81\88\88\8b\88\8f\8f\92\96\99\99\9c£ªª´¾ÅÉÌÏÉÉÌÉÉÉÉÌÓÖààààààààÚÖÖÖÖÓÖÓÓÖÓÓÏÓÓÏÓÓÓÓÖÓÖÝäàäççääàààäààçëççëççççççäàäààäÝàäàääàäààäàÚÖÚÖÂɸ´±­´´±­ªª§£££   £   £§§ª±´¸¾Â¾»¾¾»¾»»¾ÂÅÏÚÚÖÝÖÖÚÖÓÓÖÓÓÓÖÏϾ»»»»¸¸¸¸¸­´ª´´±±­±±´­´´±´´±¸¸¾ÂÅÅÉÉÉÅÅÉÉÉÅÅÂÉÅÂÂÂÂÂÉÉÉÉÌÅž¾»»¸¾»¾¸¸¸¸¸±±±­­ª§§§££§§£ \9c\9c  \9c££ \9c \99\99\96\92\96\92\92\96\96\9c  ££§§§§§£\9c\99£\99\99\88\85\88\8b\88\8b\8b\88\85\85\88\96\99\92\99\9c\99\9c\96\9c \99\96\99\96  ££§ª­±´»¸¸ »¾¾¾¸´´ª­ \99\92\92\8f\8b\8f\8b\88\8b\88\81\85\85\88\88\88\81\85\88\81~\88\81z~\81~\81\81\85\85\85\85\85\81\81\85z\88\85\81\85\81\81~~zz~\81~zwpppmmmicccf_NNNNNNNNNKNNNRKRKNNRNRNccR_\__UUUUKUNNRDGNKDGA==:6600,,),6%%%%%)))))))),,,,,,,,,0000),036:\0\0\0K\0\0U=KURRffimpttppmpppttttwwwwwzzzzzwmpmmpmppmmiiimpmptzpmitiiffffcccccccc_____cc__c_ct__\\\\\\\\\__ciptzzzwwzzwttwzwwttttwtz\81\81\81\81\81\81\81\81~\85\81\85\85\88\88\8b\8b\8f\92\8f\8f\8b\88\8b\81~zz~zwwzwttwttzz~zzzwwwwttttwwwzz\81\81~~z~tpwptpmpmiiffffcfimm~zz~\81\8b\92\92\99\9c£ §§§­­­±±­­±´±´´´´±´±ª­ª­­­­ª­ª­­­­­­´¸»ÂÂÅÅÂÂÂÂÅÅž¸¸´­§ª££  \9c\9c\99\92\92\8f\8b\8b\88\85\85\85\81\85\85\85\85\88\85\85\88\8b\8b\8b\8f\8f\92\96\99\99 §ª±ÂÂÌÉÌÌÉÉÉÉÉÉÏÏÚààààààààÝÚÖÚÖÖÖÖÓÓÓÖÓÏÓÓÖÓÓÓÓÓÖÚääàäääàÝààààäëëçëëëççäääçääÝààÝàààçäääààääÚÚÚÖÏ̸±´±±±±­ªªª§£££\9c££££ £££ª­´¸¾Â¾»»¾»»»»»¾»ÌÚÚÖÚÚÖÖÖÓÏÓÏÏÓÓÌ̾»¾¾¾»¸»¸¸±±­±´±±±´´´±¸¸±´¸´¸¸¾ÅÅÂÉÅÉÉÉÅÉÉÉÅÂÉÉÅÅÅÅÅÉÅÅÅÉÉɾ¾¾»¸»¸»´¸¸´´­­±­­ªªªª§§§§§£  ££ §§£ \9c\92\96\99\92\8f\8f\8f\92\96\9c\9c\9c ££££§§ \9c\99£\96\99\85~\85\8b\88\8b\8b\88\85\88\88\96\96\96\99\99\99\99\92\96\9c\99\96\8f\96 £££ª­±´¸»¸»¾¾¾¾»¸¸­ªª\9c\96\92\96\8f\8f\8b\8b\88\8b\8b\81\85\85\85\88\85~\85\85~~\88\81wz\81z~\85\85\85\85\88\85\81\81\85z\88\81\85\88\81\81\81z~z\81\81~~zttttppmffficNNNNNNNNNKNNNRKRGNNRNURf_R\U_\RRUUGRNNNDGKGADA::63300,,\ 3):"""%%%%)%))))))),,,,,,0000)036:=\0\0\0N\0\0XANXU_iimptwwptmppptttwwwwzzzz~\81zzptmpppptimiiipppppzpimtimiffffccccccc____________p__\\\\\\\\\\_cimtz~~zz~~wttwzzwwwttwt~\81\81~~\81\81~\81~\85\81\85\85\88\8b\8f\88\8b\92\8f\8b\8f\88\8b~zw~~zzwzwtpwttwzzzzzzzwwwttwtwzzz\81\81\81\81~zwpwpptppiifffffffimpzwwzz\88\8f\96\99 §£ª§ª±­±´±±±±´±¸¸´´´´±­±ª­­­­­­­ª­ªª­­±»»Âž¾¾Âž»¸´¸±§§££  \9c\99\99\92\92\8f\8b\8b\88\85\81\81\81\85\81\81\85\88\85\85\88\8b\8b\8f\8f\8f\92\96\99\99 §§´¾¾ÉÅÉÉÉÌÉÉÌÉÌÏÖàààààààààÝÚÝÚÚÚÖÖÓÖÓÓÓÓÓÓÏÏÖÖÖÖÝääààäàÝÚààààäëççëëçççäääçääàäààààääççàààààÝÝÝÖÓÏ»±±´±´±­§­­§£££  £££ £§§ª±±»¾Â»»»»»¸¸¸»´ÉÖÖÓÖÖÖÚÖÓÏÏÏÏÓÓÉɾ¾»¾¾¾¸»¸»¸´±±±´±´±´´´´´¸´´¸´¸»»ÂÅÅÅÂÅÅÅÉÅÅÉÉÂÅÅÉÉÉÉÅÉÉÉÅÅÉɾ»¾¾¸»»´¸´´¸´±ªª­ª­ª§ª§ªªª§ª§££§§£ª§£ \9c\92\96\96\92\92\8b\92\92\92\9c\99\99\9c ££§§§\9c\9c\99£\96\96\81~\81\8b\85\88\8b\88\88\85\8b\92\92\96\96\88\96\99\96\99\9c\99\92\92\99£§§§­±±´´»¸»»»»¾¸»¸±§§\9c\96\8f\96\8f\8b\8f\8b\8b\88\88\85\81\85\81\85\81~\81~~~\88\81z~\81~z\81\85\85\81\88\85\81\85\81z\88\85\85\88\85\85\85~~z\81\85\81zzwwwwttpipimfcUNNNNNNNNRNNRKRANRRNURf\NRR\XRKRUGNNRNDGGDAA=:633300,,\0\0:"""%%%%%%))))))),,,,,,0000)336:=\0\0\0R\0\0\D\_ccmmppptwttpptptttwwwz~zz~~\85zzpttppmmpmmiiipptttwpmmpmiiifffffffccccc_______\\\m\\\\\\\\\\__cffpwz\81z~z\81~wwwzwzwwwwwzw~\85\81~~\81~\81\81~\85\81\85\85\8b\8b\8f\8b\8f\8f\8f\8b\8b\88\88~zw~~zzwwwppttttzwzzzzzwwwtwwtwwz~\85\85\85\81~wwtwpppppmifffffffmptmppwwz\8b\92\9c\9cª§­ª­­±±´±´±´´´¸¸¸´´´­­±ª±­­ªª­ª­ªª­ª±´»¾Â¾¾¾»Â¾¸»´¸´ª§£ ££\9c\96\99\96\92\8f\88\88\88\85~\81\81\85\81\81\81\88\85\81\88\88\8b\8b\8f\8f\8f\96\99\99 §£´»»ÅÅÉÉÉÉÉÅÉÉÌÌÓÝààààààààÝÝàÝÚÚÖÖÓÖÓÏÖÓÓÓÏÓÖÓÖÚÝààÝàààÝÚÝÝààäëççëççççççäççääàäààäääëçàààäàÝÝÝÖÖÖϸ´´±´´±ªª­ª£ £££§£ £££§ª­±¸¾ÂÅ»»»¸¸¸´´±­ªÓÓÏÏÓÓÖ\96ÏÏÏÏÏÓÓ¾¾¾¾¾Â¾¾»»¸»¸´´±´´±±­±±´´´¸´±´¸¸»»ÂÅÅÉÅÂÂÅÅÂÅÅÅÅÅÉÉÅÉÉÉÌÅÉÂÅÉŸ¾¾¸»¸´´´±´±­§§ª§­ªª§ª­­ªªªª§§ªª§§ª££\9c\96\96\92\92\92\8f\92\92\92\99\9c\96\99 ££§££ \9c\99 \92\96z~\81\88\85\88\88\88\88\85\8b\8f\8f\92\92\88\92\96\96\96\99\99\8f\96\99 £§§ª´±´±¾¸»¸»¾¾¸¸¸±ª§\99\96\92\92\8f\8b\8f\8b\8b\85\85\81\81\81\85\81\81~\81z\81~\85\81z~\85\81~\81\85\85\81\85\85\81\81\81~\88\85\85\88\88\88\85\81~\85\85\85\85~zzzwzwttmtmpmiXNNNNNKKNRRNRKRDNRRRRRcXRRU\UNNRUGGNNNDDGD==::6333000,\0,6"""%%%%%%))))))),,00000333)336:=\0\0\0R\0\0_U_cffmpmpptwwttpwptttwwz~~zz~\81\88\8b\81twwmppmmmmmmipptwttmmmmmmmiiifffffccccf________\\m\\\\XXXXX\_cccfpzz~~~~\81~zzwzzzwwtwwzw~\81\81~~\81\81\85\81\81\81\85\88\85\8b\8b\8f\8f\92\8f\8b\8f\8b\88\85zzzzzwzttwmmppptwtzwz~zwwtwwwptzz~\81\85\85\81~wzwttppmmmifccfffimptifmmmip\88 \9cª§­­±­±­´´´´´¸´¸¸¸¸±±±±­ª±­­­ª­ª­ªªª­­¸¸¾Â¾¾Â¾»»¾¾»¸¸¸¸±­§££££\9c\99\96\96\8f\8b\8b\8b\85\85~\81\81\81\81\81\81\88\85\85\88\88\88\8b\8b\8f\92\96\99\9c §§±¸»¾ÂÉÉÉÉÉÉÉÉÌÌÓÝàààààààààÝÝÝÝÚÚÖÖÓÓÓÖÖÓÖÓÓÖÖÖÚÝÝÝàÝÝÝÝÚÚÝààäçççëçëääççäçççäàääààääçääààäÝÝàÝÚÚÚÓ»¸´­±´´­­­­§£££§§£££§§§ª­±¸»¾Å¾¸»»¸¸±­­ªª§w­ÌÏÏÓ\96ÌÏÌÏÌÏϾ¾¾Â¾¾¾¾¾»»¾»´±±±±­­ª­­±±±´±±´¸»¸¾ÂÅÅÅÉžÂÂÅÂÂÅÅÅÉÅÉÉÉÉÉÂÅÂÅÅž¸»»¸¾¸¸´´±±­ªª£ª§ªªªª­­­ªªª­ªª­­ª§ª£§\9c\99\96\92\8f\8f\92\92\8f\8f\99\99\99\9c ££§ £\9c \96 \8f\96~\81\81\88\81\88\85\88\85\88\88\88\88\92\92\85\92\92\96\92\96\96\8b\92\99\9c§ª­­´±´­»¸»»¾»¾¸¸¸´ª£\96\92\92\8f\8b\8b\8b\8b\8b\88\85\81\81\85\85z~~~~\81~\85\81wz\85\85\81\85\85\81\81\81\85~\81\81z\88\88\88\88\8b\8b\88\85\81\88\88\81\85~~zzzzwwtpwpppmif_RNKKKRRRRRKUDNNRRRRcXURX\RNKRUKGNNNDAGA=:=66333030,,,)"""%%%%%)))))),,,,00000333)036=A\0\0\0R\0\0_Xcfciimmpptwwtwtwpttwwz~~\81~~\81\85\8b\8b\88wwzmmmmmmmmmmpppwptmmmmmmmmiiiiifffffcccccc____\\m_\\\\XXXXX\cfffpww\81~\81\81\81\81~~z~~~zwttzww~\81~~~\81\85\85\85\85\85\85\88\88\8b\8b\8f\8f\8f\8b\88\8b\8b\85\81wzwwwtwpptiimmmptpwwwzzzwwwwttwzz~~\81\85\81zzzwtwtpmpmic_cfffimpt_c\ciipz  §ª­±­±±­±´¸¸´¸¸»¸»¸´´±´­­­­­±ª­­­ªªª±±´¸»¾¾Â¾¾¾»¾»»¸¸»´­ª§§   \99\99\92\92\8b\8b\8b\85\85\81~\81\81~\81\81\85\81\85\88\88\88\8b\8b\8b\92\96\96 £ªª±¸»¸¾ÉÉÉÉÉÉÌÉÌÌÓÚÝàààààààààÝÝÝÝÚÖÓÓÓÖÓÓÖÖÖÖÖÚÖÚÝÝÚàÝÝÚÚÚÝÝààäçççëççääççäçäçäääàààäàçàääààÚÝÝÚÚÚÝ־ϸ±´´±±±­ª£§§§§§§££ª§ªª­±´»¾Â¾¸»»»¸­ª£§§£w\81\8b§\9c§\99  \99ÌÉÌ̾¾¾¾¾¾»»¾»´­­§­­ª§ªª­­­±±±´¸»»»ÂÅÂÉžÂÂÂÂÅÂÂÅÅÅÉÅÅÉÂÅÂÅž»»»»»¸¸´´±±­§ª§ª§§ªªª­­±­ªª±­­±\92ªª­§£ \96\96\96\92\92\92\92\8b\92\96\96\96\9c §§£££\9c \96 \92\92~\81\85\88\85\85\85\8b\85\88\85\88\88\8f\8f\85\81\8f\92\8f\96\92\88\92\9c\99£ª±­´´±ª¸»»¸»»»¸´´´§£\96\8f\8f\8b\88\88\8b\8b\8b\85\88\81\81\85\81~~z~\81\81~\85\85wz\85\85\81\85\85\81\81\81\85~\85\81~\88\88\88\88\8b\8b\88\85\85\85\85~\81~~z~zzwzwtztttpmif_RUUUURRRUKUDRNRNRN_\XU\XUNNUUNRNNNGDGAA:=:6333333,,,%""%%%%%%)))),,,,,,000003333336=A\0\0\0N\0\0_\cffiiippmpwzwztwwttwwz\81\81\85\81\81\85mp\8f\99zwwpmmmmmmmmmpppwppmmmmmmmmmmiiiiifffffccccc_c___i\\\\\XXXXX_ccfimwz\81\81\81\85\81\85~\81~z~~~zwtwww~\81z~~\85\88\85\85\85\88\85\88\88\8b\8b\8b\8b\8b\8b\85\8b\88\85\81wztppmmiipffffimpmtttzzzwwttttwwwzz~\81~wzwttttpppiiccffffimptXX\c_fmwz£§­­±±´´±´´´´¸»¸»¸»¸´¸­±­­±±±±ª­­±­ª­±´¸»¾¾Â¾¾Â¾¾¾»¸¸´¸´­ª§§£ \9c\9c\99\92\92\8f\8f\8b\88\88\81~~\81\81\81\81\85\81\81\85\88\85\88\8b\8b\92\96\96 §­­´¸¸»ÂÉÉÌÉÉÉÌÌÌÏÓÚÝàààäàààäàäàÚÝÚÖÓÓÓÖÖÓÖÖÖÖÚÖÖÝÚÝÝÝÝÝÖÚÚÝÝàààäççëççäàççççäçäääàààäàäÝäàààÝÝÝÝÖÚÚÚÖÓ»´´´´±±±­§ªª§§§§§§ªªªªª­±¸»¾¾¸¾»»¸§§ \92\92\8bw\81\8b\99\99 \99\9c \99§ÉÌÉž¾¾¾¾¾¾»»¸´ªª§ªªª£§§£ª­­­±´´¸¸¸ÅÅÅÉž¾¾¾¾ÂÅÅÂÅÅÅÅž¾Â¾»¾»¸¸´´±­±­ªªªª§§§ªªª­±±­ª´±±±\8f§­­§ \9c\96\96\96\96\96\96\92\88\92\96\96\96\99\9c££§§£\9c \92\9c\92\8f\81~\85\88\85\85\85\88\85\85\81\88\85\8f\8f\85\81\85z\8b\92\85\85\92\99\99£ª´­´´´±»¸»´¸»¸´±±±§§\99\8b\92\8f\85\8b\8b\8b\88\88\88\81\81\85\81\81~~~\81\85\81\88\81t~\81\85~\81\81\81~~\85~\81\81~\8b\88\88\88\8b\8f\88\88\85\85\81\81\81\81~~~~zz~wwwtwtpmmic_\X\X\XUXNUDUKNKNN__XX_UXRNRURURNRKGGDD::=6663630,,,%""%%%%%))))),,,,,,000006336666AA\0\0\0R\0\0___ififfppmptztztzzzzww~\81\85\88\85\85\88m\8b\92\99~twmmmmmmmmmmpppwpppmmmmmmmmmiiiiiiiiffffcccccc__i_\\\\XXXXXccfiipz~\81\85\85\88\85\85\81\81\81~\81\81~wwtzzt~\81z~\81\85\88\88\88\88\8b\85\8b\8b\8b\88\88\88\8b\8b\88\88\85\85\81zwtpiiifcic_ccffiimppzzwwtppttwtwwwz~zwwwptptpmmifccffffimptRUX_ccipzzªª­±´´´´´´´´»»»»¸»¸¸´­­±­±±±±­±±­­ª±´¸»¾¾¾¾Â¾¾»»¾¸¸¸´´´­ªª££\9c\9c\99\99\96\8f\92\8b\88\88\88\81~\81\81\81\81\81\81\81\81\81\85\88\85\8b\8f\92\92\99£ª­±´´¸»ÂÅÉÉÉÉÌÉÏÌÓÏÚÚàààààààäàäàÝÚÖÖÓÓÏÖÖÏÖÓÓÖÝÚÚÝÝÝÝÚÚÝÖÝÖÝÝàÝÝäççëçääàääççäääääÝààäààÝàÝÝÝÚÚÚÚÓÚÚÚÚÖÓ´¸¸¸´´´­ª­ªª§§ª§ªªªªªª­­¸¸¾Â»¾»¾´ª£\92\88\8f\8bz\85\8b\92\99\9c\99\9c \9c £Éž¾¾¾¾¾Â¾»»¸±ª§§ §§ £ £§ªª­­±±´»»ÅÅÅÅÅŻ¾ÅÅÅÂÅž¾¾»Â¾¾Â»¸¾¸¸¸´±±­±±­ªª­ª§ª§§ª±±´±´´´­±\8f£­ª§£\9c\92\96\96\96\96\96\8f\8b\8f\96\92\99\99\99 §ª§£  \96\9c\92\92\81\88\85\8b\85\85\85\85\81\81\85\85\85\8b\8b\81\81\81z\81\8f~\85z\99\99£ª±­±±´´»¸»´¸¸´±­ª±£§\9c\85\8f\8f\85\8b\8b\8b\88\85\85\81\85\81\81\81\81\81\81\81\85\81\85\81p\81~\85z\81\85\81\81~\85~~\81\81\8b\88\8b\8b\8b\8b\88ª\88\85\81\81\85\81\81\81~\81~~\81ztwtttpmmmfc_c__c_\\RUGUGNRNN\\\X_XXURUUUUURRNKGGA==:6663:00,,)%""%%%%%))))),,,,,,0030333366::AA\0\0\0R\0\0___icicimpmppwtzwz~~~tw~\81\88\88\88\85im\8f\92\99zptmmmmmmmmmmttttttppmmmmmmmmmmiiiiiiiifffffcffccf____\\XXXXcfiimtz\81\81\88\88\88\88\88\85\81\81~\81\81zwwtzwtz~z~\81\81\88\88\88\8b\8b\88\8b\8f\88\88\85\85\8b\88\85\88\81\81~zwpmfifc____X_ccfcimmwwttpmpppwwwttwzwtttmpmppmiffccfiifipptRRU\_fiiww~ª­´´´´±¸´¸¸»¸»»¸¸´¸´­±±±´±±±±±­±±­´´¸»¾¾¾¾Â¾»¾¾¾»¸¸´±±±­ª§££\9c\9c\99\99\96\8b\8f\8b\8b\88\85\85\81\81\81\81~~\81\81\81\81\88\88\88\8b\8f\92\96\9c£§­±´´»»¾ÅÅÌÌÌÌÌÏÌÏÌÖÖàààààààäääàÝÖÖÖÓÓÏÖÓÓÓÖÓÖÚÚÚÚÝàÚÝÚÚÚÚÚÚÝÝÚàäççççäääçàäçäàäääàààäààÚàÝÝÚÖÚÖÖÖÚÚÚÝÚÖÏ»»¸¸¸¸±­±ªªªªªª­­­­ªªª­´¸¾¾¾¾»»¸­\9c\8b\88\85\8b~\85\8f\92\99\99\9c\9c\9c \9c£­Â¾»¾»¾¾Â»¸¸´­§££ ££\9c  £§ª§ªª±­´¾¾ÂÂÂ޾ž»»»¾»»¾¸»»¸¸¸´´±­±±±­­­ªª§ªª­±´´´¸¸´±±\8b§­ª§  \92\99\99\92\96\96\92\8f\92\96\92\99\9c\99\9c\96­£££ \92\99\92\96\88\8b\85\88\85\81\81\85\81\81\85\85\85\8b\8b~~z~w\8bw\81~\96\99£§­­­­´¸¸¸»´¸´±ªªª­££\9c\85\92\8f\85\88\8b\8b\88\85\81\85\85\85\85\81\85\85\81\81\85\81\85\81m\81~\85z\81\81\81\81~\85~~\81\81\8b\88\88\88\88\8b\8b§\8b\85\81~\85\85\85\85\81\81\81\81\81~twwwttppmffcffffccfUXKUKNUNN\X\U\\\XUXURUUURRNKG=AA::6:3=03,,)%""%%%%%))))),,,,,,0030633636===A\0\0\0R\0\0__cf_icimmimmttwwzz\81\81t~~\85\88\88\85\88\88f\92\96\99wpppmpmmmmmmmttttttpppppmmmmmmmmmiiiiiifffffffcccf______\\\Xffimmpw\81\85\88\8b\88\8b\88\88\85\81~\81~zzwwwwtzzz~~\85\88\88\88\88\88\8b\8b\8b\88\85\85\85\88\85\81\88\81~~zttpfic___\\X\\__cffitttpmimmmtttppppppmtpmppmpiiffcffiiipptRRU\\cimtpw­­´´´¸´¸¸»»»¸¸»¸¸±´±±´´´´±±´±´±±´±´¸¸»»¾Â¾Â¾¾¾¾¾¾»¸´´±­ª§££ \9c\99\96\96\96\8f\8b\8b\8b\8b\88\85\81\81\81\81~\81\81\81\81~\85\88\8b\8b\8b\92\96\9c ª±´´¸»¾ÂÉÅÉÌÌÌÏÏÏÓÌÌÖÝààààààäàäàÝÖÖÓÓÖÏÓÏÓÓÓÓÓÚÖÖÚÚÝÝÚÖÚÚÝÖÚÚÝÚàäääääääçäääääàäääàààäààÚÝÚÚÓÖÖÓÓÓÚÚÚÝÝÚÓϾ»¸»¸´±±­­ª­­­­­­­­­­­´´»¾¾Â»»»±\85\81\85\85\88\81\85\8b\92\96\96\9c\9c\9c\9c\9c ª»¾»¾¸»»»»¾¸¸´±ª£     \9c   £ª§§§±±±¾¾Å¾Åž¾¾¾¾¾Â¾¸¾¾»»»¾¸¸»¸´´´±±ª±±±ª±­ªªªª§­­´´¸¸¸´±±\88ª­§£\9c \96\9c\96\96\96\92\92\8f\96\96\92\9c\9c\96\96\96­£§  \99\96\96\96\8b\8f\81\85\85\85~\85~\81\81\81\88\88\88z~z~w\88t~z\96\99 £ª±­±¸´¸¸¸´´´±ªª§­£ \9c\85\92\92\8f\85\8b\88\88\81\85\88\81\88\85\81\88\85~\85\85\81\85\85i~\81\85z\81~\81~~\81~~\85\85\88\88\88\88\8b\8f\8b£\8b\88\85\85\85\88\8b\88\88\85\81\85\81~wwwzwtppmiifiiiiffi_\XUNRXRRXX\U_X\XXXURXXXURNKDAAA=::63A30,,,%""%%%%%))))),,,,,,3000633603::=A\0\0\0R\0\0cfcc\mfmimmiipttwww\81\81t\81~\85\85\88\85\85\85\88\8f\96\99wtppppppmmmmmttttttppppppppppmmmmmiiiiiiiifffffffccccc__\\\\fciimtz\81\85\85\88\8b\88\88\85\85~\81~\81zwwwwttzz~~\81\88\88\88\88\88\85\88\88\8b\88\85\88\85\85\81\81\85\81~~wttmiff___\XX\X\X__cfmppmmimiipttpmpiimmppmppppmiffffiiimmptNRU\_ffitpz­±´¸´¸´¸¸»¸»¸¸»¸´´´´´¸´±±±±´±´±±´´´¸¸»¾¾Â¾Â¾¾¾¾¾¾»»¸±±­ª§£§£ \9c\9c\96\92\92\8f\8b\8b\8b\8b\88\85\85\81\81\81~\81\81\81\85\81\85\85\8b\8b\8f\92\96  ­±¸¸»»¾ÅÉÉÉÌÌÌÏÏÏÏÌÌÖÝààààààäàäÝÚÖÖÓÓÓÓÏÏÏÏÏÓÓÚÖÚÚÚÚÚÖÖÚÚÝÚÚÝàÚàääàäääàäääääààääàÝÝÝàÝÝÚÝÚÖÓÖÓÓÓÓÖÚÚÝÚÚÝÖÌ»¾¾¸´´±±­­±­­±±±±­­±±±¸»»¾»»»±\81\81\85\88\8b\88\88\8b\8f\99\99\99\99\9c\9c\9c\92§´±¸»´¸¸¸¸»´´ªª   \9c\9c\9c\9c \9c£££ª§§ª±±­Â»Â¾ÂÅžž¾Â¾¾¾Â¾»¸»»»¸¾¾»¸»¸´´´±­­±´´­±±ª­ªªª­±´¸¸¸¸´±´\88­­§£\9c\9c\99\9c\99\96\96\8f\92\92\92\96\92 \99£\96\96­ ª££\9c\99\99\99\8f\8b~z\85\81z\81z~\81\81\88\88\88wzz~w\85pzz\96\99£§§´±±´±¸´´±±´±­­§­£  \99\92\96\92\81\8b\88\88\85\88\85\85\88\85\85\88\85~\85\85\81\81\81i\81\81\81z\81~~z~\85\85\88\88\88\8f\8b\88\8b\8b\8f\8b \88\88\85\88\88\88\8f\8f\8b\88\81\85\85~zwwwwttmmmmimmmmiimc_\URUXUUUUXU\U\U\XXUX\XURRGDAD=AA:63=000,,%""%%%%%))))),,,,,,00003636036:=A\0\0\0R\0\0cifi\pimmiiifptpttt~~z\85~\85\88\88\88\85m\88\92\96\99ttttppppppmmmttttttppppppppppppmmmmmmiiiiiiifffffccccccc___\fcmmpt~\85\85\88\88\88\85\88\85\81~\81~~ztwtwwwwzz~\85\88\88\88\88\85\85\88\88\8b\85\85\85\81\81\85\81\81\81zztptiiff\\\XXUXXXX\\_cfimiiiiffmtppppiiimmpmpppppmiifiiiimpttKUU\\cfipp­±±´¸¸¸´¸¸¸¸»»¸»¸´¸¸´´´´´´´±±´´±´´´´´¸¸¾Â¾¾Â¾»¾¾¾»»»´­­ª§§§£ \9c\99\99\92\92\8f\8f\8f\8b\88\8b\88\85\88\81\81\81\81\81\81\81\81\81\85\85\8b\8b\8f\8f\96££­±¸»¾¾ÂÅÉÉÉÌÉÌÌÌÌÌÉÉÖÝààààààäààÚÚÖÓÖÓÓÓÓÌÌÏÌÏÓÚÖÖÚÖÚÖÖÖÚÖÚÚÚÝàÝààäàäàäÝàààààààääàÝÝàÝÝÝÚÚÚÖÓÓÌÏÏÏÓÖÚÝÚÝàÚÖÉÅÅ»»´´±±±±­±´±±­±­­­§´¸¸»»¸»­\85\85\85\88\8b\8b\8b\8b\92\99\99\9c\99\9c\9c\9c\96ª´±¸´´´¸¸´´±±§ª£   \9c\9c\9c\9c £§§­ªª­±´±¾¾¾Â¾Â¾¾¾Å¾¾¾¾Â¾¾¾Â¾»´»»¾¸»»¸¸¸´´´±±±±´´´±´´­±­­­±´¸¸¸¸¸´±´\88­ª§ \9c\99\99\99\99\92\96\92\92\96\96\96\8f\9c\96§ ­­\9c­§£ \99\9c\99\8f\88zz\81~z\81w\81\81\81\85\85\85www~w\81mzw\96\9c§§£¸´´´±¸±´±´±±±­§ª§££\96\92\96\92\85\8f\8b\88\88\88\85\88\88\81\85\85\81z\81\85\81\81\81f\81~\81z\81~~~z\85\88\8f\8b\88\96\8f\8b\8b\8b\8f\8f\88\8b\88\88\8b\8b\8f\92\92\8f\88\85\88\85~zwwwwwwpppmmppppmmmfc_UUXUXXRRXXXRXU\UURU\XXURKDAA=AD:66:30,0)%""%%%%%))))),,,,,,00000336036:=A\0\0\0U\0\0fmfmimiimffiippppmt~\81~\81\81\88\85\8b\88\88im\8f\96~wwtttpppppppmttttttttppppppppppmmmmmmmmiiiiiiiffffffffc_____ffmmpw\81\88\85\88\85\85\81\88\81~~~z~wttpwwwwzz~\85\85\88\85\88\88\88\88\88\88\85\85\81\85\85\85\81\81\81zwttpmiff\X\UXUXUXU\\\cffiffiifffpmmppiiimppppmpttpimifiimptttNRUX_cfmmp­­´¸¸¸»´»¸¸¸»»¸»¸´¸´´´´¸´´´±±±´±±´´¸¸¸»»¾»»¾¾»»¾¾»»»¸ª­§£££ \9c\99\99\96\92\8f\8b\8b\8b\88\8b\8b\88\88\85\85\85\85\81\81\85\81\81\81\85\88\8b\8b\92\92\96£§±´»¾¾ÂÅÉÉÉÉÉÅÌÉÉÉÌÉÅÓÝààààààäààÚÚÖÖÓÓÏÓÏÏÏÌÏÌÓÖÓÖÖÓÚÓÚÓÝÚÚÚÚÚààààäàäàààààÝààààäàäÝààÚÝÝÚÝÖÓÖÏÏÏÏÌÏÖÖÝÚààÝÚÌÉÉž¾¾´´±±´­´´´´±±­±­ª±±¸¸¸¸¸­\88\88\88\8b\8f\8f\8b\96\96\99\99\9c\9c\9c\9c \9c­¸±¸¸´´´´±±­­§ª£    \9c\9c\99 £§ª±­­­´´±»¾Â¾Â¾Â¾Â¾ž¾»¾¾Â»»¾¾»¸¸»¸»¸»»»´¸¸´´´´±´´¸¸´´¸±±­±­±±¸¸¸´´¸±±\85­\9c§ \9c\96\99\99\99\96\99\96\92\92\92\96\8b \92ª£­ª\99ª§ £\9c\99\96\8f\85~z~~z~z\81\85\85\81\81\85tww~t\81pwt\96 §ª£»´´¸±¸´´±¸´´±±§ª£§ \92\96\92\96\8b\8f\8b\85\8b\85\88\85\85~\81\81~w~\81~~~f~~~w\81\81\81\81~\88\8b\8b´\92\8b\88\88\8b\8b\88\88\88\8b\8b\8f\92\92\96\8f\8b\88\85\85\81zwwwtwtttpppttttpmpfccUXXUUUNNXXURUUXUUNUXXURRNGAA=AG::6660,,,))"%%%%%))))),,,,,,00000333006:=A\0\0\0U\0\0ipipmmififciimpmmmpz~\81\85\85\88\85\8b\88\88m\8b\8b\92zwwwttppppppppttttttttttppppppppmmmmmmmmmiiiiiiiiifffffccccc_fiiptz\81\88\88\85\81\81\81\85~wzzzzttppwwwwzz~\81\85\88\88\88\85\88\88\88\85\85\85\81\85\88\85\81~~ztttmpicc\XXXXXXU\X\\\_ccfccfifffmimtpiimmpppppptttppimmmmpwtwNRUX_cimipt±´´¸¸¸¸»»¸¸»»¸»¸¸¸¸´´´¸±´´±±±±±­´´´¸¸»»¾»»¾»¸¸»»»¾¾´­ª£   \9c\96\96\96\8f\92\8f\8b\8b\8b\88\8f\8b\8b\88\88\88\85\85\85\81\88\85\85\85\85\88\8b\8b\92\92\92§ª±¸¾ÂÂÂÉÉÉÅÉÅÉÉÉÅÉÉÉÅÖÝààààààÝààÚÚÖÖÏÏÌÏÓÓÏÏÌÌÏÓÏÓÓÓÚÖÖÖÝÚÚÝÝÝàààääàäàäàààÝààäääääàÝÝÝÝÝÚÚÖÖÓÏÓÏÏÉÏÖÖÝÝäÝàÝÚÌÌÉÅ»¸´´´±±¸¸´´´±±±­ª±¸¸´´´­\92\8b\8b\8b\92\96\92\99\99\99\9c\9c  \9c£§±´±¸¸´´´±­­ªª£§£ £     £§ª­±±±±´´±»»¾Â»¾¾Â¾»Â¾¾»¾¾»¸»»¸´¸¸¸»»»»¸¸¸¸¸´´´±´¸´»¸¸´±´­´±´´´¸¸±±´´±\85ª\9c£ \9c\92\99\99\99\99\99\96\92\92\96\99\88£\92§§\92­\9c­§£ \9c\99\8b\8b\85\81~\81~~\81z\85\85\85\85\85\85tzwzp~pwt  ªª±»±´´´»¸´´¸´´±±ª§£§\9c\92\96\8f\92\8f\92\88\85\8b\85\85\85\81~~zzw~~z~~f~zzz\81\85\85\85\81\88Xi»¾¸\92\96\88\85\88\88\88\88\88\8b\8f\92\96\96\96\92\8f\8b\85\85\81zzwwtwtwwttttwwwtppcc_UXUURRNNUXURRRXXUNRXURNNKGAAADGA=6663000),%)%%%%)))))00,,,,00300333036:=D\0\0\0R\0\0mpmmmiiffffiiimimmmz~~\81\85\88\88\8b\8b\88\88\88\81~zwwwwttppppppptttttttttttpppppppppmmmmmmmmmiiiiiiiiiiffccfcccimmptz\81\85\88\81~~\81\81zzwwwwttmttwwwwz~\81\85\88\88\88\85\85\88\85\85\85\85\81\81\85\81\85~zwwwpimicc_XXXXXXU\\\_____f_cfifffifptpimmmppppptttwttppmmmpzwwRRUX__fmitt±¸´¸¸¸¸¸¸¸¸»»»»¸¸´¸´´´´±´´±±±±­±±±´¸»¸»»¸»»¸¸»»¸»»»´ªª§\9c£\9c\9c\96\96\96\8f\92\8f\8b\8b\8b\8b\8f\8b\8b\88\8b\85\85\88\85\85\88\85\85\85\85\8b\88\8b\92\96 ªª´»ÂÂÂÅÉÉÉÅÉÉÅÉÅÂÅÉÉÉÖÝÝàààààààÝÝÚÖÖÏÌÉÌÏÏÌÌÌÌÏÓÏÓÓÓÚÚÚÚÝÝÝÝàààààäääääääàäàààäääääàÝÝÚÝÝÖÖÚÖÖÓÏÏÏÉÏÖÖÚÝàÝààÝÓÖÌÉÅž»¸´´´´¸¸¸´´±­±±ª­¸´¸´´­\96\8f\8f\92\99\99\96\9c\9c\9c   £ £ª±´±´¸´´±±­±ªª§ª£££££££££ª­­±±´´´´´»»¾¾Â¸Â¾¾¾¸¾¾»»»»»¸»¸»´´´´´¸¸»»¸´¸´¸¸¸¸±¸»´»¸¸´´¸´¸´¸¸¸»»´´¸´±\88ªª£\9c\9c\96\96\96\99\96\99\92\96\92\96\99\8b§\96ªª\8fª\9c­§£ \99\96\8b\88\81~z\81~\81\85w\88\88\85\88\81\81pztwmztwp£ª­ª´»´¸´¸»¸´´¸´´±´ª§£§\96\96\96\8b\8f\92\92\8b\85\8b\85\81\81~~wzttzzwzzfzp~~\81\85\81\85\85\88cp¾¾»´´´\85\85\85\85\85\88\8f\8f\92\92\96\96\96\8f\8b\85\85\81~~wwtwwzwwwwwzwzwtpcc\UXUUKRKNRUUNNNUUURUURNKKGGDA=GGD=A:63033,00,))%%))),063,,,,00003333006:=A\0\0\0R\0\0mmmmpifciffiffiimmmz~~~\81\88\8b\88\8b\8b\88\8b\85wwwwwwwtttpppppwwwwwwttttttpppppppppmmmmmmmmiiiiiiiiiiiffffffcmmppww~\85\85\81~z\81~wwztwwttmptwtwww~~\85\88\88\85\85\88\85\85\85\81\85\81\81\81\85\81zzwwwpimifc_\\\\XXX\_\\____c_cffffffimtpmmimmpmpptwwzwtttppptwwwRRUX\\cifpw±´¸´»¸¸¸¸¸¸»»»»»¸´¸´´±´±±±±±±±­­±±¸´»»»¸¸¸¸¸´»¸»¸¸»´­ªª £ \99\99\99\99\92\96\8f\8f\8f\8b\88\8b\8b\8b\8b\8b\88\88\8b\85\85\88\88\88\85\88\8b\88\8f\96\99£ª­¸¾¾ÂÂÅÉÅÉÉÉÉÅÅÅÅÂÉÉÌÖÚÝàààààäààÝÚÖÓÌÉÉÉÌÌÌÉÏÏÏÏÓÓÖÖÖÖÖÖÝÝÝààääàäçääçääääääääààäääàÝÝÚÝÝÚÚÚÖÖÓÏÏÓÌÏÓÖÚÝàààÝàÖÚÓÌÉž»¸´¸¸¸¸¸´±±±­±­±´´¸´´­\99\99\8f\99\9c\9c\99 \9c  ££§£§ª­±´´»±¸­±­­­ªªª§££§££§§ª­±±±­±´´´±¸»¾Â¾´Â¾»»´»»¸»¸¸¸¸¸¸»¸±´´´¸¸»»¸¸¸¸»¸´´´»»¸¾¸¸¸¸»¸¸¸´´´»»¸¸¸´´\8b\92­£\9c\99\96\96\99\99\96\96\96\96\92\99\99\88§\99ª­\8fªª±£ \9c\96\92\8b\8b\81\81~\85\81\85\88w\85\8b\88\85~~mwpwiwptp§­ª­¸¸¸»¸´¸¸¸±´¸´±±§§££\96\96\92\8b\92\92\8f\8b\88\8b\81\85~zztwppwwtwwfwpzz\81\85~\85\85\85\8b\8f»¾»´´´\85\81~\81\81\85\8b\8b\92\8f\92\92\92\8f\88\88\88\81\81~zzwzz~wwwzwzzwwtpcc\XXRRKRKKNRRKDNRUURRRKNGGDGDDAKKK=D=:33030030,,)%,,003:60,0000333333,06:=A\0\0\0R\0\0mimimfccfifiiiiimmmz~\81\81\85\85\8b\8b\88\8b\85\88\85wwwwwwwtttttpppwwzzwwwwwwwtttttppppppppppmmmmmiiiiiiiiiiffffffpmptwt\81\85\85\81z~\81zwtwtttwppptwtwzz~~\88\88\85\81\85\85\85\85\81\81\81\85~\81\85\81zzwwtpmpiffc__\X\X\___\c_c_c_ccffcffmitpppfiimmpptww~wtwwtttwzzzRUXX\\cifm±±´¸´¸»¸»»¸´¸»»»¸´±´±´´´´±´±­­­­±±­´¸¸¸¸¸´´´¸¸¸´¸¸»¸±­ª§  \9c\9c\99\99\99\96\96\8f\8f\92\8b\8b\8b\8b\8b\8b\88\88\8b\8b\88\88\88\88\88\88\8b\8b\88\8f\96\9c£ª¸¸¾ÂÅÅÅÉÉÉÌÉÌÉÅÅÅÅÉÅÌÚÝààààààààÝÝÚÓÏÉÉÉÉÌÌÉÅÏÌÌÏÓÓÖÖÓÖÚÚÝÝÝÝàçäàçççääääääçäääààäääàÝàÝàÝÚÝÚÖÚÓÓÓÓÏÏÓÚÝÝàààÝÝÚÝÖÏÌÉÅ»»¸¸¸¸¸¸´´±´±±±´¸´¸¸´­£ \9c\9c \9c\9c  ££££§§ªªª±±¸¸±´±±ª­­ªªªª§§§§§ª§­­±´±ª±¸¸¸­´»»¾»¸¾¾¸¸¸»¸¸¸¸¸´´´¸»´±´´´¸¸»»¸¸¸¸»¸´±¸¸¸»¾»»»»»»»»¸ª´¸¸´¸¸´´\8f\8fª£\9c\96\92\96\9c\96\99\92\96\92\8f\96\99\88§\9c§ª\8b§­­§ \99\99\92\8b\88\85\85\81\88\81\88\8bw\88\8f\88\81z~pwmtftmim§±§ª´¸»»»¸¸¸¸´±¸´±±£ª£ \99\99\8f\8f\92\8f\92\8f\8b\88\81\81ztwttmmptmmwitpww~\81\81\81\85\81\88\8b\9c»¸´´´\81~wz~\81\88\88\8f\8b\92\8f\92\8b\8b\88\8b\81\81\81~~zzzzwwwwwzzwwptf_XXUNRNRKGKRRKDNNRUUUNKNKGGKDGKKNNGDAA333630630,,,0366==:30:303633633,36:=A\0\0\0R\0\0ififmffcfiffmiiimmp~~\81\81\85\88\8f\8b\8b\8b\85\88\81wzzwwwwwtttttppwwwwwwwwwwwwttttppppppppppppmmmmmiiiiiiiiffffffmmttzt\81\81\81\81~\81\81~wttttttppmtwtwz~~\81\88\88\81\85\81\81\81\81~~~\81\81\81\81~~wwwtmmmmiif_c\\\\\__c_f_c_c__cffcffimptppcifiimppww~zwwwwwwwz~~XUXXX\cfc\85±±±´´¸»¸¸»´¸¸»»¸´±´´´¸±´±´±±±ª­­­­±´¸¸¸¸¸¸´±´´´´´´¸´­­ª§££  \9c\9c\9c\99\99\96\92\96\92\8f\8b\8f\8b\8f\8b\8b\8b\8b\88\8b\8b\8b\88\88\8b\8f\8f\92\9c\9c§±»»¾ÅÅÅÉÉÉÉÉÉÉÅÅÅÅÂÉÉÓÚÝàààààààäÝÝÖÏÌÅÅÅÉÉÉÉÅÏÌÉÓÓÓÓÖÖÚÝÚÝÝÝÝàääàäçëççääççççççàààäääààààÚÝÝÚÚÚÓÓÖÖÓÓÓÚÝÝÝÝàÝÝÝàÚÏÏÉɾ»¸´¸¸»»¸´´¸´´´¸´¸¸»´±§£     £ £££§§§ªª­­±¸¸±±´­­­ªªª­ªª§ªªªªª±±±´±­´´»»´¸»¾¾¾»Â»»´¸¸´¸´´´¸´´´»¸´´´¸¸»»»¸¸»´¸»¸´»»»¾¾»»»¸»»»¸¸§¸´¸±¸´´±\8f\8b§£ \96\92\99\9c\96\99\92\96\92\92\92\96\88§\9cª§\8fªª­§£\96\99\96\88\8b\85\85\85\85\85\8b\8bw\88\8f\85\81zzmwmtfpifiª´§ªª¸»¾»»¸¸´±´¸¸´±£ª£ \99\96\8f\8f\8f\8f\8f\8f\8b\85\81~wpttpimptimwmppwt~~~~\81\85\85\88\99\92´´´´~ztwtw\81\81\8b\88\8f\8b\8f\88\88\85\88\85\81\81\81\81~z~~twwzwzzztmtc_XXRNNKRKGKRRNDNKRUURNNRGKKNGKNNNRNGND=66:6063000336::A:=03=333336663006:=A\0\0\0R\0\0fciciccfffiimmmimmm~\81\81~\85\88\8f\8f\8b\8b\85\88~z~zzwwwzwwttttpwwzwwwwwwwwwwwwwtttttppppppppppmmmmmiiiiiffffffpmtpzw~\81\81\81~~~~wttwwttptppwtww~\81\81\85\85\81\85~z~~zz~\81\81\81\81z~wwwpppppiifcc_\___c_ccf_c____ccccffimmpmmfmffmmppww~~zwwzzww~~~\X\X\Xfcf\81±±±±´¸¸¸¸¸¸´¸¸¸¸´´´´±¸´´±±­­­­­­±­­´¸¸¸»¸´±´±±´´´±¸±­­ª§£ £    \9c\9c\99\96\99\99\8f\96\92\92\8f\8b\8f\8b\8f\88\8f\8b\88\8b\8f\8f\92\92\99£ ª¸¾¾ÂÅÅÅÅÅÉÉÅÉÉÅÂÅÅÅÉÉÖÚÝààààààààÝÚÓÌÉÅÅÅÅÉÉÌÉÌÌÌÏÏÓÖÖÚÚÝÝÝààààääääççççääççäçççàäàäääààààÚÝÚÚÚÚÖÓÓÚÖÖÖÚÚÚÚÚÝÝÚÚÝÚÓÓÏÌž»¸¸»»¸¸±´´¸¸´´´´¸»±­ª§££ ££§£§§§§ªªªª­±±¸´´±´­­­ª­­­­ªªªªªªª­±±±´±´¸»»¸¸¸»»¾¾¾¾¸´´¸´´´±´¸´´¸¸´´´¸»¸»»»¸¸»´¸»¸´¸¾¾Â¾¾¾»»»¸\8f´£¸´´­´±´­\8f\88§£\9c\96\96\9c\9c\99\9c\96\96\92\96\92\92\88§\99§\9c\92ª§­ª£\96\99\96\88\8b\8b\88\88\85\88\8b\88t\88\8b\81\81zwiwmtfmi\f­±§ªª¸»Â¾»»´´´¸¸´´±£§£ \96\96\8f\8f\8f\8b\8f\8b\88\81~wtmppmiimpfitimmtt~zzw~\81\81\81z\88´´´´wwpppt~zz\81\81\85\8b\85\88\88\8b\85\81\81\85\85~~~Uwzwzwzzwpip_\XUUKNNRKGKRRNDNGNRXUNRUDNKNKNRNNURKRGA::=:06333366:==A:A:6A336336336033:=A\0\0\0R\0\0c_iff__cfiimmpmfimm~~\81\81\85\88\8f\8f\88\88\85\85~zzzzzzwzzzwwtttzwwwzwwwwwwwwwwwttttttttttpppppppppmmmmiiffffffpmwtzz~\85\85\85\81~zzwppwwttppttzwwz\81\81\81\81\85\81\81~zzwtwz~~~\81~zwztpppppfifccc____ccccfcc_\__ccccccfmimppipifmmptwzzzzwzzzzwz~~__\X\\fci\85±±±´±´¸¸¸¸¸¸´¸¸¸´¸±´´´¸´´±±­ª­­­­±­¸¸¸¸¸´±±±±±´±´­´±­­ª§§£££  £ \9c\9c\99\9c\9c\96\99\96\96\92\96\8f\8f\92\96\8f\8f\92\92\92\92\99\9c ª­­»ÂÂÂÂÅÅÉÅÉÉÉÉÉÉÅÅÅÅÌÚÚàààààààààÝÝÖÉÌÉÅÂÅÂÉÉÌÌÌÉÌÌÏÏÖÓÚÚÝÝàäààààäääçääçäçäçççäçàààçääàääàÝÝÝÚÚÖÖÖÖÖÖÖÚÖÚÖÖÚÝÚÖÚÝÖÖÖÖÏÉɾ¸¸¸¸¸¸±¸¸»¸¸´´´¸¸´±ªª§§£££§£§ªªªªªª­­±±¸´´±´­±±ª­­­­ª­ªª§ªª­­±±´±¸»»»»´»¾¾¾¾¾»¸´´¸´´´±´¸´´´¸¸¸´»»¸»¾»»»»¸»»¸¸»¾¾Â¾¾»¾»¸\8f±£¸¸±­±ª±ª\8f\8b§£\99\99\99\9c\9c\99\9c\99\99\96\96\8f\96\8bª\99£ \96ª§±­ \96\9c\92\88\8f\8f\8b\8b\85\8b\88\85t\88\88~~ztiwptcifRc­´ªª¸¸¾Â¾»¾¸¸´´»±¸´£££\9c\96\92\8f\8f\8f\88\8b\88\85~ptimmmifiip_ftfiippztwtz~wtpp´´´´ttmmmmtmtmw\81\81\85\85\88\88\85\85\85\85\88~\81_XzzwwzwwtpimX\XUUGNNUKGKRRNDNKRR\XUUUUNKRNNRRRUUNUDDADG=,30:36::===D:A=:=:6:666666336:=A\0\0\0R\0\0ccfccc_ccfmmptmimimz\81\81\81\85\85\8f\8b\85\85\85\85\81~zzzzzzzzzzzwwtwwzzzwwwwwwwwwwwwwwwwttttttttttppppmmmmmmiiiiifpptwzz~\85\81\85\81~z~wtptwtwttwwzzz~\81~\85\81\81\81\81~z~wwtzz~~~~zwwppppptimfffc____cc_cffcc__cccc_c_ciffmpmpiiimttw~~~zwwzzzz~~\81cc_X\\fc´\85´±´±±´¸¸¸¸¸¸´´¸¸´¸±´´´´¸±­­­ªª­­­´±´¸¸¸¸¸´±±±±±±±±±­ªªªª§££§££££  \9c  \9c\9c\9c\9c\9c\99\92\92\9c\99\92\8f\99\99\99\9c £­±±±¾ÂÂÂÅÅÅÉÉÅÉÌÉÌÉÉÉÌÌÏÝÝààààààààäÝÝÓÉÉÉÉÅÅÅÉÉÉÉÉÉÌÏÓÌÓÖÝÚÝÝàäàààääääçäççäçäççääçäààäääàääàÝÚÝÚÚÚÓÖÖÖÖÖÚÚÚÖÖÚÝÖÖÖÚÚÚÚÚÓÌÌÅ»»»»»»»»»¸¸¸¸´¸¸¸´±§ª§§§£§§§ªªªªªª­±´´±¸´´´´­­±­­±­±­ª­ªªªª­­±±´´¸»»»¾¸¾¾Â»Â»»´´¸¸´±¸´¸¸¸¸¸¸»»¸»»¸»¾¾»»»»»»¸»»¾»Â¾Â¾¾»»£\8f±§´´±­­ª± \8f\8b§ \9c\9c\9c\99\9c\9c\99\99\99\96\96\8f\96\8fª\99\9c ­ª­­­ \96\9c\96\8b\8f\92\88\8b\88\88\85\85w\85\81~~wwmtpp_ffG_ª±ªª»¾¾Â»»»»¸´¸¸±¸´§££\9c\96\92\92\8f\8f\88\88~\81wpmiimmcfifp\0cpciipmwpUpwttfff±tpwfmiffifmmitt~\81\81\88\88\85\85\85\85\88\81\81\\81~~zwzwwptimX\UUUGKNUKKGRRRGNNRR\X\XXXNNRRRRUUXXRXKUKNRGKKA==:==AAAA==A=:=:::66666336:=A\0\0\0R\0\0ccccc_c__cmittpmwizw\81\81~\81\81\8b\88~\88\81\85\81~wzwzzzzzzzzzzwwwz~zwwwwwwwwwwwwwwwwwwwtttttttttttpmmmmmmmmmmippwwz~~\81~\85\81z~\81wtttwwwwwzzz~~~\81~\81\81\81~~~~~wwtwzz\81zzzztppmpptmiiifccc__c__cffcc__cccf____fcfimppimimptwzzzzwzzzzz~~\81ffccf_fc¸´´±´±´¸´¸¸´¸´´´´¸´´±´±´´¸­±­­­§­­±±´´¸´¸¸´´±±­­±­­­­­ª§§§§§§§§§§§££ £      \9c\99\9c \9c\9c\9c  ££§ª±´´´¾¾ÂÅÂÅÉÉÉÉÉÌÌÌÌÌÉÏÏÏÝàààààààààäÚÝÏÌÉÉÉÅÅÅÉÉÉÅÉÌÉÌÓÅÖÚÝÝÝààààààäààäääççäççäçääääààäääÝàààÝÝÚÚÚÚÖÖÓÓÖÖÚÚÖÖÖÖÚÚÚÖÝÚÚÚÝÖÏÏÉž¾»¾»»¾»»¸»»¸´¸´´±±ªªª§ª§§ªªªªª­­­±´¸¸¸»¸¸±´­ª±­­±±±­§ªªªªª­­­­±±´¸»¸»»¾¾¾¾¾¸¾¸¸¸¸´´¸´´¸¸»»»¾¾»¾¾»¾¾¾»¾»»»¸¸¾»»¾Â¾¾»»»¸£\92±§±´±±­§´ \8f\8b£\9c \9c\99\99\9c\9c\99\99\96\96\96\92\99\8fª\99  ±ª±­ª£\99\9c\96\8f\8f\8f\8b\88\88\85\85\85z\81\81~zwwptpp_fcGU­±­ª¾Â¾¾¾»»»¸»»´´´ª££\9c\92\92\92\92\8b\88\85~wtpifmiiffffp\ 3cm_fimftiXppiXc\_­mmtfiicfffiiimmw~~\85\88\88\88\88\85\88\85\81\81\85~~zzztwttip\_UXRGKKUKKKRRRKRKNU_\_\\\URURUUXXX\X\\XNUU\_fKKGGDADDDAAA==:A::::6666036:=A\0\0\0R\0\0ccff_ccc__pftwtmzi~t~~\81~~\88\85z\85~\81~~twwzzz~zzz~zzzwww\81zwwwwwwwwwwwwwwwwwwwtttttwtttttppppppmmmmmmpptwzz~\81~\81~~\81~wtttwzzzz~zz~~~\81\81\81\81\81~~~~~zwwtww~zzwzwppmpppmiiifffccc____cfcccccccc____c_cfimpimmmttwzzzzzz~~z~~~\81ffffmcm¸¸´¸´´´´´´¸´´¸´¸¸´¸´±±´´±´¸±±­±­ª­­±´±±´¸¸¸±±´´±­±­±­­­ª£§£§££§§§§ª§§££££££££ \9c £   ££§§ª­´¸¸¸¾¾Â¾ÅÉÉÉÉÉÌÌÏÌÏÌÓÓÝÝàààààààààäÚÝÓÏÌÅÅÂÅÅÉÌÉÉÉÌÉÏÏÉÓÖÚÝÝÝàÝàÝàäààääääääçääççääààààääààààÝÝÝÚÚÚÖÖÓÖÖÖÚÚÚÖÖÖÖÚÖÖÚÖÚÖÚÓÓÏÌž¾Â»»Â¸»»»¸¸¸¸±±±±§§§§­ªªª­­­­±±±±´»»»¾¸¸±´±­±±±±´­­§ªªªªª­­­­±±±´¸¸¸¾¾»»¾»»»»¸¸´±¸´´´¸¸»¸¾¾»¾Â¾¾Â¾¸»¸¸¸¸¸»¾¸Â¾¾¾¸¸££±´¸´´±±±£±\9c\8f\8b£\9c\9c\9c\96\9c\99\9c\9c\9c\92\96\96\96\99\92ª\9c£\9c±§´±§§\9c\9c\96\92\8ft\88\85\85\81\81\81wz\81z~wwmtmm_fcGR±´­ª¾Å»»¾»»»»»»¸´´­§ \99\96\92\92\92\8b\88\81zwpmfcmifffcfpRci\cfifpfUmmcXXX\wiiifiicfcfiififiip\81\85\88\88\88\88\8b\85\81\85\85\81~~z~wwwtmp\_U\NKKKUKNNRRRKUNRX\\c\\_XXXUXU\\\_\__\\XX_cimNKKGGGGGDDAA====::::666036:=A\0\0\0R\0\0c_fccfc__\p_tttizfztzz\81zzt\81w\81z~timtwwzzz~~z~~~zwww\81\81wwwwwwwwwwwwwwwwwwwwwtttttttttttpppppppppmppwwz~\81\81\81~~\81\81~ztwtwwwzz~~~~\81~\81\81\81~~\81~~~~zzwwwwzzzwwwptmtpmmifmiffcfc_____cccc_ccc_cc__cccciimipmmtwtzzzzzz~z~~z~\81ffiipt\81¸»¸¸¸´´¸´¸´´´¸¸¸¸±¸±­±±´´±´±­ª­±­­­±±­±±¸¸¸´±±±­±±±­ª­­ª££ §§§§§§ªªª§§§££§§£ £  £ ££§§ªª­±´»¸»¾¾¾ÂÂÅÅÉÉÉÌÌÌÏÏÏÏÖÝÝÝàààààààààäÝÝÓÌÉÅÅÂÅÅÅÉÉÅÅÌÌÏÏÌÏÓÖÚÚÝàààÝÝàÝàääääääçääçääààÝààäààààààÝÝÚÚÝÚÖÖÖÖÖÝÚÝÖÓÖÓÖÖÖÚÚÚÚÖÓÓÏÏÌÅÉɾ¾Â»»¾»»¸¸´±ª­­£§£§ªªª­­±±±±±´´¸»¾¾¾¸¸´´±±´±±±±ªª§ªªªªªª­­­±±­±¸¸¸¾¾¾¾»¸¸¸¸´¸´±¸´¸¸¸»¾¸¾Â¾Â¾Â»¾»»¸´¸´¸¸»»Â¾»»¸» §­¸»´¸­±\99\9c\99\9c\9c\96§ \9c\99\99 \99 \9c \92\92\99\99\99\8fª £\9c­§´­ª§\9c\9c\92\92\8bt\85\85\85~~\81z~~z~wtmtmp\fcGK´±±ª¾Å¾»»¾»»»»»»¸´­§ \99\96\92\96\96\8b\88\81wtmmccmfccfcfpR_fXcfffmcXiX_UXXXffcccffcccfficififf~\81\88\88\88\88\8b\81\81\81\81\81\81~z\81zwzwppf__\RKKKRKRNUURNXRUX\\c__\\\\X\\X\_c_c\\_\\cfmppNUKKKKGGGDDAA===:::666336:=A\0\0\0R\0\0c_cc_f_\\\tXppp_zcfwiw~tpp~wzwziimptwwzz~~~~~~~www\85\85~wwwwwwwwwwwwwwwwwwwwwwwwwtttttwttttppppppttwzz~~\81\81\81z\85\81~wwtwwzzzz~~~~~\81~~\81z\81\81~z~~zzwwwzzzzwzwtpptpmmiiiiifcfcc_\\\_ccc__cfcccccffccfimmpmppwwwwzzwz~~~~~\81\81fimmtz\88¸»¸»´´¸¸¸´´¸¸´´¸¸±´´±±±´´±¸±±­ª­ªªª±±ª´±´´¸¸´±­­­­±­­­­ª£§£££§§§ªªªª§ª§§§££    \9c  £§§£§ªª´´»¸¾¾¾¾¾ÂÂÅÉÉÉÌÉÌÏÓÓÓÚÝÝÝàààààààààääÝÓÉÌÉÉÅÉÂÉÉÉÅÉÌÌÏÏÏÓÏÓÖÚÚÝààÝÚàÝàààäääääççäääàÝÝàÝààÝàààààÝÝÚàÝÖÚÚÚÚÝÚÚÚÖÖÓÚÚÖÚÚÖÚÖÏÏÏÓÏÉÌÌÂÅ»»¾»»¸¸´±ªªª £££§ªªªª­±±±±±¸»»Â¾¸»´´±´¸­±±±ªªªªªªªª­­­­­±­­´´¸¾¾»»¾´¸´¸±´¸±¸´¸»»¸¾¾¾Â¾»¾»¸¸¸¸¸¸´¸¾¾¾Â¾»»¸»¸»\99¸¾¸´±±\99\99\99  \99§£ \9c\9c \99\9c\9c\9c\96\8f\96\9c\9c\92ª £ ªª±±­£\9c\9c\8f\92\88t\81\88\85\81z\81~~zz~tpppppXfcGG´±»¾¾Â¾¾¾¾»»¸¾»»»¸±­ª \9c\96\92\96\92\8b\8b\81ztmpcfmffcicfpU_cXccfff_X\\\RX\U\c___cf_ccfiicfcfffz~\85\88\8b\88\8b\85\85\81\85\81\81~z\81~zzzppifc\UNKKUNNNX\_K\UXU___cc____\__\_ccccXXc\_cimttttNNNKKGGDDAAA===:::6633:=AD\0\0\0R\0\0c_cc_f__\_c\mcm\wcctfizmppwwwwziimmptwzzz~~~\81\81~wwz\85\88\81zwzwwwwwwwwwwwwwwwwwwwwwwwwwwwztttttttttptwwwz~z~~\81z\81~zzwtzwzzzz~z~\81\81~\81~~~\81~~z\81~z~zwz~zz~zzwwtptmpiiiffifcffcc__\_c_c_\ccccfffffcccimmpmppttwwwwwz~~~~\81\85\81ffmmw\85\8b¸»»»¸¸»¸»¸¸¸¸´´¸´´´´±±´´´±¸±´±­ª§­ª­±­±±´¸´´´±±­­­­­­­ª§ £  ££§£§§ª§§§£§§££ \9c\9c\9c    §£§§§­´±¸»¾¾¾¾Â¾ÂÅÅÅÉÌÉÌÏÓÓÖÚÝÝÝàààààààààääÚÓÉÌÉÉÅÉÅÉÌÉÉÌÌÌÌÌÌÏÏÓÓÖÝÝÝàÝÚàÝàäàääçäääääàààÝÚàÝàààààäÝÝÝÝÝÝÝÚÝÝÝÚÝÝÚÝÚÚÖÖÚÖÚÚÚÖÖÓÏÏÏÓÌÏÏÌÉÅž¾Â»¸¸»´±­§\99\9c  £§§§§§ª­­­­­´¸»Âž»»¸¸´¸»±´±±­­ªªªªªª­­­­ª±±­±´´»»¸¸»¸´±´­±´±´¸¸¸¾¾Âž¾¾¾»¸¸¸´´¸¸´´»¾¾Â¾»»»»¸¸\99¸¾»´´´\96\99\96££\9cª£  \9c£\9c\99\99\99\99\8b\92\9c\9c\92ª\9c§£§­±±­ \99\9c\8f\8f\88w~\85\81\81~~z~~w\81wttptpUfcGG¸¸¾Â¾¾¾»¾»´»¸»»¸´­ª£ \99\96\96\8f\8b\8b\81~witcimifiicfpXc_Uccifc\U\XRRU\RX_X\\_c__ciiiff_ffiwz\85\88\8b\88\8b\85\88\81\85\81\81~~\81\81~~zptmmffXRKKUNNN\cc__\\Uc__fccccc_cc_cfcccX\__cffptwwtNNNKKKGGDDAAA==:::66066=AD\0\0\0R\0\0cccc_c__\__\UX\\mfcpfiimmptzww~immmpptwzz~~~\81\81\81ww~\85\88\85~zzwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwttttttwzwzzzzzz~z~~zzzwzzz~z~~~\81~\81~~~~~\81~~z~~~~zwzzz~~~~zzwtpppiifffffcffcc_\\___c____ccfiiimccfimmpptttwwwwwwzz~~~\81\81\85fcppz»\8f»»»»¸»»»»»¸´´´´¸´´´´´´´´´´´´¸±±§ªªª­­­±±´´±±±±­­­­ªª±­­£  \9c\9c £££££§£££££££ \9c\99\99\99\9c\9c\9c £ £§§ª±´´»¾¾¾¾Â»ÂÅÂÂÅÉÉÌÏÖÖÝÝÝÝÝàààààààààääÚÓÌÌÉÉÅÅÉÉÌÌÉÌÌÌÉÉÉÏÓÏÓÓÝÝÝÝÝÝÝÝàäääàäàäääàààÝÝÚÝàààààääàÝàÝÚÝÝÚÝÝÝÚààÝÝÚÖÖÚÚÖÚÖÖÚÖÏÌÏÏÓÏÓÓÏÌž¾¸¸¸¸´±­§\99\99  £§§£\99\96£ªªªªªª¸¾Âž»»¸»¸¸»´´±±­­ªª­ªª­­­­ª­­±±­±´»¸¸´¸»´±´±­±±¸¸¸¸Â¾Åž¾¾»»»¸´¸´±´¸¸¸»¾¾Â¾¾¸»»¸»\99»»»´¸¸±±´±­\9c­§ £  \9c\99\9c\9c\9c\88\88\99 \96ª ª§£­´­ª \99\9c\8f\8b\8bwz\85\81\81~\81zz\81z~zwwpwmUicKf»»Âž¾»»»»¸¸´¸¸»´ªª£ \9c\99\96\8f\8b\88\85zzmtpmmmimipip\cXXc_ff__UXUURU\RUUUU\\__ccififfcfcitw\81\88\8b\85\88\88\85\81\81~~~\81\81\85~\81~zzppii_UKKRNRR_ffc\__Uc_cfcfcffcf_cfcccc\\__cccpptwwwNNNKKKGGDDAAA==::66366=AD\0\0\0U\0\0ccc__c__\\XXUXX\ic_cffiimmpwtwzmpmppptwwzz~~~\81\81zz~\85\88\88\81zzwwwwwwwwwwwwwwwwwwwwwwwwwwwzwwwwwwwwwtzzzzzwzzzzzwzzzwz~~z~z~z\81\81\81~\81~~~~\81~~z~~~~zzzz~\81~~zzzwwttmiifcfcffffffc__________cfimmmpiciimppptttwwwwwwzz~~~\85\85\85ffpp\81»»»¾»»»»»¾¾»¸´¸¸´¸´¸´¸¸´¸´¸´´±´±­ª§ªª­­ª­±±±±­­­­­­±­­­­ª \9c\9c\99\9c\9c  £  £        \99\9c\99\96\99\99\99\9c \9c £§ª­±±»Â¾Â¾Å¾ÉÉÌÌÓÝÝÝÝÝÝÝàààààààààääÝÓÏÏÌÉÅÉÌÌÏÌÌÉÌÉÅÌÅÌÏÌÖÏÚàÝÝàÝÝÝààààÝààäääàààààÚÝààÝàÝäàäÝÝÚÚÝÝÚÝÝÚÚàÝÝÝÚÚÖÖÖÖÚÖÚÖÓÏÉÏÏÖÌÓÖÓÏž¾Â¸¸¸¸´±ª£\9c\99   ££ \92\96\9c§££§ªª»»ÂÅ»»¸»»»¸¸±´­±ª­­ªª­­­­­±­­±±­´¸¸´´¸»´±±±±´´»»»¾ÂÅÂÉÉž»¾¾»»»»´´´±´¸¸¸»»¾»¾»¾»¸»¸»»¾»¾¸´¸±´±´±\9c±ª££ \9c \9c \9c\99\96\85\99£\99ª£­ª§­¸­ª \96\9c\92\88\8fwz\88\85\81~\81zw\81~~zwwtwiUffXp»¾¾Å¾Å¾¾¸»¸¸¸´¸´´¸´ª­£  \99\99\8f\8b\88\85~~mzttppmpmtmp\fXXc_ff\cXXXURU\RUURRX\_\c_ffififfcmpt~\88\88\88\88\88\81~\81~~~\81\81\81\81\81~~~ttppi\KNUNR_ciff_cc\cccf_fffifc__c_fcf\__c___mpptttRNNKKKGGDDAAA==::6636:=AD\0\0\0R\0\0_fcc__\\XXXURUXX\__ccfmiiiptptzimmpptttwzz~~~\81\81zzz\81\88\85\85zzzzwwwwwwwwwwwwwwwwwwwwwwwwwzwwwwwwwwww~~zwzzzzwwwzzzzwzzz~~z\81z\81\81\85~\81~~\81~\81~z~\81\81~~zz~z~~~\81zzzzwwwpiicccffffiiic_c_c______ccimmptmfimmppptwttwwwwwwzz~\81\85\85\85ciwt»»»»¾»¾»»»¾¾¾»¸¸¸¸»´´¸¸¸¸¸¸´´±±±±­ª§§§ªª­ª­­­­ª­ª­­­±±­­­§  \96\96\99\9c\9c\9c \9c\92 \99\99\99 \9c\9c\9c\9c\99\99\99\96\99\96\99\99\9c\9c £§§ª­±¸Â¾ÂÂÂÅÅžÅÅÌÏÖÝÝÝÝÝÝÝàààààààààääÝÓÏÏÌÌÉÌÏÏÏÉÏÌÉÉÅÉÉÉÌÏÖÏÚàÝÝÝÝÚÝÝàààààààäääàäààÝàÝààÝàäàäÝÚÚÚÚÚÚÚÚÖÚÝÝàÝÝÝÚÚÚÖÖÖÚÓÓÏÌÏÓÓÏÖÖÓÓÅÅ»»¾¸¸¸´´±ª£ \9c\9c\9c £ \99\92\96\99  £ ªª¸¸ÅÅÅž¸»»»¸¸´¸±±­­±­ªª±­­±±­­­±­´´¸¸¸¸»´±±±´´±¾¾¾ÂÅÉÅÉÅÅ»»¾»»»»´´´±´¸´¸¸¸¾»»¾¾»»¾»»¾»»¾¸¸¸´±±¸±´­­£§£\9c£\9c\9c \96\99\88\99£\99ª£ªª§±¸­ª \96\9c\96\88\8fz~\85\88\85\81\81~t\85\81~z~z\81wiUfiz´¾Â¾Â¾Â¾¾¸»¸¸¸¸¸¸¸´´­­£ £\99\99\92\8b\8b\81\81\81~~~wwwwtpwppmiX\c_ff\c\XXRRX\UUURRXX____cfiffiiipttz\85\85\85\88\85\81~\81~~~\81~\81\81\81\81~\81wwttm_NRXUccfiffcc__cfcfccfiiic_\_\ccc___c__cimifppRRNKKKGGDDAA===::6636:=AD\0\0\0U\0\0ficf___\XUURNRUUX\__ccifiiptptwimmppttwwwz~~\81\81\81~\81~\85\88\88\81zzzzzzzzzwwwwwwwwwwwwwwwwwwwwzwwwwwwwwww~z~wwwzwtwtzzwzwwz~~~~~~~\81\85~\81~z\81z~z~~~~~\81~z~~~~\81~~zzwwzwpiifffcccfiiifcfc____\__ccfipttpimmmppttwtwwzwwzwz~~\81\85\88\88fmz¸»»»»¾¾¾»¾»¾¾¾»»¸¸»¸¸´¸´¸»¸¸´±´±­­ªªª§§­ªªª­§­ª§­­ª­±­­±­­ \9c\9c\99\99\99\99\99\99\9c\99\92\96\99\99\99\9c\9c\99\9c\99\99\96\96\92\96\92\96\96\9c\9c\9c ££§­±´¾¾»ÂÂÅÅÅÉÂÅÉÏÓÚÝÝÝÝÝÝÝàààààààààäàÚÓÏÓÏÌÌÌÏÏÓÌÏÏÌÉÉÅÉÅÅÌÓÚÝàÚÝÝÝÚÚÝÝÝààààäàääàääÝààààÝààäààÝÚÚÚÚÚÖÚÚÖÚÝÝàààÝÚÚÚÚÖÚÚÓÓÓÏÓÖÓÓÖÖÓÏɾ»»¸´¸±±­§££ \9c\99\9c \96\8b\96\96\92\96\9c£ ª­´»ÅÅÉÉž»¾»»´¸¸´±­­±­­­±­­­­­­±±­±´´¸»»»¸´±­´¸¸¾¾ÂÅÉÌÉÉ»¾¾»»»¸´±´´´¸´¸»´¾»»¾Â¾¾¾»»»¾¾»»¸¸¸±±»±´±­£ª§ £ \99\9c\96\9c\88\9c££ª§­ª§±´­ª \96\9c\96\88\92\8b~\81\88\81\85\81~\81\85\81\81z\81z\85\96\85Uim­¸¾Â¾¾»¸¸»¸¸¸¸¸¸±´­­§  \9c\99\92\88\88~\85\81\81\81\81zzzzwtwptpm\\f_ff__XXUURU\URURUUX\\__cfifiimmptttz\81z\85\85~\81\81~~~\81~\81\81\81\81~\81wwwwpcKciXfcfiiiffcccfcfffffffc__\\c_c_____c_fiifmpRRRNKKGGDDAA===::663::=AD\0\0\0X\0\0iiic_\\\XUURRRUUX\\__cfffimpppwfimppttwwzzz~~\81\85\81\85\81\88\88\85\85zzzzzzzzzzzzzzwwwwwwwwwwwwwww~wwwwwwwwwwzzzzttwwwwtwzwztwz~\81\81\81~~\81\81\85~~~~~~z~~~\81~~\81~~~~~~\81zzzzwz~wpiififccffffiffff_c______cfimtttmpmmmtttwwwzzzwzwz~~\81\81\85\88fp\88¸»¾»»¾¾¾»»¾¾¾¾¾¾»»»¸»¸¸¸»»¸´¸´´­­±§§§ª§­ªªªª§ªªªª­ª±­±­±­ª   \99\99\96\99\99\99\99\99\92\99\99\96\99\99\99\99\9c\96\96\92\92\92\92\96\92\92\99\99\99\9c  §ª­±¾¾¾ÂÅÅÉÅÉÅÉÉÏÖÝÝÝÝÝÝÝÝàÝààààÝààààÝÖÓÓÓÏÏÏÏÓÓÌÌÌÌÌÌÉÅÅÉÏÖÝÝÝÝàÝÝÝÚÝÝààÝààäàääààäÝààààÝààààÝÝÝÚÚÚÚÖÖÚÚÚÝÝàÝÝÝÚÚÚÖÖÖÖÓÓÏÏÓÖÖÓÖÖÖÓž»¸»¸±´±±­§£§\9c\9c\9c\99\9c\96\8f\96\92\96\96\9c£ ª­±»ÂÅÌÌÉž¾¸¸¸¸»´±­±±­­­­­ª­­­±±±ª±´¸¸»¸»»´´­¸»»Â¾ÅÉÌÉÉɾ¾Â¾»¸»»´´±´´´´¸¸±¾»¸¾Â¾¾¾»¾»»¾»»¸»´´´¸±´±­§§§£ £\96\99\92\99\96\9c§§­£­­ª±´±­ \99\9c\99\8b\8f\8f~\81\8b\85\88\81\81\85\88\88\88z\85\88\88 \88Uw~±»¾Â¾¾¾¾»¸´»¸¸¸¸¸¸±±±­§\9c\9c\9c\96\92\85\88~\85\85\81\85~z~~wwttttpm_\i_ffc_XXUURU\UUUURXXXX__cfiiimppptttz~z\81\85~~~z~~~~\81~~~z~twzwt_Kpm\iciiiiifcfffccccfffc_c\\_ccc_cc___\fiiifmUiRRNNGDDAA==:::6336:==AD\0\0\0U\0\0mmmf_\\XXURRNNRUUX\__ccfffmmmptfiimptwwzzz~~\81\81\81\81\88\85\8b\88\81\85zzzzzzzzzzzzzzzzzwwwwwwwwwwwz\81wwwwwwwwwwzzzwwwwttwtwwwwwwz\81\81\81\81~z\81\81\81~~z~~~~~~~\81\81\81\81~\81~~~~~~wwwtwzttmmiiicfffffiifffccc_____cimmpptppppmtttwzwzwwwwzz~~~\81\81\8bi±¸¸»»»»¾»»¸»¾¾Â¾¾¾»»¸»»¸»»»¸»´¸´±ª­­§§§ªªªªª§§ª§§§ª­ª­­­­±ª§  \9c\96\96\96\96\96\9c\99\99\92\99\99\99\99\9c\99\99\99\96\92\8f\92\92\92\92\92\92\99\96\96\99\9c££§ª­¾»¾ÂÅÅÉÉÌÌÌÓÚÚÝÝÝÝÝÝÝÝàÚààÝÖÚÝàÝÝÝÖÖÓÓÏÏÓÓÓÓÏÏÌÌÉÉÉÉÉÌÓÖÚÝÝààÝÝÝÝÝÝààÝàààààäààäÝàààààÝàÝÝÝÚÚÚÚÖÚÖÖÚÚÖÚÝÝÚÝÝÚÚÚÓÖÖÚÓÖÏÓÓÖÖÖÖÖÖÓ»»»¸´´±±­ª§§ \99 \96\9c\96\92\92\96\99\99\9c£ §ª­»¾ÅÉÌÌÉž»¸»¸¸´´­±­±­­­­ªª­ª­±­ª±´¸»»»»¸´´±»»¾Å¾ÅÉÌÌÉÌž»¸»¸¸´­´´´´¸¸´»¾»¾Â¾¾Â¾»»»¾»»»»´´´¸±´­­§ª§ \9c£\96\99\81\99\99 §£­§±­­­´´ª \99\9c\96\8f\92\8f\8f\8b\8b\8b\85\81\85\88\8b\8b\8bz\85\96\99£§z\85­´»Â¾¾»¾¾»¾¸´¸´¸¸»¸¸±´´±§\9c\9c\99\96\8f\85\88~\85\81\81\85zzz~twtptptmc\i_ifc_XXUUUX_UXUURXUXX__fimmmmppmpttz~z~\81\81z~wzzzz~~~zzzpwwzw\Ntp\ffimmiiifcfcc_cccfffcc\\\f_f_c____\ifii\iXRURRNKGDAA=::::663::=AAD\0\0\0U\0\0pmpf_\\XUURNNNRUUXX\__ciffmimptiiimpttwzz~~~\81\85\85\85\85\88\8b\8bz\81zzzzzzzzzzzzzzzzzwwwwwwwwwwww~wwwwwwwwwwzzzwztwwtwtwttwtz~~~~~~z\81~\81~~z~~~~~~\81\81\81\81\81\81~~~~~zzzwtttwttpmiiiffffffiffiffccccc__fippptppptttttwwzzzwzwzzz~zz\81~\88z±´¸»»»»¾»»¸»»¾Â¾¾»»»¾»¸»»¸¸»¸¸±±§ª­§£§ªª§§ª§§ªªªª§­ª±­±±±§§ \9c\99\99\96\96\99\99\99\9c\99\96\99\99\99\99\9c\96\96\96\96\96\92\92\8f\92\92\8f\92\96\92\92\99\9c £ ª­»»»ÂÉÉÌÉÏÏÓÖÚÝÝÝÝÝÝÝÝÝàÌÖÓÚÖÖÖÖÚàÝÖÖÓÏÏÏÓÓÏÓÏÏÌÌÉÌÌÌÉÓÖÚÝààààÝÝÝÝÚÝààààààààäàààÝÝÝàÝàÝàÝÝÝÚÚÚÚÚÚÖÖÚÚÖÝÚÝÝÝÚÚÚÖÓÖÚÖÏÖÏÖÖÚÚÚÓÖÓÏž»¸¸´´´±±­ªª§£\9c\9c\96\9c\96\96\96\96\96\9c  £§ª­»ÂÅÅÉÉž¾»»»»¸´´±­±­­ª­ªªª­ª­±­­´´´»¸»¾»¸¸´»¾¾ÂÂÂÅÉÌÌÌÅž¾¾¾»»»¸±±±±±´´´´»¾¾Â¾Â¾»¾»»¾¾¾¸´¸¸¸´´­­§ª£ \96£\99\96\88\99\9c §£ªª­±­­¸´ª \96\9c\96\92\92\92\92\92\8f\8f\88\8f\88\88\8b\8f\96\96\96 \9c§ªz­±¸»Â»»»»»»»¸¸´´¸¸»¸¸´´´±§ \9c\96\96\8b\85\88\81\85~\81\85zzw~tttpttppmpmfmfc_U\U_XX_RXXUUUUX\_cfmmmmmpmmttpwzwz~~z~zzwww~z~zwzittwX\N_tXmiipmmmfffccfcf_cfcff_\_\c_c__c__c_fcfiXfURXRUNNKGDGDA=6:633:==ADG\0\0\0X\0\0pmmc_\\XXXRNNNNRUXX\\_cfffiiimtfiimpptwzz~~\81\81\85\85\81\88\8b\88\8b~\81zzzzzzzzzzzzzzzzzwwwwwwwwwwww~wwwwwwwwwwzz~zwwtttwtwtttwwzz~~~~z~~~z~~~~\81\81~~\81\81\81\81\81\85~~~zzzzzwttptpppmiiiiffccfiffiiffcffcccimpmptppttwwttwzzzzzzzzz~~zz\81\81\88±­´´¸¸»¸»»»»»¾Â¾¾»¸»¾»¸»»¸»»¸´­­§§ªª£§§§§§§§£ªªª­ªª­­­±­­ªª  \99\9c\96\96\96\99\99\9c\9c\99\99\99\99\99\9c\92\96\96\92\92\8f\92\8f\92\92\8f\8f\96\8f\96\96\9c\9c££ª­±»»¾ÉÉÏÌÓÓÚÚÚÝÝÝÝÝÝÝÚÚÓÌÓÌÓÓÓÓÓÖÝÚÖÖÓÏÏÏÓÓÏÓÏÏÌÌÌÌÌÏÏÖÚÝààààÝàÝÝÝÚÝààÝààààääààÝÝÝÝàÝÝÝÝÝÝÝÖÚÚÖÚÚÚÓÝÚÖÝÚÝÚÝÚÚÚÚÏÓÖÓÓÓÏÚÚÝÚÚÖÚÖÏÉ»¸»¸´±´±­­­ª£ \9c\99\99\92\96\99\96\99   £§ªª»ÂÂÂÅž¾¾¾¸»»¸´±­ª±­­ª­ªªªª­­±±±¸¸¸»»¾¾¸»¸¸»»»¾¾¾ÂÌÉÉÌž¾¾¾¾»»¸±±±´±´´´±»Â¾¾Â¾¾¾¾»¾»¾Â»»¸¸¸¸´±±±§ª§£\9c \9c\99\8b\99\9c£ª§ª­­´ª­´±­ \96\9c\99\96\96\96\92\96\92\92\8b\92\88\85\8b\96\99\9c £ ªªª±´¸»¾¸»»¾¸¾¸¸¸¸´»»¾¸»¸´±­££\99\96\92\88\85\88\85\85\81\81\81wwtzttttwtptptpipi_cU_\c\X_X_\XXUXX__fipmppppmpptptwtz~z~~~zzwtzz~zwzmtmtX\K_wXpmmppipiiifciff_fi_ccc\\________\ccccffUfURmRURRKKKNNKKGD=00:=AADG\0\0\0\\0\0mmmc__\XUURNKKNNRUX\\__ffffiimpfimpmptwwz~\81\81\85\88\85\85\8b\8b\85\88\81~~~~~zzzzzzzzzzzzzwwwwwwwwwwww~wwwwwwwwwwzzzzwwttpttttwtwwzzzzz~zz\81z~~~\81\81\81\85\81~\81\85\81\81\81\81\81\81~~z~wzwwtmpppmiiiiifffffffiiiif_fffffimppptpttwwztwtwzzzzzzzz~~z~\81\85\88­ª´±¸¸»»»¸»»»»¾¾¾¾Â¾»»»»»¸»¸»¸¸´­ªªª§§ ££§ª§§§£§ª§ªª­±­­±±ª­§££\9c\9c\99\96\99\9c\99  \9c\9c\9c\9c\9c\99\96\99\92\96\92\92\92\8f\92\8f\92\8f\92\8f\92\96\99\9c £ªªª¸¾¾ÅÉÏÏÓÚÚÚÚÝÝÝÝÝÝÏÓÌÉÉÏÌÏÏÓÓÏÏÚÖÓÓÓÓÓÏÓÓÓÓÓÏÏÏÌÏÏÓÓÚÖàääàäàààÝÝÝÝààààààääààäÝÝÝàààÝÝÚÝÝÝÖÚÚÖÖÖÖÖÝÝÚÝÖÚÖÝÚÖÖÖÓÖÖÓÓÓÏÚÝÝÚÚÚÚÖÓž¸¸¸¸±±±±±±­­£§\9c\96\96\8f\99\99\96\9c  £££­ª¾Â¾¾Â¾¾¾¾»¾¸¸»´´­­ª­ªª§ªªªª­­±±´¸»¸»»¾¾¾»¾¸¸»»»»»ÂÅÉÉÌÉÉÅž¾¾¾»»¸¸´±´´±±±´´»ÂÅ»¾¾¾¾¾»»¾»¾¾»¾»¸¸¸´­±±§§ª§ \9c \96\8f\9c £ª§­­±´­±±±­£\99\9c\9c\99\96\96\96\99\96\92\8f\92\8f\81\96\99\9c £§£­­­´´¸¸¾¸»»»»»´¸¸»¸¸¸»¸»¸´­ª  \96\92\8f\85\85\88\85\81\85\81\85tttwttpttppwtwtmpiUf\___\\_\c___X\\_ffimmppmpmpmppptpwzw~~zzzwwzzzwwzipmpX_K\tUX=mptitmmmiiiif_iic_cc__c__c__c\\_c__ccRRURiURRNNRNRRRRRRR00A=ADDG\0\0\0_\0\0mppfc_\XURRNKKKKNRUX\__fcfiiimpfimmppttwz~~\81\85\88\88\88\88\8b\88\85\81\81~~~~~zzzzzzzzzzzzwwwwwwwwwwwwzwwwwwwwwwwwzwwwtttptppttwwwwwzzwzzz~w~\81\81\81\85\81\85~\81~\81\81\81\81\81\81\81~~z~zztttptpmiiimiiiiiifffifiiicfiffimmmppppttwzzwwwwzzzzzz~z~~~~\85\85\85­­±±´¸»»»¸»»»¾¾¾¾¾¾¾¸»»»»¸»¸¸´¸±­§ª§ £\9c \9c£§££££§ªª­­±­±±´±­­ª§£  \99\99\99\99\99      \9c\99\99\96\96\96\92\8f\8f\8f\8f\8f\8f\8f\8f\92\92\92\96\9c  §ª­¸»ÂÅÌÏÓÖÖÚÚÚÚÚÝÝÚÉÅÌÉÅÉÉÉÌÏÏÓÏÏÏÓÓÏÓÓÖÏÏÓÓÓÓÓÓÏÏÓÏÓÖÖÓàäàääààààÝÝÝÝàààààäääääÝÝÝÝààÚÝÚÝÝÝÖÚÖÖÖÚÖÚÝÝÚÝÚÚÓÝÚÚÚÚÖÚÖÖÓÖÓÚÝÝÚÝÚÚÚÖɾ¸»»¸±±±´´´¸­§ª£\92\96\92\99\9c\99  £££§ª§Â¸»¾¾¾»»»»¸´¸´±ª­§ª§§§§ªªª­±±±¸»»¾¾¾¾¾¾¸»¸»»¸¸¸»ÅÅÉÉÌÉÉÅž»¾»¾»¸´´´±±±´¸¸¾Â»¾»¾¾¾»»¾¾»¾¾»»¸¸¸¸­±±§§ª§£  \96\99 ££ª§±±­´­´´´­§\9c \9c\96\96\99\99\9c\96\92\8f\92\92\85\99\9c££§ª§­±±±´»»»»»»»¸»´¸»»»»¸¸¸¸´±ª§\9c \92\8f\8b\85\85\88\85\81\81~\81pfttptpttmtzwwtmtmUf__cc__c_fccc___cifmmpppmpmpmpmptptwwz~~~zzwzzzwtwimmpXcK_tXX=pppmtpppmmmmi_mmcccfcc___c\__\\c__\U\RRRRfXRRRRURUUUUUXXXXRAADGK\0\0\0p\0\0mpmcf_\XUURNNKGNKNRXX\cfcffiimpcfmmppptwzz~\81\85\88\88\85\85\88\85\85~~~~~~~zzzzzzzzzzzzwwwwwwwwwwww~wwwwwwwwwwwwwzztptmttpwwwzwwzwwtwzw~z~\81\81\81\81\85\85\81\81\81\85\81\81\81\81\81\81z~~z~zwtttttpiiimmiimmiiffiimmmfifffmimppptptwzzzzzzzzzz~~~~~~~~\81\85\85\85­­±´´¸¸»»¸»»»¾¾¾¾¾¾Â¸¸¾»»¸¸¸´±´­ª§§£\9c \99\99\99 £   £§ªª­ª­±­´´´±­­§£\9c\9c\99\99\9c\9c\99£££ ££ \99\99\99\96\92\92\8f\8b\8b\8f\8f\8f\8f\92\8f\92\96\96\99\9c\9c£§±´¸ÂÉÏÏÓÓÖÚÚÚÖÖÉÉÏÅÂÉÅÂÅÅÉÉÏÅÓÏÏÏÖÏÏÓÓÓÏÏÓÓÓÓÓÖÓÓÓÓÓÖÚÖàààääääààÝÚÝàäààààäàääàÝÝÝÝààÖÝÚÝÚÝÖÖÖÖÖÚÚÚÝÚÚÚÚÖÖÚÝÝÚÝÖÝÚÚÖÚÓÖÝÝÝÚÚÝÚÚÌž¾¸´±±¸»Â¾´ª­ª\8f\96\96 \9c\9c ££££ªª§Â»»¾¾¾»¸¸¸´±¸´­ªªªª§§§§ªªª­±±±¸¾¾Â¾»¾¾¸¸¸¸¸¸´´¸ÂÂÉÌÌÌÉž¾»»»¸¸¸´¸±±±±´»¾¾Â¾»»¾¾¾»»Â¾¾»¾¾¾¸»»¸±±­ªªª§££ \99\9c  §­ª±´±±ª±¸´±ª £ \99\99\9c\9c\9c\99\99\92\96\96\88\99 §§§­ª±±±´±¸»»¸»»¸»»¸´»¸¸»¸´¸¸±­§£\9c\9c\96\8b\8f\88\85\8b\85\85\85z~pippmpmppmtwwttptiUic_fcccccifffc_cfmimpppmmmmmpmimppptw~\81\81~zztwwwtwtffpm\fKttU\=ttmppttpppppi_mmfffccf\_\c\\c_X_\\RRXRRRR_\RRRRXUXXXXX_\\fiADDGK\0\0\0m\0\0mmicc_\XUXNNKGGKKNRUX\_ccifiimpfimpptttwzz~\81\88\85\88\81~\85\81\81\81~~~~~~zzzzzzzzzzzzzzwwwwwwwwwwzwwwwwwwwwwzzzzzwttttttwzz~wzzzzwwzzz~~~\81\81\85\85\88\81\81\81\85\81\81\81\81\81\81~~~z~zwtwpttpiifmmmmmmimifiipmmiifffifipmptptwzzz~z~z~~~~\81\81~\81~~~\81\81\85\85­­­´´¸¸»»»»¸»»¾¾¾»¾¾»»»»¸´´´±±±ªª££ \92\9c\96\92\96\99\96\9c\96\9c £§§ª­­´±´¸¸´±±ª§ \9c \9c\99\99\9c£§§££ \9c\9c\99\99\99\96\96\92\8b\8b\8f\8f\8f\8b\92\8f\92\92\96\99\9c\96 £±±¸ÂÉÏÏÓÓÖÖÚÚÓÏÅÅž¾Â¾ÂÅÅÉÌÅÏÌÏÓÓÏÏÏÓÏÏÏÓÓÖÓÖÖÓÓÖÏÓÖÖÚààààääääààÚààäàäààäàäàààÝàààÝÚÝÝÝÝÝÖÖÓÖÖÚÚÚÝÝÚÚÖÖÖÚÚÚÚÝÚÝÚÚÚÚÓÖÚÝÝÚÚÚÝÝÌÉÉ»¸´¸»Åž­±­´ \96§\9c\9c §§ª£­§´Â»¾¾¾»»´´´´­´±­ªªªª§§§§ªª­­±±­»Âž¾»»»¸¸´´±´ÂÂÅÉÌÉž»»»»»¸¸¸¸¸´±±´¸¾Â¾»»»»¾»»¾¾¾¾¾¾¾»»»¸´±ª­­ª§§££\9c ££§­­­±´´ª±¸¸´­£ª£\9c   \9c\9c\9c\92\99\99\8b\9c\9c\88§ªª­±±­±±¸¸¾¸¾»»»»»¸»´¸¸¸´´¸­ª££ \9c\96\8b\8f\8b\85\8b\85\85\81wppfpimmimmmpwtttttfRffcfcfcc_iiiifiiiimmppmmmiiimifimpiwz~\81\81zzwtttttttfcm\\cKNXX_=ppmtpwptttmmmcppiicc_i___cXX__U\NNNNNNRUR\_RUUU\__cffcc_cimADGGN\0\0\0p\0\0ipffc\\XUXNKNKDGKNRRUX\_cfffimpimmmtwwttzz~\81\85\85\88\85~\81~\85~~~~~\81~zzzzzzzzzzzzzzzzzzzzwwww~wwwwwwwwwwzzzzzzwwwtwwz~zzzzwzwttwz~\81\81\81\85\85\81\85\88\85\85\85\85\85\81~\81\81\81~~zwzzzwwptpmfffmiiimmmmmimimpmmiiififmpppttpwzz~~z~~\81\81\81~\81~~\81\81\81\81\81~\85\85­ª­±´´»¸»¸»»»¾¾¾¾¾»¾»»¸»´±´±­±­§§  \99\92\92\8f\8b\92\8b\8b\96\96\99\9c £§§ª­´´¸¸¸´´±­ª§ £ \9c\9c §ª£§£\9c\9c \99\99\96\96\99\92\8f\8f\8f\8f\8f\8f\92\92\92\8f\92\99\9c\96\9c ­­¸ÂÅÏÌÓÏÓÖÖÓÌÌ»»¾¾¾¾ÅÂÅÏÉÏÌÏÏÏÏÏÓÏÏÏÏÓÓÖÖÓÚÖÖÖÓÖÖÚÝàààääääàààÝààäààààààààààÝÝàààÝÝÝÝÚÝÖÖÖÖÖÚÚÝÝÚÖÝÖÖÖÚÚÚÚÝÚÚÝÝÚÖÓÓÚÚÚÚÖÚÝÚÖÌÌɾ»»¸»»ÉÉž±¸´\96ª \9c£ª­±§¸»¸Â¾¸¾¾¾¸¸´´´±±±±­ªªª§§ªªªª§­±±­­¾¾ÂÂÅž¸»¸´´±´±±¾ÅÅÅÉ̾»»¾¸»¸¸»»»¸¸±´»»Â¾Â¾»»»¸»»»¾¾Â¾¾¾»»´±­ª­­­ªª§£ £§§­±±´´¸¸´´´¸±ª£­§ £££\9c  \96\9c\9c   \8b§­ª­±±±±´¸¸Â»¾»»»»¸¸»´´´´±±´ªª§£ \9c\96\8f\8b\8b\85\88\81\81~tpmcpiiiiimmptpptptiUic_fcccf_mmmmimmimmmpmiiiifcifcXimizz\81\81\81zwwwtttttpf\i\X_KKX\_=mmmpmtmttpmppftpfi_f_f\_\_\\_\XRNNNNNRRRRX\UUUXiccfiiffcimifcfNU\0\0\0m\0\0imfcc\XXRXKNNKDGGKNRUX_\_cffiipfmpptzttwwz~\81\85\81\88\85\81~~\88~~~~~\81\81z~zzzzzzzzzzzzzzzzzzzzzwzwwwwwwwwwwzzzzzwzwzwzz~~~zwwzzttwwz\81\81\81\81\85\81\85\85\85\81\85\85\88\81\81\81\85\81\81\81~zzz~wwwttppiifiifmmpmmpmmmmppmmiiiifmpptttpwz~\81~~\81~\81\81\81~\81~z\81\85~\81\81z\81\81­­­±´´»»»»»»»¾Â¾»¾¾»»¸¸´±±±±±ª§£\9c\99\96\92\8f\8b\8b\8f\8b\8b\92\92\92\99\9c £ªª­±´¸»¸¸¸´­­ª£§   £§ª§ª \9c\9c\9c\99\99\99\96\96\92\92\8f\8f\8f\8f\8f\92\8f\92\92\96\99\99\99\9c ª±»ÅÂÌÉÓÌÏÓÓÏÉž»¾¸¸»´»»Â¾ÅÌÉÌÏÏÏÓÏÌÏÏÏÏÏÓÏÖÓÖÚÖÖÚÖÚÖÖÚàÝàääààààààààààääààààÝààÝÝàÝàÝÝÝÝÝÚÚÚÖÚÚÚÝÝÝÝÖÝÖÚÚÖÚÚÚÚÝÝÝÚÖÚÖÖÖÖÖÚÖÖÝÚÚÖÏÓϾ¾»É¸ÉÉÉŸ»¸¸´±­­±±´§»¾»Â»´»»»´´´±±­´­±ªªªªª§­ª­ª£­±±±±¾»ÂÅž»»¸´´±±­±»ÂÅÅÅɾ»»¸»¸¸¸¸»¾¸»»´´»»Â¾¾¾»»¸»»¾»¾Âž¾»Â±´´´­­±­­ª§­§ªª±´´¸¸»»¸¸¸´±­§±ª£§§\8f £ \99\9c\99 ££§§­­­´±±´´´»¾»¾»¾»»¸¸¸¸´±´­±´­ªª£ \9c\99\8f\92\8f\85\88\85\85~ttm_pficmimmppmmpmtmmmf_cc_cfcimppippmmmimmffffcfifcXfmpzz\81\81\81zttwtttppmcXf_U\NKUX\=cmimifiptmipmippif_c_i\c\\XX\XXRRNNRRRRUU\XXXXXmffimiffcmmiffcXX\0\0\0i\0\0miic_\XURUKRNKDGGNNRRU\\_cffiipcpmpwzppwwzz~\81\81\85\81\81~~\85~~~~~\81\81~~~zzzzzzzzzzzzzzzzzzzzwzwwwwwwwwww~~~~~\81~~~\81~z\81~~~zzz~wwtwz~\81\81\81\85~\81\81\85\81\85\85\88\85\81\85\85\85\85\81~zzwzzwtttppifffiiimmmpmmppptppmiiiiiiptttwtz~\81\81\81\81\85\81\81\81\81\81\81zw~\81z~~w~~­­­±¸¸¸»»»»»»»¾¾»¾¾¾»»¸¸±±­­­­§£ \99\96\96\8f\8b\88\8b\88\88\8b\8f\8f\92\92\99\9c §§­­¸¸¸¸»¸¸±­­§§££££ª§§ª \9c\9c\99\99\99\99\99\96\92\96\92\92\8f\92\92\96\92\92\92\96\9c\9c\9c\9c£§±¾ÂÂÉÅÏÉÌÏÏɾ¸¸»¸¸¸¸¸¸¾»ÂÉÉÉÌÌÏÏÏÌÌÏÌÏÏÓÓÓÓÓÖÖÖÚÚÚÖÚÚÝÝÝàäààààààààÝàààÝÝÝÝÝÝÝÚÚÝÝÝÝÝÝÝÝÚÚÝÚÚÚÝÝàÝÝÚÚÚÚÚÓÖÚÚÚÚÝàÚÚÚÚÖÖÖÚÖÚÚÚÖÚÚÚÖÓÂÏÉÌ´ÌÉÌÉÅÅ»¾»»¸´±±´´¸¸¾¾¾¾¸¸¸¸¸´´´±´­±±­ªªª­ªª­ª­ª£­´´´´»»Â¾ž¾¾¸»´±±±±ª±´¾ÂÂÅž¾»»¸¸»»¸¾¾»»¾¸»»»¾¾¾»»»¸»¸¾»¾ÂÂÂÂɞş»¸¸±±´±±ª±ªª­´¸¸»»¾¾»´»¸±±ª±­ªªª\92£§£\9c \99 §§§ª­±­±´´±¸±»»¾¾¾¾¸¸¸¸¸´±±±§±´­ªª§£ \9c\96\96\8f\8f\88\85\85~twm_piiciimmmmmppfpmmmiccf__ccimppmmmpmimii_cff_cffcXfmtzw~\81~~twtptpmpmf\\_UXRNRURA_ificfmptfmmiimmmf\__i__\_XXXRURNNRRRRRUU\XXXXXmfimiiicfpimii_\\\0\0\0i\0\0pmmc_\XUUUNURNDKGKNNRUXX\cfciip_tmptwpptww~z~~\85\81\81~~\85~~~~~\81\81z~zzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwww~\81\81\81\81\85\81\81\81\85\81~\81~~~z~z~zzwwz\81\81\81\81\81\81\81\81\85\81\81\85\88\85\85\85\85\85\85\81~~zwzzzwwttpifffimmpmmpmmpppttpmmiiffipptwwwz~\81~\81\81\81\81\81~\81~~wtz~wzzci\­ª±±´¸¸»»¸»»»»¾¾¾¾¾»¸»»´±±­­­ª§  \99\92\92\92\88\88\88\8b\8b\8b\8b\8f\92\92\99\9c §ªª­´¸¸»»»¸´­­ªªª§§§ªª§§£\9c\9c\9c\9c\99\99\99\99\96\96\92\92\92\92\92\96\96\92\96\96\9c\9c  §ª´»¾ÂÂÂÌÅÅɾ¾¸¸´¸»¸´´´´´»»¾ÅÅÅÉÌÌÏÌÉÌÌÌÌÏÓÓÖÓÓÖÖÖÚÚÝÚÚÝÚÝÝÝàààààààààÝÝÝÝÝÚÚÚÚÚÚÖÚÚÚÝÝÝÝÝÚÚÚÝÝÚÚàÝàÝÚÝÖÖÚÚÖÖÖÖÖÚÚÝÝÚÝÖÓÖÖÖÚÖÚÚÚÚÝÝÚÖÖÓÌϱÌÌÌÌÉž¾¾¾¸¸´´¸¸»»»¾¾»¸´´¸´´´´±´±­±­­ªª­­­­­­­§±´´´¸¸»¾¾¾Â»»»»¸±­­­­­­´´´¾Åɾ¾¾¾¸¸´¸»»¾»¾¾¾»¾¾¾¾¾»¸¸¸¸¸¸»»¾¾Â¾ÅÌÉÅÉÉÅÉÉ»´´¸´´ª´­­±´´»»¾Â¾»´¸¸´­ª´­­­­§£ª§§£££ªªª­­´±±´¸´´´¸¸»¾»¾´»¸¸´´­±±£±±ªªª§§£\9c\99\99\92\92\88\88\81~ptpcpmiimiimmimpmitmipmfcfc_fcimmmmmmmmfiff__ccc_cfccimwzwz\81~~wzwtttppmf_\\RURNURRDXXcfffmmpiimii_pif_\ci_c_\\UURRRNRRRRRUUU\XXX\\mimmiimfimmpmmc_\\0\0\0i\0\0tpif_\XUXRRRNKGGKNNNRXXX\_cfffp_pmpptptttwzz~\81\81~~~~\88~~~\81\81\81\81~zzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwwwz\81\85\85\85\88\81\85\85\88\81\81\85~~~~~~\81~zwzz\81\81\81\85\81\81\81\81\85\81\81\85\88\85\85\85\88\85\85\85~\81wwzzwwwtwpmiiiimmmmpppptttttpmmmiffipmtzzz~~\81~~\81~~~z~zzmiittc_XUU±­´±´´¸¸»»»»»¾¾¾¾¾¾»»¸¸´´±­­ªªª\9c\9c\96\96\92\8f\88\88\88\88\88\8b\8b\8b\8f\96\99\9c £ªª±´´»¸»¸»¸±±­­­§§£§ª§£§ \9c \9c\99\99\9c\9c\99\99\96\96\96\96\96\96\99\96\96\99\9c\9c £§­´¸»¾¾¾Å¾¸¸´´¸¸¸±±±±±¸¸»¾Â¾ÉÉÌÌÉÌÌÌÌÏÓÓÓÖÓÓÖÓÚÚÚÚÚÚÚÚÝÝäàààààààÝÝÚÚÖÝÖÖÚÖÖÖÖÖÖÚÝÝÝÝÝÝÚÚÝÝÚÝÝààÝÝÚÚÚÚÖÚÖÓÓÖÖÚÝÚÝÚÚÖÚÖÓÖÖÚÚÚÚÝÚÖÖÓÓÏ̱ÌÌÌÌÉž»¸¸¸´»»»¾»¾¾»¸´¸¸¸±´´´´±­­±­­­ª­­±­±­ª±´´¸»´»¾¾Â¾¾¸¸¸´±§ª­ª­­±´´»Âž¾¾»»¸»´»»¾¾¾¾¾»¾Â¾¾»¾»¸¸¸¸¸¸¾»»¾¾ÂÂÌÌÏÌÌÏÌÌÉž¸»¸¸­´±±±±¸»»»¾¾»¸»»´±­´±±±­ªªªªªª§§­­­±±´±±´´¸´¸´­¾¾¸¾¸»¸´´¸ª´±§±­­ªªªª§ \9c\99\96\92\8b\8b\85\81pip_ppfmmmimmmmmimtimtpificcfcimiiimiiicfcc\cccfccfcfmmzwz~~~~wzztpwtmmfcXXRUNNURUAXX_cfimipimpmmfmfc\\_f\c\\XUXRRRNRRRRUUUXXX\\__mimmmipimmmmmmfc_\0\0\0m\0\0tpfc__XUXNNNKGDGKKNNRUXX\__cffm_cimmpppttwzz~~\85~~~~\85~~~~\81~~~zzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwww~\81\81\85\85\85\85\88\85\85\81\81\85~~~~~\81\81~zzzz\81\81\81\85\85\81\81\81\85\85\81\81\88\85\85\85\88\85\85\85\81\81zwwzzwwwttpmmmmmmmmptttwwttwtpmmmiiipmtwzzz~~~z~tzzzztwiffi\X\RRR±­´±´¸¸¸»»»»¾¾¾Â¾»¾¾»»¸´±­­­ª§§\9c\9c\96\96\8f\8b\88\88\88\88\88\8b\8b\8f\92\96\99\9c £§ª±´´¸¸¸»¾»´´±­±ª§§§ªª§§   \99\99\9c\9c\9c\99\99\99\99\99\96\96\99\99\99\96\99\9c ££§­´´»»»¾Â¾¾¾»´´´±´´¸­­­£§­´´»»¾¾ÉÉÉÉÉÌÌÌÏÓÓÏÖÓÏÓÓÓÚÚÚÖÝÝÝÚÚÝàààÝààÝÝÝÝÖÚÓÚÖÓÚÓÓÓÓÓÓÖÚÚÚÝÝÝÝÚÝÝÝààÝàÝÝÝÝÝÚÖÚÖÖÓÖÓÚÚÝÝÚÖÚÖÖÓÓÖÚÖÖÚÚÚÖÖÓÏÏ̱ÌÌÉÉÅžŸ´´¸¸¸»¾¾»¾Â¾¸¸¸¸¸´´±´¸´±­´­­±ª±±±±±±­±´±¸¸´»»¾¾¾»´´´±±ª§­ª±­´´´¸¾Â»»»¾¸»»´¾¾Â¾Â¾Â¾¾Â»Â¾Â¾»¸»´¸»»¸»»»ÂÂÉÏÓÏÏÓÏÏÌÉ»»¸¸±´´±±´¸»¾»»»»»»¸¸±±¸´­±±ª­ª­­­ªª±­±±±´±´´´¸´´±ª»¾»¾»»»¸¸¸ª¸´£±±±ª­§­ª£ \99\96\96\8f\8b\88\81pip_ttmpmpipmmiimitmmppmiiffffmiiffifff_c\_\cccfcffcipmwwzz~zzzzzwtwtmmfc\UURRNUNRAXXX_ffmipippppimic___f\_XXUUURRUNRRRUUUXX\\\___immmimpmmmpppmffc\0\0\0p\0\0tmfc_\XXUNKKGDDGKKNNRUXX\__cffm_cfimmppttwzz~~\81~~~~\85~~~\81~\81~zzzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwwwz\81\81\85\88\85\88\88\85\85\81\85\85~\81~~\81\85\85~~~~~\85\81\81\81\81\81\85\81\85\81\85\85\85\85\85\85\85\85\88\81\85\81~wwwwwwttwppppppmpmmpwttwwwwtppmmiimmpptwwwzzzwztwwwtppfcccXUUNNN±±´±±¸¸»»»»»¾¾¾¾Â»¾¾¾¸»´±±­ª­§£\9c\9c\99\92\8f\88\88\85\85\88\8b\8b\8b\8b\92\96\96\99 §ª­´´´¸»¸¾¾»¸¸´±±­­ªª­ªªª    \9c  \9c\99\99\99\9c\99\99\99\99\99\99\96\96\9c£§£ª­´´¸»¸»¾»»»¸§±±­±´´ªª§£§§±±»¸¸ÂÅÅÉÅÉÉÌÏÏÏÏÏÓÓÓÓÖÓÖÚÖÖÝÚÚÝÝàÝàÝÚàÝÝÚÚÝÚÖÓÖÓÓÖÓÏÓÏÏÓÓÖÚÚÝÝÝÝÝÝÝÝàààÝÝÝÝÝÚÚÚÖÖÚÓÖÓÚÚÝÚÚÖÖÓÓÓÓÓÖÓÓÖÚÖÚÖÓÏÏÌÌɸ»ªÂ¾ÂÅ»¸¸¸¸¸¾Â¾¾Â»´»¸¸¸´¸´´¸´±­±­ª­­´±´´±±­±´±´»¸»»»¾»¸±±±±­­ªªª±­±´´´»¾¾¾¾¾»»»¸¾¾Â¾Âž¾¾¾Â¾¸»´»¸»»¾»»¾¾ÅÏÏÓÓÓÓÓÏ̸¸´´±´´´±¸´¸»»¸¸¸»»»¸´±»¸ª­±§±­ª­±­ª´±±´´±´¸¸´»´´´ª¾¾¾¾»»»¸¸¸ª¸¸ ´´´ª­§ª§§ \99\92\96\92\8b\8b\81miw_wtptmtmmimmmpmpppptpmfffffmiifffcfi__\\_cccfffffipmttwwzz~zzzwwztppi_\UXNRNRNRNX\\_ccimpittttmmm__c\c\\XXXUURRRRUUUUXXX\\\\__iiimmimmmmpptpmiff\0\0\0t\0\0tmic_\\XUNKGDDAGGKNNRUX\_c_cffm_cffipmpptwzz~~\81~~~~\85\81~~~~~~~zzzzzzzzzzzzzzzzzzzzzzwwwwwwwwwwwwz\81\85\81\85\88\88\88\81\85\81\85\81\81\81~~~\85\81~\81~~~\81\81\81\81\81~\81\81\85\81\81\81\85\85\85\85\85\85\88\81\88\81\81zwwzwttttppppttppmpttwwwwwtttpmpimmipmmtttwwwtpptttpmfc\U\URRNNK´±±´´¸¸»»»»»¾»»Â¾¾¾¾¾¸»´±±­ª­§§ \9c\96\8f\8f\88\88\85\85\8b\8b\8b\8f\8f\8f\96\96\9c §ªª´¸¸»¸»»¾¾¸´¸´±­±ª­ª­­­££££    \9c\9c\9c \9c\9c\99\9c\99\99\99\99\9c£§£­±´±¸¸´¸»´¸¸´§­­­­±±§§£ £§ª­¸´¸¾ÂÅÅÅÅÌÌÏÌÌÏÌÖÏÏÏÓÏÓÖÓÓÚÝÚÚÚÝÝÝÝÚÝÚÚÖÖÚÖÖÓÏÏÓÓÏÏÏÏÌÓÓÖÚÚÝÝÝÝÝÝÝÝÝààÝÝÚÝÝÖÚÚÖÖÖÖÖÓÖÖÚÖÖÓÖÏÓÏÓÖÓÓÓÖÚÓÖÖÓÏÏÌÌÅ­±§­¾»Â¾»¸¸¸¸¾ÂÂÂÅ»¸¾»¸¸´¸±¸´´´±±­ª­±±±´´´±±±´±´»¸»»¸»¸´­­­­ª­§ª­­­±±¸´»±¾Â¾¾»¾»»¾Â¾ÂÅÅž¾Â¾¸»¸¾¸»¸»»¾¾ÂÂÏÌÓÏÓÓÏÏɾ¸´ª±±±´±±´´¸¸¸¸±¸»¸»¸¸±»´§±±ª´±­±´´´¸´±¸±´¸´´±¸´¸¸´»¾¾»¸¸¸¸¸¸ª¸´ ´¸´­ª§§££\9c\99\92\92\96\8f\8b\85pizczptwpwipimpmtppttttmmfffffpmfcic_ci__\__ccfffifimpptpttww~zz~zz~wptfcXUUNNNRRURXX\___fmpiptpwpmi__c__\\XXXUUURURUUUUXXX\\\__fmmmmmmmppptttpmmii\0\0\0t\0\0pmic_\XXRKGDADADGKKNRUXX___cifm_ccfimppptwwz~~\81~~~~\81\81\81~~~~~~z~zzzzzzzzzzz~zzzzzzzzwwwwwwwwwwww~\81\85\85\85\85\85\88\81\85\85\81\81~~~~\81\85\81~\81\81~\81\81\85\81\81~~~\81\85\81~\81\85\85\81\85\85\81\85\85\85\85\81zwzwtttttptpttwttpptpwtwtwwttpmmimmimiimpptttpmmmpmmic_XUXRNNNNK±±´´´¸¸¸»»»»¾¾¾Â¾¾¾¾»´¸´±´ª­ª§£ \9c\92\8b\8b\8b\88\85\85\8b\88\8b\8b\8f\8f\92\99\9c\9c§­­±¸¸¸»¾»¾¾»¸»¸´±´­±­±±­§§§§   £      \9c\9c\9c\99\9c\9c £ª­±´±±´´´±¸±´¸±§ª­ª§­ª£   ££§ª´´¸»¾ÅÅÅÉÉÌÌÌÉÌÌÓÏÌÌÓÏÓÓÓÏÚÚÚÚÚÚÚÚÚÚÚÖÚÓÚÖÓÖÏÏÏÓÏÌÌÏÌÉÏÓÓÖÚÝÝÝàÝÝÝÝÝÝÝÝÝÚÚÚÖÚÖÖÓÖÓÓÓÓÖÖÖÓÖÓÓÓÌÓÓÏÓÏÓÚÏÓÖÓÓÌÌ̾­­§£±¸¾Â¾»¸¸»¾ÂÂÅÅž¸»»¸»´¸´´´´´´±­ª±­´´´´¸±±±¸´´¸¸»»´¸¸±­­­­£ªªªª­­­±´¸¸´¾Â¾¾¾»»ÂÂÂÂÅÅÉÅÅž¾¸»¸»¸¸»»»¾¾Â¾ÌÉÏÓÓÓÌÌÅ»´±ª±±­±±­´±¸´´¸´»»»¸¸»´¸±§´´­´´±±¸¸¸»¸´´´¸´´´´¸´¸»¸»»¾»¸»»»»¸»¸´´´¸´ª§£\9c  \99\96\92\92\96\92\8b\88pm\81z~w~wtzmtiptmpmtwptpimifffcpiccfc__f\___cfffffiimpppppttttzw~~~~~zttc_UXRRNNRRXUUX\\c\cimimp_ttmfccc__\\\XXXUUUURUUUXXXX\___cippmmmmmppptttpmmmi\0\0\0t\0\0mmfc_\XURNGDADADGKKNRUX\\__cffmccffimmpptwwz~~\81~~~~\85~~~~\81~~~zzzzzzzzzzzzz~zzzzzzzzwwwwwwwwwwww\81~\85\85\85\85\85\88\85\85\81\81\81~~\81~\81\85~\81~\81~\81\85\85\81\81~~~\81\81\81\81\81\85\81\81\81\81\81\85\85\85\81\85~~zwtttptptptwwwtttpttpwtwwtppmpmimiiffipimppmiiiifff_XURUNKNNKN±±´´´¸¸¸¾»»»»»¾Â¾¾¾»»¸´´±±­­ªª£\9c\99\8f\8b\8f\8b\88\85\88\8b\88\8b\8b\8f\8f\92\99  ªª±´´¸»¾»»Â¾¾¸»´¸´¸±´±±´­ªªªª§£ ££££ ££ \9c\9c\9c   §­±±±±­´±´±´­±´­ª­­§§§ £ \9c  §§§±´´¸»ÂÅÂÅÅÉÉÉÅÌÉÏÏÌÏÏÏÓÓÓÓÖÖÚÚÖÚÚÚÚÖÖÖÖÖÖÖÓÓÌÌÏÏÌÌÉÌÌÌÏÏÓÓÖÝÝàÝÝÝÝÝÝÝÝÚÝÚÖÖÖÖÓÓÓÓÓÓÏÓÓÏÓÓÓÓÓÏÏÏÓÌÏÓÖÖÏÌÖÏÏÌÌÉ»±­ª§­´»¾¾»»»¸»»¾ÂÂÅ»»»¸»¸¸¸¸¸¸¸´´­ª±­´´´´¸´´´¸¸¸´»»¸´´¸­ªªªª§§§ªª­­±±´´¸´Â¾Â¾¾¾¾¾ÂÂÅÅÉÅÉÉž»»¸¾»¸¸¾¾»»¾¸ÉÅÌÓÓÏÌÉ´¸±±ª­­±­±­´´¸±¸¸¸»»¸¸»»¸»´±´´±¸¸´´´»´»¸¸¸´´´¸¸´¸¸´»»»ª»¾»»¸¾»¸»´¸´´¸±ª£ \99\96\99\96\96\92\92\92\92\8f\88\85\85\85~\81z\81~wzmptttptipwtttfpifiicpif_cc__c\\_c_ffiffimmpppppppptwtz~~~~ztw\\UXRRNNRRUUXX\_cXcfifim_ptifccc__\\\XX\UURURUUXXX\\__ccfmpppmmmmppptttpmmim\0\0\0t\0\0iiic_\XUNKGDADADGGKNRUUX\_ccffmfccfimmpptwwz~~\81~~~~\85~~\81~~~~zzzz~zzzzzz~~~zzzzzzzzzwwwwwwwwwwww\81\81\88\85\88\85\88\88\81\81~\81\85~~~~\81\85\81~~\81~\81\81\81\81\81~~\81\81\81\81\85\81\85\81\81\81\81\81\85\85\85\85\88\81\81zwtppttptptzwwtttpppmtttwwttppmiiffccfmfi_ifffffccc\XUNNKGKNNR±´¸¸´»»¸¾»»»»»¾¾¾»»»»´´´±±±ªªª£ \96\92\8b\8b\8b\88\88\88\8b\8b\8f\8f\8f\92\92\9c  ª­­¸´¸»»»»¾»¾¸¾¸¸¸¸´¸±´±±­ª­­ª§§§§§§£§     £££§­´±´±±±±´±´­±±±­­±ª§§   \99\9c\9c£§§±´±´»¾ÂÂÂÂÅÅÅÅÉÉÅÏÏÌÌÌÏÓÖÖÓÚÖÖÖÖÚÖÖÖÓÖÓÖÖÖÏÏÉÉÌÌÌÌÅÌÉÌÏÌÓÏÓÚÝÝÝÝÝÝÝÝÝÚÚÚÚÖÓÖÖÓÖÓÓÓÓÏÏÓÓÓÓÓÏÏÏÏÌÏÌÏÏÖÖÓÏÓÌÏÌÉÅ»±ªªª­´»¾»»»»»¸»»Â¾Â¾¾»»»»»¸¸¸¸¸´¸¸´­­±±¸´¸¸¸¸¸¸¸¸»¸¾»»¸¸´±­§§ªª§£ª§ª­­­±´´¸Å¾¾ÂÅÅÅÅÉÅÅÅÅÅž»»»¸¸´»»»¸ª¸Â¾ÉÏÏÌÉ»´±±­­­ª­£­­´´¸ª¸¸»¸»»»»»»¸¸´±±´¸»¸¸¸¸´»¸»¸´´´´´´´´´»¸¸ª»¾»¾´¾»»»¸¸¸´¸´­§\9c\96\96\96\92\96\92\92\92\92\92\88\88\85\88\81\85~\85\81zzppwwwtpitztttcpiifmfpiiccc_\\\\_c_fci\0fimmpmmmpmmmptpzzzz~~wtXUUURRRNURUUX\__c\fcffipcmpiic_c_c\\\\XXUURXUXXX\\\___ccfmmpppmmppptttppmmip\0\0\0p\0\0cifc_\XUNKGDAAADDGKNRRUX\\_cffmcfcfipmpttwwz~~\81\81~\81~\81\81~~\81~\81~zzzzzzzzzzz~zz~zzzzzzzzwwwwwwwwwwww\81\85\85\85\85\85\88\88\81\85\81\81\85\81\81~\81\81\81~~z~z\81\81\85\85\81~~~\85\85\85\85\85\85\81\81\81\81\81\85\85\85\85\85\85\85zwwttttpwtwwwwwwtpppmpptwwtppmmffcc_\cic\\\c_cc___\XURNNNDGNNN±´´¸¸»»¸»¸»»¾»»¾»»¸»¸¸´´±±­§ª§££\99\96\8f\8b\8b\88\88\88\8f\8f\8f\92\92\96\96  £ªª­´¸»»¾»»»»»»»»»¸¸´´´´´´±­±±­­­ªªª§§§ ££££££ª­±´±´±­±±±´´±­±±±­±ª§§£  \9c\9c  §ª±±´´»¾Â¾ÂÂÂÂÅÉÉÌÌÏÏÏÓÓÓÓÓÖÓÓÖÓÖÖÓÖÓÓÓÓÖÓÌÌÅÅÉÉÉÌÉÉÉÌÌÏÓÏÓÚÝÝÝÝÝàÝÚÝÝÖÚÚÖÖÓÓÓÓÓÓÓÓÌÏÏÓÓÓÏÏÏÏÏÌÌÌÏÓÓÖÓÓÏÌÌÉÉÅ»¸ª­­±´»»»»»¸»¸»»¾»¾»»»»¸»¸¸»»¸¸´¸´±±±±±¸¸»¸¸¸»¸»»¸¸¾»¸»´´­ª£§§§§£ª§ªªª­±´¸¸Å¾¾¾»»¾ÂÅÂÂÅÉÉÂÂÅÅž»»¸¸¸±»¸¾´­»´»ÅÌÌÉŸ±±±­±­ª­§ª­±±´ª¸»¸¸»¸¸»»¾»»±´´´´¾¸¸¸´¸»»¸´´´±´´´¸´´¸´»­»¾¸¾­»¸¾»¸¸¸±¸±ª§ \99\96\96\96\96\92\8f\92\92\8f\8b\8b\88\88\85\88\81\81\85~zppzwwttititptfpmifpipmifcc_X\____cfcf\0iimmmiiimRffmpmwwwwzztpKRURRNNRRRUX\\\_c\ccffip_ppmmccc____\\XXUUUXUX\\\\__ccccfimmmtppppptttttmmim\0\0\0t\0\0cmfc_\XUNKGDAAADDGKNRRUX\\_cffm_cffimmpttwzz~~\81~~~~~~~~~~~~~zzzzzzzz~~~~z~~zzzzzzzwwwwwwwwwwww\85\85\81\81\81\85\88\88\85\85\81\81\81\81~~~~\85~~zzz~\81\85\85\81\81~~\85\85\81\81\81\81\81\85\81\81\81\81\85\85\85\81\81\85~zzttwtttwwwwwzwttmmmmmttwpmmiiccXRUUXXXUXX\XU_XXXXURNNNNDGNNN­´¸´¸¸»¸»»»¸»¾»¾¾¸»¸´´±±±­­§ª£§£\9c\96\92\8f\8f\8b\8b\8b\8f\92\92\92\96\99\99£ §§­­±¸»»»¸»¸»¸»¸»¸¸¸´´´´¸´±±±´±±±­­ªª£§  §£§§§­±´¸±±±­±±±´´±­±±´±±ª§§£ \9c\9c  £§­­±±¸¸¾Â¾¾¾¾¾ÂÂÂÅÉÌÌÌÌÓÓÖÓÓÓÓÓÖÖÓÖÓÏÓÓÓÓÏÓÏÉÅÉÅÅÅÅÉÉÅÉÌÌÌÏÓÏÚÝÝÝÝÝààÝÚÚÚÖÚÓÖÏÖÓÓÖÓÓÓÏÓÓÏÏÏÏÌÌÏÏÌÉÌÏÓÏÖÓÓÏÏÌÉÉž¾´´­´´¸¸¸»¸¸¸¸¸»»¸¾¸¸»¸¸»¸¸¸¸¸¸´´´±±­±±»¸¸¸»»»¸¾»¸»Â¾¸»´±±­§ª§§££ª§ªªªª­´¸´Â¾¾¾¾»»¾ÂÂÂÉÅÌÅÅÉÅÅ»»»¸»´¸´»±±»±¸¸ÅÉŸ¸­±­­±ª­­ª­­´´´±¸¸»¸¸´¸¸»»»»­´´¸´»¸´¸¸¸»¸¸¸±´±´±´´±±´¸»±»¾´»±»¸»¸´´´­´­§££\9c\96\96\96\96\92\8f\92\8f\8f\8f\8b\8b\85\88\85\85\85\81~zpt~zzwtmpitmtfppmppmtpmi__c\___cccfci\0iiiimff_iRccciimi\piXU\GKRNNKNRUURX\_X\c___fcip\mtpmfcccc___\\XUXXXX\X\\\cccccfpimppttttttwwwttpmii\0\0\0p\0\0fif_\XURNKGDAAADDGKNRRUX\\_cffm_cffimmtptwz~~~\81\81~~~~\81~~~~\81~zzzzzzzzzzzzzzzz~z~zzzzwwwwwwwwwwww\81\81~~\81\81\85\85\81\85\81\81\81\81\81~~~\81~zz~z\81\81\85\85\85\85\81\81\88\85~\81~\81\81\81\81\81~~\81\85\85~\81\81~~zwwwwtwttzzzzztwpmiiipptmfiff\\NRNRUNURUUXRRUUUUURNKNKKDGNKR­´´´¸»»¸»»¸¸¸»¾»»´»¸±±±­­­­ªª§£  \99\92\92\8f\8f\8f\8f\92\92\96\92\96\99\9c £§ªª­­¸¸¸¸»»»¸¸¸»¸¸¸¸´´´´´´­´±±±´´±­­ª£§££§§§§ª±´¸´±´­­±±±±±´±±±´±±­§§§ \9c ££££ª­­­´¸¾Â¾¾¾¾»Â¾ÂÉÅÌÌÌÉÏÓÓÓÖÏÓÓÓÓÓÖÓÏÏÓÏÓÏÏÏÉÂÅÅÂÅÅÉÉÉÉÉÌÉÏÓÓÖÚÝàÝÝÝàÝÚÚÚÓÖÏÖÏÓÓÓÖÓÖÓÓÖÓÓÏÏÏÉÉÌÌÌÉÌÏÏÏÓÓÓÓÏÉÌÉɾ»¸¸¸»¸¸¸¸¸´¸¸»¸¸»±¸¸¸»»¸¸¸¸´¸´´´±±­´´¸¸¸»»»»»¾¾»¾¾¾¸»¸­­ª§ª§£££§£§§§ª­±´±¾Â¾Â¾¾¾»»»¸¸¾¾¾ÅÅÉÅÉÉÅž»¾¸»´¸´¸ª­»±¸¸Â¾Â¸»­±­ª­ªªªª­ª±±´´´´»´¸¸¸´¸¸»¸±±±´¸»¸±»´»¸¸¸´´´´±­±±­´¸´»´»»´»´¸´¸´¸´´­±ª£ £\9c\99\92\96\96\8f\8f\92\8b\8f\8b\88\88\88\88\88\85\85\81~~zw~~zzwmmitm~fttmttiwtpmf_c_c__cccffififf_mc\\_RUUNRUU\XUXNRUDKNNKNNNRUNX\\UXc\\\c_fm_ittiiffcccc_\\XXXX\\_\___fffffitmpttwwtttwwwwttppii\0\0\0m\0\0fic_\XURNKGDDAAADGKNRRUX\\_cffm_cffiiptttwz~\81\81\81~~~\81~~~~~~~~zzzzzz~zzzzzzzzzzzzzzzzwwwwwwwwwwww\81~~w~~\81\81\81\81~\81\81\81\81~~~~~zzz~\81\81\85\85\85\81\85\85\85\85\81~~\81~\81~~zz~\81\81~~~\81~~zwzwtwttzzwwwtwmmffimmpicc\_UUKNGDKKNNNAUGGKRNRNNKGKKKGKNNR­±´´¸»»»»¸¸´¸¸»¸¸¸¸´±­­­ª­­ª§£ \9c\9c\9c\96\92\92\92\92\92\92\96\99\96\96\99  £§ª§ª­´¸¸»»¸¸¸¸´¸¸¸¸¸´¸´¸´´±±±±´´±±±­­§§££§£ªª­´´¸´±´ª­±±´±´´´±´±±­­§ªª  £ £§£ªªª§±¸¾¾¾¾¾¾»Â¾ÂÅÅÉÉÌÌÏÏÓÓÓÓÓÓÏÏÓÓÓÏÌÏÌÏÏÏÏÉÅÅÅÅÂÂÅÉÅÉÉÌÉÏÏÏÖÚÝÝÚàÝàÝÚÚÖÓÓÓÓÌÓÓÓÓÓÖÓÖÖÖÓÏÓÏÌÅÌÏÌÌÌÏÏÏÓÏÖÓÏÌÏÌÉÅž»»¸¸¸¸´´¸´´¸»´´¸´´¸¸¸¸¸¸¸¸¸¸¸´´±±±´´¸»¸»¾»¸»Â¾»¾¾¾»»¸­­§£§§ §£§§§§§ª­­±­¾Â¾¾Â¾»¸¸´¸»¾»ÂÂÅÅÅÉÉÅÅÅ»¾¸¸¸¸¸±ª­¸´´¸»¸»´¸­­­­­ª­ªªªª±­´¸¸¸»¸¸¸»´¸´»»±´´¸»»´´»´»´´´±´¸´´­´­±±¸±¸¸¸­¸¸±´´¸´¸±±±­­ \9c \9c\99\96\96\92\8f\8f\92\8b\8f\8b\88\88\85\88\88\85\81\85\81\81~tz~~wzpmmwm\81wwwpttUwttpicccf__cc_ffmfiff_i\XUURNRNRUUUR\aKKKKAGKKGKNNRRNXXXXRcX\\cXfmcfptpmifffcc__\XX\\_X___cifiimpwwppttwwttwwwwwwtptmi\0\0\0m\0\0cfc_\URRKGGDDAAADGKNRRUX\\_cffmc_ffiittptwwz\81\81\81~~~~~~~~~~z~zzzzzzzzzzzzzzz~zzzzzzzwzwwwwwwwwww~zzwzz~\81\81~~\81\81\81\81\81\81~~z~z~~\81\81\85\85\85\85\81\85\81\85\81\81z~~~~zztz~~~~~~~zzzzztttwzzzwwttmifcfifc\__XXRKGKDAGADKD=GADGDKKKKGDGKGGKNNR±±¸¸»»»»»»¸¸´´¸¸¸´´´±­ª­ªªª§§ \9c\9c\99\9c\99\96\96\96\96\96\96\99\99\99\99\9c £££§§ª­±´´¸»¸¸¸¸´¸¸¸¸´´´±´¸±±­­±±±±±­±­ªª§§ªªª±±´¸¸¸´±­­±±´´´´´´¸­­ª­ª§§££§£§§§ª§§ª­´¾¾¾¾¾¾»ÂÂÂÅÅÉÉÌÏÏÏÓÖÖÓÏÏÌÓÏÓÓÏÏÏÌÏÏÌÌÉÉÅÅÅÂÅÂÉÅÉÉÌÌÏÓÓÖÖÚÚÖÝÚÝÝÝÖÖÓÏÏÓÏÏÓÓÖÓÖÖÖÖÚÓÓÏÏÉÉÌÌÌÌÏÏÏÏÓÌÓÓÏÏÏÌÉÉÅž¸¸»»´´¸´¸»¸¸´¸´´´¸¸¸¸¸¸»¸¸´´´±±´´¸»»»¾¾»»¾Â¾¾¾¾¾¾¸¸±ª£§§§ §£ª§§§ªª­­´´¾¾Â¾»Â¾»»»¸¸¸»»»¾ÂÅÉÉÉɸ»¸¸´¸»±­±¸¸±´¸¸¸±´­­­ª­§ªª§­­±±¸¸»»»¸¸´»¸¸¸¾¸´¸¸¸¸»¸¸¸¸¸¸¸¸­´´´±±´±´­´­¸¸¸­¸´´±´¸´´´´±£­£\9c£\9c\99\96\96\96\92\92\92\8b\8f\8f\85\88\81\88\88\88\85\88\81\81\81t~z\81twtmmzt~ztttttRwtwtmfffi__cfcfimimff_f\XUUNNRNRRRRK\0
+GGGAGKKDGKNRRNXX\\Nc\\_cUfmffpttmmiffccc_\\\_cccicmcppipttzwtttwwwwwzzzzzwtttmm\0\0\0p\0\0cf_\XURNKGDDAAADDGGKRRUX\\_cffmfccffmtpptwz~\85\81\81~~~~~~~\81zzzzz~z~~zzzzz~zzz~~z~zzzzzwzwwwwwwwwwwzwwwzz~\81~\81\81\81\85\85\81\85\81~z~~z~~\81\81\85\85\85\85\81\85\81\81\81~z~zzzzztwzwzz~~~~~~wzwwtwwzzwwtppmfcfccXXURNNKGDDA6A==A==A=AADDGGADDDGKGKNNU´±¸¸»»»»»¸´¸´¸¸¸¸¸´±±­­­ªªª§££\9c\99\9c\9c\9c\99\99\99\96\99\99\9c\9c\9c\9c ££££§§§­­´´¸¸¸»¸¸¸¸´¸¸¸´´´´¸±­ª­­­­­­±±­­­­ªª­­´´¸¸¸¸¸±ª­±´´¸¸´¸¸´ª­­ª§§§§£§£§ªªª§§­±±¾¾¾»»¾¾¾ÂÂÅÅÉÉÌÌÏÓÖÓÓÏÏÏÏÏÏÓÓÌÏÏÌÏÏÉÉÉÉÅÂÅÅžÉÅÉÌÏÏÓÓÓÖÚÚÚÖÚÚÝÝÚÓÓÓÌÌÏÏÌÏÏÖÓÓÖÖÚÚÖÏÏÏÉÉÏÌÌÌÌÏÌÏÓÌÏÓÏÏÏÏÌÌÉÅÅÅ»»»»´´¸¸¸¸¸´´´´´´´¸´´¸»»¸¸¸´´´±¸´»»¾¾Â¾¾¾¾Â¾Â¾»¾¾»¸­­§ª§§ § §£§§§ª­­¸¸¾¾Â¾¸¾¾¸¸»¸¸¸»»»¾ÂÅÉÉÉɾ¾¾¸»¸¸¸¸»­±´´¸±´´´´­±­ªªªª§§§ªª­­´´´»¸»´¸¸¾»¸»»¸¸»»»»¸»´¸¸¸¸¸¸±´´´´´±±´±´ª´´¸­´±´±´´±´´´´£ª£  \9c\99\96\96\96\92\8f\8f\8b\8b\8b\81\88~\85\85\85\85\85~\85\81\85~w~wztmmwz~~wwtptRwtttpifii__cifimpimif_c\XURRNRNRNRNK
+
+ADG=GKKDDKNRUNUUXXNc\\_cRfmffppwpmiiifiifccfficfmfpittmtwwwzwwwzwwwzzzzzzzwtpmm\0m\0m\0\0cc\XXURNKGDAAAAADDGKNRUX\\_cffmc_fcfippptwz~\81~\81~~~~~~~~zzzzzzzzzzzzzzzz~z~zzzzzzzzw~wwwwwwwwwwwwwwwz~\81~\81\81\81\85\85\81\81\81zz~\81~\81~\81\85\85\85\85\85\85\81\81\81\81~zzwwwwwttwtwwzz~~zzwzwwtwzzzwwpppifccc_XURNKKGDA::66:66::==AADADDADDDGKGKNRU±´¸»»¾¾¸»´´¸¸´´¸»´¸±´­±ªªª§§  \9c\9c\9c\9c\9c\99\99\99\99\9c\9c   \9c  £££§§§ª­±´¸»»»´»¸¸¸´¸´´±´±´­ª£ªªª­ªª­±±±±±ª±´¸¸¸»»»¸¸´±±´´´¸¸¸¸¸±ªªª§§§££§ª§§§ªªªª­´´»¾»»»¾¾¾ÂÂÅÅÅÉÌÌÏÓÓÏÏÓÓÌÏÌÏÓÓÌÏÌÏÏÌÉÌÅÉÅÅÂÂÅÂÉÉÉÌÏÓÖÖÖÖÚÚÚÖÖÚÚÚÖÓÓÏÌÏÏÌÉÌÓÓÓÓÖÖÚÖÓÓÏÌÉÉÌÌÌÌÏÏÌÌÓÉÏÓÏÏÏÏÏÏÉÉÉɾ»¾¸´¸´¸¸¸¸´´¸´´¸±¸´´¸»»»¸¸´¸¸´¸¸»¾¾Â»¾Â¾Â¾¾¾¾¾¸­ª£ªªª£§ §£§££ª­±´»Â¾Â¾»¾¾»»¸´¸¸¸»»¾ÂÂÅÉÉɾ¾»»¸¸´¸¸±´´±´´´±±ª­­­§§ª§ª§ª\92ª­±±¸¸»¸»±´¸»»¸¾»¸»¸¸¸»¸¸¸¸´¸¸¸´´´´´¸´´±´±´ª±±´±±´±±±´­´´´´£§§£\9c\9c\99\96\96\96\8f\8f\8f\8b\8b\8b\81\88z\88\85\85\81\85\81\85~\88\81w\81z~pmmw~~~zwpptUwwwttmificcfmfmmpmmmi__\\XUUNRNNRRNK\0
+ADG:GGKAAKNRURUUUXRf_X__Ufmifttwttmmmimmiifimpimpttpwwzwzzw~wwzzzzz~~~~~~~ztpmm\0i\0i\0\0c_\XURNNGGDADADADDGKKRUX\\_cffmf_icfimpptww\81~~\85\81~~~~~~~zzz~zzzzzz~zz~zzzzz~zzzzzzzw\81wwwwwwwwwwzwwwwzz\81\81\81\81\85\85\85~\81\81~~\81\81\81~~\81\85\85\85\85\85\85\81\81\81~~wwwtttttppttwzzzzzzzzwwwwzwzwwpppicc__\XRRNGGDAA::663366:::==A=DAAAADGKKKRRX´´»»¾»¾¸»´´´¸¸¸¸»´´´´­­­ªª§£\9c    \9c\99\9c\9c\9c\9c\9c\9c  £  ££§£§§ª­±´´»¸»»¸¸¸»¸±´´±±´´±ª  §£§­§ªª­±±´´±´»»¸»¾¾¾¸¸¸´´´¸¸¸»¸¸´­ª§§§£§§£§ª§ªªª§§ª±¸´»¾»»¾¾»»Â¾ÅÅÉÉÌÉÏÓÏÏÓÏÏÏÏÌÏÖÏÌÌÌÏÌÏÌÏÅÌÅÉÂÅÅÅÉÉÌÏÏÓÖÖÖÖÚÚÖÓÓÖÖÖÓÏÏÏÌÌÏÉÌÌÏÏÏÓÓÓÖÖÓÏÏÌÉÉÌÌÌÉÌÏÌÌÏÌÏÏÏÏÏÏÌÌÉÉÉÅž»¾¸±¸¸´¸´¸¸´´´´´´´´¸¸»»»¸¸¸»¸¸¸¸¾¾¾Â¾Â»¾Â¾¾¾¸ª­§ª§§ §\9c££§§§ª­´±¸¾Â¾¾Â¾»»¸¸»¸¸»¾»Â¾ÂÉÅÉž»»»¸±¸¸´¸¸­±±´±´­±§ª§£ª§ªª­\8f­­±±¸»»¸»­¸»¾»¸»»»¸´¸¸¸¸¸¸´¸´»¸´¸´±´¸¸´´¸´±ª±§ª±±´±´­´ª´¸±±§§ª£\99\9cz\92\92\92\8f\92\8f\88\8f\8b\85\85z\85\85\88~\85\85\85~\88\85\81\85zzpmmz\81~~wwptwwwzzwwpmfiffipmmmmmimi__\\XXUUURRRURNNGDDD:GGKAAKRUURURXXNfc\c_Xfpiittwwwtpwpppptitptpppwwtzz~w~zz\81zzzz~~~~~~~~~~zwtmm\0i\0f\0\0c_XURRNKGDGAADAADDDGKNUX\\_cffmicffcfipptww~~\81\81\81~~\81~~~~zz~zz~zzz~zzz~zzzwzzwzwzzzzw\81wwwwwwwwwwwwwtww~\81~\81\81\81\85\81\81~~\81\81\81~~~\81\85\85\85\81\85\85\81\81\81\85\81zzttpppppmptptwz~zwzzzwwtwzwwwwtpmfcccc\XRRRKADAA666300636::==A=AAAAADGKKKURX´´¾¾¾¾»»»´´´¸»»»»¸´±´±±ª§§§   £   \9c \9c\9c\9c\9c\9c  £££§§§£§ªª­­´´¸»¾¾»¸¸¸´±´´´´±±­§\9c\9c\9c §ª§§­ª±±±±´¾¾¾»¾¾¾¾»»¸¸´¸¸¸¸»´´±±ª§££££§§§ªªª­§ª§­´¸´»»¾»¾»»¸¾¾ÅÅÉÉÌÌÏÓÓÌÏÏÓÓÏÏÏÓÓÏÌÌÌÌÌÌÏÉÉÂÉÂÅÂÅÉÌÏÏÏÓÓÖÖÓÚÖÖÏÓÓÓÏÏÏÌÏÌÌÏÉÌÉÏÏÏÏÓÏÓÖÏÏÌÉÌÉÉÌÌÅÌÏÌÌÌÌÏÌÏÌÏÏÌÌÌÌÉÅɾ¾¾»±¸¸´´¸´¸´´´´´¸¸¸¸¸»»»»¸¸»¸¸¸¸¾¾¾Â¾¾Â¾¾Â¾Â¾¸§ªª­§§ £  ££££ª±±±¸¾¾¾¾¾¾»»»¸¸¸»»»¾»Â»»ÅÅž»»»¸±¸»¸»¸±±­±±¸±´§ª§£ª§§ªª\92ª­±´¸»»¸¸±¸»»»»¸¸¸´´¸´´¸´¸´¸±¸¸¸´¸´´»¸´´´´±§´§ª±±±±±­´ª±¸±±§£§£\99\9cw\8f\8f\92\92\8f\8b\8b\8b\8b\85\81z\81\81\85z\85\85\81\81\85\88\85\85z~tppz~~ztwmtttz~zwwtmiifimpppmmpmimc_\\\\XXXRURUURRNGDD:GGKDAKNRUUUR\UUfcff__ipifptwzzwtztttzwwwzwtwwzzwz~\81z\81~~\81~~zz~~~~~~~~~~zwtmm\0f\0f\0\0c\UURNKKKDGAADADGGGGKNRU\\_cffmffcicffmptww~\81~\81~~~~~\81~~zzzzzzzzz~zz~~z~zzzwwwwwwwww\81wwwwwwwwwwwwwttw~\81\81\81~\81\85\81~~~~\85\85\81\81~\81\85\85\85\85\81\81\81\81\85\81~zwppppmpmmmpptwzzzz~~zzwttwwwwwtpmfcffc_XURNNAA==63300,33666:==AA=AA=DGGKNRUX±¸»»¾¾¾¸»¸´´´¸¸¾»¸¸±´­­ª§§£   £££    \9c\9c\9c   £ ££§§§ª§ª­±±´¸»¾Â¾»´»´´´´¸´­§ª£\9c\99  £§ª§­­­­­­¸Â¾¾Â¾¾»»¸»¸¸¸¸¸´­±­§£££§§§ªªª§ªªª­±¸¸¸»»¾»»¸¸¸»ÂÅÉÅÌÏÏÌÏÓÏÏÏÓÏÌÏÓÏÓÓÌÌÌÏÌÌÌÌÉÂÅÂÅÅÅÌÏÏÓÏÓÖÖÖÓÖÖÓÏÓÌÏÏÌÌÌÌÌÌÏÌÌÌÏÏÓÏÓÏÏÓÏÏÉÉÌÉÌÌÌÉÌÏÉÉÌÉÌÌÌÌÌÏÏÌÌÌÉÅž»¾´¸´±±¸´¸´´´¸´¸¸¸¸¸¸¸»¾»¸»»»¸»»¾Â¾¾ÂÅž¾Â¸ªª­ªª§     £££§­±±»¾¾¾Â»»¸»»¸´¸»»¾¾»¾»¸ÂÅÅÅž¾¾»¸´¸»»¸¸´´±´±´±´ªª§§ª§§ª§\92ª­´´¸»¸¸´´¸¸¸»»»»´±´´±´¸¸¸¸¸­´´´±¸¸´¸¸±´´´´£±£ª±±±­­ª±ª±´±±£ § \99 w\8f\8f\92\8f\92\8b\8f\8b\8b\85\85~\81~\81z\81\81\85\81\88\88\81\88~\81ttp~~~zttptpt~zwwtpmimimptttpptmimfc\\\\\\\UUUUUUUUKGK:KGKAAKNUXUXR\X_cfif_cmtiftwzz~zw~zww~zzz~zwzz~zwz\81\85~\81\81~\81~~~~~~~~~~~~~~zwtpm\0f\0c\0\0cXUUNRNKGDDADDDDGKKDKNNR\\_cffmcc_ifffimtwwz~~\85zzzzz\81~\81zzzzzzzzzzzzzz~zzwwwwwwwwwww~wwttwwwwwwtwtttw~~\81\81~\81\85~~\81~z\81\81\81\85\81\81\85\85\85\85\81\81~\81\85\85zztppmmmpmimpppwwzzz\81~zzwttwwwttppmifffccXURNKDA==60000)33366::=AA==AADKKNRUXX±´¸¸¾¾¾¸»´´´´´¸¾»»¸±±­ª§§§££££§£ £££  \9c\9c   £ §§ªªªªªª­­±´¸¾¾Â¾¸¸»´¸´¸¸±­££ \9c\9c  §£§§ªª­­ª­´¾¾¾Â¾¾¾»»¸¸¸»´´­­ª£§£§§§ªª­­­­­­±´¸´»»¾»»»»¸¸¾¾ÅÅÉÌÌÌÌÌÏÓÏÏÓÓÏÌÏÏÖÓÏÏÏÏÌÌÌÌÉÅÅÅÅÉÉÏÓÓÓÏÖÖÖÓÓÖÓÓÏÏÌÏÌÌÌÉÏÌÉÏÌÏÌÌÌÓÏÏÏÓÓÏÌÉÌÌÌÉÉÉÌÏÌÌÌÏÌÌÌÉÌÌÌÌÌÌÌÉÉÅž¾¸¸¸±±¸´´´´¸¸¸¸¸¸¸¸¸»»»»¸»¾»¸»»¾£Ì¾¾ÅÅž´­­ª§§£     £ £§­±´»¾Â¾¾»»¸¸¸´´´¸»»¾»»»»¾ÅÅÅž¾¾»¸¸»»»¸¸´´´¸±´­´­§§§§ª§ªª\96§ª±±¸»»»¸¸¸¸´»»¸¸­±±´­±»»´¸¸­¸¸´±´¸´¸¸±´¸±¸§­£ª±­±­ª§±ª­´±± \9c£ \9c\9ct\92\92\8f\8f\92\8f\8f\8b\8b\88\85\81\81z\85~\81~\85\85\8b\88\81\85\81\81wwp~~~zwtttmp~~wwtmmmmmptwtt\0ptmmmif_\_____XXXXXXXXXKX=NNK=AKRX\XXU_\cfipccfppifpz~~~~z~~zz~~z~z~z~~zz~~\85\88\81\81\85~\81~~~~~~~~~~~~~~zwtpm\0f\0c\0\0c\XXUUKGDDAAAADDGNNGGKRNXX_cffm__cficcfiptwz~~\85~zzz~\85z\81wwzzzzzzzzzzwzzzwwwwwwwwwwwwzwwtttttttwtttttw~~\81\81\81\81\85\81~~\81~\85\81\81\85~\81\85\85\85\81\81\85\81\85\85\81~wttpmimmmmmpppwwwzz\81~~zztwwttttpmpmiiifc\XUNGA==::3000,33366:6==A==AAGKNRUXXX­±´´»»¾»¸¸¸±´´»¾»»¸­±ª­ª§§£§§£££ £          ££ª­ªª­ª­­­±±»»»Â¾»¸¸´¸¸´´­ª £ \99\9c ££§§ªª§­­­­±»»¾ÂÅÂÅÅž»»¸»¸»´´±±§££§§§ªª­±­±±±±´´´´»»¾»»»»¸¸¾¾ÅÅÅÌÌÌÏÉÏÓÏÏÓÏÏÏÏÓÓÓÏÏÏÌÏÏÌÉÌÉÉÉÅÏÏÓÖÓÖÓÚÖÓÓÓÖÓÏÏÏÉÌÏÉÌÌÏÌÉÌÌÌÏÌÌÓÏÏÏÖÖÓÏÌÉÉÉÉÉÉÉÌÌÌÌÌÌÌÉÌÌÌÌÌÌÌÉÉÉÉž¾»»¸±´¸¸´´¸¸¸¸»¸»»¸¸»¸»»¸»»»»¸~Nc\9c¾¾¾ÅÅÅÅÅÅž´­­­§££\9c \9c   \9c£ª­´¸»¾¾¾¾»¸´¸´´´±­»»¾¾»¸¸´Åž»¾»»»»»»¸¸´´´´´±±­§§§§ª§ªªª£­´±¸¾¸¸»´´»¸¸¸¸¸­±´±­±»»´¸´±¸¸¸±´¸´¸´´±´±´ª­ ª±­±­­ª´ª­¸±±££  \9c p\96\8f\8b\92\92\8f\8f\8b\88\88\81~~~\81\81~~\85\85\88\88\81\81\81~zzpzz~wwwtpmmzztttpmmmptwwwt\0ttpppicc_cc__cXXX\X\\\\\\:RRKADK\\_\XX__cimttfctpitmz\81~~~~\81\81~z\81~zzz~~~~z~\81\81\85\88\81\81\88\81\85\81\81~~~~~~~~~~~~~wtpm\0f\0c\0\0c\\\XXNGDAAA=DAAGNRGDNNNXU\_ffmcc_if__cfmpwz~~\81\81~~~~\85\81\81zzzwwwwwzzzzwwzwwwwwwwwwwwwwzwwttttttttwptttwz~\81\81\81\81\85\85\81~\81\81\85\85\85\85\81~\85\85\81\81\85\85\81\81\81~~wwpppimimmmpmtttwzz~~~~ztwwtwttmmmpmmiif_\UNGA=:6:633003336:6::====AAGNRRUXXXªª±±¸»¾¾»¸¸´¸¸¾»»»¸ª´­ªª§££§£§££££  £        §ª­­ª­­­ª­­´¸¸»¾¾¾»¸¸¸¸´±ª§£££\9c\9c££§§§ª§§ª­­­­¸¸»¾ÅÅÉÅŸ¾¸¸»»±´±­§£ ££§ª§±±±´±´´´¸¸´¸¾¾¾»»¾¸»»ÂÂÅÅÉÏÌÌÉÌÏÏÏÏÌÏÏÌÓÓÏÏÏÌÏÏÏÌÌÌÉÉÅÏÓÓÖÖÖÖÖÚÚÓÓÓÓÖÓÌÏÌÌÌÅÉÉÌÉÌÌÌÌÌÏÏÏÏÏÏÓÖÓÏÏÉÅÉÉÉÉÉÌÌÌÌÏÌÌÌÌÌÉÌÌÏÌÉÉÌÌÉž¸»¸´´¸´¸´¸¸´¸»»¾»»¸»»»¸¸¸¸¸¸¸R\1fR\9c¾ÂÂÉÅÅÅÅÅ»±±±­ª££   \9c\9c  £ª±¸»¸»»¾»»´¸¸´±±´­»»»Â»»¸´Å¾¾¾¾¾¾¾»»¾»¸¸´´±´´±§­§§§§ª§§§ª§±´´´»¸´¸¸±¸»»¸´´±±±±ª±¸¸´¸´´¸¸¸±´´´¸¸¸´´´±ª­§­±­±±±­´±­»±´§§\9c \9c m\99\92\8b\92\8f\92\8f\8f\8b\8b\81t\81z\85\81~~\81\85\88\85~\81~\81wzzwz~zwwpmmmwwptpmiimptwwww\0wtppmicccccccf\X\\\______6UUNADU__\\\0Xcccmpwwicwpiziz\85~~zz\81\81~z~~wwz~\81~\81z\81\85\85\85\88~\85\88\85\85\81\81~~~~~~~~~~~~zztpm\0f\0c\0\0____\XUGGAA=AAAADKRDGKKRURX\ffmfc_fcc__cfiwz~\81\81\85\81\81\81\81\85\85\81~wwwwwwwwwwwtwwwwwwwwwwwwwwwwwwttttttttttpptwzz~\81\81\81\85\85\85\81\81\85\88\88\85\85\81~\85\81\81\81\85\81\85~~~~zttppmmmpmmpptttwww~\81~~~wzwwwtpiimmpmiii_XRNGDA:::6633033366::::=====DKRRXX\Xª­ª­±»¾»»»»»¸¸¾¾»»¸­´­ªª§§§§§§££    £     £££ª§­­ª­­­­ª±±´´»»»»¸´¸¸´±±§ª§ £  £§§§§ªªª§ª­ª­´´¸»ÅÅÉÉÅž»»»»»»±±­­ª§£££§­ª±´´´´´´´¸¸´´¾¾¾»¾»¸¾¾ÂÂÉÉÉÌÌÉÉÌÌÏÏÌÌÏÏÌÏÏÏÌÌÌÌÌÌÏÌÌÌÌÌÓÖÖÖÖÖÓÖÖÖÓÏÖÓÓÏÉÏÏÌÌÉÉÉÏÉÉÌÌÌÌÏÏÌÏÏÏÏÓÏÏÌÉÉÉÌÉÉÉÉÌÏÏÏÉÌÏÌÌÉÌÌÏÌÌÌÌÉÉÉÅ»¾»¸¸¸´¸¸»»´»¸¾¾¾¾´¾»¸¸¸´¸´¸¸w\1fw\9c¾ÂÂÅÅÅž­±±­§£§££  \9c£ £­´¸¾»»¾»¾»¸´´´´±´±¸»¾Â¾¾¸¸Â¾¾»¾¾»»»¾Â»¸¸´±±´´±§ª§§§ª§ª§ª­ª±´±´¸¸´´´´¸¾»»´¸´±±±ª±´´´´´´¸¸´´´´¸»¸¸¸´±ªª±ª­±­­±´±¸´¸¾´±ªª £\9c \9c\99\96\8f\92\8b\92\8f\8f\8f\88\85t\85w\85~~~\81\81\88\81\81\85z\81wz~zz~wwwpmiittpppiiimpttwtw\0wwtppmffffcccf_\\X\__cccc6UUNDD\c\__\0cffmmtzziftpi~iz\85\81~~~~\85zzzzzzw~~~\81~\85\88\88\85\85\81\88\88\85\85\85~~~zzzzzzzzz~~~tpi\0f\0_\\_____\XXD==:=A=DAKUAKGGNDDRXccmic_c_____ccz~\81\81\81\88\81\81\85\85\85\88\85~wwwwwttwwtttwwtttwwwwwwwtttwwwttttttttpppptwz~~\81\81\81\88\88\88\85\85\88\88\88\85\81\81~\81\81\81\85\81\85\85~~\81~wtpppmmmmmppppttwtwz\81\81\81~zzwwwtpffiimiiiic\URKAA==::633066636:6::=:::=AKRRXXXUªªª­±¾¾¾¾¾¾¾»¾Â»¸¸±±­§§§§ª§££§   £     £££££§ª­­­±­±­­±±´±¸»¸»´´¸´´±±ª­ª£§££§£§§§ªª§§ª­­­±´´»ÂÂÅÅÉÅÅ»»¸¸»»±­±­§§§£§£ª­±´´¸¸´¸´¸´¸´¾¾¾»¾¾»¾¾ÂÂÅÅÉÉÌÉÌÌÌÌÏÉÉÌÌÌÌÌÌÉÉÉÉÉÌÏÌÏÏÏÏÖÖÖÖÚÖÖÚÖÓÓÏÓÏÏÏÉÌÌÏÌÌÉÅÏÌÌÌÏÌÌÌÏÉÏÌÌÏÏÌÌÌÉÌÉÌÉÉÅÌÌÌÌÌÉÌÌÌÌÉÌÌÏÌÌÌÌÉÉÌÅž¾¾»»»¾¾»¾»»¾¾¾Â¾¸¾¾»¸´±´´´´UKc̾¾¾¾Åž±­­ªª£ª££ £  §£­¸»¾¾»¾¾¾¸¸´´´±­´´´»»Â»»»»¾Â¾¾»¾»»»»¾Â»¸¸¸­±±±­§§§§§§£§ªª­§±´´´¸¸±±±´»»¾»´´±±±±­´´¸´´¸´´¸¸´¸±´¸¸´»¸­­ª­­±±ª­´±´»¸»¾´­\8f§ £\9c \9c\99\96\92\92\8b\92\92\92\8f\8b\85t\85w\85~\81~~\81\88\81\81\81w~z~z~~~zzwpmiitpmmmiifimptwtw\0twwttpiicffcffc\\\__cfcff6XXNK__c__c\0fppttwzzmftpm\81i~\85~zz~~\81zwwzwwwz\81~\81\81\81\85\88\88\85\85\85\85\85\81\85zz~zzzzzzzz~~z~zpf\0c\0_\X__c_\\\XG:A::A=ADKR=KKDNAAG)__im_\\\\\_\__w\81\81\81\85\88\81~\81\85\88\88\81zttwtttptttttttttttttttttttptttttttttttttttttzz~~\85\85\88\8b\8b\88\88\88\8b\88\88\81\81~\81\85\85\85\81\81\85\81~\81~zwtptmmpppptpptpttww~\81~~z~zwtppfcfiifiifc\XUNADAA:::6636663666::=::::=GNUUUUUªª­­´¾Â¾Â¾Âž»´±±ªª§§ªªª§§£ ££      £££§££ª­ªª±­±±±­±±­´»´¸±´¸±´±±­­ª§§££££§££§ªª§ªªª­´´´»¾¾ÅÂÉÅÅ»¸¸¸¸¸±±­±ª§ª£§§§ª´´´¸¸¸¸¸¸´¸´»»¾¾¾Â¾¾¾ÂÅÅÅÉÅÌÅÌÉÌÉÌÉÉÉÉÉÉÅÂÅÉÉÅÅÌÏÏÏÓÏÓÖÚÚÚÚÖÖÖÓÏÓÌÓÏÌÌÌÌÏÏÏÌÌÉÏÌÌÏÌÌÌÉÌÉÌÉÉÌÌÉÌÌÉÉÉÉÉÉÅÉÌÏÌÏÌÏÏÌÌÌÌÌÌÌÌÏÌÌÉÌÉÉ»»¾Â¾¾¾Â¾¾»»¾»´´±±±±´Gft¾¾Â¾¾¾ÂžÅ¾´­­­§§ª££££££ª§±»¾¾Â»¾¾»¸´´±´´­´´´»»¾¾¾¾»Â¾»¸¾¸¾»¾¾¾»¸¸´±­­±­§§§§£§§§ª§ª£­±±±´¸´´´¸¸»Â¾¸´´´±´±¸´´´¸´´¸´´´¸´´´´´¸´ª­­±±±±ª­±±¸»»»»±ª\8fª££ £\9c\99\96\96\92\8f\96\92\92\92\8b\85p\85w\85~\85\81~\81\85\81\81\81z~~~~\81~~wztmiifpmmiififiimptpt\0wtwwwtmmciffff_\XX\cffffi6XXNNcccc_f\0ittwwwzzmi~p\85\85i~\85~w~\81~\81~ztzwwww\81\81\81\81\81\85\8b\8b\88\81\88\85\85~\81zzzzzzzwwwzz~~~~m_\ 3_\ 3\\U\__c\\XXK6=:====DGN:GNGK)%D%N\im_\\\\X\X\\z\81\85\81\88\88~\81~\81\88\88\85wpwtttpmttpppptppppppppttppmttttpppppptttwwwww~~\81\85\88\8b\8b\8b\8b\8b\88\8b\85\85\85\85\81\81\85\85\85\85~\81\81~~~wwwttpmmppttpttptwtzz~~\81~~~ztptffcifffifc\XXNDGDA=:=::666:6::6:::::6::GKRRURUªª­­¸¾ÂÅÂÅÅÅÂÅÅž¸´´ª§ª§­ªª§§£ ££\9c\9c\9c\9c\9c\9c££§§££§­ª­­±­­±±±­±±»¸´´±´±´±´±±­ªª£££££  £ªª§§ª­ª±´±»»¾Â¾Å¾»¸¸¸¸´±´±±ª§§§§£§ª±´´¸´¸¸¸¸¸¸´¸¸»»¾Â¾¾¾ÂÂÂÅÉÂÉÅÉÉÌÌÏÉÉÉÅÉÉÅÂÅÅÅÅÅÌÏÏÓÓÓÓÖÚÚÝÚÖÚÖÓÓÓÌÓÌÌÌÉÌÏÌÏÏÉÌÏÌÌÏÌÏÌÉÉÉÌÌÅÌÉÉÉÌÉÉÉÌÉÉÅÉÉÏÏÏÌÓÏÌÌÌÌÏÌÏÌÏÌÌÌÌÌÌÅž¾ÂÅÅÂÅÂÂÅÅÅž¾»»¸±´±´­­±´»Â»»Â¾»¾¾¾Â¾¸­±­ª§§££§§§§­ª´»¾Â¾¾»»¸¸´´´´±´´¸¾»¾¾¾¾¾¾¾¾¾»¸¾¸»»¾¾Â¾¸¸´´­ª±ªª£§§£§§ª§ª§§ª±­±´¸´´´´´¾¾¾»¸¸´´¸´¸±±±¸´´¸¸¸´¸¸´¸¸´¸¸§±­´´±±­±±´»¸»¾¸­§§ª£ £  \99\96\96\92\92\92\96\92\92\8b\81p\85z\85\81\81\81~\85\85\85\81\85~~\81~~~~~wwtmiifpiiifficfimpttw\0wptwzwppfiffff\_XX\cffifi3X\RRfcfccf_mwwzzw~~mm\81p\85\85\81~\85~i~\81~\81~~wztwww\81~\81\81\85\85\8b\8f\8b\85\85\88\85~~w~wz~~zttz~z~\81~\81pc\aX\a\XX____X\U\N3A=::::DGG=GNGK%\1f=)N\mpc_\_XX_UXU~\85\85\85\85\85z\81\81~\85\85\85t\18zptppXpppmppppmmpmmmippmmitppppppppppwwwtwwz~~\81\85\88\8b\8f\8b\8b\8b\88\88\88\85\88\85\85\85\88\85\88\88\81\81~\81~\81zwwwwtpptttttttppttwwz~~~~~~wtpcfciiffifc\XUNGGGDA:=:::::=:=:6:::666==DGNRRNU
\ No newline at end of file
diff --git a/src/MEDOP/res/testfiles/enceinte-axis-E500000.med b/src/MEDOP/res/testfiles/enceinte-axis-E500000.med
new file mode 100644 (file)
index 0000000..4de1f17
Binary files /dev/null and b/src/MEDOP/res/testfiles/enceinte-axis-E500000.med differ
diff --git a/src/MEDOP/res/testfiles/enceinte-axis-E600000.med b/src/MEDOP/res/testfiles/enceinte-axis-E600000.med
new file mode 100644 (file)
index 0000000..a7ff7ce
Binary files /dev/null and b/src/MEDOP/res/testfiles/enceinte-axis-E600000.med differ
diff --git a/src/MEDOP/res/testfiles/entaille.med b/src/MEDOP/res/testfiles/entaille.med
new file mode 100644 (file)
index 0000000..ad39752
Binary files /dev/null and b/src/MEDOP/res/testfiles/entaille.med differ
diff --git a/src/MEDOP/res/testfiles/fieldlena.med b/src/MEDOP/res/testfiles/fieldlena.med
new file mode 100644 (file)
index 0000000..b1966e0
Binary files /dev/null and b/src/MEDOP/res/testfiles/fieldlena.med differ
diff --git a/src/MEDOP/res/testfiles/irm_test1.png b/src/MEDOP/res/testfiles/irm_test1.png
new file mode 100644 (file)
index 0000000..5d20c7e
Binary files /dev/null and b/src/MEDOP/res/testfiles/irm_test1.png differ
diff --git a/src/MEDOP/res/testfiles/irm_test2.png b/src/MEDOP/res/testfiles/irm_test2.png
new file mode 100644 (file)
index 0000000..a44375d
Binary files /dev/null and b/src/MEDOP/res/testfiles/irm_test2.png differ
diff --git a/src/MEDOP/res/testfiles/padderoutput.med b/src/MEDOP/res/testfiles/padderoutput.med
new file mode 100644 (file)
index 0000000..a9f16db
Binary files /dev/null and b/src/MEDOP/res/testfiles/padderoutput.med differ
diff --git a/src/MEDOP/res/testfiles/parametric_01.med b/src/MEDOP/res/testfiles/parametric_01.med
new file mode 100644 (file)
index 0000000..68eefe1
Binary files /dev/null and b/src/MEDOP/res/testfiles/parametric_01.med differ
diff --git a/src/MEDOP/res/testfiles/parametric_02.med b/src/MEDOP/res/testfiles/parametric_02.med
new file mode 100644 (file)
index 0000000..a6babea
Binary files /dev/null and b/src/MEDOP/res/testfiles/parametric_02.med differ
diff --git a/src/MEDOP/res/testfiles/smallmesh_constfield.med b/src/MEDOP/res/testfiles/smallmesh_constfield.med
new file mode 100644 (file)
index 0000000..644bac3
Binary files /dev/null and b/src/MEDOP/res/testfiles/smallmesh_constfield.med differ
diff --git a/src/MEDOP/res/testfiles/smallmesh_varfield.med b/src/MEDOP/res/testfiles/smallmesh_varfield.med
new file mode 100644 (file)
index 0000000..10aca34
Binary files /dev/null and b/src/MEDOP/res/testfiles/smallmesh_varfield.med differ
diff --git a/src/MEDOP/res/testfiles/testfield.med b/src/MEDOP/res/testfiles/testfield.med
new file mode 100644 (file)
index 0000000..bd62c8f
Binary files /dev/null and b/src/MEDOP/res/testfiles/testfield.med differ
diff --git a/src/MEDOP/res/testfiles/timeseries.med b/src/MEDOP/res/testfiles/timeseries.med
new file mode 100644 (file)
index 0000000..3226304
Binary files /dev/null and b/src/MEDOP/res/testfiles/timeseries.med differ
diff --git a/src/MEDOP/res/workspace_clean.png b/src/MEDOP/res/workspace_clean.png
new file mode 100644 (file)
index 0000000..f3229af
Binary files /dev/null and b/src/MEDOP/res/workspace_clean.png differ
diff --git a/src/MEDOP/res/workspace_save.png b/src/MEDOP/res/workspace_save.png
new file mode 100644 (file)
index 0000000..ec1a964
Binary files /dev/null and b/src/MEDOP/res/workspace_save.png differ
diff --git a/src/MEDOP/tui/CMakeLists.txt b/src/MEDOP/tui/CMakeLists.txt
new file mode 100644 (file)
index 0000000..6e3726a
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+ADD_SUBDIRECTORY(xmedpy)
diff --git a/src/MEDOP/tui/Makefile.am b/src/MEDOP/tui/Makefile.am
new file mode 100644 (file)
index 0000000..6a82dd8
--- /dev/null
@@ -0,0 +1,23 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# This folder contains the packages for the Text User Interfaces:
+# - xmedpy: python library for TUI (python package installed with name xmed)
+
+SUBDIRS= xmedpy
diff --git a/src/MEDOP/tui/xmedpy/CMakeLists.txt b/src/MEDOP/tui/xmedpy/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d2e4afc
--- /dev/null
@@ -0,0 +1,45 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
+
+SET(PYFILES_TO_INSTALL
+  __init__.py
+  fieldproxy.py
+  fieldtools.py
+  fieldguide.py
+  cmdtools.py
+# For the control of PARAVIS and VISU
+  driver_pvis.py
+  driver_visu.py
+# For the medop.sh executable program
+  medop.py
+# Modules that are required for test or tutorial purposes only:
+  properties.py
+  )
+
+INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomepythondir}/xmed)
+
+SET(TEST_SCRIPTS_XMED
+  tests/test_xmed_fieldOperations.py
+  tests/test_xmed_uiEventListener.py
+  tests/test_xmed_visualisation.py
+  )
+
+INSTALL(FILES ${TEST_SCRIPTS_XMED} PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${MED_salomebin_BINS}/xmed)
\ No newline at end of file
diff --git a/src/MEDOP/tui/xmedpy/Makefile.am b/src/MEDOP/tui/xmedpy/Makefile.am
new file mode 100644 (file)
index 0000000..9422169
--- /dev/null
@@ -0,0 +1,59 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+# Author : Guillaume Boulant (EDF) 
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+mypkgpythondir = $(salomepythondir)/xmed
+
+# Modules that are strictly required for the fields operations in
+# SALOME:
+mainpkg = \
+       __init__.py \
+       fieldproxy.py \
+       fieldtools.py \
+       fieldguide.py \
+       cmdtools.py
+
+# For the control of PARAVIS and VISU
+mainpkg+= \
+       driver_pvis.py \
+       driver_visu.py
+
+# For the medop.sh executable program
+mainpkg+= \
+       medop.py
+
+# Modules that are required for test or tutorial purposes only:
+testpkg = \
+       properties.py
+
+mypkgpython_PYTHON = \
+       $(mainpkg) \
+       $(testpkg)
+
+mybindir = $(salomescriptdir)/med
+testscripts=\
+       tests/test_xmed_fieldOperations.py \
+       tests/test_xmed_uiEventListener.py \
+       tests/test_xmed_visualisation.py
+
+dist_mybin_SCRIPTS=\
+       $(testscripts)
diff --git a/src/MEDOP/tui/xmedpy/__init__.py b/src/MEDOP/tui/xmedpy/__init__.py
new file mode 100644 (file)
index 0000000..cb03cd4
--- /dev/null
@@ -0,0 +1,188 @@
+# -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+#
+# ===============================================================
+# This functions are to be used to notify the USER of some events
+# arising on the field operation. It is NOT to be used for logging
+# purpose
+# ===============================================================
+#
+def inf(msg):
+    print "INF: "+str(msg)
+
+def wrn(msg):
+    print "WRN: "+str(msg)
+
+def err(msg):
+    print "ERR: "+str(msg)
+
+def dbg(msg):
+    print "DBG: "+str(msg)
+
+#
+# ===============================================================
+# Initializing some CORBA stuff
+# ===============================================================
+#
+
+# Remember SALOME definitions:
+# ---------------------------
+#
+# componentName = Name of the component (a library lib<componentName>Engine
+# should exist with a C function named <componentName>Engine_factory, and the
+# component should be registered in the catalog MEDCatalog.xml).
+#
+# corbaModule = Name of the corba module that contains the IDL
+# specifications of the component (name as defined in the idl file)
+#
+# containerType = Name of the container factory
+#
+componentName = "MEDOPFactory"
+corbaModule   = "MEDOP"
+containerType = "FactoryServer"
+
+import salome
+if salome.lcc is None:
+    salome.salome_init()
+__import__(corbaModule)
+factory = salome.lcc.FindOrLoadComponent(containerType,componentName)
+# The factory is not the main CORBA component of the SALOME module MED
+# (i.e. the engine associated to the active study), but the CORBA
+# entry point for MED fields operations (i.e. a CORBA component
+# reachable throught the LifeCycleCORBA). This entry point is used to
+# get the other SALOME CORBA components required for MED field
+# operations, in particular the dataManager and the calculator
+
+#
+# ===============================================================
+# Initializing the MED components required for MED fields operations
+# ===============================================================
+#
+dataManager = factory.getDataManager()
+calculator  = factory.getCalculator()
+
+#
+# ===============================================================
+# Initializing the notification system (events from components to GUI)
+# ===============================================================
+#
+
+# The MEDEventListener is created in the GUI (WorkspaceController) and
+# a reference is transmitted to the python context throw its IOR. The
+# transmission consists in initializing the variable below from the
+# GUI (who knows the IOR) when importing xmed in the python console
+# (see WorkspaceController)
+eventListener = None
+import SALOME
+def connectEventListener():
+    global eventListener
+    try:
+        eventListenerIOR = dataManager.getEventListenerIOR()
+        eventListener = salome.orb.string_to_object(eventListenerIOR)
+    except SALOME.SALOME_Exception, e:
+        wrn("The event listener is not running yet")
+        msg ="When you'll have loaded the MED GUI, "
+        msg+="call explicitely \"xmed.connectEventListener()\" "
+        msg+="to connect the GUI event listener"
+        inf(msg)
+        eventListener = None
+    except Exception, e:
+        err("An unknown error occurs. Check if this ior=%s is valid."%eventListenerIOR)
+
+def eventListenerIsRunning():
+    global eventListener
+    if eventListener is not None:
+        return True
+    
+    # Try to define the event listener
+    connectEventListener()
+    if eventListener is None:
+        # it definitly does not work
+        wrn("the GUI is not loaded yet and will not be notified of the modification")
+        return False
+
+    return True
+
+# One can try to connect to the eventListener, but it will fail if the
+# MED GUI is not loaded. That does not matter, because the event
+# listener is used only to notify the GUI of some event. If the GUI is
+# not loaded, there is no use of notification.
+connectEventListener()
+
+#
+# ===============================================================
+# Automatic import of some elements of the package
+# ===============================================================
+#
+from fieldtools import load, get, put, dup, ls, la, save, view
+from fieldguide import doc
+from cmdtools import cls, wipe
+
+#
+# ===============================================================
+# Some helper functions to deal with the fields and meshes
+# ===============================================================
+#
+import MEDCoupling
+__mapTypeOfFieldLabel={
+    MEDCoupling.ON_CELLS:"ON_CELLS",
+    MEDCoupling.ON_NODES:"ON_NODES",
+    MEDCoupling.ON_GAUSS_PT:"ON_GAUSS_PT",
+    MEDCoupling.ON_GAUSS_NE:"ON_GAUSS_NE"}
+
+def typeOfFieldLabel(typeOfField):
+    # A field name could identify several MEDCoupling fields, that
+    # differ by their spatial discretization on the mesh (values on
+    # cells, values on nodes, ...). This spatial discretization is
+    # specified (at least) by the TypeOfField that is an integer value
+    # in this list:
+    # 0 = ON_CELLS
+    # 1 = ON_NODES
+    # 2 = ON_GAUSS_PT
+    # 3 = ON_GAUSS_NE
+    try:
+        return __mapTypeOfFieldLabel[typeOfField]
+    except IndexError, e:
+        return "UNCKNOWN"
+
+#-----
+# This function is to be called from the working python console to
+# specify the globals() dictionnary (used in fieldtools for stat analysis)
+#
+# >>> xmed.setConsoleGlobals(globals())
+#
+import fieldtools
+def setConsoleGlobals(pyConsoleGlobals):
+    fieldtools.pyConsoleGlobals = pyConsoleGlobals
+
+#
+# ===================================================================
+# unit test functions
+# ===================================================================
+#
+def TEST_typeOfFieldLabel():
+    print typeOfFieldLabel(0)
+    print typeOfFieldLabel(5)
+
+# ===================================================================
+if __name__ == "__main__":
+    TEST_typeOfFieldLabel()
diff --git a/src/MEDOP/tui/xmedpy/cmdtools.py b/src/MEDOP/tui/xmedpy/cmdtools.py
new file mode 100644 (file)
index 0000000..4361ecd
--- /dev/null
@@ -0,0 +1,60 @@
+#  -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+#
+# ===================================================================
+# The functions of this module must be imported as global functions in
+# the SALOME python console. It provides the console context with
+# general purpose python commands.
+# ===================================================================
+#
+# add something to clear the screen
+class Cls(object):
+    """
+    This class can be used to create a command that clear the shell
+    screen running this python interpreter.
+    """
+    def __repr__(self):
+        import os
+        os.system('cls' if os.name == 'nt' else 'clear')
+        return ''
+
+cls = Cls()
+
+class Prompt:
+    """
+    This class can be used to create a special prompt
+    """
+    def __str__(self):
+        import os
+        return 'medop> '
+
+import sys
+sys.ps1 = Prompt()
+del sys
+del Prompt
+
+class Wipe(object):
+    def __repr__(self):
+        return '>>>\n'*40
+
+wipe = Wipe()
+
diff --git a/src/MEDOP/tui/xmedpy/driver_pvis.py b/src/MEDOP/tui/xmedpy/driver_pvis.py
new file mode 100644 (file)
index 0000000..b70e266
--- /dev/null
@@ -0,0 +1,85 @@
+#  -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+import MEDCoupling
+__mapTypeOfField2ParavisLabel={
+    MEDCoupling.ON_CELLS:"OnCell",
+    MEDCoupling.ON_NODES:"OnPoint",
+    MEDCoupling.ON_GAUSS_PT:"ON_GAUSS_PT",
+    MEDCoupling.ON_GAUSS_NE:"ON_GAUSS_NE"}
+
+def pvis_typeOfFieldLabel(typeOfField):
+    # A field name could identify several MEDCoupling fields, that
+    # differ by their spatial discretization on the mesh (values on
+    # cells, values on nodes, ...). This spatial discretization is
+    # specified (at least) by the TypeOfField that is an integer value
+    # in this list:
+    # 0 = ON_CELLS = OnCell
+    # 1 = ON_NODES = OnPoint
+    # 2 = ON_GAUSS_PT
+    # 3 = ON_GAUSS_NE
+    try:
+        return __mapTypeOfField2ParavisLabel[typeOfField]
+    except IndexError, e:
+        return "UNCKNOWN"
+
+def pvis_scalarmap(filename,meshname,fieldname,typeOfField,iteration=-1):
+    """
+    This is the minimalist function to render a scalar map on a field
+    load from a med file using the PARAVIS module.
+    """
+    import pvsimple
+    
+    reader = pvsimple.MEDReader( FileName=filename )
+    # For fiels defined on cells, it seems to be required to specify
+    # the type of fields
+    if typeOfField == MEDCoupling.ON_CELLS:
+        reader.Groups = ["GROUP/%s/%s/No_Group"%(meshname,pvis_typeOfFieldLabel(typeOfField))]
+
+    representation = pvsimple.GetDisplayProperties(reader)
+    representation.ColorArrayName = fieldname
+
+    lookupTable = pvsimple.GetLookupTableForArray(
+        fieldname, 1, NanColor=[0.25, 0.0, 0.0],
+        RGBPoints=[25.0, 0.23, 0.30, 0.754, 245.0, 0.71, 0.016, 0.15],
+        VectorMode='Magnitude', ColorSpace='Diverging', ScalarRangeInitialized=1.0 )
+    representation.LookupTable = lookupTable
+
+    pvsimple.Render()
+
+    return True
+
+
+def TEST_scalarmap():
+    import os
+    from xmed import properties
+    properties.setup(properties.testdata_02) # test with nodes
+    #properties.setup(properties.testdata_03) # test with cells
+    pvis_scalarmap(properties.testFilePath,
+                   properties.testMeshName,
+                   properties.testFieldName,
+                   properties.testTypeOfField,
+                   properties.testFieldIt)
+    
+if __name__ == "__main__":
+    TEST_scalarmap()
+
+
diff --git a/src/MEDOP/tui/xmedpy/driver_visu.py b/src/MEDOP/tui/xmedpy/driver_visu.py
new file mode 100644 (file)
index 0000000..60c6181
--- /dev/null
@@ -0,0 +1,120 @@
+#  -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+import VISU
+import MEDCoupling
+__mapMedType2VisuType={
+    MEDCoupling.ON_CELLS:VISU.CELL,
+    MEDCoupling.ON_NODES:VISU.NODE,
+    MEDCoupling.ON_GAUSS_PT:VISU.TGAUSSPOINTS
+    }
+
+def visu_typeOfField(medTypeOfField):
+    """
+    This function gives the visu type corresponding to the specified
+    med type.
+    """
+    try:
+        return __mapMedType2VisuType[medTypeOfField]
+    except IndexError, e:
+        return "UNCKNOWN"
+
+
+import salome
+from libSALOME_Swig import SALOMEGUI_Swig
+
+def visu_scalarmap(filename,meshname,fieldname,typeOfField,iteration=-1):
+    """
+    This is the minimalist function to render a scalar map on a field
+    load from a med file using the VISU module.
+    """
+
+    # We first have to prepare a pointer to the VISU component engine.
+    visuComp = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+    visuComp.SetCurrentStudy(salome.myStudy)
+
+    visumed = visuComp.CreateResult(filename)
+    visumed.SetBuildGroups(True)
+    visumed.SetBuildFields(True, True)
+    visumed.Build(False, True)
+    if not visumed.IsDone() :
+        print "ERR: can't create a representation of med data"
+        return False
+    
+    visuComp.RenameEntityInStudy(visumed, meshname, VISU.NODE, 'onNodes')
+    visuComp.RenameEntityInStudy(visumed, meshname, VISU.CELL, 'onCells')
+
+    visuType = visu_typeOfField(typeOfField)
+    scalarmap = visuComp.ScalarMapOnField(visumed,
+                                          meshname,
+                                          visuType,
+                                          fieldname,
+                                          iteration)
+    if scalarmap is None:
+        print "ERR: can't create a scalar map"
+        return False
+    
+    # __GBO__ maybe it could be appreciated to select the component to
+    # display. In this interface, the modulus of the field is
+    # considered.
+    component  = 1
+    scalarmap.SetScalarMode(component)
+    scalarmap.SetSourceRange()
+    scalarmap.SetScaling(VISU.LINEAR)
+    scalarmap.SetTitle(fieldname)
+    
+    # This final part is to automatically display the scalar map in a
+    # VISU viewer.
+    sg = SALOMEGUI_Swig()
+    sg.updateObjBrowser(1)
+    
+    # Display the scalar map in the viewer
+    myViewManager = visuComp.GetViewManager()
+    myView = myViewManager.Create3DView()
+    myView.Maximize()
+    myView.Display(scalarmap);
+    myView.SetFocalPoint([0,0,0]);
+    myView.FitAll();
+
+    return True
+
+
+def TEST_scalarmap():
+    import os
+    from xmed import properties
+    #properties.setup(properties.testdata_02) # test with nodes
+    properties.setup(properties.testdata_03) # test with cells
+
+    # __GBO__: WARN due to a specific feature of VISU, when only one
+    # field timestamps exists in the med file, we have to specify an
+    # iteration number of 1, whatever the iteration value is in the
+    # med file.
+    #iteration = properties.testFieldIt
+    iteration = 1
+    
+    visu_scalarmap(properties.testFilePath,
+                   properties.testMeshName,
+                   properties.testFieldName,
+                   properties.testTypeOfField,
+                   iteration)
+    
+if __name__ == "__main__":
+    TEST_scalarmap()
diff --git a/src/MEDOP/tui/xmedpy/fieldguide.py b/src/MEDOP/tui/xmedpy/fieldguide.py
new file mode 100644 (file)
index 0000000..bda5a60
--- /dev/null
@@ -0,0 +1,67 @@
+#  -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+#
+# ===================================================================
+# Th module must be imported as global in the SALOME python console to
+# provide the user with documentation on fields operations.
+# ===================================================================
+#
+
+class UserGuide:
+    """
+    In this python console, you manipulate variables that identifies
+    field objects. These variables are proxy objects towards the real
+    MED fields stored as MEDCoupling instances in the SALOME
+    container.
+
+    What you can do with this proxy object:
+
+    - you can manipulate this object in algebric operations (+,-,*,/):
+    >>> add = f1 + f2
+    >>> dif = f1 - f2
+    >>> mul = f1 * f2
+    >>> div = f1 / f2 (an exception is raised in case of division by 0)
+    >>> square = pow(f1, 2)
+
+    - the operande could be a scalar numerical value:
+    >>> offset  = f1 + 4.2
+    >>> scaling = 3.8 * f1
+    
+    - any combination of this operations can be done on a single instruction:
+    >>> x = f1 + pow(f2)
+    >>> y = f1 + x - f2
+
+    - you can request some helper functions on this object:
+    >>> doc      : print the user documentation for field operations
+    >>> print f  : print the main properties of the field f (name, values, ...)
+    >>> f.dup()  : create a dublicate of the field f
+    >>> dup(f)   : do the same thing
+    >>> f.visu() : display the modulus of this field using VISU post-processor.    
+    """
+
+    def __repr__(self):
+        return UserGuide.__doc__
+
+    def __call__(self, command):
+        print "help on command %s"%command
+
+doc=UserGuide()
diff --git a/src/MEDOP/tui/xmedpy/fieldproxy.py b/src/MEDOP/tui/xmedpy/fieldproxy.py
new file mode 100644 (file)
index 0000000..93933d4
--- /dev/null
@@ -0,0 +1,422 @@
+#  -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+import xmed
+import MEDOP
+import SALOME
+
+def newFieldProxy(fieldHandlerId):
+    '''
+    This creates a new FieldProxy wrapping the field whose
+    fieldHandlerId is passed in argument. The function requests the
+    xmedDataManager to get the fieldHandler from its id.
+    '''
+    fieldHandler = xmed.dataManager.getFieldHandler(fieldHandlerId)
+    return FieldProxy(fieldHandler)
+
+# This define the map between attributes of a FieldProxy and those of
+# the associated FieldHandler
+PROXY_ATTRIBUTES_MAP = {"id":None,
+                        "fieldseriesId":None,
+                        "fieldname":"name",
+                        "meshname":None,
+                        "meshid":None,
+                        "type":None,
+                        "iteration":"iteration",
+                        "order":"order",
+                        "source":"source"}
+
+class FieldProxy:
+    """
+    This object is a proxy to manipulate a remote MEDCoupling field
+    from within the SALOME python interpreter. Remote means that the
+    MEDCoupling field is in the SALOME container and not in the
+    client. See UserGuide class for detailed documentation of what can
+    be done with a field proxy.
+    """
+    def __init__( self, fieldHandler ):
+        """
+        This defines the wrapping on the field specified by its
+        fieldHandler id.
+        """
+        self.__fieldHandler = fieldHandler
+        self.__restriction  = None
+        print self.__repr__()
+
+    def __getattr__(self, name ):
+        """
+        This method realizes the read proxy pattern toward the field
+        handler.
+        """
+        # WRN: Note that the modification of this function can lead to
+        # coercion problem. Modify this function with extrem care.
+        return getattr( self.__fieldHandler, name )
+
+    def __setattr__(self, name, value):
+        """
+        This method realizes the write proxy pattern toward the field
+        handler. Only some attributes are writable. The list is
+        specified in the PROXY_ATTRIBUTES_MAP table.
+        """
+        if name in PROXY_ATTRIBUTES_MAP.keys():
+            if PROXY_ATTRIBUTES_MAP[name] is not None:
+                xmed.wrn("The modification of this attribute can't be done that way")
+                msg="Use f.update(%s=\"%s\") instead to ensure synchronisation of data."
+                xmed.inf(msg%(PROXY_ATTRIBUTES_MAP[name],value))
+            else:
+                xmed.err("The modification of the attribute %s is not possible"%name)
+        else:
+            self.__dict__[name] = value
+        
+    def __repr__(self):
+        """
+        Return a string containing a printable representation of this
+        object (what is displayed when typing the variable name and
+        carriage return).
+        """
+        # We need first to update the handler because some data can
+        # have changed (the meshid for example in case of change of
+        # underlying mesh).
+        # __GBO__ : TODO check the performance
+        self.__fieldHandler = xmed.dataManager.getFieldHandler(self.id)
+        text = "field name (id)\t = %s (%s)\n"%(self.fieldname, self.id)
+        text+= "mesh name (id) \t = %s (%s)\n"%(self.meshname,self.meshid)
+        text+= "discretization \t = %s\n"%xmed.typeOfFieldLabel(self.type)
+        text+= "(iter, order)  \t = (%s,%s)\n"%(str(self.iteration),str(self.order))
+        text+= "data source    \t = %s"%self.source
+        return text
+
+    def __str__(self):
+        """
+        This is what is displayed when you type 'print myField'. Note
+        that this function prints the values of the field and then you
+        must be aware that a huge amount of data could be
+        displayed. Moreover, it means that this operation triggers the
+        loading of the associated MEDCouplingFied data in the SALOME
+        container.
+        """
+        text = xmed.dataManager.getFieldRepresentation(self.id)
+        return text
+
+    def __add__(self, operande):
+        """
+        This makes the addition of two fields or the addition of a
+        scalar to a field. It depends weither the operande is a
+        FieldProxy or a simple scalar numerical value.
+        """
+        # The xmed calculator could raise exceptions coming from
+        # MEDCoupling. Note that the fieldproxy instances are used
+        # from within the python console, and for ergonomic reason, we
+        # choose to not raise the possible exceptions to the console
+        # by a clear message. Keep this in mind for unit test. You
+        # have to test the return value, which should not be
+        # null. This principle is applyed for all operations.
+        try:
+            if isinstance(operande, FieldProxy):
+                # The operande is an other field
+                xmed.inf("Addition of  %s and %s"%(self.fieldname, operande.fieldname))
+                rfieldHandler = xmed.calculator.add(self.__fieldHandler, operande.__fieldHandler)
+            else:
+                # The operande is a scalar numerical value that must be
+                # considered as an offset in a linear transformation
+                factor = 1
+                offset = operande
+                xmed.inf("Application of the offset %s to %s" % (offset, self.fieldname))
+                rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+        except SALOME.SALOME_Exception, ex:
+            xmed.err(ex.details.text)
+            return None
+
+        return FieldProxy(rfieldHandler)
+    
+    def __radd__(self, operande):
+        """
+        The user typed 'operande+self', we replace by 'self+operande'
+        to automatically activate the __add__ method of fieldpoxy.
+        """
+        return self+operande
+
+    def __iadd__(self, operande):
+        """
+        These methods implements the augmented arithmetic assignments (+=)
+        """
+        xmed.wrn("NOT IMPLEMENTED YET")
+
+    def __sub__(self,operande):
+        """
+        This makes the substraction of two fields or the substraction
+        of a scalar to a field. It depends weither the operande is a
+        FieldProxy or a simple scalar numerical value.
+        """
+        try:
+            if isinstance(operande, FieldProxy):
+                # The operande is an other field
+                xmed.inf("Substraction of %s by %s"%(self.fieldname, operande.fieldname))
+                rfieldHandler = xmed.calculator.sub(self.__fieldHandler, operande.__fieldHandler)
+            else:
+                # The operande is a scalar numerical value that must be
+                # considered as an offset in a linear transformation
+                factor = 1
+                offset = -operande
+                xmed.inf("Application of the offset %s to %s" % (offset, self.fieldname))
+                rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+        except SALOME.SALOME_Exception, ex:
+            xmed.err(ex.details.text)
+            return None
+
+        return FieldProxy(rfieldHandler)
+        
+    def __rsub__(self, operande):
+        """
+        The user typed 'operande-self' where operande is not a field
+        proxy. This function process the situation.
+        """
+        # The operande is a numerical value (because otherwise, the
+        # "sub" method would have been called instead). We may apply
+        # the command '(self-operande)*(-1)' to activate the __sub__
+        # method of fieldpoxy.
+        #
+        #return (self-operande)*(-1)
+        #
+        # We prefer to apply a linear transformation because it can be
+        # done in one single request to the med calculator.
+
+        factor = -1
+        offset = operande
+        xmed.inf("Linear transformation %s%s*%s" % (offset, factor, self.fieldname))
+        try:
+            rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+        except SALOME.SALOME_Exception, ex:
+            xmed.err(ex.details.text)
+            return None
+        
+        return FieldProxy(rfieldHandler)
+        
+    def __mul__(self, operande):
+        """
+        This makes the multiplication of two fields or the
+        multiplication of a scalar to a field. It depends weither the
+        operande is a FieldProxy or a simple scalar numerical value.
+        """
+        try:
+            if isinstance(operande, FieldProxy):
+                # The operande is an other field
+                xmed.inf("Multiplication of %s by %s"%(self.fieldname, operande.fieldname))
+                rfieldHandler = xmed.calculator.mul(self.__fieldHandler, operande.__fieldHandler)
+            else:
+                # The operande is a scalar numerical value that must be
+                # considered as an offset in a linear transformation
+                factor = operande
+                offset = 0
+                xmed.inf("Scaling %s by factor %s" % (self.fieldname, factor))
+                rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+        except SALOME.SALOME_Exception, ex:
+            xmed.err(ex.details.text)
+            return None
+
+        return FieldProxy(rfieldHandler)
+
+    def __rmul__(self, operande):
+        """
+        The user typed 'operande*self', we want to execute
+        'self*operande' to activate the __mul__ method of fieldpoxy.
+        """
+        return self*operande
+
+    def __div__(self, operande):
+        """
+        This makes the division of two fields or the division of field
+        by a scalar. It depends weither the operande is a FieldProxy
+        or a simple scalar numerical value.
+        """
+        try:
+            if isinstance(operande, FieldProxy):
+                # The operande is an other field
+                xmed.inf("Division of %s by %s"%(self.fieldname, operande.fieldname))
+                rfieldHandler = xmed.calculator.div(self.__fieldHandler, operande.__fieldHandler)
+            else:
+                # The operande is a scalar numerical value that must be
+                # considered as an offset in a linear transformation
+                factor = 1./operande
+                offset = 0
+                xmed.inf("Scaling %s by factor 1/%s" % (self.fieldname, operande))
+                rfieldHandler = xmed.calculator.lin(self.__fieldHandler, factor, offset)
+        except SALOME.SALOME_Exception, ex:
+            xmed.err(ex.details.text)
+            return None
+
+        return FieldProxy(rfieldHandler)
+
+    def __rdiv__(self, operande):
+        """
+        The user typed 'operande/self', we want to execute for each
+        value of the field the operation 'operande/value'.
+        """
+        xmed.inf("Division of %s by %s" % (operande, self.fieldname))
+        function  = "%s/u"%operande
+        nbResComp = MEDOP.NBCOMP_DEFAULT
+        try:
+            rfieldHandler = xmed.calculator.fct(self.__fieldHandler,function,nbResComp)
+        except SALOME.SALOME_Exception, ex:
+            xmed.err(ex.details.text)
+            return None
+
+        return FieldProxy(rfieldHandler)
+
+    def __pow__(self, power):
+        """
+        This compute the power of the field to the specified value.
+        """
+        function  = "abs(u)^%s"%power
+        return self.ope(function,duplicate=True)
+
+    def __abs__(self):
+        """
+        This compute the absolute value of the field. We use here 
+        """
+        return self.ope(function="abs(u)",duplicate=True)
+
+    def __neg__(self):
+        """
+        This computes the negative of this field (when you type -f)
+        """
+        return -1*self
+
+    def dup(self):
+        """
+        This creates a duplicate of the field. The whole data are
+        duplicated.
+        """
+        xmed.inf("Duplication of %s"%self.fieldname)
+        try:
+            rfieldHandler = xmed.calculator.dup(self.__fieldHandler)
+        except SALOME.SALOME_Exception, ex:
+            xmed.err(ex.details.text)
+            return None
+
+        return FieldProxy(rfieldHandler)
+
+    def ope(self, function, duplicate=True):
+        """
+        This can be used to apply a transformation function to this
+        field. The transformation is specified using a literal
+        equation given as a string where u stands for the field.
+        """
+        # _GBO_ TO BE IMPLEMENTED: the case where duplicate = False
+        # must modify the object itself and not create a new field
+        xmed.inf("Operate the equation \"%s\" to %s"%(function,self.fieldname))
+        try:
+            rfieldHandler = xmed.calculator.fct(self.__fieldHandler,
+                                                function,
+                                                MEDOP.NBCOMP_DEFAULT)
+        except SALOME.SALOME_Exception, ex:
+            xmed.err(ex.details.text)
+            return None
+
+        return FieldProxy(rfieldHandler)
+        
+
+    def __call__(self, restriction=None):
+        """
+        This could be used to return a fieldproxy binded on the same
+        fieldHandler than self, but with options that restrict the
+        usage to a domain specified by the given arguments (restricted
+        to a component, to a part of the mesh, ...).
+        """
+        xmed.wrn("Not implemented yet. Return the field itself")
+        self.__restriction = restriction
+        return self
+
+    def update(self,name=None,iteration=None,order=None,source=None):
+        """
+        This function can be used to update the meta-data associated
+        to this field. It can modify the name, the iteration, the
+        order and the source.
+        """
+        if name is None:
+            name = self.fieldname
+        if iteration is None:
+            iteration = self.iteration
+        if order is None:
+            order = self.order
+        if source is None:
+            source = self.source
+            
+        xmed.dataManager.updateFieldMetadata(self.id,name,iteration,order,source)
+        self.__fieldHandler.fieldname = name
+        self.__fieldHandler.iteration = iteration
+        self.__fieldHandler.order     = order
+        self.__fieldHandler.source    = source
+        # WARN: Note that you have to update directly the fieldHandler
+        # object because of the presence of the method __setattr__
+        # that make the proxy to this update method
+
+        # Finally, we have to notify the GUI for update of field prestations
+        #self.__notifyGui_update()
+        notifyGui_update(self.id)
+
+        # Print for visual control
+        print self.__repr__()
+            
+#
+# ===================================================================
+# Functions for events notification
+# ===================================================================
+#
+# Note that these functions are not part of the class FieldProxy so
+# that they could be used in another context than the FieldProxy instances
+import MEDOP
+
+def __notifyGui(type, fieldId):
+    medEvent = MEDOP.MedEvent(type, fieldId)
+    
+    if not xmed.eventListenerIsRunning(): return
+    
+    # Notify the GUI of the update event
+    xmed.eventListener.processMedEvent(medEvent)
+    
+
+def notifyGui_update(fieldId):
+    """
+    This function must be used to notify the GUI that the field
+    meta-data have changed so it could update the gui
+    presentations of this field.
+    """
+    __notifyGui(MEDOP.EVENT_UPDATE_FIELD,fieldId)
+
+def notifyGui_add(fieldId):
+    __notifyGui(MEDOP.EVENT_ADDNEW_FIELD,fieldId)
+  
+#
+# ===================================================================
+# use case functions
+# ===================================================================
+#
+    
+# ===================================================================
+if __name__ == "__main__":
+    # See test_medoperation.py
+    pass
+
+
+
+
+
diff --git a/src/MEDOP/tui/xmedpy/fieldtools.py b/src/MEDOP/tui/xmedpy/fieldtools.py
new file mode 100644 (file)
index 0000000..dbfcad7
--- /dev/null
@@ -0,0 +1,216 @@
+#  -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+#
+# ===================================================================
+# The functions of this module must be imported as global functions in
+# the SALOME python console. It provides the console context with Tool
+# functions to manipulate field throw there fieldproxy.
+# ===================================================================
+#
+
+import xmed
+from xmed.fieldproxy import FieldProxy, newFieldProxy
+    
+# ===================================================================
+# Operations on fields
+
+def dup(aFieldProxy):
+    """
+    This function returns a duplicate of the specified field.
+    It's equivalent to the call '>>> copy = f.dup()'.
+    """
+    try:
+        clone = aFieldProxy.dup()
+    except Exception:
+        print "ERR: the argument can't be duplicated as a field object"
+        return None
+    return clone
+
+# ===================================================================
+# Get list a field with information using the commands ls and/or la
+
+# IMPORTANT NOTE:
+# the pyConsoleGlobals variable should holds the globals() dictionnary of
+# the python console context
+pyConsoleGlobals=None
+
+def status(local=True,remote=False):
+    """
+    This function return the status of the medop context, i.e. the
+    list of fields defined in this python session.
+    """
+    status=""
+    if local is True:
+        dvars = pyConsoleGlobals
+        if dvars is None:
+            xmed.wrn("The stat function required the specification of the python context")
+            xmed.inf("Type this command \"import xmed; xmed.setConsoleGlobals(globals())")
+        if remote is True:
+            status="========= Fields used in the current context ===\n"
+        for varkey in dvars.keys():
+            var = dvars[varkey]
+            if isinstance(var, FieldProxy):
+                status+="%s \t(id=%s, name=%s)\n"%(varkey,var.id,var.fieldname)
+
+    if remote is True:
+        if local is True:
+            status+="\n========= Fields available in the data manager ===\n"
+        fieldHandlerList = xmed.dataManager.getFieldHandlerList()
+        for fieldHandler in fieldHandlerList:
+            status+="id=%s\tname\t= %s\n\tmesh\t= %s\n\t(it,dt)\t= (%s,%s)\n\tsource\t= %s\n"%(
+                fieldHandler.id,
+                fieldHandler.fieldname,
+                fieldHandler.meshname,
+                fieldHandler.iteration,
+                fieldHandler.order,
+                fieldHandler.source)
+            status+="---------\n"
+
+        if len(fieldHandlerList) > 0:
+            status+="(use 'f=get(id)' to get a field in the current context)"
+    
+    return status
+
+# For simpler typing, one can create a python command for status
+# (avoid to type "print status()")
+class ListFields(object):
+    """
+    A stat object displays the status of the med operating context, i.e. the
+    list of fields defined in this python session.
+    """
+    def __init__(self,all=False):
+        self.__local  = True
+        self.__remote = all
+        # all = True means that the local metadata (fieldproxy) and the
+        # remote metadata on the engine (MEDCouplingFieldDouble) are
+        # displayed by the stat command. Otherwise, only the local
+        # metadata are displayed.
+        
+    def __repr__(self):
+        return status(self.__local, self.__remote)
+
+# Creating the commands list (ls) and list all (la)
+ls=ListFields(all=False)
+la=ListFields(all=True)
+
+# ===================================================================
+# Field Data Management
+from xmed import properties
+filepath  = properties.testFilePath
+
+def load(medFileName=filepath):
+    """
+    This function indicates that we want to use the fields from the
+    specified med file. The fields meta-data are loaded in the engine
+    part of the module. To get a fieldproxy on a field, call the get 
+    function with the id of the required field. To display the whole
+    list of fields loaded in the engine, type 'ls' (la verbose).
+    """
+    xmed.dataManager.addDatasource(filepath)
+    print status(local=False,remote=True)
+    
+def get(fieldHandlerId):
+    """
+    This return a field proxy on the field identified by the specified
+    field handler id.
+    """
+    return newFieldProxy(fieldHandlerId)
+
+from xmed.fieldproxy import notifyGui_add
+def put(aFieldProxy):
+    """
+    This function puts a reference to this field in the GUI data
+    model. When a field is referenced in the GUI data model, then it
+    belongs to the workspace. When the workspace is saved, all the
+    field that belongs to the workspace are saved.
+    """
+    xmed.dataManager.markAsPersistent(aFieldProxy.id, True)
+    notifyGui_add(aFieldProxy.id)
+
+import SALOME
+def save(filename):
+    """
+    Dump your job in a med file. Only the fields marked as persistent
+    are saved in the specified file.
+    """
+    try:
+        xmed.dataManager.savePersistentFields(filename)
+    except SALOME.SALOME_Exception, ex:
+        xmed.err(ex.details.text)
+
+# ===================================================================
+# Field Data visualization
+VIEWER_VISU    = "VISU"
+VIEWER_PARAVIS = "PARAVIS"
+VIEWER_DEFAULT = VIEWER_VISU
+
+VIEWER_TMP_FILE = "/tmp/medop_viewer.med"
+
+def view_using_paravis(aFieldProxy):
+    # __GBO__ TO BE IMPROVED: we used a tmp file in this first step of
+    # development, but we should used at last a MEDCoupling corba
+    # object (see how to use the stuff in PARAVIS/src/Plugins)
+    xmed.dataManager.saveFields(VIEWER_TMP_FILE, [aFieldProxy.id])
+    
+    from xmed.driver_pvis import pvis_scalarmap
+    pvis_scalarmap(VIEWER_TMP_FILE,
+                   aFieldProxy.meshname,
+                   aFieldProxy.fieldname,
+                   aFieldProxy.type,
+                   aFieldProxy.iteration)
+
+def view_using_visu(aFieldProxy):
+    # __GBO__ TO BE IMPROVED: we used a tmp file in this first step of
+    # development, but we should used at last a MEDCoupling corba
+    # object (see how to use the stuff in PARAVIS/src/Plugins)
+    xmed.dataManager.saveFields(VIEWER_TMP_FILE, [aFieldProxy.id])
+
+    # __GBO__: WARN due to a specific feature of VISU, when only one
+    # field timestamps exists in the med file, we have to specify an
+    # iteration number of 1, whatever the iteration value is in the
+    # med file.
+    iteration = 1 # __GBO__ for bug VISU
+    # instead of:
+    # iteration = aFieldProxy.iteration
+
+    from xmed.driver_visu import visu_scalarmap
+    result = visu_scalarmap(VIEWER_TMP_FILE,
+                            aFieldProxy.meshname,
+                            aFieldProxy.fieldname,
+                            aFieldProxy.type,
+                            iteration)
+    if result is False:
+        xmed.err("the field can't be displayed")
+    
+def view(aFieldProxy, using=VIEWER_DEFAULT):
+    """
+    This displays a 3D view of the field using VISU or PARAVIS,
+    depending on the configuration. This view is for quick visual
+    control of a field and is not intended to be parametrizable. For
+    custom display, you should import the fields in VISU or PARAVIS
+    and continue the job in one of this SALOME module.
+    """
+    if using == VIEWER_PARAVIS:
+        view_using_paravis(aFieldProxy)
+    else:
+        view_using_visu(aFieldProxy)
+    
diff --git a/src/MEDOP/tui/xmedpy/medop.py b/src/MEDOP/tui/xmedpy/medop.py
new file mode 100644 (file)
index 0000000..baf8d18
--- /dev/null
@@ -0,0 +1,37 @@
+# -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+#
+# ===================================================================
+# medop.py is a tools to initialize a python console outside of the
+# GUI for field operations. A salome session must be running
+# first. For example:
+# $ ./runAppli -t
+# $ ./runSession
+# $ python -i path/to/medop.py
+# ===================================================================
+#
+
+import xmed
+# Set the globals dictionnary so that the fields tools work properly.
+xmed.setConsoleGlobals(globals())
+# Import the tools required for field operations
+from xmed import load, get, put, dup, ls, la, save, view, doc, wipe
diff --git a/src/MEDOP/tui/xmedpy/properties.py b/src/MEDOP/tui/xmedpy/properties.py
new file mode 100644 (file)
index 0000000..ef92df3
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+# This file defines some properties for test purposes
+
+import os
+
+try:
+    MED_ROOT_DIR=os.environ["MED_ROOT_DIR"]
+except KeyError, e:
+    raise RuntimeError("MED_ROOT_DIR should be defined to load the test data")
+
+RESDIR=os.path.join(MED_ROOT_DIR,"share","salome","resources","med","medop_testfiles")
+
+def testdata_01():
+    testFileName = "testfield.med"
+    testMeshName = "Mesh"
+    testFieldName= "testfield1"
+    testFieldIt  = -1
+    testFieldDt  = -1
+    testTypeOfField = 0 # On cells
+    return testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt
+
+def testdata_02():
+    testFileName = "smallmesh_varfield.med"
+    testMeshName = "My2DMesh"
+    testFieldName= "testfield2"
+    testFieldIt  = 1
+    testFieldDt  = 1
+    testTypeOfField = 1 # On nodes
+    return testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt
+
+def testdata_03():
+    testFileName = "fieldlena.med"
+    testMeshName = "lenamesh"
+    testFieldName= "lenafield"
+    testFieldIt  = 3
+    testFieldDt  = 0
+    testTypeOfField = 0 # On cells
+    return testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt
+
+# Default values
+testdata=testdata_02
+testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt = testdata()
+testFilePath = os.path.join(RESDIR,testFileName)
+
+# Setup test values
+def setup(testdata=testdata_02):
+    global testFileName, testMeshName, testFieldName
+    global testFieldIt, testFieldDt, testFilePath, testTypeOfField
+    testFileName, testMeshName, testFieldName, testTypeOfField, testFieldIt, testFieldDt = testdata()
+    testFilePath = os.path.join(RESDIR,testFileName)
+
+def display():
+    """
+    Displays the properties values defined in this script.
+    """
+    print 60*"=" + " Properties values - START"
+    print "MED_ROOT_DIR = ",MED_ROOT_DIR
+    print "RESDIR       = ",RESDIR
+    print "testFileName = ",testFileName
+    print "testFilePath = ",testFilePath
+    print 60*"=" + " Properties values - END"
+
+#display()
+
+def getFilePath(filename):
+    """
+    Returns the absolute path for a given file base name. The base
+    name must match with a file contained in the test files directory.
+    """
+    filepath = os.path.join(RESDIR,filename)
+    if not os.path.exists(filepath):
+        raise RuntimeError("The file %s does not exists"%filepath)
+    return filepath
diff --git a/src/MEDOP/tui/xmedpy/tests/test_xmed_fieldOperations.py b/src/MEDOP/tui/xmedpy/tests/test_xmed_fieldOperations.py
new file mode 100644 (file)
index 0000000..a6dd3aa
--- /dev/null
@@ -0,0 +1,215 @@
+#!/usr/bin/env python
+#  -*- coding: iso-8859-1 -*-
+#
+# This file is a set of basic use case to test (from the python
+# context) the functions developped in MED modules for the field
+# operations.
+#
+# (gboulant - 16/6/2011)
+#
+import xmed
+from xmed import properties
+from xmed import fieldproxy
+from xmed.fieldproxy import FieldProxy
+#from xmed.fieldtools import dup, stat, get, save
+#from xmed.fieldguide import doc
+
+# Don't forget to set the globals dictionnary for the fields tools to
+# work properly
+xmed.setConsoleGlobals(globals())
+
+# Load some test data in the MedDataManager
+filepath  = properties.testFilePath
+xmed.dataManager.addDatasource(filepath)
+fieldHandlerList = xmed.dataManager.getFieldHandlerList()
+
+def setup():
+    """
+    This function defines a set of field variable for quick tests in
+    the python console. You just have to execute the function to get
+    the variables defined in the global context.
+    """
+    fh1=fieldHandlerList[0]
+    fh2=fieldHandlerList[1]
+    f1 = FieldProxy(fh1)
+    f2 = FieldProxy(fh2)
+    return fh1, fh2, f1, f2
+
+# Setup for quick tests in the python console
+fh1, fh2, f1, f2 = setup()
+
+def TEST_addition():
+    fieldHandler0 = fieldHandlerList[0]
+    fieldHandler1 = fieldHandlerList[1]
+
+    # The addition can be done using field handler directly
+    addFieldHandler = xmed.calculator.add(fieldHandler0, fieldHandler1)
+    print addFieldHandler
+    
+    # Or with a field proxy that ease the writing of operations
+    fieldProxy0 = FieldProxy(fieldHandler0)
+    fieldProxy1 = FieldProxy(fieldHandler1)
+    
+    res = fieldProxy0 + fieldProxy1
+    if res is None: return False
+
+    return True
+
+def TEST_arithmetics():
+    fieldProxy0 = FieldProxy(fieldHandlerList[0])
+    fieldProxy1 = FieldProxy(fieldHandlerList[1])
+
+    # Standard operations where operandes are fields
+    res = fieldProxy0 + fieldProxy1
+    if res is None: return False
+    res = fieldProxy0 - fieldProxy1
+    if res is None: return False
+    res = fieldProxy0 * fieldProxy1
+    if res is None: return False
+    res = fieldProxy0 / fieldProxy1
+
+    # Standard operations with scalar operandes
+    res = fieldProxy0 + 3.4
+    if res is None: return False
+    res = 3.4 + fieldProxy0
+    if res is None: return False
+    res = fieldProxy0 - 3.4
+    if res is None: return False
+    res = 3.4 - fieldProxy0
+    if res is None: return False
+    res = fieldProxy0 * 3.4
+    if res is None: return False
+    res = 3.4 * fieldProxy0
+    if res is None: return False
+    res = fieldProxy0 / 3.4
+    if res is None: return False
+    res = 3.4 / fieldProxy0
+    if res is None: return False
+
+    return True
+
+def TEST_unary_operations():
+    fieldProxy0 = FieldProxy(fieldHandlerList[0])
+
+    res = fieldProxy0.dup()
+    if res is None: return False
+    res = xmed.dup(fieldProxy0)
+    if res is None: return False
+    res = pow(fieldProxy0,2)
+    if res is None: return False
+
+    return True
+
+def TEST_composition():
+    # In this test, we combine operandes that are supposed
+    # to be compatible. We expect that no error occur.
+    fieldProxy0 = FieldProxy(fieldHandlerList[0])
+    fieldProxy1 = FieldProxy(fieldHandlerList[1])
+
+    res = pow(fieldProxy0,2) + fieldProxy1
+    if res is None: return False
+
+    return True
+    
+def TEST_litteral_equation():
+    fieldProxy0 = FieldProxy(fieldHandlerList[0])
+    res = fieldProxy0.ope("abs(u)^2")
+    if res is None: return False
+    return True
+
+def TEST_use_restriction():
+    fieldProxy0 = FieldProxy(fieldHandlerList[0])
+    res = fieldProxy0("c=1;g='toto'")
+    if res is None: return False
+    return True
+
+def TEST_modification_of_attributes():
+    fieldProxy0 = FieldProxy(fieldHandlerList[0])
+    id_ref = fieldProxy0.id
+    fieldname_ref = fieldProxy0.fieldname
+    meshname_ref = fieldProxy0.meshname
+
+    #
+    # This operations are not allowed, or not that way
+    #
+    # This should print that it is not allowed:
+    fieldProxy0.id = id_ref+3
+    if fieldProxy0.id != id_ref:
+        print "ERR: the id should be %d (%d found)"%(id_ref,fieldProxy0.id)
+        return False
+    # This should print that it must be done using the command update
+    fieldProxy0.fieldname = fieldname_ref+"toto"
+    if fieldProxy0.fieldname != fieldname_ref:
+        print "ERR: the fieldname should be %s (%s found)"%(fieldname_ref,fieldProxy0.fieldname)
+        return False
+    # This should print that it is not allowed:
+    fieldProxy0.meshname = meshname_ref+"titi"
+    if fieldProxy0.meshname != meshname_ref:
+        print "ERR: the meshname should be %s (%s found)"%(meshname_ref,fieldProxy0.meshname)
+        return False
+
+    return True
+
+def TEST_update_metadata():
+    fieldProxyRef = FieldProxy(fieldHandlerList[0])
+    id = fieldProxyRef.id
+
+    name_ref = "toto"
+    fieldProxyRef.update(name=name_ref)
+
+    fieldProxyRes = xmed.get(id)
+    name_res = fieldProxyRes.fieldname
+    if name_res != name_ref:
+        print "ERR: the fieldname should be %s (%s found)"%(name_ref,name_res)
+        return False
+    return True
+
+#
+# =============================================================
+# Unit tests
+# =============================================================
+#
+import unittest
+from salome.kernel import pyunittester
+class MyTestSuite(unittest.TestCase):
+    def test_addition(self):
+        result = pyunittester.execAndConvertExceptionToBoolean(TEST_addition)
+        self.assertTrue(result)
+
+    def test_arithmetics(self):
+        result = pyunittester.execAndConvertExceptionToBoolean(TEST_arithmetics)
+        self.assertTrue(result)
+
+    def test_unary_operations(self):
+        result = pyunittester.execAndConvertExceptionToBoolean(TEST_unary_operations)
+        self.assertTrue(result)
+
+    def test_composition(self):
+        result = pyunittester.execAndConvertExceptionToBoolean(TEST_composition)
+        self.assertTrue(result)
+
+    def test_litteral_equation(self):
+        result = pyunittester.execAndConvertExceptionToBoolean(TEST_litteral_equation)
+        self.assertTrue(result)
+
+    def test_modification_of_attributes(self):
+        self.assertTrue(TEST_modification_of_attributes())
+
+    def test_update_metadata(self):
+        self.assertTrue(TEST_update_metadata())
+
+def myunittests():
+    pyunittester.run(MyTestSuite)
+
+def myusecases():
+    TEST_addition()
+    #TEST_arithmetics()
+    #TEST_unary_operations()
+    #TEST_update_metadata()
+    #TEST_composition()
+    
+if __name__ == "__main__":
+    #myusecases()
+    myunittests()
+    pass
+
diff --git a/src/MEDOP/tui/xmedpy/tests/test_xmed_uiEventListener.py b/src/MEDOP/tui/xmedpy/tests/test_xmed_uiEventListener.py
new file mode 100644 (file)
index 0000000..d341b49
--- /dev/null
@@ -0,0 +1,66 @@
+# -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2011  CEA/DEN, EDF R&D, OPEN CASCADE
+#
+#  This library is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU Lesser General Public
+#  License as published by the Free Software Foundation; either
+#  version 2.1 of the License.
+#
+#  This library is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  Lesser General Public License for more details.
+#
+#  You should have received a copy of the GNU Lesser General Public
+#  License along with this library; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Author : Guillaume Boulant (EDF) 
+
+# This script can be used to test the event listener. Note that the
+# event listener is a CORBA object created inside the XMED GUI and
+# that it could be reached if and only if the XMED GUI is loaded
+# first.
+#
+# Then two tests are defined:
+# - First you can try to import and use this script in the python
+#   console while the XMED GUI is NOT loaded. Then you will check that
+#   the script detects that the event listener is not available.
+# - Second you can try to import this script AFTER having load the
+#   XMED GUI. Then the test will be completed.
+#
+
+import xmed
+xmed.connectEventListener()
+
+if xmed.eventListener is None:
+    raise RuntimeError("The test must stop because the event listener is not defined")
+
+import MEDOP
+
+# We can first try to retrieve the IOR using the data manager (just
+# for internal test because it's not required in the use cases)
+print xmed.dataManager.getEventListenerIOR()
+print xmed.dataManager.getEventListenerIOR()
+print xmed.dataManager.getEventListenerIOR()
+# Make it several time to check the memory releases.
+
+# We can then test the standard use case of the event listener
+fieldHandler = MEDOP.FieldHandler(id = 0,
+                                  fieldname = "testfield",
+                                  meshname  = "testmesh",
+                                  type      = 0,
+                                  iteration = 0,
+                                  order     = 0,
+                                  source    = "test//:test_medEventListener.py")
+
+medEvent = MEDOP.MedEvent(type    = MEDOP.EVENT_UPDATE_FIELD,
+                          fieldid = fieldHandler.id)
+
+print fieldHandler
+print medEvent
+
+xmed.eventListener.processMedEvent(medEvent)
+print "Test completed"
diff --git a/src/MEDOP/tui/xmedpy/tests/test_xmed_visualisation.py b/src/MEDOP/tui/xmedpy/tests/test_xmed_visualisation.py
new file mode 100644 (file)
index 0000000..a16d025
--- /dev/null
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+#  -*- coding: iso-8859-1 -*-
+#
+# This file is a set of basic use case to test (from the python
+# context) the functions developped in XMED and MED modules for the
+# visualization of fields using VISU or PARAVIS.
+#
+# (gboulant - 6/7/2011)
+#
+
+import xmed
+from xmed import properties
+from xmed.fieldproxy import FieldProxy
+
+# Load some test data in the MedDataManager
+filepath  = properties.testFilePath
+fieldHandlerList = xmed.dataManager.addFieldsFromFile(filepath)
+
+def setup():
+    """
+    This function defines a set of field variable for quick tests in
+    the python console. You just have to execute the function to get
+    the variables defined in the global context.
+    """
+    fh1=fieldHandlerList[0]
+    fh2=fieldHandlerList[1]
+    f1 = FieldProxy(fh1)
+    f2 = FieldProxy(fh2)
+    return fh1, fh2, f1, f2
+
+# Setup for quick tests in the python console
+fh1, fh2, f1, f2 = setup()
+
+def TEST_driver_visu():
+    from xmed import fieldtools
+    fieldtools.view_using_visu(f1)
+
+if __name__ == "__main__":
+    TEST_driver_visu()
index c82e559be12bbcede4a3e6393b71e5079c19f8af..726e797800b7b95634acc39b97f1de4d1effd3a0 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-ADD_SUBDIRECTORY(Test)
+IF(CPPUNIT_IS_OK)
+  ADD_SUBDIRECTORY(Test)
+ENDIF(CPPUNIT_IS_OK)
 
 INCLUDE_DIRECTORIES(
   ${PARMETIS_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${SCOTCH_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${LIBXML_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
   ${MPI_INCLUDE_DIRS}
+  ${PTHREADS_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDLoader
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
@@ -69,58 +71,59 @@ SET(medpartitionercpp_SOURCES
   MEDPARTITIONER_SkyLineArray.cxx
   )
 
-SET(medpartitionercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS}")
-SET(medpartitionercpp_LDFLAGS medloader ${LIBXML_LIBS})
-
-IF(MED_ENABLE_SCOTCH)
-  SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ScotchGraph.cxx)
-  SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_ScotchGraph.hxx)
-  SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
-  SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${SCOTCH_LIBS})
-ENDIF(MED_ENABLE_SCOTCH)
-
-IF(MPI_IS_OK)
-  IF(MED_ENABLE_PARMETIS)
-    SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ParMetisGraph.cxx
-      MEDPARTITIONER_UtilsPara.cxx
-      MEDPARTITIONER_JointFinder.cxx
-      )
-    SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_JointFinder.hxx MEDPARTITIONER_MetisGraph.hxx)
-    SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
-    SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${PARMETIS_LIBS} ${MPI_LIBS})
-  ELSE(MED_ENABLE_PARMETIS)
-    SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES}
-      MEDPARTITIONER_UtilsPara.cxx
-      MEDPARTITIONER_JointFinder.cxx
-      )
-    SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${MPI_DEFINITIONS}")
-    SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${MPI_LIBS})
-  ENDIF(MED_ENABLE_PARMETIS)
-ELSE(MPI_IS_OK)
+SET(medpartitionercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${LIBXML_DEFINITIONS} ${MPI_DEFINITIONS}")
+SET(medpartitionercpp_LDFLAGS
+  ${MED3_LIBS_C_ONLY}
+  ${HDF5_LIBS}
+  ${STDLIB}
+  ${LIBXML_LIBS}
+  ${MPI_LIBS}
+  interpkernel
+  medcoupling
+  medloader
+)
+IF(MED_ENABLE_PARMETIS)
+  SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)
+  SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ParMetisGraph.cxx)
+  SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
+  SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${PARMETIS_LIBS})
+ELSE(MED_ENABLE_PARMETIS)  
   IF(MED_ENABLE_METIS)
+    SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)  
     SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_MetisGraph.cxx)
-    SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)
     SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${METIS_DEFINITIONS}")
     SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${METIS_LIBS})
   ENDIF(MED_ENABLE_METIS)
-ENDIF(MPI_IS_OK)
-
-
+  IF(MED_ENABLE_SCOTCH)
+    SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_ScotchGraph.hxx)
+    SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ScotchGraph.cxx)
+    SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
+    SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${SCOTCH_LIBS})
+  ENDIF(MED_ENABLE_SCOTCH)    
+ENDIF(MED_ENABLE_PARMETIS)  
+  
 IF(MPI_IS_OK)
+  SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES}
+    MEDPARTITIONER_UtilsPara.cxx
+    MEDPARTITIONER_JointFinder.cxx
+  )
+ENDIF(MPI_IS_OK)                         
+  
+ADD_LIBRARY(medpartitionercpp SHARED ${medpartitionercpp_SOURCES})
+SET_TARGET_PROPERTIES(medpartitionercpp PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS} ${medpartitionercpp_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medpartitionercpp ${medpartitionercpp_LDFLAGS} ${PLATFORM_LIBS} ${PTHREAD_LIBS})
+INSTALL(TARGETS medpartitionercpp DESTINATION ${MED_salomelib_LIBS})
+  
+IF(MED_ENABLE_PARMETIS)
   ADD_EXECUTABLE(medpartitioner_para medpartitioner_para.cxx)
   SET_TARGET_PROPERTIES(medpartitioner_para PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(medpartitioner_para medpartitionercpp)
+  TARGET_LINK_LIBRARIES(medpartitioner_para medpartitionercpp ${medpartitionercpp_LDFLAGS})
   INSTALL(TARGETS medpartitioner_para DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
+ELSE(MED_ENABLE_PARMETIS)
   ADD_EXECUTABLE(medpartitioner medpartitioner.cxx)
-  SET_TARGET_PROPERTIES(medpartitioner PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(medpartitioner medpartitionercpp)
+  SET_TARGET_PROPERTIES(medpartitioner PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS} ${medpartitionercpp_DEFINITIONS}")
+  TARGET_LINK_LIBRARIES(medpartitioner medpartitionercpp ${medpartitionercpp_LDFLAGS})
   INSTALL(TARGETS medpartitioner DESTINATION ${MED_salomebin_BINS})
-ENDIF(MPI_IS_OK)
-
-ADD_LIBRARY(medpartitionercpp SHARED ${medpartitionercpp_SOURCES})
-SET_TARGET_PROPERTIES(medpartitionercpp PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medpartitionercpp ${medpartitionercpp_LDFLAGS})
-INSTALL(TARGETS medpartitionercpp DESTINATION ${MED_salomelib_LIBS})
+ENDIF(MED_ENABLE_PARMETIS)
 
 INSTALL(FILES ${medpartitionercpp_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
index 87310b46a9fe7deeef7d35db94e4a18146271320..3af09ff4c4d5836c6a7f7a1e92bbd76e9dbdd0d4 100755 (executable)
@@ -21,7 +21,7 @@
 #define __MEDPARTITIONER_HXX__
 
 #ifdef WIN32
-# if defined MEDPARTITIONER_EXPORTS || defined medpartitioner_EXPORTS
+# if defined MEDPARTITIONERCPP_EXPORTS || defined medpartitionercpp_EXPORTS
 #  define MEDPARTITIONER_EXPORT __declspec( dllexport )
 # else
 #  define MEDPARTITIONER_EXPORT __declspec( dllimport )
index e4594107bba3bd6ed7498b8ebecf5d66b77bbdf6..ee2bc2143d209fd5311c44d9825dee8cae0f4577 100644 (file)
@@ -21,7 +21,7 @@ INCLUDE_DIRECTORIES(
   ${PARMETIS_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${SCOTCH_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIRS}
+  ${CPPUNIT_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${LIBXML_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
@@ -46,7 +46,7 @@ SET(MEDPARTITIONERTest_SOURCES
   MEDPARTITIONERTest.cxx
   )
 
-SET(MEDPARTITIONERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
+SET(MEDPARTITIONERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 SET(MEDPARTITIONERTest_LDFLAGS medpartitionercpp ${CPPUNIT_LIBS})
 
 IF(MED_ENABLE_SCOTCH)
index d6a25c29f91081503d59aed7d827ea1042d84a7e..6f4e730b0dda36f77fe8bffeab77d81f625d5046 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-ADD_SUBDIRECTORY(Test)
-
+IF(CPPUNIT_IS_OK)
+  ADD_SUBDIRECTORY(Test)
+ENDIF(CPPUNIT_IS_OK)
+  
 INCLUDE_DIRECTORIES(
   ${PARMETIS_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
@@ -74,8 +76,8 @@ SET(medsplittercpp_SOURCES
   MEDSPLITTER_JointExchangeData.cxx
   )
 
-SET(medsplittercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS}")
-SET(medsplittercpp_LDFLAGS medmem ${LIBXML_LIBS})
+SET(medsplittercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${MPI_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+SET(medsplittercpp_LDFLAGS medmem ${LIBXML_LIBS} interpkernel ${MPI_LIBS} ${HDF5_LIBS} ${MED3_LIBS_C_ONLY} ${STDLIB} ${PLATFORM_LIBS})
 
 IF(MED_ENABLE_SCOTCH)
   SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_SCOTCHGraph.cxx)
@@ -84,33 +86,41 @@ IF(MED_ENABLE_SCOTCH)
   SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${SCOTCH_LIBS})
 ENDIF(MED_ENABLE_SCOTCH)
 
+IF(MED_ENABLE_METIS)
+  SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
+ENDIF(MED_ENABLE_METIS)
+
 IF(MPI_IS_OK)
   IF(MED_ENABLE_PARMETIS)
     SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_METISGraph.cxx)
-    SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
     SET(medsplittercpp_DEFINITIONS "${medsplittercpp_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
-    SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${PARMETIS_LIBS} ${MPI_LIBS})
+    SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${PARMETIS_LIBS})
   ENDIF(MED_ENABLE_PARMETIS)
 ELSE(MPI_IS_OK)
   IF(MED_ENABLE_METIS)
     SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_METISGraph.cxx)
-    SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
     SET(medsplittercpp_DEFINITIONS "${medsplittercpp_DEFINITIONS} ${METIS_DEFINITIONS}")
     SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${METIS_LIBS})
   ENDIF(MED_ENABLE_METIS)
 ENDIF(MPI_IS_OK)
 
+SET(medsplitter_LDFLAGS ${medsplittercpp_LDFLAGS})
+IF(MED_ENABLE_KERNEL)
+  INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+  SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${BOSST_LIBS} ${SALOMELocalTrace})
+  SET(medsplitter_LDFLAGS ${medsplittercpp_LDFLAGS} ${SALOMEBasics})
+ENDIF(MED_ENABLE_KERNEL)
+
+ADD_EXECUTABLE(medsplitter medsplitter.cxx)
+SET_TARGET_PROPERTIES(medsplitter PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medsplitter medsplittercpp ${medsplitter_LDFLAGS})
+INSTALL(TARGETS medsplitter DESTINATION ${MED_salomebin_BINS})
 
 IF(MPI_IS_OK)
   ADD_EXECUTABLE(medsplitter_para medsplitter_para.cxx)
   SET_TARGET_PROPERTIES(medsplitter_para PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(medsplitter_para medsplittercpp)
+  TARGET_LINK_LIBRARIES(medsplitter_para medsplittercpp ${medsplitter_LDFLAGS})
   INSTALL(TARGETS medsplitter_para DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
-  ADD_EXECUTABLE(medsplitter medsplitter.cxx)
-  SET_TARGET_PROPERTIES(medsplitter PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(medsplitter medsplittercpp)
-  INSTALL(TARGETS medsplitter DESTINATION ${MED_salomebin_BINS})
 ENDIF(MPI_IS_OK)
 
 ADD_LIBRARY(medsplittercpp SHARED ${medsplittercpp_SOURCES})
index 3792974efb0cfe820b76efc95e4edd9e9012e190..6cb4c1ede3fcecf45d00af51d29e6cb6ad7070e2 100755 (executable)
@@ -26,7 +26,7 @@
 #define MEDSPLITTER_HXX_
 
 #ifdef WIN32
-# if defined MEDSPLITTER_EXPORTS || defined medsplitter_EXPORTS
+# if defined MEDSPLITTERCPP_EXPORTS || defined medsplittercpp_EXPORTS
 #  define MEDSPLITTER_EXPORT __declspec( dllexport )
 # else
 #  define MEDSPLITTER_EXPORT __declspec( dllimport )
index 629834d305b604012f46cf9d860f5b2fc87a9220..7a9b11dd436841dfae86a5ae17e4e09dc8e3263d 100644 (file)
@@ -21,12 +21,12 @@ INCLUDE_DIRECTORIES(
   ${PARMETIS_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${SCOTCH_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIRS}
-  ${METIS_INCLUDE_DIRS}
+  ${BOOST_INCLUDE_DIRS} 
+  ${CPPUNIT_INCLUDE_DIRS}
   ${LIBXML_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
-  ${MPI_INCLUDE_DIRS}
+  ${MPI_INCLUDE_DIRS} 
   ${CMAKE_CURRENT_SOURCE_DIR}/..
   ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDMEM
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNELTest # for BasicMainTest.cxx
@@ -35,63 +35,83 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Geometric2D
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/ExprEval
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/GaussPoints
-  )
+)
 
 SET(MEDSPLITTERTest_HEADERS_HXX
   MEDSPLITTERTest.hxx
   MEDSPLITTERTest_Utils.hxx
   MEDSPLITTERTest_defs.hxx
-  )
+)
 
 SET(MEDSPLITTERTest_SOURCES
   MEDSPLITTERTest.cxx
   MEDSPLITTERTest_MESHCollection.cxx
   MEDSPLITTERTest_ParallelTopology.cxx
   MEDSPLITTERTest_Utils.cxx
-  )
-
-SET(MEDSPLITTERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-SET(MEDSPLITTERTest_LDFLAGS medsplittercpp ${CPPUNIT_LIBS})
+)
 
-IF(MED_ENABLE_SCOTCH)
-  SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
-ENDIF(MED_ENABLE_SCOTCH)
+SET(MEDSPLITTERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${MPI_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+SET(MEDSPLITTERTest_LDFLAGS ${CPPUNIT_LIBS} ${MED3_LIBS_C_ONLY} medsplittercpp)
 
-IF(MPI_IS_OK)
+IF(MED_ENABLE_PARMETIS)
   SET(MEDSPLITTERTest_SOURCES
     ${MEDSPLITTERTest_SOURCES}
     ParaMEDSPLITTERTest_MeshSendReceive.cxx
     ParaMEDSPLITTERTest_ParaDomainSelector.cxx
     ParaMEDSPLITTERTest_medsplitter_para.cxx
-    )
-  SET(MEDSPLITTERTest_HEADERS_HXX ${MEDSPLITTERTest_HEADERS_HXX} ParaMEDSPLITTERTest.hxx)
-  IF(MED_ENABLE_PARMETIS)
-    SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
-  ENDIF(MED_ENABLE_PARMETIS)
-ELSE(MPI_IS_OK)
-  IF(MED_ENABLE_METIS)
-    SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${METIS_DEFINITIONS}")
-  ENDIF(MED_ENABLE_METIS)
-ENDIF(MPI_IS_OK)
+    ParaMEDSPLITTERTest.hxx
+  )
+  SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
+  SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${PARMETIS_LIBS})
+ENDIF(MED_ENABLE_PARMETIS)
+
+IF(MED_ENABLE_METIS)
+  SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${METIS_DEFINITIONS}")
+  SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${METIS_LIBS})
+ENDIF(MED_ENABLE_METIS)
+                           
+IF(MED_ENABLE_KERNEL)
+  INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+  SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SALOMELocalTrace})
+ENDIF(MED_ENABLE_KERNEL)
+      
+IF(MED_ENABLE_SCOTCH)
+  SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
+  SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SCOTCH_LIBS})
+ENDIF(MED_ENABLE_SCOTCH)
+
+SET(SCRIPTS testMEDSPLITTER.py)
+
 
 
 IF(MPI_IS_OK)
-  ADD_EXECUTABLE(TestParaMEDSPLITTER TestParaMEDSPLITTER.cxx)
-  SET_TARGET_PROPERTIES(TestParaMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(TestParaMEDSPLITTER MEDSPLITTERTest)
-  INSTALL(TARGETS TestParaMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
+  IF(MED_ENABLE_PARMETIS)
+    SET(TestParaMEDSPLITTER_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} MEDSPLITTERTest medmem interpkernel medsplittercpp)
+    SET(SCRIPTS ${SCRIPTS} testMEDSPLITTER.py)
+    
+    ADD_EXECUTABLE(TestParaMEDSPLITTER TestParaMEDSPLITTER.cxx)
+    SET_TARGET_PROPERTIES(TestParaMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
+    TARGET_LINK_LIBRARIES(TestParaMEDSPLITTER ${TestParaMEDSPLITTER_LDFLAGS})
+    INSTALL(TARGETS TestParaMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
+  ENDIF(MED_ENABLE_PARMETIS)
+ELSE(MPI_IS_OK)  
   IF(MED_ENABLE_METIS)
+    SET(TestMEDSPLITTER_LDFLAGS ${MEDSPLITTERTest_LDFLAGSS} MEDSPLITTERTest medmem interpkernel medsplittercpp)
+    IF(MED_ENABLE_KERNEL)
+      SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SALOMEBasics})
+    ENDIF(MED_ENABLE_KERNEL)
+    
     ADD_EXECUTABLE(TestMEDSPLITTER TestMEDSPLITTER.cxx)
     SET_TARGET_PROPERTIES(TestMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
-    TARGET_LINK_LIBRARIES(TestMEDSPLITTER MEDSPLITTERTest)
+    TARGET_LINK_LIBRARIES(TestMEDSPLITTER ${TestMEDSPLITTER_LDFLAGS})
     INSTALL(TARGETS TestMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
   ENDIF(MED_ENABLE_METIS)
 ENDIF(MPI_IS_OK)
-
+  
 ADD_LIBRARY(MEDSPLITTERTest SHARED ${MEDSPLITTERTest_SOURCES})
 SET_TARGET_PROPERTIES(MEDSPLITTERTest PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(MEDSPLITTERTest ${MEDSPLITTERTest_LDFLAGS})
 INSTALL(TARGETS MEDSPLITTERTest DESTINATION ${MED_salomelib_LIBS})
 
 INSTALL(FILES ${MEDSPLITTERTest_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+INSTALL(FILES ${SCRIPTS} DESTINATION ${MED_salomebin_BINS})
index 1a4735921a5a708c791d7e4efee6aed2a4799875..2cc3453f73471c92b2556e00e6a1a53b5247fd4e 100644 (file)
@@ -76,7 +76,7 @@ if MPI_IS_OK
 if MED_ENABLE_PARMETIS
   PARA_BIN_TEST_PROGS = TestParaMEDSPLITTER
   TestParaMEDSPLITTER_SOURCES= TestParaMEDSPLITTER.cxx
-  TestParaMEDSPLITTER_CPPFLAGS = $(TestMEDSPLITTER_CPPFLAGS) $(MPI_INCLUDES)
+  TestParaMEDSPLITTER_CPPFLAGS = $(TestMEDSPLITTER_CPPFLAGS) $(MPI_INCLUDES) $(CPPUNIT_INCLUDES)
   TestParaMEDSPLITTER_CXXFLAGS = @CXXTMPDPTHFLAGS@
   TestParaMEDSPLITTER_LDADD = $(MED3_LIBS_C_ONLY) $(libMEDSPLITTERTest_la_LDFLAGS) -lm \
        libMEDSPLITTERTest.la \
index ebdef31248e6533b3d2c670c54cf95ddd0ae98e9..8cd10378db95d884e08c4e64c07ce1220a8c9a06 100644 (file)
@@ -17,7 +17,6 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -41,11 +40,13 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(libMEDSPLITTER_Swig python libMEDSPLITTER_Swig.i)
-SWIG_LINK_LIBRARIES(libMEDSPLITTER_Swig ${PYTHON_LIBRARIES} medsplittercpp)
-SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS}")
-
+SWIG_LINK_LIBRARIES(libMEDSPLITTER_Swig ${PYTHON_LIBS} medsplittercpp)
+SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMEDSPLITTER_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 INSTALL(TARGETS _libMEDSPLITTER_Swig DESTINATION ${MED_salomepythondir})
 INSTALL(FILES libMEDSPLITTER_Swig.i DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDSPLITTER_Swig.py MEDSPLITTER.py test_MEDSPLITTER.py DESTINATION ${MED_salomescript_PYTHON})
-INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_SOURCE_DIR}/MEDSPLITTER.py ${MED_salomescript_PYTHON})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDSPLITTER_Swig.py DESTINATION ${MED_salomepythondir})
+INSTALL(FILES MEDSPLITTER.py test_MEDSPLITTER.py DESTINATION ${MED_salomescript_DATA})
 
index 863127fb373ecff0f285c58291c51f9fc71e572b..0de97a472e396bedcd9f16f2ace365c58331c46f 100644 (file)
 INCLUDE_DIRECTORIES(
   ${HDF5_INCLUDE_DIRS}
   ${BOOST_INCLUDE_DIRS}
-  ${KERNEL_ROOT_DIR}/include/salome
-  )
+)
+
+IF(MED_ENABLE_KERNEL)
+  INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+ELSE(MED_ENABLE_KERNEL)
+  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
+ENDIF(MED_ENABLE_KERNEL)
 
 SET(MEDWrapperBase_SOURCES
   MED_Structures.cxx
@@ -34,7 +39,7 @@ SET(MEDWrapperBase_SOURCES
   )
 
 ADD_LIBRARY(MEDWrapperBase SHARED ${MEDWrapperBase_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapperBase PROPERTIES COMPILE_FLAGS "-D${MACHINE} ${HDF5_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDWrapperBase PROPERTIES COMPILE_FLAGS "-D${MACHINE} ${HDF5_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(MEDWrapperBase ${BOOST_LIB_THREAD} ${BOOST_LIB_DATE_TIME})
 INSTALL(TARGETS MEDWrapperBase DESTINATION ${MED_salomelib_LIBS})
 
index 1b2cf21098eda3b3e73c39a194f368308dff4438..7352ee3e095461450cc01fa9a5629a9b85924aa4 100644 (file)
@@ -39,7 +39,7 @@
 #include "MED_SharedPtr.hxx"
 #include "MED_SliceArray.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning(disable:4099)
 #endif
 
index 50833b8d43b10b54ed76c07ed64697453a1967a2..807b62a9937f7ed10ce12885351e2f079da7e553 100644 (file)
@@ -28,7 +28,7 @@
 #ifndef MED_SliceArray_HeaderFile
 #define MED_SliceArray_HeaderFile
 
-#ifdef WNT // for correctly compiling "valarray" in modules, which are includes this file
+#ifdef WIN32 // for correctly compiling "valarray" in modules, which are includes this file
   #undef max
   #undef min
 #endif
index 05cdf7ddbfcda1a50962c5974e8ba011eebb6117..705fd719c7473e31857e2762186e165ab32b38fa 100644 (file)
@@ -26,7 +26,7 @@
 #include "MED_Common.hxx"
 #include "MED_Utilities.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning(disable:4251)
 #endif
 
index c49f60095701e5e78f0322abbce9a2f5aa3d09a5..37a9da0ff2b6e8fbffa125c2baea9ffa35db8272 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "MED_Structures.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning(disable:4250)
 #endif
 
index f37006dabaefccf63552019e9ce2f22c44a8ca2b..ef63c2d0574b7f1368882d34d646bd95293d0d53 100755 (executable)
@@ -27,7 +27,7 @@
 #ifndef _MED_WrapperBase_HXX_
 #define _MED_WrapperBase_HXX_
 
-#ifdef WNT
+#ifdef WIN32
  #if defined MEDWRAPPER_BASE_EXPORTS || defined MEDWrapperBase_EXPORTS
   #if defined WIN32
    #define MEDWRAPPER_EXPORT __declspec( dllexport )
index cdbd05d78d6d5b5a431a96567d2d38451dad6891..dd859f167e548bfb00c993912efb99342faf62fe 100644 (file)
@@ -22,33 +22,36 @@ INCLUDE_DIRECTORIES(
   ${BOOST_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}/../Base
-  ${CMAKE_CURRENT_SOURCE_DIR}/../V2_1/Wrapper
   ${CMAKE_CURRENT_SOURCE_DIR}/../V2_2
   )
 
 IF(MED_ENABLE_KERNEL)
   INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
 ELSE(MED_ENABLE_KERNEL)
-  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel/unix)
+  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
 ENDIF(MED_ENABLE_KERNEL)  
 
 SET(MEDWrapper_SOURCES
   MED_Factory.cxx
-  )
+)
 
 SET(mprint_version_SOURCES
   mprint_version.cxx
   )
 
 ADD_LIBRARY(MEDWrapper SHARED ${MEDWrapper_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapper PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDWrapper MEDWrapperBase MEDWrapper_V2_1 MEDWrapper_V2_2)
+SET_TARGET_PROPERTIES(MEDWrapper PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDWrapper MEDWrapper_V2_2)
 INSTALL(TARGETS MEDWrapper DESTINATION ${MED_salomelib_LIBS})
 
 ADD_EXECUTABLE(mprint_version ${mprint_version_SOURCES})
-SET_TARGET_PROPERTIES(mprint_version PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(mprint_version MEDWrapper)
+SET_TARGET_PROPERTIES(mprint_version PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(mprint_version MEDWrapper MEDWrapper_V2_2 MEDWrapperBase ${BOOST_LIBS} ${MED3_LIBS_C_ONLY})
+
+ADD_EXECUTABLE(MED_Test ${mprint_version_SOURCES})
+SET_TARGET_PROPERTIES(MED_Test PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MED_Test MEDWrapper MEDWrapper_V2_2 MEDWrapperBase ${BOOST_LIBS})
 
 FILE(GLOB MEDWrapper_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
 INSTALL(FILES ${MEDWrapper_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(TARGETS mprint_version DESTINATION ${MED_salomebin_BINS})
\ No newline at end of file
+INSTALL(TARGETS mprint_version MED_Test DESTINATION ${MED_salomebin_BINS})
index 49530d0f77f5b1915026100a9c4c10fe0363e42a..02928a8aaf12d5efbd50ad788502f186242d73f9 100644 (file)
@@ -325,7 +325,7 @@ void ReadMed(const char* theFileName,
   CopyMed(theFileName,theFileName2,theVersion,theNbCopy);
 }
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning(disable:4101) // exc unreferenced ... ??
 #endif
 
index 983aebfb5d1b7039f435d74db92a746fb1cbeb03..d23fd618769777664a7b1050c225c7ab455739ef 100755 (executable)
@@ -27,7 +27,7 @@
 #ifndef _MED_WrapperFactory_HXX_
 #define _MED_WrapperFactory_HXX_
 
-#ifdef WNT
+#ifdef WIN32
  #if defined MEDWRAPPER_FACTORY_EXPORTS || defined MEDWrapper_EXPORTS
   #if defined WIN32
    #define MEDWRAPPER_FACTORY_EXPORT __declspec( dllexport )
index 066489835d05f5f68408e85e3f2a719d83e55765..a26384166e28966f49e97d9eb2efad86b8480473 100644 (file)
@@ -18,7 +18,6 @@
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
-# if without KERNEL, build only med 2.1 library
 if MED_ENABLE_KERNEL
   SUBDIRS = Base V2_2 Factory
 else !MED_ENABLE_KERNEL
index 61681f5d08561a797c261844f20d777f0be41dd4..351584b2d467cb558f88ff356b1830adfe48d005 100644 (file)
@@ -31,11 +31,11 @@ SET(MEDWrapper_V2_2_SOURCES
 IF(MED_ENABLE_KERNEL)
   INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
 ELSE(MED_ENABLE_KERNEL)
-  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel/unix)
+  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
 ENDIF(MED_ENABLE_KERNEL)
 
 ADD_LIBRARY(MEDWrapper_V2_2 SHARED ${MEDWrapper_V2_2_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapper_V2_2 PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDWrapper_V2_2 PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(MEDWrapper_V2_2 MEDWrapperBase ${MED3_LIBS_C_ONLY} ${HDF5_LIBS})
 INSTALL(TARGETS MEDWrapper_V2_2 DESTINATION ${MED_salomelib_LIBS})
 
index 11c6ebece6131a9370c6fbb49902c657b72f6513..7f14dd7912da487ddbfad5f6de1b1d73c53d7ff1 100644 (file)
@@ -28,7 +28,7 @@
 #ifndef MED_V2_2_Wrapper_HeaderFile
 #define MED_V2_2_Wrapper_HeaderFile
 
-#ifdef WNT
+#ifdef WIN32
  #if defined MEDWRAPPER_V2_2_EXPORTS || defined MEDWrapper_V2_2_EXPORTS
   #if defined WIN32
    #define MED_V22_WRAPPER_EXPORT __declspec( dllexport )
index cdd2ac2a3441335c677a0dd372058b070a5a9199..e9834f105fe4fb21f6a0346f7bfb009949463688 100644 (file)
@@ -17,4 +17,4 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INSTALL(FILES MED_shared_modules.py DESTINATION ${MED_salomescript_PYTHON})
+INSTALL(FILES MED_shared_modules.py DESTINATION ${MED_sharedpkgpython_PYTHON})
index f5ac8d696d4c61a6c655f7809189c4a249a3756d..3f11d985656176b521c30e01675201b40ad38dee 100644 (file)
@@ -92,7 +92,7 @@ endif
 endif
 
 if MED_ENABLE_GUI
-    GUI_SUBDIRS = MEDGUI
+    GUI_SUBDIRS = MEDGUI MEDOP
 endif
 
 endif
@@ -105,4 +105,4 @@ DIST_SUBDIRS= \
        MEDMEMBinTest MEDMEMCppTest INTERP_KERNELTest ParaMEDMEM ParaMEDMEM_Swig MEDLoader \
        MEDSPLITTER MEDSPLITTER_Swig MEDPartitioner RENUMBER MEDCouplingCorba MEDCouplingCorba_Swig \
        MEDMEM_I MED MED_SWIG MedCorba_Swig ParaMEDLoader MedClient ParaMEDMEMComponent \
-       ParaMEDCouplingCorba MEDCalculator MEDGUI ParaMEDMEMTest
+       ParaMEDCouplingCorba MEDCalculator MEDGUI MEDOP ParaMEDMEMTest
index b8310d8c7f8b0eafde37d12773783912cfe27728..34d1bae4e1e91be0b83cc39eb97ffad2358557ab 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${OMNIORB_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
@@ -55,13 +56,17 @@ SET(MEDClientcmodule_SOURCES
 
 ADD_LIBRARY(MEDClientcmodule SHARED ${MEDClientcmodule_SOURCES})
 INSTALL(FILES libMEDClient.i DESTINATION ${MED_salomeinclude_HEADERS})
-SET_TARGET_PROPERTIES(MEDClientcmodule PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDClientcmodule MEDMEMImpl MEDEngine)
+SET_TARGET_PROPERTIES(MEDClientcmodule PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDClientcmodule MEDMEMImpl MEDEngine ${PTHREAD_LIBS})
 INSTALL(TARGETS MEDClientcmodule DESTINATION ${MED_salomelib_LIBS})
 
 SWIG_ADD_MODULE(libMEDClient python libMEDClient.i)
-SWIG_LINK_LIBRARIES(libMEDClient ${PYTHON_LIBRARIES} MEDClientcmodule)
-SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libMEDClient ${PYTHON_LIBS} MEDClientcmodule)
+SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES DEBUG_OUTPUT_NAME _libMEDClient_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 INSTALL(TARGETS _libMEDClient DESTINATION ${MED_salomepythondir})
 INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/libMEDClient.py ${MED_salomescript_PYTHON})
 
index a36630f09ffb2b292f5edd0f38f2e0d4da6896cb..2b90350fcd23d8af89eed5058fe24c8f67e1dd05 100644 (file)
@@ -24,7 +24,7 @@
 #ifndef _MEDCLIENT_HXX_
 #define _MEDCLIENT_HXX_
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined MEDCLIENT_EXPORTS || defined MEDClientcmodule_EXPORTS
 #    define MEDCLIENT_EXPORT __declspec( dllexport )
 #  else
index 9bb5cc1eafa43b266794fd38b361533e4d5a731b..4c6db9583bf95d9505718f66532086b991b55514 100644 (file)
 
 ADD_SUBDIRECTORY(csh)
 
-SET(MedClientTestsConfig runTestMedCorba runContainer)
+SET(MedClientTestsConfig 
+#  runTestMedCorba 
+  runContainer
+)
 
 FOREACH(MedClientTestConfig ${MedClientTestsConfig})
   SET(input ${CMAKE_CURRENT_SOURCE_DIR}/${MedClientTestConfig}.in)
index d352ef916f34b31998a772bc87615c148b8c644c..85544b4f9f8a470e0b649bdbbb4891b7f961202a 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${OMNIORB_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
@@ -45,8 +46,13 @@ SET_SOURCE_FILES_PROPERTIES(libCompo2.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(libCompo2.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 SWIG_ADD_MODULE(libCompo2 python libCompo2.i Compo2.cxx)
-SWIG_LINK_LIBRARIES(libCompo2 ${PYTHON_LIBRARIES} MEDClientcmodule)
-SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libCompo2 ${PYTHON_LIBS} MEDClientcmodule)
+SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES DEBUG_OUTPUT_NAME _libCompo2_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+
 INSTALL(TARGETS _libCompo2 DESTINATION ${MED_salomepythondir})
 INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/libCompo2.py ${MED_salomescript_PYTHON})
 
index 02cd9f0844e7fe6c8cd85afce16e7c93e1dd00d7..2e0500839fbad102b1103075562cfdcebf995334 100644 (file)
@@ -25,6 +25,7 @@ SET_SOURCE_FILES_PROPERTIES(libMedCorba_Swig.i PROPERTIES SWIG_DEFINITIONS "-sha
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${OMNIORB_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
@@ -41,13 +42,16 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(libMedCorba_Swig python libMedCorba_Swig.i)
-SWIG_LINK_LIBRARIES(libMedCorba_Swig ${PYTHON_LIBRARIES} MEDMEMImpl MEDEngine)
-SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libMedCorba_Swig ${PYTHON_LIBS} MEDMEMImpl MEDEngine ${PLATFORM_LIBS})
+SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
 SET(MED_MedCorba_Swig_salomescript_DATA
   medcorba_test.py batchmode_medcorba_test.py batchmode_medcorba_test1.py
   )
 
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMedCorba_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 INSTALL(TARGETS _libMedCorba_Swig DESTINATION ${MED_salomepythondir})
 INSTALL(FILES libMedCorba_Swig.i DESTINATION ${MED_salomeinclude_HEADERS})
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMedCorba_Swig.py DESTINATION ${MED_salomescript_PYTHON})
index b5e97d4ece55aeac9f651a3b9317e3cd40aac209..d51e9ecc16a6b729f08c76a107bc86004c2d8fa1 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${MPI_INCLUDE_DIRS}
@@ -35,7 +36,7 @@ SET(paramedloader_SOURCES
 
 ADD_LIBRARY(paramedloader SHARED ${paramedloader_SOURCES})
 SET_TARGET_PROPERTIES(paramedloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(paramedloader paramedmem medloader)
+TARGET_LINK_LIBRARIES(paramedloader paramedmem medloader ${PLATFORM_LIBS})
 INSTALL(TARGETS paramedloader DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB paramedloader_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index 184f2309f9d17f4ec1720ff76c11e0778ee10550..4904a2b44a74d12238520fbc36f7acb7b610a7ad 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index f751551f591647117932fef5c9c8765def82f1e6..9c8df2aee6f2149975c0f2bea64f2bb1f47821d4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "ParaMEDLoader.hxx"
 #include "MEDLoader.hxx"
index aedacc93d2dcef19dbcc6f58b7e80e09dd3e64dc..a36e45f42ab18e22426dc9fb979ba6092b136a0d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDLOADER_HXX__
 #define __PARAMEDLOADER_HXX__
index 4ede58f2f01c79861f01d971af531b2cc0997014..2b0bfb3b9345d720d253366bc954cd7b6a73ba94 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${MPI_INCLUDE_DIRS}
index 06a06d663b422847d39e954f0b6aeb38865b99c3..5035aed3d9677c4254c137b4d6a6967e7a082d33 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "OverlapDEC.hxx"
 #include "CommInterface.hxx"
index c483d2b07c3ba239fe220fe34b927f8551ec0162..7532910e2310c49b56183fbb6114b18dee158e12 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __OVERLAPDEC_HXX__
 #define __OVERLAPDEC_HXX__
index ece659ec34fad25b22c494e75336fbe5ee2b1d7d..417c50e0fa4376ce873d926404eb9d2a63a300fb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "OverlapElementLocator.hxx"
 
index c779a49e905ba527b8de59523c34cadef67a8b71..ade57b2ac73dc0e2a1a696c2d02e3354e3741a80 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __OVERLAPELEMENTLOCATOR_HXX__
 #define __OVERLAPELEMENTLOCATOR_HXX__
index f8bb14137def8e56a1eaf193a35fb83711e3f2cc..cb1f1ed484cf5a8a511985dfba32c17522aaa87b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "OverlapInterpolationMatrix.hxx"
 #include "ParaMESH.hxx"
index da3acd4f287a2384eff111343de5815cf5b24754..e08dd6f474d474a7cef1329c59829dafa80fabb8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __OVERLAPINTERPOLATIONMATRIX_HXX__
 #define __OVERLAPINTERPOLATIONMATRIX_HXX__
index bdb975a5b0bc8f73a98f2a737b92221dbc6ba1f1..243a31a7bf629877b8c584c396c15c5e67e31fbe 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "OverlapMapping.hxx"
 #include "MPIProcessorGroup.hxx"
index ca756b3346c146d08d1aa9ceb59f0fa13a9ef1ed..d2fbe4552eef81de78acf01cf106c1aebcbab247 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __OVERLAPMAPPING_HXX__
 #define __OVERLAPMAPPING_HXX__
index c02e286ec05d689eeb10eb02a3da287555ed27cd..2f26862c726425fa63326580d3081c767f689605 100644 (file)
@@ -111,3 +111,13 @@ FOREACH(bintestparamem ${TESTSParaMEDMEM})
 ENDFOREACH(bintestparamem ${TESTSParaMEDMEM})
 
 INSTALL(TARGETS ${TESTSParaMEDMEM} DESTINATION ${MED_salomebin_BINS})
+SET(COMMON_HEADERS_HXX
+  MPIMainTest.hxx
+  MPIAccessDECTest.hxx
+  MPIAccessTest.hxx
+  ParaMEDMEMTest.hxx
+  MPI2Connector.hxx
+)
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
+                                       
\ No newline at end of file
index 829d35274ab9f868c326f3bf503c83a2520401c6..c8e8f7a0f0d0163c9a0f5240364909f896962fa5 100644 (file)
@@ -17,7 +17,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -40,11 +40,12 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(ParaMEDMEM python ParaMEDMEM.i)
-SWIG_LINK_LIBRARIES(ParaMEDMEM ${PYTHON_LIBRARIES} paramedmem medloader)
+SWIG_LINK_LIBRARIES(ParaMEDMEM ${PYTHON_LIBS} paramedmem medloader)
 
 SET_SOURCE_FILES_PROPERTIES(ParaMEDMEM.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(ParaMEDMEM.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 INSTALL(TARGETS _ParaMEDMEM DESTINATION ${MED_salomepythondir})
 INSTALL(FILES ParaMEDMEM.i DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py ${MED_salomescript_PYTHON})
+INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py ${MED_salomepythondir})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py test_InterpKernelDEC.py test_NonCoincidentDEC.py test_StructuredCoincidentDEC.py DESTINATION ${MED_salomescript_PYTHON})
\ No newline at end of file
index 66b984c794323352c59bb89925ea6462a3f96f50..ebbc033e28876ea8757b1be842dacfe99ab950d7 100644 (file)
@@ -46,7 +46,7 @@ SET(renumber_SOURCES
   )
 
 SET(renumbercpp_LDFLAGS medmem)
-SET(renumber_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET(renumber_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
 IF(MED_ENABLE_METIS)
   SET(renumbercpp_SOURCES ${renumbercpp_SOURCES} RENUMBER_METISRenumbering.cxx)
index e3c74701c22d113b80ef8473f90f7c35e98a8fe6..2c76be652a22c98e9a477c0a4b5c5d8feb0deae6 100755 (executable)
@@ -22,7 +22,7 @@
 
 //export symbols
 #ifdef WIN32
-# if defined RENUMBER_EXPORTS || defined renumber_EXPORTS
+# if defined RENUMBERCPP_EXPORTS || defined renumbercpp_EXPORTS
 #  define RENUMBER_EXPORT __declspec(dllexport)
 # else
 #  define RENUMBER_EXPORT __declspec(dllimport)