diff --git a/apps/2_3DGrid/2_3DGrid.cpp b/apps/2_3DGrid/2_3DGrid.cpp index 8b69b90..7197e9c 100644 --- a/apps/2_3DGrid/2_3DGrid.cpp +++ b/apps/2_3DGrid/2_3DGrid.cpp @@ -95,11 +95,13 @@ int main(int argc, char* argv[]) { } monad::Hex8Grid grid({nx, ny, nz}, {lx, ly, lz}); - grid.setDensitiesRandom(seed); + monad::DensityField3d densityField({nx, ny, nz}); + densityField.setRandom(static_cast(seed)); + const auto file = std::filesystem::path(__FILE__).parent_path() / "output.msh"; - monad::saveGrid(grid, file.string(), true); + monad::saveGridAndDensityField(grid, densityField, file.string()); std::cout << "Saved to " + file.string() << std::endl; diff --git a/apps/3_DensityFunction/3_DensityFunction.cpp b/apps/3_DensityFunction/3_DensityFunction.cpp index 7c5c897..6f2a0dd 100644 --- a/apps/3_DensityFunction/3_DensityFunction.cpp +++ b/apps/3_DensityFunction/3_DensityFunction.cpp @@ -41,11 +41,11 @@ int main() { return (xComponent + yComponent + zComponent) / 3; }; - grid.setDensitiesFunction(f); + const auto densityField = monad::makeDensityFieldFromFunction(grid, f); const auto file = std::filesystem::path(__FILE__).parent_path() / "output.msh"; - monad::saveGrid(grid, file.string(), true); + monad::saveGridAndDensityField(grid, densityField, file.string()); std::cout << "Saved to " + file.string() << std::endl; diff --git a/apps/4_LinearElasticity/4_LinearElasticity.cpp b/apps/4_LinearElasticity/4_LinearElasticity.cpp index 11017aa..42a8f50 100644 --- a/apps/4_LinearElasticity/4_LinearElasticity.cpp +++ b/apps/4_LinearElasticity/4_LinearElasticity.cpp @@ -70,32 +70,32 @@ int main(int argc, char* argv[]) { const auto folder = std::filesystem::path(__FILE__).parent_path(); const auto csvFile = folder / "data.csv"; - grid.setDensitiesFile(csvFile.string()); + const auto densityField = monad::makeDensityFieldFromCsv(csvFile); monad::SolverOptions options; options.fields = monad::FieldSave::All; - const monad::LinearElasticSolver solver(grid, material); + const monad::LinearElasticSolver solver; - const auto results = solver.solve(options); + const auto results = solver.solve(grid, densityField, material, options); std::cout << "---Homogenized stiffness tensor---\n" << results.CBar << std::endl; auto file = folder / "density.msh"; - monad::saveGrid(grid, file.string(), true); + monad::saveGridAndDensityField(grid, densityField, file.string()); file = folder / "uMacro.msh"; - monad::saveGridAndField(grid, results.uMacro[0], file.string(), "Macro displacement"); + monad::saveGridAndNodalField(grid, results.uMacro[0], file.string(), "Macro displacement"); file = folder / "uMicro.msh"; - monad::saveGridAndField(grid, results.uMicro[0], file.string(), "Micro displacement"); + monad::saveGridAndNodalField(grid, results.uMicro[0], file.string(), "Micro displacement"); file = folder / "u.msh"; - monad::saveGridAndField(grid, results.u[0], file.string(), "Displacement"); + monad::saveGridAndNodalField(grid, results.u[0], file.string(), "Displacement"); std::cout << "Saved to " + file.string() << std::endl; diff --git a/apps/5_LinearDielectric/5_LinearDielectric.cpp b/apps/5_LinearDielectric/5_LinearDielectric.cpp index 5629182..d7cd52e 100644 --- a/apps/5_LinearDielectric/5_LinearDielectric.cpp +++ b/apps/5_LinearDielectric/5_LinearDielectric.cpp @@ -60,37 +60,37 @@ int main(int argc, char* argv[]) { const auto folder = std::filesystem::path(__FILE__).parent_path(); const auto csvFile = folder / "data.csv"; - grid.setDensitiesFile(csvFile.string()); + const auto densityField = monad::makeDensityFieldFromCsv(csvFile); monad::SolverOptions options; options.fields = monad::FieldSave::All; - const monad::LinearDielectricSolver solver(grid, material); + const monad::LinearDielectricSolver solver; // Results follow the generic transport naming: - // results.KBar → ε̄ + // results.KBar → ϵ̄ // results.phiMacro → φ̄ // results.phiMicro → φ̃ // results.phi → φ - const auto results = solver.solve(options); + const auto results = solver.solve(grid, densityField, material, options); std::cout << "---Homogenized permittivity tensor---\n" << results.KBar << std::endl; auto file = folder / "density.msh"; - monad::saveGrid(grid, file.string(), true); + monad::saveGridAndDensityField(grid, densityField, file.string()); file = folder / "phiMacro.msh"; - monad::saveGridAndField(grid, results.phiMacro[0], file.string(), "Macro electric potential"); + monad::saveGridAndNodalField(grid, results.phiMacro[0], file.string(), "Macro electric potential"); file = folder / "phiMicro.msh"; - monad::saveGridAndField(grid, results.phiMicro[0], file.string(), "Micro electric potential"); + monad::saveGridAndNodalField(grid, results.phiMicro[0], file.string(), "Micro electric potential"); file = folder / "phi.msh"; - monad::saveGridAndField(grid, results.phi[0], file.string(), "Electric potential"); + monad::saveGridAndNodalField(grid, results.phi[0], file.string(), "Electric potential"); std::cout << "Saved to " + file.string() << std::endl; diff --git a/apps/6_LinearPiezoelectricity/6_LinearPiezoelectricity.cpp b/apps/6_LinearPiezoelectricity/6_LinearPiezoelectricity.cpp index c8db59f..ce28bd3 100644 --- a/apps/6_LinearPiezoelectricity/6_LinearPiezoelectricity.cpp +++ b/apps/6_LinearPiezoelectricity/6_LinearPiezoelectricity.cpp @@ -14,10 +14,12 @@ * * The base material's piezoelectric coupling tensor is set to * + * ```text * ⎡d 0 0⎤ * ⎣0 -d -d⎦ + * ``` * - * where d=E/10. + * where d=⅒E. * * The Gmsh files are written to: * @@ -96,23 +98,26 @@ int main(int argc, char* argv[]) { const monad::LinearElasticMaterial2d elasticMaterial(E, nu, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); const monad::LinearDielectricMaterial2d dielectricMaterial(epsilon); + const auto c = elasticMaterial.materialTensor(); + const auto epsilonTensor = dielectricMaterial.materialTensor(); const Eigen::Matrix d { {E / 10.0, 0.0, 0.0}, {0.0, E / 10.0, E / 10.0} }; - const monad::LinearPiezoelectricMaterial2d material(elasticMaterial, dielectricMaterial, d); + const monad::LinearPiezoelectricMaterial2d material(c, epsilonTensor, d); const auto folder = std::filesystem::path(__FILE__).parent_path(); const auto csvFile = folder / "data.csv"; - grid.setDensitiesFile(csvFile.string()); + const auto densityField = monad::makeDensityFieldFromCsv(csvFile); monad::SolverOptions options; options.fields = monad::FieldSave::All; - const monad::LinearPiezoelectricSolver solver(grid, material); - const auto results = solver.solve(options); + const monad::LinearPiezoelectricSolver solver; + + const auto results = solver.solve(grid, densityField, material, options); std::cout << "---Homogenized stiffness tensor---\n" << results.cBar << std::endl; std::cout << "\n---Homogenized permittivity tensor---\n" << results.epsilonBar << std::endl; @@ -120,31 +125,31 @@ int main(int argc, char* argv[]) { auto file = folder / "density.msh"; - monad::saveGrid(grid, file.string(), true); + monad::saveGridAndDensityField(grid, densityField, file.string()); file = folder / "uMacro.msh"; - monad::saveGridAndField(grid, results.uMacro[0], file.string(), "Macro displacement"); + monad::saveGridAndNodalField(grid, results.uMacro[0], file.string(), "Macro displacement"); file = folder / "uMicro.msh"; - monad::saveGridAndField(grid, results.uMicro[0], file.string(), "Micro displacement"); + monad::saveGridAndNodalField(grid, results.uMicro[0], file.string(), "Micro displacement"); file = folder / "u.msh"; - monad::saveGridAndField(grid, results.u[0], file.string(), "Displacement"); + monad::saveGridAndNodalField(grid, results.u[0], file.string(), "Displacement"); file = folder / "phiMacro.msh"; - monad::saveGridAndField(grid, results.phiMacro[0], file.string(), "Macro electric potential"); + monad::saveGridAndNodalField(grid, results.phiMacro[0], file.string(), "Macro electric potential"); file = folder / "phiMicro.msh"; - monad::saveGridAndField(grid, results.phiMicro[0], file.string(), "Micro electric potential"); + monad::saveGridAndNodalField(grid, results.phiMicro[0], file.string(), "Micro electric potential"); file = folder / "phi.msh"; - monad::saveGridAndField(grid, results.phi[0], file.string(), "Electric potential"); + monad::saveGridAndNodalField(grid, results.phi[0], file.string(), "Electric potential"); std::cout << "Saved to " + file.string() << std::endl; diff --git a/assets/create_teaser.py b/assets/create_teaser.py index 0ca79a2..9d42745 100644 --- a/assets/create_teaser.py +++ b/assets/create_teaser.py @@ -12,8 +12,8 @@ 'custom', [ (0.0, 'white'), - (0.5, '#e6d0d1'), - (1.0, '#9e5457') + (0.5, '#c9e3f6'), + (1.0, 'C0') ] ) diff --git a/assets/images/teaser.png b/assets/images/teaser.png index a27b455..24cf0ba 100644 Binary files a/assets/images/teaser.png and b/assets/images/teaser.png differ diff --git a/assets/images/teaser.svg b/assets/images/teaser.svg index f573801..26ad8a4 100644 --- a/assets/images/teaser.svg +++ b/assets/images/teaser.svg @@ -6,11 +6,11 @@ - 2026-01-26T10:36:06.317221 + 2026-06-12T09:00:35.521131 image/svg+xml - Matplotlib v3.9.1, https://matplotlib.org/ + Matplotlib v3.9.2, https://matplotlib.org/ @@ -35,7 +35,7 @@ L -20.659653 139.499639 L -20.659653 135.859653 L -24.299639 135.859653 z -" clip-path="url(#pf069569da0)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #1f77b4"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #c8e3f6"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> +" clip-path="url(#p67bfec989b)" style="fill: #ffffff"/> @@ -16237,7 +16237,7 @@ L 55.41052 139.499639 L 55.41052 135.859653 L 49.950541 135.859653 z -" clip-path="url(#pb33c92a228)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #1f77b4"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #c8e3f6"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> +" clip-path="url(#p0520cb5895)" style="fill: #ffffff"/> @@ -32439,7 +32439,7 @@ L 209.740347 180.44946 L 209.740347 174.989481 L 206.100361 174.989481 z -" clip-path="url(#pb672c9d340)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #1f77b4"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #c8e3f6"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> +" clip-path="url(#pc7e27f3307)" style="fill: #ffffff"/> @@ -48641,7 +48641,7 @@ L 316.750383 147.325605 L 317.114381 143.685619 L 313.474395 144.049617 z -" clip-path="url(#p87e939fb14)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #1f77b4"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #c8e3f6"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> +" clip-path="url(#p3a3f1666ff)" style="fill: #ffffff"/> @@ -64843,7 +64843,7 @@ L -20.659653 254.699639 L -20.659653 251.059653 L -24.299639 251.059653 z -" clip-path="url(#pccc5039887)" style="fill: #e6d0d1"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #1f77b4"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #ffffff"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> +" clip-path="url(#pfc81166f28)" style="fill: #c8e3f6"/> @@ -81045,7 +81045,7 @@ L 55.233674 254.699639 L 55.092924 251.475531 L 49.950541 251.464966 z -" clip-path="url(#p623a1be48b)" style="fill: #e6d0d1"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #1f77b4"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #ffffff"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> +" clip-path="url(#p1ccb8b26d5)" style="fill: #c8e3f6"/> @@ -97247,7 +97247,7 @@ L 209.416153 295.649459 L 209.442612 290.469018 L 206.100361 290.438521 z -" clip-path="url(#p2403d727bf)" style="fill: #e6d0d1"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #1f77b4"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #ffffff"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> +" clip-path="url(#paa13b628f2)" style="fill: #c8e3f6"/> @@ -113449,7 +113449,7 @@ L 316.750383 262.975142 L 316.747456 259.327056 L 313.136977 259.249617 z -" clip-path="url(#p453b117bdb)" style="fill: #e6d0d1"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #1f77b4"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #ffffff"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> +" clip-path="url(#p885a3abac2)" style="fill: #c8e3f6"/> - + - + - + - + - + - + - + - + diff --git a/build.sh b/build.sh index 811be59..f2248fe 100755 --- a/build.sh +++ b/build.sh @@ -6,5 +6,5 @@ fi rm -rf build mkdir build cd build -cmake .. -DMONAD_USE_OPENMP=ON -DMONAD_BUILD_APPS=ON -DMONAD_BUILD_TESTS=ON +cmake .. -DMONAD_USE_OPENMP=ON -DMONAD_BUILD_APPS=ON -DMONAD_BUILD_TESTS=OFF make -j8 diff --git a/include/monad/detail/constants.hpp b/include/monad/detail/constants.hpp index 5a394b6..f8f356b 100644 --- a/include/monad/detail/constants.hpp +++ b/include/monad/detail/constants.hpp @@ -2,7 +2,7 @@ namespace monad { - /// @brief Numerical tolerance used to treat small floating-point values as zero. + /// @brief Numerical tolerance for treating small floating-point values as zero. constexpr double NUMERICAL_ZERO = 1e-9; } // namespace monad diff --git a/include/monad/detail/eigen_utils.hpp b/include/monad/detail/eigen_utils.hpp index 6cdd3b9..9ce44be 100644 --- a/include/monad/detail/eigen_utils.hpp +++ b/include/monad/detail/eigen_utils.hpp @@ -10,32 +10,12 @@ namespace monad { namespace detail { - /** - * @brief Converts an array to an Eigen vector. - * - * @tparam N Size of array. - * - * @param[in] array Array. - * - * @returns Eigen vector of `array`. - */ - template - inline Eigen::Vector arrayToEigen(const std::array &array) noexcept { - Eigen::Vector vector; - - for (std::size_t i = 0; i < N; ++i) { - vector[static_cast(i)] = static_cast(array[i]); - } - - return vector; - } - /** * @brief Symmetrizes a square matrix. * - * This function replaces A with ½(A+Aᵀ), removing numerical - * asymmetry introduced by floating-point error in computations - * that theoretically produce symmetric matrices. + * Replaces A with ½(A+Aᵀ) to remove numerical asymmetry from + * floating-point error in computations that should produce a + * symmetric matrix. * * @tparam Derived Eigen matrix type. * @@ -43,7 +23,7 @@ namespace monad { * * @throws std::invalid_argument if `A` is not square. * - * @note Use this only to clean up numerical noise. + * @note Use this only to remove numerical noise. */ template inline void symmetrize(Eigen::MatrixBase &A) { @@ -75,8 +55,8 @@ namespace monad { /** * @brief Checks if a matrix is positive definite. * - * This function checks if a matrix is positive definite - * by attempting to perform a Cholesky factorization. + * Uses a Cholesky factorization to test positive + * definiteness. * * @tparam Derived Eigen matrix type. * @@ -99,8 +79,8 @@ namespace monad { /** * @brief Checks if a matrix is positive semi-definite. * - * This function checks if a matrix is positive semi-definite - * by verifying that all its eigenvalues are non-negative. + * Checks positive semi-definiteness by verifying that all + * eigenvalues are non-negative up to numerical tolerance. * * @tparam Derived Eigen matrix type. * diff --git a/include/monad/detail/mean.hpp b/include/monad/detail/mean.hpp index aff6a25..8265f3f 100644 --- a/include/monad/detail/mean.hpp +++ b/include/monad/detail/mean.hpp @@ -7,30 +7,46 @@ namespace monad { namespace detail { /** - * @brief Arithmetic mean for a list of scalar values. + * @brief Arithmetic mean of a list of scalar values. * - * Given a collection of values {x₁,x₂,...,xₙ}, the arithmetic mean is defined as: + * Given values * + * ```text + * {x₁, x₂, ..., xₙ} + * ``` + * + * the arithmetic mean is defined as: + * + * ```text * (1/n)∑ᵢxᵢ + * ``` * - * @param[in] x List of scalar values. + * @param[in] x Values. * - * @returns Arithmetic mean for a list of scalar values. + * @returns Arithmetic mean of `x`. */ double arithmeticMean(const std::vector &x) noexcept; /** - * @brief Harmonic mean for a list of scalar values. + * @brief Harmonic mean of a list of scalar values. + * + * Given values + * + * ```text + * {x₁,x₂,...,xₙ} + * ``` * - * Given a collection of values {x₁,x₂,...,xₙ}, the harmonic mean is defined as: + * the harmonic mean is defined as: * + * ```text * n/∑ᵢ(1/xᵢ) + * ``` * - * @param[in] x List of scalar values. + * @param[in] x Values. * - * @returns Harmonic mean for a list of scalar values. + * @returns Harmonic mean of `x`. * - * @throws std::invalid_argument if any entry in `x` is zero. + * @throws std::invalid_argument if any entry of `x` is zero. */ double harmonicMean(const std::vector &x); diff --git a/include/monad/fem/element/element_base.hpp b/include/monad/fem/element/element_base.hpp index e9f299b..dfc2150 100644 --- a/include/monad/fem/element/element_base.hpp +++ b/include/monad/fem/element/element_base.hpp @@ -14,12 +14,12 @@ namespace monad { /** * @brief Curiously recurring template pattern (CRTP) base class for FEM elements. * - * @tparam Derived Concrete element class (for CRTP). + * @tparam Derived Concrete element type for CRTP. * @tparam D Spatial dimension (2 or 3). - * @tparam K Number of nodes in the element. - * @tparam N Number of integration points in the element. + * @tparam K Number of element nodes. + * @tparam N Number of integration points. * - * @note `Derived` classes must provide: + * @note `Derived` must provide: * * - `static NodesMatrix localNodes() noexcept` * @@ -66,11 +66,17 @@ namespace monad { /** * @brief Shape functions evaluated at a local point. * - * For a D-dimensional element: + * - 2D element: * - * - D=2: [ξ η]ᵀ → [N₁(ξ,η) ... Nₖ(ξ,η)]ᵀ + * ``` + * [ξ η]ᵀ → [N₁(ξ,η) ... Nₖ(ξ,η)]ᵀ + * ``` + * + * - 3D element: * - * - D=3: [ξ η ζ]ᵀ → [N₁(ξ,η,ζ) ... Nₖ(ξ,η,ζ)]ᵀ + * ``` + * [ξ η ζ]ᵀ → [N₁(ξ,η,ζ) ... Nₖ(ξ,η,ζ)]ᵀ + * ``` * * @param[in] point Local point. * @@ -83,21 +89,19 @@ namespace monad { /** * @brief Shape function gradients evaluated at a local point. * - * For a D-dimensional element: - * - * - D=2: [ξ η]ᵀ → + * - 2D element * * ```text - * ⎡∂N₁/∂ξ ... ∂Nₖ/∂ξ⎤ - * ⎣∂N₁/∂η ... ∂Nₖ/∂η⎦ + * [ξ η]ᵀ → ⎡∂N₁/∂ξ ... ∂Nₖ/∂ξ⎤ + * ⎣∂N₁/∂η ... ∂Nₖ/∂η⎦ * ``` * - * - D=3: [ξ η ζ]ᵀ → + * - 3D element: * * ```text - * ⎡∂N₁/∂ξ ... ∂Nₖ/∂ξ⎤ - * ⎪∂N₁/∂η ... ∂Nₖ/∂η⎪ - * ⎣∂N₁/∂ζ ... ∂Nₖ/∂ζ⎦ + * ⎡∂N₁/∂ξ ... ∂Nₖ/∂ξ⎤ + * [ξ η ζ]ᵀ → ⎢∂N₁/∂η ... ∂Nₖ/∂η⎥ + * ⎣∂N₁/∂ζ ... ∂Nₖ/∂ζ⎦ * ``` * * @param[in] point Local point. @@ -111,21 +115,19 @@ namespace monad { /** * @brief Jacobian matrix evaluated at a local point. * - * For a D-dimensional element: - * - * - D=2: [ξ η]ᵀ → + * - 2D element: * * ```text - * ⎡∂x/∂ξ ∂x/∂η⎤ - * ⎣∂y/∂ξ ∂y/∂η⎦ + * [ξ η]ᵀ → ⎡∂x/∂ξ ∂x/∂η⎤ + * ⎣∂y/∂ξ ∂y/∂η⎦ * ``` * - * - D=3: [ξ η ζ]ᵀ → + * - 3D element: * * ```text - * ⎡∂x/∂ξ ∂x/∂η ∂x/∂ζ⎤ - * ⎪∂y/∂ξ ∂y/∂η ∂y/∂ζ⎪ - * ⎣∂z/∂ξ ∂z/∂η ∂z/∂ζ⎦ + * ⎡∂x/∂ξ ∂x/∂η ∂x/∂ζ⎤ + * [ξ η ζ]ᵀ → ⎢∂y/∂ξ ∂y/∂η ∂y/∂ζ⎥ + * ⎣∂z/∂ξ ∂z/∂η ∂z/∂ζ⎦ * ``` * * @param[in] point Local point. @@ -137,7 +139,7 @@ namespace monad { return gradShapeFunctions(point) * nodes; } - /// @brief Quadrature rule for integration. + /// @brief Quadrature rule. static QuadratureRule quadratureRule() noexcept { return Derived::quadratureRule(); } @@ -145,9 +147,11 @@ namespace monad { /** * @brief Area (2D) or volume (3D). * - * Computes area/volume via: + * Computes the measure as * + * ```text * ∫_Ω|det(J)|dΩ + * ``` * * @param[in] nodes Element nodes. * diff --git a/include/monad/fem/element/hex20.hpp b/include/monad/fem/element/hex20.hpp index 623a115..40607e2 100644 --- a/include/monad/fem/element/hex20.hpp +++ b/include/monad/fem/element/hex20.hpp @@ -42,7 +42,9 @@ namespace monad { /** * @brief Shape functions evaluated at a local point. * + * ```text * [ξ η ζ]ᵀ → [N₁(ξ,η,ζ) ... N₂₀(ξ,η,ζ)]ᵀ + * ``` * * @param[in] point Local point. * @@ -53,12 +55,10 @@ namespace monad { /** * @brief Shape function gradients evaluated at a local point. * - * [ξ η ζ]ᵀ → - * * ```text - * ⎡∂N₁/∂ξ ... ∂N₂₀/∂ξ⎤ - * ⎪∂N₁/∂η ... ∂N₂₀/∂η⎪ - * ⎣∂N₁/∂ζ ... ∂N₂₀/∂ζ⎦ + * ⎡∂N₁/∂ξ ... ∂N₂₀/∂ξ⎤ + * [ξ η ζ]ᵀ → ⎢∂N₁/∂η ... ∂N₂₀/∂η⎥ + * ⎣∂N₁/∂ζ ... ∂N₂₀/∂ζ⎦ * ``` * * @param[in] point Local point. @@ -67,7 +67,7 @@ namespace monad { */ static ShapeFuncGradMatrix gradShapeFunctions(const Point &point) noexcept; - /// @brief Quadrature rule for integration. + /// @brief Quadrature rule. static QuadratureRule quadratureRule() noexcept; /// @brief Gmsh element type ID. diff --git a/include/monad/fem/element/hex8.hpp b/include/monad/fem/element/hex8.hpp index b562105..dba21e7 100644 --- a/include/monad/fem/element/hex8.hpp +++ b/include/monad/fem/element/hex8.hpp @@ -42,7 +42,9 @@ namespace monad { /** * @brief Shape functions evaluated at a local point. * + * ```text * [ξ η ζ]ᵀ → [N₁(ξ,η,ζ) ... N₈(ξ,η,ζ)]ᵀ + * ``` * * @param[in] point Local point. * @@ -53,12 +55,10 @@ namespace monad { /** * @brief Shape function gradients evaluated at a local point. * - * [ξ η ζ]ᵀ → - * * ```text - * ⎡∂N₁/∂ξ ... ∂N₈/∂ξ⎤ - * ⎪∂N₁/∂η ... ∂N₈/∂η⎪ - * ⎣∂N₁/∂ζ ... ∂N₈/∂ζ⎦ + * ⎡∂N₁/∂ξ ... ∂N₈/∂ξ⎤ + * [ξ η ζ]ᵀ → ⎢∂N₁/∂η ... ∂N₈/∂η⎥ + * ⎣∂N₁/∂ζ ... ∂N₈/∂ζ⎦ * ``` * * @param[in] point Local point. @@ -67,7 +67,7 @@ namespace monad { */ static ShapeFuncGradMatrix gradShapeFunctions(const Point &point) noexcept; - /// @brief Quadrature rule for integration. + /// @brief Quadrature rule. static QuadratureRule quadratureRule() noexcept; /// @brief Gmsh element type ID. diff --git a/include/monad/fem/element/quad4.hpp b/include/monad/fem/element/quad4.hpp index f226f87..3609fab 100644 --- a/include/monad/fem/element/quad4.hpp +++ b/include/monad/fem/element/quad4.hpp @@ -7,7 +7,7 @@ namespace monad { namespace fem { /** - * @brief 4-node quadrilateral (Quad4) finite element. + * @brief 4-node quadrilateral (Quad4) element. * * The Quad4 element uses bilinear shape-functions on ξ,η∈[-1,1]. * @@ -34,7 +34,9 @@ namespace monad { /** * @brief Shape functions evaluated at a local point. * + * ```text * [ξ η]ᵀ → [N₁(ξ,η) ... N₄(ξ,η)]ᵀ + * ``` * * @param[in] point Local point. * @@ -45,11 +47,9 @@ namespace monad { /** * @brief Shape function gradients evaluated at a local point. * - * [ξ η]ᵀ → - * * ```text - * ⎡∂N₁/∂ξ ... ∂N₄/∂ξ⎤ - * ⎣∂N₁/∂η ... ∂N₄/∂η⎦ + * [ξ η]ᵀ → ⎡∂N₁/∂ξ ... ∂N₄/∂ξ⎤ + * ⎣∂N₁/∂η ... ∂N₄/∂η⎦ * ``` * * @param[in] point Local point. @@ -58,7 +58,7 @@ namespace monad { */ static ShapeFuncGradMatrix gradShapeFunctions(const Point &point) noexcept; - /// @brief Quadrature rule for integration. + /// @brief Quadrature rule. static QuadratureRule quadratureRule() noexcept; /// @brief Gmsh element type ID. diff --git a/include/monad/fem/element/quad8.hpp b/include/monad/fem/element/quad8.hpp index 099b719..56e7658 100644 --- a/include/monad/fem/element/quad8.hpp +++ b/include/monad/fem/element/quad8.hpp @@ -34,7 +34,9 @@ namespace monad { /** * @brief Shape functions evaluated at a local point. * + * ```text * [ξ η]ᵀ → [N₁(ξ,η) ... N₈(ξ,η)]ᵀ + * ``` * * @param[in] point Local point. * @@ -45,11 +47,9 @@ namespace monad { /** * @brief Shape function gradients evaluated at a local point. * - * [ξ η]ᵀ → - * * ```text - * ⎡∂N₁/∂ξ ... ∂N₈/∂ξ⎤ - * ⎣∂N₁/∂η ... ∂N₈/∂η⎦ + * [ξ η]ᵀ → ⎡∂N₁/∂ξ ... ∂N₈/∂ξ⎤ + * ⎣∂N₁/∂η ... ∂N₈/∂η⎦ * ``` * * @param[in] point Local point. @@ -58,7 +58,7 @@ namespace monad { */ static ShapeFuncGradMatrix gradShapeFunctions(const Point &point) noexcept; - /// @brief Quadrature rule for integration. + /// @brief Quadrature rule. static QuadratureRule quadratureRule() noexcept; /// @brief Gmsh element type ID. diff --git a/include/monad/fem/kernel/mechanical/linear_elastic_kernel.hpp b/include/monad/fem/kernel/mechanical/linear_elastic_kernel.hpp index 54d4e6b..6eed3dd 100644 --- a/include/monad/fem/kernel/mechanical/linear_elastic_kernel.hpp +++ b/include/monad/fem/kernel/mechanical/linear_elastic_kernel.hpp @@ -3,7 +3,6 @@ #include #include #include "monad/material/mechanical/linear_elastic_material.hpp" -#include "monad/fem/kernel/mechanical/linear_elastic_kernel_traits.hpp" #include "monad/integration/integrate_matrix.hpp" #include "monad/detail/eigen_utils.hpp" @@ -14,17 +13,22 @@ namespace monad { namespace mechanical { /** - * @brief Provides core FEM computations for a linear elastic element. + * @brief Core FEM computations for a linear elastic element. * - * This kernel implements the weak form of the linear elastic PDE: + * This kernel implements the weak form of the linear elasticity: * + * ```text * ∇·σ=∇·(Cε)=0 + * ``` * - * where the displacements are decomposed into macroscopic and microscopic components: + * where the displacements u∈ℝᵈ are decomposed into macroscopic and + * microscopic components: * + * ```text * u=ū+ũ + * ``` * - * @tparam ElementT Element class (e.g. Quad4). + * @tparam ElementT Element type (e.g. Quad4). */ template struct LinearElasticKernel { @@ -33,8 +37,7 @@ namespace monad { /// @brief Number of dofs in the element. static constexpr int NumDofs = Element::Dim * Element::NumNodes; - using Material = LinearElasticMaterial; - using Traits = LinearElasticKernelTraits; + using Material = material::LinearElasticMaterial; using Point = typename Element::Point; using NodesMatrix = typename Element::NodesMatrix; @@ -49,23 +52,20 @@ namespace monad { /** * @brief Element B matrix evaluated at a local point. * - * The B matrix relates an element's nodal displacements u to strains ε in Voigt - * notation at a local `point`: + * The B matrix maps nodal displacements u∈ℝᵈ to + * strains ε∈ℝᵛ at a local `point`: * + * ```text * ε=Bu - * - * For a D-dimensional element: - * - * - D=2: point=[ξ η]ᵀ - * - * - D=3: point=[ξ η ζ]ᵀ + * ``` * * @param[in] point Local point. * @param[in] nodes Element nodes. * * @returns Element B matrix evaluated at `point`. * - * @throws std::invalid_argument if `nodes` define a degenerate or inverted element geometry. + * @throws std::invalid_argument if `nodes` define a degenerate element. + * @throws std::invalid_argument if `nodes` define an inverted element. */ static BMatrix bMatrix(const Point &point, const NodesMatrix &nodes) { const auto J = Element::jacobian(point, nodes); @@ -82,25 +82,61 @@ namespace monad { const auto dN = Element::gradShapeFunctions(point); const auto dNGlobal = J.inverse() * dN; - BMatrix B; - Traits::fillB(B, dNGlobal); + BMatrix B = BMatrix::Zero(); + + if constexpr (Element::Dim == 2) { + // Normal strain ε₁₁ + B(0, Eigen::seq(0, Eigen::indexing::last, 2)) = dNGlobal.row(0); + + // Normal strain ε₂₂ + B(1, Eigen::seq(1, Eigen::indexing::last, 2)) = dNGlobal.row(1); + + // Shear strain ε₁₂ + B(2, Eigen::seq(0, Eigen::indexing::last, 2)) = dNGlobal.row(1); + B(2, Eigen::seq(1, Eigen::indexing::last, 2)) = dNGlobal.row(0); + } + else { + // Normal strain ε₁₁ + B(0, Eigen::seq(0, Eigen::indexing::last, 3)) = dNGlobal.row(0); + + // Normal strain ε₂₂ + B(1, Eigen::seq(1, Eigen::indexing::last, 3)) = dNGlobal.row(1); + + // Normal strain ε₃₃ + B(2, Eigen::seq(2, Eigen::indexing::last, 3)) = dNGlobal.row(2); + + // Shear strain ε₁₂ + B(3, Eigen::seq(0, Eigen::indexing::last, 3)) = dNGlobal.row(1); + B(3, Eigen::seq(1, Eigen::indexing::last, 3)) = dNGlobal.row(0); + + // Shear strain ε₁₃ + B(4, Eigen::seq(0, Eigen::indexing::last, 3)) = dNGlobal.row(2); + B(4, Eigen::seq(2, Eigen::indexing::last, 3)) = dNGlobal.row(0); + + // Shear strain ε₂₃ + B(5, Eigen::seq(1, Eigen::indexing::last, 3)) = dNGlobal.row(2); + B(5, Eigen::seq(2, Eigen::indexing::last, 3)) = dNGlobal.row(1); + } return B; } /** - * @brief Element mechanical stiffness matrix (left-hand side of the discretized weak form). + * @brief Element mechanical stiffness matrix evaluated at a local point. * - * Weak form lhs for an element e: + * For an element e: * + * ```text * Kₑ=∫_ΩₑBᵀCBdΩₑ + * ``` * - * @param[in] point Local point. + * @param[in] material Linear elastic material. * @param[in] nodes Element nodes. * * @returns Element mechanical stiffness matrix evaluated at `point`. * - * @throws std::invalid_argument if `nodes` define a degenerate or inverted element geometry. + * @throws std::invalid_argument if `nodes` define a degenerate element. + * @throws std::invalid_argument if `nodes` define an inverted element. */ static StiffnessMatrix lhs(const Material &material, const NodesMatrix &nodes) { const auto rule = Element::quadratureRule(); @@ -116,25 +152,28 @@ namespace monad { StiffnessMatrix K = integration::integrateMatrix(integrand, rule); - // Remove numerical artifacts + // Remove numerical asymmetry detail::symmetrize(K); return K; } /** - * @brief Element force matrix (right-hand side of the discretized weak form). + * @brief Element force matrix evaluated at a local point. * - * Weak form rhs for an element e: + * For an element e: * + * ```text * Fₑ=-∫_ΩₑBᵀCdΩₑε̄ + * ``` * - * @param[in] point Local point. + * @param[in] material Linear transport material. * @param[in] nodes Element nodes. * * @returns Element force matrix evaluated at `point`. * - * @throws std::invalid_argument if `nodes` define a degenerate or inverted element geometry. + * @throws std::invalid_argument if `nodes` define a degenerate element. + * @throws std::invalid_argument if `nodes` define an inverted element. */ static FieldMatrix rhs(const Material &material, const NodesMatrix &nodes) { const auto rule = Element::quadratureRule(); @@ -148,6 +187,7 @@ namespace monad { return B.transpose() * C * J.determinant(); }; + // No need to multiply by ε̄=I for unit macroscopic strains return -integration::integrateMatrix(integrand, rule); } }; diff --git a/include/monad/fem/kernel/mechanical/linear_elastic_kernel_traits.hpp b/include/monad/fem/kernel/mechanical/linear_elastic_kernel_traits.hpp deleted file mode 100644 index b751993..0000000 --- a/include/monad/fem/kernel/mechanical/linear_elastic_kernel_traits.hpp +++ /dev/null @@ -1,113 +0,0 @@ -#pragma once - -#include - -namespace monad { - - namespace fem { - - namespace mechanical { - - /** - * @brief Linear elastic kernel traits. - * - * This struct isolates dimension-specific logic so that the finite element kernel - * can be written generically in terms of spatial dimension. - * - * @tparam D Spatial dimension (2 or 3). - */ - template - struct LinearElasticKernelTraits; - - /** - * @brief 2D linear elastic kernel traits. - * - * This struct isolates 2D-specific logic so that the finite element kernel - * can be written generically in terms of spatial dimension. - */ - template <> - struct LinearElasticKernelTraits<2> { - /** - * @brief 2D element B matrix evaluated at a local point. - * - * The B matrix relates an element's nodal displacements u to strains ε in Voigt - * notation at a local point: - * - * ε=Bu - * - * @tparam BMatrix B matrix type. - * @tparam ShapeFuncGradMatrix Shape function gradient matrix type. - * - * @param[in,out] B Element B matrix evaluated at a point. - * @param[in] dN Element shape function gradients evaluated at a point. - */ - template - static void fillB(BMatrix &B, const ShapeFuncGradMatrix &dN) { - B.setZero(); - - // Normal strain ε₁₁ - B(0, Eigen::seq(0, Eigen::indexing::last, 2)) = dN.row(0); - - // Normal strain ε₂₂ - B(1, Eigen::seq(1, Eigen::indexing::last, 2)) = dN.row(1); - - // Shear strain ε₁₂ - B(2, Eigen::seq(0, Eigen::indexing::last, 2)) = dN.row(1); - B(2, Eigen::seq(1, Eigen::indexing::last, 2)) = dN.row(0); - } - }; - - /** - * @brief 3D linear elastic kernel traits. - * - * This struct isolates 3D-specific logic so that the finite element kernel - * can be written generically in terms of spatial dimension. - */ - template <> - struct LinearElasticKernelTraits<3> { - /** - * @brief 3D element B matrix evaluated at a local point. - * - * The B matrix relates an element's nodal displacements u to strains ε in Voigt - * notation at a local point: - * - * ε=Bu - * - * @tparam BMatrix B matrix type. - * @tparam ShapeFuncGradMatrix Shape function gradient matrix type. - * - * @param[in,out] B Element B matrix evaluated at a point. - * @param[in] dN Element shape function gradients evaluated at a point. - */ - template - static void fillB(BMatrix &B, const ShapeFuncGradMatrix &dN) { - B.setZero(); - - // Normal strain ε₁₁ - B(0, Eigen::seq(0, Eigen::indexing::last, 3)) = dN.row(0); - - // Normal strain ε₂₂ - B(1, Eigen::seq(1, Eigen::indexing::last, 3)) = dN.row(1); - - // Normal strain ε₃₃ - B(2, Eigen::seq(2, Eigen::indexing::last, 3)) = dN.row(2); - - // Shear strain ε₁₂ - B(3, Eigen::seq(0, Eigen::indexing::last, 3)) = dN.row(1); - B(3, Eigen::seq(1, Eigen::indexing::last, 3)) = dN.row(0); - - // Shear strain ε₁₃ - B(4, Eigen::seq(0, Eigen::indexing::last, 3)) = dN.row(2); - B(4, Eigen::seq(2, Eigen::indexing::last, 3)) = dN.row(0); - - // Shear strain ε₂₃ - B(5, Eigen::seq(1, Eigen::indexing::last, 3)) = dN.row(2); - B(5, Eigen::seq(2, Eigen::indexing::last, 3)) = dN.row(1); - } - }; - - } // namespace mechanical - - } // namespace fem - -} // namespace monad diff --git a/include/monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp b/include/monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp index 1004a42..8527748 100644 --- a/include/monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp +++ b/include/monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp @@ -8,6 +8,7 @@ #include "monad/fem/kernel/mechanical/linear_elastic_kernel.hpp" #include "monad/fem/kernel/scalar/linear_scalar_diffusive_kernel.hpp" #include "monad/integration/integrate_matrix.hpp" +#include "monad/detail/eigen_utils.hpp" namespace monad { @@ -16,19 +17,24 @@ namespace monad { namespace multiphysics { /** - * @brief Provides core FEM computations for a linear piezoelectric element. + * @brief Core FEM computations for a linear piezoelectric element. * - * This kernel implements the weak form of the linear piezoelectric PDE: + * This kernel implements the weak form of the linear piezoelectricity: * - * ∇·S=∇·(cT-dᵀE)=0 - * ∇·(-D)=∇·(-dT-εE)=0 + * ```text + * ∇·T=∇·(cS-dᵀE)=0 + * ∇·(D)=∇·(dS+ϵE)=0 + * ``` * - * where the displacements and electric potentials are decomposed into macroscopic and microscopic components: + * where the displacements u∈ℝᵈ and electric potentials φ∈ℝ are decomposed into + * macroscopic and microscopic components: * + * ```text * u=ū+ũ * φ=φ̄+φ̃ + * ``` * - * @tparam Element Element class (e.g. Quad4). + * @tparam Element Element type (e.g. Quad4). */ template struct LinearPiezoelectricKernel { @@ -40,7 +46,9 @@ namespace monad { /// @brief Number of dofs in the element. static constexpr int NumDofs = ElectricalKernel::NumDofs + MechanicalKernel::NumDofs; - using Material = LinearPiezoelectricMaterial, LinearTransportMaterial>; + using MechanicalMaterial = material::LinearElasticMaterial; + using ElectricalMaterial = material::LinearTransportMaterial; + using Material = material::LinearPiezoelectricMaterial; using Point = typename Element::Point; using NodesMatrix = typename Element::NodesMatrix; @@ -51,37 +59,50 @@ namespace monad { /// @brief Element piezoelectric stiffness matrix type. using StiffnessMatrix = Eigen::Matrix; - /// @brief Element mechanical field (induced by macroscopic electrical loading) matrix type. + /// @brief Element mechanical field matrix type induced by macroscopic electrical loading. using UPhiCouplingFieldMatrix = Eigen::Matrix; - /// @brief Element electrical field (induced by macroscopic mechanical loading) matrix type. + /// @brief Element electrical field matrix type induced by macroscopic mechanical loading. using PhiUCouplingFieldMatrix = Eigen::Matrix; /// @brief Element electromechanical field matrix type. using FieldMatrix = Eigen::Matrix; /** - * @brief Element piezoelectric stiffness matrix (left-hand side of the discretized weak form). + * @brief Element piezoelectric stiffness matrix evaluated at a local point. * - * Weak form lhs for an element e: + * For an element e: * * ```text * Kₑ = ⎡ (Kᵤᵤ)ₑ -(Kᵤᵩ)ₑ⎤ * ⎣-(Kᵩᵤ)ₑ -(Kᵩᵩ)ₑ⎦ * ``` * - * - (Kᵤᵤ)ₑ=∫_ΩₑBᵤᵀsBᵤdΩₑ (element mechanical stiffness matrix) + * - Element mechanical stiffness matrix: * - * - (Kᵩᵩ)ₑ=∫_ΩᵩBᵤᵀεBᵩdΩₑ (element electrical stiffness matrix) + * ```text + * (Kᵤᵤ)ₑ=∫_ΩₑBᵤᵀcBᵤdΩₑ + * ``` + * + * - Element electrical stiffness matrix: + * + * ```text + * (Kᵩᵩ)ₑ=∫_ΩᵩBᵤᵀεBᵩdΩₑ + * ``` + * + * - Element piezoelectric coupling stiffness matrix: * - * - (Kᵩᵤ)ₑ=(Kᵤᵩ)ₑᵀ=∫_ΩᵩBᵩᵀdBᵤdΩₑ=(∫_ΩᵩBᵤᵀdᵀBᵩdΩₑ)ᵀ (element coupling stiffness matrix) + * ```text + * (Kᵩᵤ)ₑ=(Kᵤᵩ)ₑᵀ=∫_ΩᵩBᵩᵀdBᵤdΩₑ=(∫_ΩᵩBᵤᵀdᵀBᵩdΩₑ)ᵀ + * ``` * - * @param[in] point Local point. + * @param[in] material Linear piezoelectric material. * @param[in] nodes Element nodes. * * @returns Element piezoelectric stiffness matrix evaluated at `point`. * - * @throws std::invalid_argument if `nodes` define a degenerate or inverted element geometry. + * @throws std::invalid_argument if `nodes` define a degenerate element. + * @throws std::invalid_argument if `nodes` define an inverted element. */ static StiffnessMatrix lhs(const Material &material, const NodesMatrix &nodes) { const auto rule = Element::quadratureRule(); @@ -96,37 +117,44 @@ namespace monad { return Bphi.transpose() * d * Bu * J.determinant(); }; - const auto Kuu = MechanicalKernel::lhs(material.elasticMaterial(), nodes); - const auto Kphiphi = ElectricalKernel::lhs(material.dielectricMaterial(), nodes); + const MechanicalMaterial mechanicalMaterial(material.stiffnessTensor()); + const ElectricalMaterial electricalMaterial(material.permittivityTensor()); + + const auto Kuu = MechanicalKernel::lhs(mechanicalMaterial, nodes); + const auto Kphiphi = ElectricalKernel::lhs(electricalMaterial, nodes); const CouplingStiffnessMatrix Kphiu = integration::integrateMatrix(integrand, rule); StiffnessMatrix K; K << Kuu, -Kphiu.transpose(), -Kphiu, -Kphiphi; + // Remove numerical asymmetry + detail::symmetrize(K); + return K; } /** - * @brief Element source matrix (right-hand side of the discretized weak form). + * @brief Element source matrix evaluated at a local point. * - * Weak form rhs for an element e: + * For an element e: * * ```text * Fₑ = ⎡ (Fᵤ)ₑ⎤ = ⎡ (Fᵤᵤ)ₑ (Fᵤᵩ)ₑ⎤ * ⎣-(Fᵩ)ₑ⎦ ⎣-(Fᵩᵤ)ₑ -(Fᵩᵩ)ₑ⎦ * ``` * - * - (Fᵤ)ₑ=[-∫_ΩₑBᵤᵀsdΩₑT̄ ∫_ΩₑBᵤᵀdᵀdΩₑĒ] + * - (Fᵤ)ₑ=[-∫_ΩₑBᵤᵀcdΩₑT̄ ∫_ΩₑBᵤᵀdᵀdΩₑĒ] * * - (Fᵩ)ₑ=[-∫_ΩₑBᵩᵀdᵀdΩₑT̄ -∫_ΩₑBᵩᵀεdΩₑĒ] * - * @param[in] point Local point. + * @param[in] material Linear piezoelectric material. * @param[in] nodes Element nodes. * * @returns Element source matrix evaluated at `point`. * - * @throws std::invalid_argument if `nodes` define a degenerate or inverted element geometry. + * @throws std::invalid_argument if `nodes` define a degenerate element. + * @throws std::invalid_argument if `nodes` define an inverted element. */ static FieldMatrix rhs(const Material &material, const NodesMatrix &nodes) { const auto rule = Element::quadratureRule(); @@ -147,9 +175,16 @@ namespace monad { return B.transpose() * d.transpose() * J.determinant(); }; - const auto Fuu = MechanicalKernel::rhs(material.elasticMaterial(), nodes); - const auto Fphiphi = ElectricalKernel::rhs(material.dielectricMaterial(), nodes); + const MechanicalMaterial mechanicalMaterial(material.stiffnessTensor()); + const ElectricalMaterial electricalMaterial(material.permittivityTensor()); + + const auto Fuu = MechanicalKernel::rhs(mechanicalMaterial, nodes); + const auto Fphiphi = ElectricalKernel::rhs(electricalMaterial, nodes); + + // No need to multiply by T̄=I for unit macroscopic strains const PhiUCouplingFieldMatrix Fphiu = -integration::integrateMatrix(integrandPhiU, rule); + + // No need to multiply by Ē=I for unit macroscopic electric fields const UPhiCouplingFieldMatrix Fuphi = integration::integrateMatrix(integrandUPhi, rule); FieldMatrix F; diff --git a/include/monad/fem/kernel/scalar/linear_scalar_diffusive_kernel.hpp b/include/monad/fem/kernel/scalar/linear_scalar_diffusive_kernel.hpp index 05487e6..2a2bdea 100644 --- a/include/monad/fem/kernel/scalar/linear_scalar_diffusive_kernel.hpp +++ b/include/monad/fem/kernel/scalar/linear_scalar_diffusive_kernel.hpp @@ -2,9 +2,9 @@ #include #include +#include "monad/material/transport/linear_transport_material.hpp" #include "monad/integration/integrate_matrix.hpp" #include "monad/detail/eigen_utils.hpp" -#include "monad/material/transport/linear_transport_material.hpp" namespace monad { @@ -12,26 +12,31 @@ namespace monad { namespace scalar { - /// @brief Specifies the sign convention relating the physical field G to the scalar potential gradient ∇φ. + /// @brief Sign convention for the derived field ∇φ. enum class GradientConvention { - /// @brief Physical field is defined as field G=−∇φ. + /// @brief Derived field is defined as −∇φ. Negative, - /// @brief Physical field is defined as field G=∇φ. + /// @brief Derived field is defined as ∇φ. Positive }; /** - * @brief Provides core FEM computations for a linear scalar diffusive element. + * @brief Core FEM computations for a linear scalar diffusive element. * - * This kernel implements the weak form of the scalar diffusion PDE: + * This kernel implements the weak form of scalar diffusion: * + * ```text * ∇·J=∇·(K∇φ)=0 + * ``` * - * where the scalar potentials are decomposed into macroscopic and microscopic components: + * where the scalar potentials φ∈ℝ are decomposed into macroscopic and + * microscopic components: * + * ```text * φ=φ̄+φ̃ + * ``` * - * @tparam ElementT Element class (e.g. Quad4). + * @tparam ElementT Element type (e.g. Quad4). * @tparam C Gradient sign convention (GradientConvention::Negative or Positive). */ template @@ -46,7 +51,7 @@ namespace monad { /// @brief Gradient sign. static constexpr double GradSign = (C == GradientConvention::Negative ? -1.0 : 1.0); - using Material = LinearTransportMaterial; + using Material = material::LinearTransportMaterial; using Point = typename Element::Point; using NodesMatrix = typename Element::NodesMatrix; @@ -61,23 +66,20 @@ namespace monad { /** * @brief Element B matrix evaluated at a local point. * - * The B matrix relates an element's nodal scalar potentials φ to scalar gradients at a - * local `point`: + * The B matrix masp nodal scalar potentials φ∈ℝ to + * scalar potential gradients ∇φ∈ℝᵈ at a local `point`: * + * ```text * ∇φ=Bφ - * - * For a D-dimensional element: - * - * - D=2: point=[ξ η]ᵀ - * - * - D=3: point=[ξ η ζ]ᵀ + * ``` * * @param[in] point Local point. * @param[in] nodes Element nodes. * * @returns Element B matrix evaluated at `point`. * - * @throws std::invalid_argument if `nodes` define a degenerate or inverted element geometry. + * @throws std::invalid_argument if `nodes` define a degenerate element. + * @throws std::invalid_argument if `nodes` define an inverted element. */ static BMatrix bMatrix(const Point &point, const NodesMatrix &nodes) { const auto J = Element::jacobian(point, nodes); @@ -97,18 +99,21 @@ namespace monad { } /** - * @brief Element diffusive stiffness matrix (left-hand side of the discretized weak form) evaluated at a local point. + * @brief Element diffusive stiffness matrix evaluated at a local point. * - * Weak form lhs for an element e: + * For an element e: * - * Kₑ=∫_ΩₑBᵀABdΩₑ + * ```text + * Kₑ=∫_ΩₑBᵀKBdΩₑ + * ``` * * @param[in] material Linear transport material. * @param[in] nodes Element nodes. * * @returns Element diffusive stiffness matrix evaluated at `point`. * - * @throws std::invalid_argument if `nodes` define a degenerate or inverted element geometry. + * @throws std::invalid_argument if `nodes` define a degenerate element. + * @throws std::invalid_argument if `nodes` define an inverted element. */ static StiffnessMatrix lhs(const Material &material, const NodesMatrix &nodes) { const auto rule = Element::quadratureRule(); @@ -124,25 +129,28 @@ namespace monad { StiffnessMatrix K = integration::integrateMatrix(integrand, rule); - // Remove numerical artifacts + // Remove numerical asymmetry detail::symmetrize(K); return K; } /** - * @brief Element source matrix (right-hand side of the discretized weak form) evaluated at a local point. + * @brief Element source matrix evaluated at a local point. * - * Weak form rhs for an element e: + * For an element e: * + * ```text * Fₑ=-∫_ΩₑBᵀAdΩₑ∇φ̄ + * ``` * * @param[in] material Linear transport material. * @param[in] nodes Element nodes. * * @returns Element source matrix evaluated at `point`. * - * @throws std::invalid_argument if `nodes` define a degenerate or inverted element geometry. + * @throws std::invalid_argument if `nodes` define a degenerate element. + * @throws std::invalid_argument if `nodes` define an inverted element. */ static FieldMatrix rhs(const Material &material, const NodesMatrix &nodes) { const auto rule = Element::quadratureRule(); @@ -156,6 +164,7 @@ namespace monad { return B.transpose() * A * J.determinant(); }; + // No need to multiply by ∇φ̄=I for unit macroscopic scalar potential gradients return -integration::integrateMatrix(integrand, rule); } }; diff --git a/include/monad/fem/operator/dof_map.hpp b/include/monad/fem/operator/dof_map.hpp new file mode 100644 index 0000000..eebaec6 --- /dev/null +++ b/include/monad/fem/operator/dof_map.hpp @@ -0,0 +1,140 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace monad { + + namespace fem { + + /** + * @brief Maps element periodic dofs into the reduced periodic dof space. + * + * Fixed dofs are stored as `-1`. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + * @tparam Traits Dof traits type (e.g. LinearElasticDofTraits). + */ + template + class DofMap { + public: + using Element = typename Grid::Element; + using ElementDofs = std::array; + using ElementDofList = std::vector; + + /** + * @brief Constructs a dof map. + * + * @param[in] grid Grid. + */ + explicit DofMap(const Grid &grid) { + numPeriodicNodes_ = grid.numPeriodicNodes(); + numReducedDofs_ = Traits::NumNodeDofs * numPeriodicNodes_ - Traits::NumFixedDofs; + + elementDofs_.reserve(grid.numElements()); + + for (std::size_t i = 0; i < grid.numElements(); ++i) { + const auto element = grid.periodicElement(i); + const auto periodicDofs = Traits::elementDofs(element, numPeriodicNodes_); + + ElementDofs reducedDofs; + + for (std::size_t j = 0; j < periodicDofs.size(); ++j) { + const std::size_t periodicDof = periodicDofs[j]; + + if (Traits::isFixedPeriodicDof(periodicDof, numPeriodicNodes_)) { + reducedDofs[j] = -1; + } + else { + const std::size_t reducedDof = Traits::periodicToReducedDof(periodicDof, numPeriodicNodes_); + reducedDofs[j] = static_cast(reducedDof); + } + } + + elementDofs_.push_back(reducedDofs); + } + } + + /// @brief Number of elements in the map. + std::size_t size() const noexcept { + return elementDofs_.size(); + } + + /// @brief Number of reduced periodic dofs. + std::size_t numReducedDofs() const noexcept { + return numReducedDofs_; + } + + /** + * @brief Reduced periodic dofs of an element. + * + * @param[in] index Element index. + * + * @returns Reduced periodic dofs of an element. + * + * @throws std::out_of_range if `index` is outside the range [0, `size()`). + */ + const ElementDofs &reducedDofs(std::size_t index) const { + if (index >= elementDofs_.size()) { + throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(elementDofs_.size()) + ")."); + } + + return elementDofs_[index]; + } + + /** + * @brief Returns `true` if a periodic dof is fixed. + * + * @param[in] dof Periodic dof. + * + * @returns `true` if `dof` is fixed, `false` otherwise. + */ + bool isFixedPeriodicDof(std::size_t dof) const noexcept { + return Traits::isFixedPeriodicDof(dof, numPeriodicNodes_); + } + + /** + * @brief Maps a periodic dof to a reduced periodic dof. + * + * The reduced periodic dof space is formed by removing fixed + * periodic dofs from the full periodic dof numbering. + * + * @param[in] dof Periodic dof. + * + * @returns Reduced periodic dof. + */ + std::size_t periodicToReducedDof(std::size_t dof) const noexcept { + return Traits::periodicToReducedDof(dof, numPeriodicNodes_); + } + + /** + * @brief Maps a reduced periodic dof to a periodic dof. + * + * The reduced periodic dof space is formed by removing fixed + * periodic dofs from the full periodic dof numbering. + * + * @param[in] dof Reduced periodic dof. + * + * @returns Periodic dof. + */ + std::size_t reducedToPeriodicDof(std::size_t dof) const noexcept { + return Traits::reducedToPeriodicDof(dof, numPeriodicNodes_); + } + + private: + /// @brief Number of periodic nodes. + std::size_t numPeriodicNodes_; + + /// @brief Number of reduced periodic dofs. + std::size_t numReducedDofs_; + + /// @brief Per-element mapping into the reduced periodic dof space. + ElementDofList elementDofs_; + }; + + } // namespace fem + +} // namespace monad diff --git a/include/monad/fem/operator/matrix_free_operator.hpp b/include/monad/fem/operator/matrix_free_operator.hpp index 6ea505e..19a6ccd 100644 --- a/include/monad/fem/operator/matrix_free_operator.hpp +++ b/include/monad/fem/operator/matrix_free_operator.hpp @@ -1,46 +1,40 @@ #pragma once #include -#include -#include -#include #ifdef _OPENMP #include #endif #include #include -#include "monad/detail/constants.hpp" +#include "monad/field/density_field.hpp" +#include "monad/fem/operator/dof_map.hpp" #include "monad/detail/eigen_utils.hpp" -#include "monad/grid/grid_base.hpp" namespace monad { namespace fem { /** - * @brief Matrix-free operator for the global stiffness matrix. + * @brief Matrix-free operator for the reduced global stiffness matrix. * - * The operator represents the action of the global stiffness matrix - * on a vector without explicitly assembling the matrix and is defined - * on the reduced set of unconstrained periodic dofs. + * This class applies the global stiffness operator without explicitly + * assembling the global matrix. * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * @tparam Traits Matrix free operator traits class (e.g. LinearElasticMatrixFreeOperatorTraits<2>). + * @tparam Grid Grid type (e.g. Quad4Grid). + * @tparam Traits Dof traits type (e.g. LinearElasticDofTraits<2>). * * @note Inspiration: https://libeigen.gitlab.io/eigen/docs-nightly/group__MatrixfreeSolverExample.html */ - template - class MatrixFreeOperator : public Eigen::EigenBase> { + template + class MatrixFreeOperator : public Eigen::EigenBase> { public: - static_assert(Element::Dim == Grid::Dim, "Element spatial dimension must equal grid spatial dimension."); + using Element = typename Grid::Element; /// @brief Number of dofs per element. static constexpr int NumElementDofs = Element::NumNodes * Traits::NumNodeDofs; - using ElementsList = typename GridBase::ElementsList; - using DensityList = typename GridBase::DensityList; - using ElementDofList = std::vector>; + /// @brief Element dof vector type. + using DofVector = Eigen::Vector; /// @brief Element stiffness matrix type. using StiffnessMatrix = Eigen::Matrix; @@ -55,73 +49,29 @@ namespace monad { }; /** - * @brief Constructs the matrix-free operator. + * @brief Constructs a matrix-free operator. * - * @param[in] grid Periodic unit cell grid. + * @param[in] grid Grid. + * @param[in] densityField Per-element density field defined on `grid`. * @param[in] elementKReference Reference element stiffness matrix for unit density. - */ - MatrixFreeOperator(const GridBase &grid, const StiffnessMatrix &elementKReference) - : elementKReference_(elementKReference), elements_(grid.periodicElements()), densities_(grid.densities()) { - const std::size_t numPeriodicNodes = grid.numPeriodicNodes(); - const std::size_t numReducedDofs = Traits::NumNodeDofs * numPeriodicNodes - Traits::NumFixedDofs; - - numRows_ = static_cast(numReducedDofs); - numCols_ = numRows_; - - // Precompute global-reduced dof mapping - // Fixed dofs are marked with -1 and skipped during gather/scatter - const std::size_t numElements = elements_.size(); - elementDofs_.resize(numElements); - - for (std::size_t i = 0; i < numElements; ++i) { - auto &element = elements_[i]; - const auto dofs = Traits::dofs(element, numPeriodicNodes); - - for (std::size_t j = 0; j < dofs.size(); ++j) { - const std::size_t dof = dofs[j]; - if (Traits::isFixedDof(dof, numPeriodicNodes)) { - elementDofs_[i][j] = -1; - } - else { - const std::size_t reducedDof = Traits::reducedDof(dof, numPeriodicNodes); - elementDofs_[i][j] = static_cast(reducedDof); - } - } - } - } - - /// @brief Reference element stiffness matrix for unit density. - const StiffnessMatrix &elementKReference() const noexcept { - return elementKReference_; - } - - /// @brief Periodic node indices for all elements. - const ElementsList &elements() const noexcept { - return elements_; - } - - /// @brief Material densities for all elements. - const DensityList &densities() const noexcept { - return densities_; - } - - /** - * @brief Reduced dofs for all elements. * - * @note Fixed dofs are set to -1. + * @throws std::invalid_argument if `grid` and `densityField` do not have the same resolution. */ - const ElementDofList &elementDofs() const noexcept { - return elementDofs_; + MatrixFreeOperator(const Grid &grid, const field::DensityField &densityField, const StiffnessMatrix &elementKReference) + : densityField_(densityField), dofMap_(grid), elementKReference_(elementKReference) { + if (grid.resolution() != densityField_.resolution()) { + throw std::invalid_argument( "Grid resolution must match density field resolution."); + } } /// @brief Number of rows. int rows() const noexcept { - return numRows_; + return static_cast(dofMap_.numReducedDofs()); } /// @brief Number of columns. int cols() const noexcept { - return numCols_; + return static_cast(dofMap_.numReducedDofs()); } /// @brief `true` if the matrix-free operator is symmetric, `false` otherwise. @@ -134,43 +84,95 @@ namespace monad { return detail::isPSD(elementKReference_); } + /// @brief Per-element density field. + const field::DensityField &densityField() const noexcept { + return densityField_; + }; + + /// @brief Reduced periodic dof map. + const DofMap &dofMap() const noexcept { + return dofMap_; + } + + /// @brief Reference element stiffness matrix for unit density. + const StiffnessMatrix& elementKReference() const noexcept { + return elementKReference_; + } + /** - * @brief Overloads the multiplication operator to define the matrix-vector product y=Kx. + * @brief Matrix-vector multiplication Kx=y. * - * @tparam Rhs Type of the right-hand side vector. + * @tparam Lhs Type of the left-hand side vector x. + * @tparam Rhs Type of the right-hand side vector y. * - * @param[in] x Right-hand side vector. - * - * @returns Product Kx. + * @param[in] lhs Left-hand side vector x. + * @param[in,out] rhs Right-hand side vector y. */ - template - Eigen::Product - operator*(const Eigen::MatrixBase &x) const { - return Eigen::Product(*this, x.derived()); - } + template + void apply(const Eigen::MatrixBase &lhs, Rhs &rhs) const { +#ifdef _OPENMP +#ifdef DEFAULT_OMP_NUM_THREADS + omp_set_num_threads(DEFAULT_OMP_NUM_THREADS); +#endif + #pragma omp parallel for schedule(static) +#endif + for (std::size_t i = 0; i < dofMap_.size(); ++i) { + const auto &reducedDofs = dofMap_.reducedDofs(i); + const double density = densityField_.getDensity(i); - private: - /// @brief Reference element stiffness matrix for unit density. - const StiffnessMatrix &elementKReference_; + // Gather the element dof vector from the reduced periodic vector. + // Fixed dofs are represented by -1 in the map and are treated as zero. + DofVector x; - /// @brief Number of rows. - int numRows_; + for (std::size_t j = 0; j < reducedDofs.size(); ++j) { + const int reducedDof = reducedDofs[j]; + const int localReducedDof = static_cast(j); - /// @brief Number of columns. - int numCols_; + x(localReducedDof) = (reducedDof >= 0) ? lhs(reducedDof) : 0.0; + } - /// @brief Periodic node indices for all elements. - ElementsList elements_; + // Apply the density-scaled reference element stiffness + const DofVector y = density * (elementKReference_ * x); - /// @brief Material densities for all elements. - DensityList densities_; + // Scatter the local contribution back into the reduced global vector + for (std::size_t j = 0; j < reducedDofs.size(); ++j) { + const int reducedDof = reducedDofs[j]; + const int localReducedDofs = static_cast(j); + + if (reducedDof >= 0) { +#ifdef _OPENMP + #pragma omp atomic +#endif + rhs(reducedDof) += y(localReducedDofs); + } + } + } + } /** - * @brief Reduced dofs for all elements. + * @brief Overloaded operator for matrix-vector multiplication y=Kx. * - * @note Fixed dofs are set to -1. + * @tparam Lhs Type of the right-hand side vector x. + * + * @param[in] x Left-hand side vector x. + * + * @returns Matrix-vector product Kx. */ - ElementDofList elementDofs_; + template + Eigen::Product + operator*(const Eigen::MatrixBase &x) const { + return Eigen::Product(*this, x.derived()); + } + + private: + /// @brief Per-element density field. + const field::DensityField &densityField_; + + /// @brief Reduced periodic dof map. + DofMap dofMap_; + + /// @brief Reference element stiffness matrix for unit density. + const StiffnessMatrix &elementKReference_; }; } // namespace fem @@ -182,109 +184,58 @@ namespace Eigen { namespace internal { /** - * @brief This step informs Eigen's expression system that MatrixFreeOperator should be treated similarly to Eigen::SparseMatrix. + * @brief Eigen traits specialization for `MatrixFreeOperator`. + * + * This tells Eigen to treat `MatrixFreeOperator` like a sparse matrix in + * expression templates. * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * @tparam Traits Matrix free operator traits class (e.g. LinearElasticMatrixFreeOperatorTraits). + * @tparam Grid Grid type (e.g. Quad4Grid). + * @tparam Traits Dof traits type (e.g. LinearElasticDofTraits<2>). * * @note Inspiration: https://libeigen.gitlab.io/eigen/docs-nightly/group__MatrixfreeSolverExample.html */ - template - struct traits> : public Eigen::internal::traits> {}; + template + struct traits> : public Eigen::internal::traits> {}; /** - * @brief Specializes Eigen's product implementation for the matrix-vector multiplication Kx. + * @brief Eigen product specialization for matrix-vector multiplication. * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * @tparam Traits Matrix free operator traits class (e.g. LinearElasticMatrixFreeOperatorTraits). - * @tparam Rhs Type of the right-hand side vector. + * @tparam Grid Grid type (e.g. Quad4Grid). + * @tparam Traits Dof traits type (e.g. LinearElasticDofTraits<2>). + * @tparam Lhs Type of the left-hand side vector. * * @note Inspiration: https://libeigen.gitlab.io/eigen/docs-nightly/group__MatrixfreeSolverExample.html */ - template + template struct generic_product_impl< - monad::fem::MatrixFreeOperator, - Rhs, + monad::fem::MatrixFreeOperator, + Lhs, SparseShape, DenseShape, GemvProduct // General matrix-vector product - > : generic_product_impl_base, Rhs, - generic_product_impl, Rhs>> { - using Operator = typename monad::fem::MatrixFreeOperator; - using Scalar = typename Product::Scalar; + > : generic_product_impl_base, Lhs, + generic_product_impl, Lhs>> { + using Operator = typename monad::fem::MatrixFreeOperator; + using Scalar = typename Product::Scalar; /** - * @brief Implements the core matrix-vector multiplication y=Kx. + * @brief Matrix-vector multiplication Kx=y. * - * @tparam Dest The type of the destination vector y. + * @tparam Rhs Type of the right-hand side vector y. * - * @param[in,out] dst Destination vector y. - * @param[in] lhs Matrix-free operator K. - * @param[in] rhs Right-hand side vector x. + * @param[in,out] rhs Right-hand side vector y. + * @param[in] K Matrix-free operator. + * @param[in] lhs Left-hand side vector x. * @param[in] alpha Scaling factor (must be 1). * * @note Inspiration: https://libeigen.gitlab.io/eigen/docs-nightly/group__MatrixfreeSolverExample.html */ - template - static void scaleAndAddTo(Dest &dst, const Operator &lhs, const Rhs &rhs, const Scalar &alpha) { + template + static void scaleAndAddTo(Rhs &rhs, const Operator &K, const Lhs &lhs, const Scalar &alpha) { eigen_assert(alpha == Scalar(1) && "scaling is not implemented"); EIGEN_ONLY_USED_FOR_DEBUG(alpha); - using DofVector = Eigen::Vector; - - const auto &elementKReference = lhs.elementKReference(); - const auto &elements = lhs.elements(); - const auto &densities = lhs.densities(); - const auto &elementDofs = lhs.elementDofs(); - -#ifdef _OPENMP -#ifdef DEFAULT_OMP_NUM_THREADS - omp_set_num_threads(DEFAULT_OMP_NUM_THREADS); -#endif - #pragma omp parallel for schedule(static) -#endif - for (std::size_t i = 0; i < elements.size(); ++i) { - const double density = densities[i]; - const auto &dofs = elementDofs[i]; - - // --- Gather --- - // Assemble the local vector x from the reduced global vector rhs. - // Fixed dofs are treated as zero. - DofVector x; - - for (std::size_t j = 0; j < dofs.size(); ++j) { - const int globalDof = dofs[j]; - const int localDof = static_cast(j); - - if (globalDof >= 0) { - x(localDof) = rhs(globalDof); - } - else { - x(localDof) = 0.0; - } - } - - // --- Apply --- - // Apply the element stiffness Kx (scaled by material density). - const DofVector y = density * (elementKReference * x); - - // --- Scatter --- - // Accumulate local element Kx contributions into the reduced global vector dst. - for (std::size_t j = 0; j < dofs.size(); ++j) { - const int globalDof = dofs[j]; - const int localDof = static_cast(j); - - if (globalDof >= 0) { - -#ifdef _OPENMP - #pragma omp atomic -#endif - dst(globalDof) += y(localDof); - } - } - } + K.apply(lhs, rhs); } }; diff --git a/include/monad/fem/operator/mechanical/linear_elastic_dof_traits.hpp b/include/monad/fem/operator/mechanical/linear_elastic_dof_traits.hpp new file mode 100644 index 0000000..4a1484f --- /dev/null +++ b/include/monad/fem/operator/mechanical/linear_elastic_dof_traits.hpp @@ -0,0 +1,132 @@ +#pragma once + +#include +#include + +namespace monad { + + namespace fem { + + namespace mechanical { + + /** + * @brief Dof numbering rules for periodic linear elasticity problems. + * + * @tparam D Spatial dimension (2 or 3). + */ + template + struct LinearElasticDofTraits { + /// @brief Number of dofs per node. + static constexpr int NumNodeDofs = D; + + /// @brief Number of fixed periodic dofs to remove rigid-body transformations. + static constexpr int NumFixedDofs = D; + + /** + * @brief Expands element node indices into dofs. + * + * Given an element with node indices [n₁, ..., nₖ], the + * associated dofs are + * + * - 2D: [2n₁, 2n₁+1, ..., 2nₖ, 2nₖ+1] + * + * - 3D: [3n₁, 3n₁+1, 3n₁+2, ..., 3nₖ, 3nₖ+1, 3nₖ+2] + * + * @tparam K Number of element nodes. + * + * @param[in] element Element node indices. + * @param[in] numNodes Total number of nodes. + * + * @returns Dofs associated with `element`. + * + * @note `numNodes` is unused here. It is kept only to match + * the interface of other dof traits that require node-based offsets. + */ + template + static auto elementDofs(const std::array &element, std::size_t numNodes) noexcept { + (void)numNodes; + + std::array dofs; + + std::size_t index = 0; + + for (std::size_t i = 0; i < K; ++i) { + const std::size_t node = element[i]; + + for (std::size_t j = 0; j < NumNodeDofs; ++j) { + dofs[index++] = NumNodeDofs * node + j; + } + } + + return dofs; + } + + /** + * @brief Returns `true` if a periodic dof is fixed. + * + * The first `D` periodic dofs are fixed. + * + * - 2D: [0, 1] + * + * - 3D: [0, 1, 2] + * + * @param[in] dof Periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns `true` if `dof` is fixed, `false` otherwise. + * + * @note `numNodes` is unused here. It is kept only to match + * the interface of other dof traits that require node-based offsets. + */ + static bool isFixedPeriodicDof(std::size_t dof, std::size_t numNodes) noexcept { + (void)numNodes; + + return dof < NumFixedDofs; + } + + /** + * @brief Maps a periodic dof to a reduced periodic dof. + * + * The reduced periodic dof space is formed by removing fixed + * periodic dofs from the full periodic dof numbering. + * + * @param[in] dof Periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns Reduced periodic dof. + * + * @note `numNodes` is unused here. It is kept only to match + * the interface of other dof traits that require node-based offsets. + */ + static std::size_t periodicToReducedDof(std::size_t dof, std::size_t numNodes) noexcept { + (void)numNodes; + + return dof - NumFixedDofs; + } + + /** + * @brief Maps a reduced periodic dof to a periodic dof. + * + * The reduced periodic dof space is formed by removing fixed + * periodic dofs from the full periodic dof numbering. + * + * @param[in] dof Reduced periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns Periodic dof. + * + * @note `numNodes` is unused here. It is kept only to match + * the interface of other dof traits that require node-based offsets. + */ + static std::size_t reducedToPeriodicDof(std::size_t dof, std::size_t numNodes) noexcept { + (void)numNodes; + + return dof + NumFixedDofs; + } + }; + + } // namespace mechanical + + } // namespace fem + +} // namespace monad diff --git a/include/monad/fem/operator/mechanical/linear_elastic_matrix_free_operator_traits.hpp b/include/monad/fem/operator/mechanical/linear_elastic_matrix_free_operator_traits.hpp deleted file mode 100644 index 0f62608..0000000 --- a/include/monad/fem/operator/mechanical/linear_elastic_matrix_free_operator_traits.hpp +++ /dev/null @@ -1,141 +0,0 @@ -#pragma once - -#include -#include - -namespace monad { - - namespace fem { - - namespace mechanical { - - /** - * @brief Linear elastic matrix free operator traits. - * - * This struct isolates physics- and dimension-specific logic - * so that the matrix free operator can be written generically. - * - * @tparam D Spatial dimension (2 or 3). - */ - template - struct LinearElasticMatrixFreeOperatorTraits { - /// @brief Number of dofs per node. - static constexpr int NumNodeDofs = D; - - /// @brief Number of fixed dofs to remove rigid body transformations. - static constexpr int NumFixedDofs = D; - - /** - * @brief List of dofs associated with an element's nodes. - * - * Given an element with node indices [n₁, ..., nₖ], its dofs are: - * - * - D=2: [2n₁, 2n₁+1, ..., 2nₖ, 2nₖ+1] - * - * - D=3: [3n₁, 3n₁+1, 3n₁+2, ..., 3nₖ, 3nₖ+1, 3nₖ+2] - * - * @tparam K Number of nodes in the element. - * - * @param[in] element Node indices for a specific element. - * @param[in] numNodes Number of nodes. - * - * @returns List of dofs associated with `element`'s nodes. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - template - static auto dofs(const std::array &element, std::size_t numNodes) noexcept { - (void)numNodes; - - std::array data; - - std::size_t index = 0; - - for (std::size_t i = 0; i < K; ++i) { - const std::size_t node = element[i]; - - for (std::size_t j = 0; j < NumNodeDofs; ++j) { - data[index++] = NumNodeDofs * node + j; - } - } - - return data; - } - - /** - * @brief Checks if a global dof is fixed. - * - * The fixed dofs are: - * - * - D=2: [0, 1] - * - * - D=3: [0, 1, 2] - * - * @param[in] dof Global dof. - * @param[in] numNodes Number of nodes. - * - * @returns `true` if `dof` is fixed, `false` otherwise. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static bool isFixedDof(std::size_t dof, std::size_t numNodes) noexcept - { - (void)numNodes; - - return dof < NumFixedDofs; - } - - /** - * @brief Maps a global dof to its reduced version. - * - * Matrix-free operators act only on unconstrained periodic dofs. - * This function maps dofs from a space where fixed dofs are - * included to a space where they are removed. - * - * @param[in] dof Global dof. - * @param[in] numNodes Number of nodes. - * - * @returns Reduced dof. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static std::size_t reducedDof(std::size_t dof, std::size_t numNodes) noexcept { - (void)numNodes; - - return dof - NumFixedDofs; - } - - /** - * @brief Maps a reduced dof to its global version. - * - * Matrix-free operators act only on unconstrained periodic dofs. - * This function maps dofs from a space where fixed dofs - * are removed to a space where they are included. - * - * @param[in] dof Reduced dof. - * @param[in] numNodes Number of nodes. - * - * @returns Global dof. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static std::size_t expandedDof(std::size_t dof, std::size_t numNodes) noexcept { - (void)numNodes; - - return dof + NumFixedDofs; - } - }; - - } // namespace mechanical - - } // namespace fem - -} // namespace monad diff --git a/include/monad/fem/operator/multiphysics/linear_piezoelectric_dof_traits.hpp b/include/monad/fem/operator/multiphysics/linear_piezoelectric_dof_traits.hpp new file mode 100644 index 0000000..63d444c --- /dev/null +++ b/include/monad/fem/operator/multiphysics/linear_piezoelectric_dof_traits.hpp @@ -0,0 +1,159 @@ +#pragma once + +#include +#include +#include "monad/fem/operator/mechanical/linear_elastic_dof_traits.hpp" +#include "monad/fem/operator/scalar/linear_scalar_diffusive_dof_traits.hpp" + +namespace monad { + + namespace fem { + + namespace multiphysics { + + /** + * @brief Dof numbering rules for periodic linear piezoelectricity problems. + * + * @tparam D Spatial dimension (2 or 3). + */ + template + struct LinearPiezoelectricDofTraits { + using MechanicalTraits = mechanical::LinearElasticDofTraits; + using ElectricalTraits = scalar::LinearScalarDiffusiveDofTraits; + + /// @brief Number of dofs per node. + static constexpr int NumNodeDofs = MechanicalTraits::NumNodeDofs + ElectricalTraits::NumNodeDofs; + + /// @brief Number of fixed periodic dofs to remove rigid-body transformations. + static constexpr int NumFixedDofs = MechanicalTraits::NumFixedDofs + ElectricalTraits::NumFixedDofs; + + /** + * @brief Expands element node indices into dofs. + * + * Given an element with node indices [n₁, ..., nₖ], the + * associated dofs are + * + * - 2D: [2n₁, 2n₁+1, ..., 2nₖ, 2nₖ+1, n₁+2k, ..., nₖ+2k] + * + * - 3D: [3n₁, 3n₁+1, 3n₁+2, ..., 3nₖ, 3nₖ+1, 3nₖ+2, n₁+3k, ..., nₖ+3k] + * + * @tparam K Number of element nodes. + * + * @param[in] element Element node indices. + * @param[in] numNodes Total number of nodes. + * + * @returns Dofs associated with `element`. + */ + template + static auto elementDofs(const std::array &element, std::size_t numNodes) noexcept { + const std::size_t numMechanicalDofs = numNodes * MechanicalTraits::NumNodeDofs; + + // Mechanical dofs + const auto mechanicalDofs = MechanicalTraits::elementDofs(element, numNodes); + + // Electrical dofs + auto electricalDofs = ElectricalTraits::elementDofs(element, numNodes); + + // Offset electrical dofs by number of mechanical dofs + for (auto &dof : electricalDofs) { + dof += numMechanicalDofs; + } + + // Concatenate + std::array dofs; + std::size_t index = 0; + + for (auto dof : mechanicalDofs) { + dofs[index++] = dof; + } + for (auto dof : electricalDofs) { + dofs[index++] = dof; + } + + return dofs; + } + + /** + * @brief Returns `true` if a periodic dof is fixed. + * + * The first `D` mechanical dofs and the first electrical + * dof are fixed: + * + * - 2D: [0, 1, 2m] + * + * - 3D: [0, 1, 2, 3m] + * + * @param[in] dof Periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns `true` if `dof` is fixed, `false` otherwise. + */ + static bool isFixedPeriodicDof(std::size_t dof, std::size_t numNodes) noexcept { + const std::size_t numMechanicalDofs = numNodes * MechanicalTraits::NumNodeDofs; + + // Fixed mechanical periodic dofs + if (dof < numMechanicalDofs) { + return MechanicalTraits::isFixedPeriodicDof(dof, numNodes); + } + + // Fixed electrical periodic dof + // Electrical periodic dofs are offset by number of mechanical periodic dofs + return ElectricalTraits::isFixedPeriodicDof(dof - numMechanicalDofs, numNodes); + } + + /** + * @brief Maps a periodic dof to a reduced periodic dof. + * + * The reduced periodic dof space is formed by removing fixed + * periodic dofs from the full periodic dof numbering. + * + * @param[in] dof Periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns Reduced periodic dof. + */ + static std::size_t periodicToReducedDof(std::size_t dof, std::size_t numNodes) noexcept { + const std::size_t numMechanicalDofs = numNodes * MechanicalTraits::NumNodeDofs; + const std::size_t numReducedMechanicalDofs = numMechanicalDofs - MechanicalTraits::NumFixedDofs; + + // Mechanical periodic dofs + if (dof < numMechanicalDofs) { + return MechanicalTraits::periodicToReducedDof(dof, numNodes); + } + + // Electrical periodic dofs + // Electrical periodic dofs are offset by number of mechanical periodic dofs + return ElectricalTraits::periodicToReducedDof(dof - numMechanicalDofs, numNodes) + numReducedMechanicalDofs; + } + + /** + * @brief Maps a reduced periodic dof to a periodic dof. + * + * The reduced periodic dof space is formed by removing fixed + * periodic dofs from the full periodic dof numbering. + * + * @param[in] dof Reduced periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns Periodic dof. + */ + static std::size_t reducedToPeriodicDof(std::size_t dof, std::size_t numNodes) noexcept { + const std::size_t numMechanicalDofs = numNodes * MechanicalTraits::NumNodeDofs; + const std::size_t numReducedMechanicalDofs = numMechanicalDofs - MechanicalTraits::NumFixedDofs; + + // Mechanical reduced periodic dofs + if (dof < numReducedMechanicalDofs) { + return MechanicalTraits::reducedToPeriodicDof(dof, numNodes); + } + + // Electrical reduced periodic dofs + // Electrical reduced periodic dofs are offset by number of mechanical reduced periodic dofs + return ElectricalTraits::reducedToPeriodicDof(dof - numReducedMechanicalDofs, numNodes) + numMechanicalDofs; + } + }; + + } // namespace multiphysics + + } // namespace fem + +} // namespace monad diff --git a/include/monad/fem/operator/multiphysics/linear_piezoelectric_matrix_free_operator_traits.hpp b/include/monad/fem/operator/multiphysics/linear_piezoelectric_matrix_free_operator_traits.hpp deleted file mode 100644 index 3fb9e34..0000000 --- a/include/monad/fem/operator/multiphysics/linear_piezoelectric_matrix_free_operator_traits.hpp +++ /dev/null @@ -1,178 +0,0 @@ -#pragma once - -#include -#include -#include "monad/fem/operator/mechanical/linear_elastic_matrix_free_operator_traits.hpp" -#include "monad/fem/operator/scalar/linear_scalar_diffusive_matrix_free_operator_traits.hpp" - -namespace monad { - - namespace fem { - - namespace multiphysics { - - /** - * @brief Linear piezoelectric matrix free operator traits. - * - * This struct isolates physics- and dimension-specific logic - * so that the matrix free operator can be written generically. - * - * @tparam D Spatial dimension (2 or 3). - */ - template - struct LinearPiezoelectricMatrixFreeOperatorTraits { - using MechanicalTraits = mechanical::LinearElasticMatrixFreeOperatorTraits; - using ElectricalTraits = scalar::LinearScalarDiffusiveMatrixFreeOperatorTraits; - - /// @brief Number of dofs per node. - static constexpr int NumNodeDofs = MechanicalTraits::NumNodeDofs + ElectricalTraits::NumNodeDofs; - - /// @brief Number of fixed dofs to remove rigid body transformations. - static constexpr int NumFixedDofs = MechanicalTraits::NumFixedDofs + ElectricalTraits::NumFixedDofs; - - /** - * @brief List of dofs associated with an element's nodes. - * - * Given an element with node indices [n₁, ..., nₖ], its dofs are: - * - * - D=2: [2n₁, 2n₁+1, ..., 2nₖ, 2nₖ+1, n₁+2k, ..., nₖ+2k] - * - * - D=3: [3n₁, 3n₁+1, 3n₁+2, ..., 3nₖ, 3nₖ+1, 3nₖ+2, n₁+3k, ..., nₖ+3k] - * - * @tparam K Number of nodes in the element. - * - * @param[in] element Node indices for a specific element. - * @param[in] numNodes Number of nodes. - * - * @returns List of dofs associated with `element`'s nodes. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - template - static auto dofs(const std::array &element, std::size_t numNodes) noexcept { - const std::size_t numMechanicalDofs = numNodes * MechanicalTraits::NumNodeDofs; - - // Mechanical dofs - const auto mechanicalDofs = MechanicalTraits::dofs(element, numNodes); - - // Electrical dofs - auto electricalDofs = ElectricalTraits::dofs(element, numNodes); - - // Offset electrical dofs by number of mechanical dofs - for (auto &dof : electricalDofs) { - dof += numMechanicalDofs; - } - - // Concatenate - std::array data; - std::size_t index = 0; - - for (auto dof : mechanicalDofs) { - data[index++] = dof; - } - for (auto dof : electricalDofs) { - data[index++] = dof; - } - - return data; - } - - /** - * @brief Checks if a global dof is fixed. - * - * The fixed dofs are (assuming m total nodes): - * - * - D=2: [0, 1, 2m] - * - * - D=3: [0, 1, 2, 3m] - * - * @param[in] dof Global dof. - * @param[in] numNodes Number of nodes. - * - * @returns `true` if `dof` is fixed, `false` otherwise. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static bool isFixedDof(std::size_t dof, std::size_t numNodes) noexcept { - const std::size_t numMechanicalDofs = numNodes * MechanicalTraits::NumNodeDofs; - - // Fixed mechanical dofs - if (dof < numMechanicalDofs) { - return MechanicalTraits::isFixedDof(dof, numNodes); - } - - // Fixed electrical dof - // Electrical dofs are offset by number of mechanical dofs - return ElectricalTraits::isFixedDof(dof - numMechanicalDofs, numNodes); - } - - /** - * @brief Maps a global dof to its reduced version. - * - * Matrix-free operators act only on unconstrained periodic dofs. - * This function maps dofs from a space where fixed dofs are - * included to a space where they are removed. - * - * @param[in] dof Global dof. - * @param[in] numNodes Number of nodes. - * - * @returns Reduced dof. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static std::size_t reducedDof(std::size_t dof, std::size_t numNodes) noexcept { - const std::size_t numMechanicalDofs = numNodes * MechanicalTraits::NumNodeDofs; - const std::size_t numReducedMechanicalDofs = numMechanicalDofs - MechanicalTraits::NumFixedDofs; - - // Shifting for mechanical dofs. - if (dof < numMechanicalDofs) { - return MechanicalTraits::reducedDof(dof, numNodes); - } - - // Shifting for electrical dof - // Electrical dofs are offset by number of mechanical dofs - return ElectricalTraits::reducedDof(dof - numMechanicalDofs, numNodes) + numReducedMechanicalDofs; - } - - /** - * @brief Maps a reduced dof to its global version. - * - * Matrix-free operators act only on unconstrained periodic dofs. - * This function maps dofs from a space where fixed dofs - * are removed to a space where they are included. - * - * @param[in] dof Reduced dof. - * @param[in] numNodes Number of nodes. - * - * @returns Global dof. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static std::size_t expandedDof(std::size_t dof, std::size_t numNodes) noexcept { - const std::size_t numMechanicalDofs = numNodes * MechanicalTraits::NumNodeDofs; - const std::size_t numReducedMechanicalDofs = numMechanicalDofs - MechanicalTraits::NumFixedDofs; - - // Shifting for mechanical dofs - if (dof < numReducedMechanicalDofs) { - return MechanicalTraits::expandedDof(dof, numNodes); - } - - // Shifting for electrical dof - // Electrical dofs are offset by number of mechanical dofs - return ElectricalTraits::expandedDof(dof - numReducedMechanicalDofs, numNodes) + numMechanicalDofs; - } - }; - - } // namespace multiphysics - - } // namespace fem - -} // namespace monad diff --git a/include/monad/fem/operator/scalar/linear_scalar_diffusive_dof_traits.hpp b/include/monad/fem/operator/scalar/linear_scalar_diffusive_dof_traits.hpp new file mode 100644 index 0000000..985e532 --- /dev/null +++ b/include/monad/fem/operator/scalar/linear_scalar_diffusive_dof_traits.hpp @@ -0,0 +1,107 @@ +#pragma once + +#include +#include + +namespace monad { + + namespace fem { + + namespace scalar { + + /// @brief Dof numbering rules for periodic linear scalar diffusive problems. + struct LinearScalarDiffusiveDofTraits { + /// @brief Number of dofs per node. + static constexpr int NumNodeDofs = 1; + + /// @brief Number of fixed periodic dofs to remove rigid-body transformations. + static constexpr int NumFixedDofs = 1; + + /** + * @brief Expands element node indices into dofs. + * + * Given an element with node indices [n₁, ..., nₖ], the + * associated dofs are [n₁, ..., nₖ]. + * + * @tparam K Number of element nodes. + * + * @param[in] element Element node indices. + * @param[in] numNodes Total number of nodes. + * + * @returns Dofs associated with `element`. + * + * @note `numNodes` is unused here. It is kept only to match + * the interface of other dof traits that require node-based offsets. + */ + template + static auto elementDofs(const std::array &element, std::size_t numNodes) noexcept { + (void)numNodes; + + return element; + } + + /** + * @brief Returns `true` if a periodic dof is fixed. + * + * The first periodic dof is fixed. + * + * @param[in] dof Periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns `true` if `dof` is fixed, `false` otherwise. + * + * @note `numNodes` is unused here. It is kept only to match + * the interface of other dof traits that require node-based offsets. + */ + static bool isFixedPeriodicDof(std::size_t dof, std::size_t numNodes) noexcept { + (void)numNodes; + + return dof == 0; + } + + /** + * @brief Maps a periodic dof to a reduced periodic dof. + * + * The reduced periodic dof space is formed by removing fixed + * periodic dofs from the full periodic dof numbering. + * + * @param[in] dof Periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns Reduced periodic dof. + * + * @note `numNodes` is unused here. It is kept only to match + * the interface of other dof traits that require node-based offsets. + */ + static std::size_t periodicToReducedDof(std::size_t dof, std::size_t numNodes) noexcept { + (void)numNodes; + + return dof - NumFixedDofs; + } + + /** + * @brief Maps a reduced periodic dof to a periodic dof. + * + * The reduced periodic dof space is formed by removing fixed + * periodic dofs from the full periodic dof numbering. + * + * @param[in] dof Reduced periodic dof. + * @param[in] numNodes Total number of periodic nodes. + * + * @returns Periodic dof. + * + * @note `numNodes` is unused here. It is kept only to match + * the interface of other dof traits that require node-based offsets. + */ + static std::size_t reducedToPeriodicDof(std::size_t dof, std::size_t numNodes) noexcept { + (void)numNodes; + + return dof + NumFixedDofs; + } + }; + + } // namespace scalar + + } // namespace fem + +} // namespace monad diff --git a/include/monad/fem/operator/scalar/linear_scalar_diffusive_matrix_free_operator_traits.hpp b/include/monad/fem/operator/scalar/linear_scalar_diffusive_matrix_free_operator_traits.hpp deleted file mode 100644 index 10ed857..0000000 --- a/include/monad/fem/operator/scalar/linear_scalar_diffusive_matrix_free_operator_traits.hpp +++ /dev/null @@ -1,123 +0,0 @@ -#pragma once - -#include -#include - -namespace monad { - - namespace fem { - - namespace scalar { - - /** - * @brief Linear scalar diffusive matrix free operator traits. - * - * This struct isolates physics- and dimension-specific logic - * so that the matrix free operator can be written generically. - */ - struct LinearScalarDiffusiveMatrixFreeOperatorTraits { - /// @brief Number of dofs per node. - static constexpr int NumNodeDofs = 1; - - /// @brief Number of fixed dofs to remove rigid body transformations. - static constexpr int NumFixedDofs = 1; - - /** - * @brief List of dofs associated with an element's nodes. - * - * Given an element with node indices [n₁, ..., nₖ], its dofs are: - * - * [n₁, ..., nₖ] - * - * @tparam K Number of nodes in the element. - * - * @param[in] element Node indices for a specific element. - * @param[in] numNodes Number of nodes. - * - * @returns List of dofs associated with `element`'s nodes. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - template - static auto dofs(const std::array &element, std::size_t numNodes) noexcept { - (void)numNodes; - - auto dofs = element; - - return dofs; - } - - /** - * @brief Checks if a global dof is fixed. - * - * The fixed dofs are: - * - * [0] - * - * @param[in] dof Global dof. - * @param[in] numNodes Number of nodes. - * - * @returns `true` if `dof` is fixed, `false` otherwise. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static bool isFixedDof(std::size_t dof, std::size_t numNodes) noexcept { - (void)numNodes; - - return dof == 0; - } - - /** - * @brief Maps a global dof to its reduced version. - * - * Matrix-free operators act only on unconstrained periodic dofs. - * This function maps dofs from a space where fixed dofs are - * included to a space where they are removed. - * - * @param[in] dof Global dof. - * @param[in] numNodes Number of nodes. - * - * @returns Reduced dof. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static std::size_t reducedDof(std::size_t dof, std::size_t numNodes) noexcept { - (void)numNodes; - - return dof - NumFixedDofs; - } - - /** - * @brief Maps a reduced dof to its global version. - * - * Matrix-free operators act only on unconstrained periodic dofs. - * This function maps dofs from a space where fixed dofs - * are removed to a space where they are included. - * - * @param[in] dof Reduced dof. - * @param[in] numNodes Number of nodes. - * - * @returns Global dof. - * - * @note The `numNodes` argument is included for multi-physics - * operators where dof offsets may depend on the total number - * of nodes. - */ - static std::size_t expandedDof(std::size_t dof, std::size_t numNodes) noexcept { - (void)numNodes; - - return dof + NumFixedDofs; - } - }; - - } // namespace scalar - - } // namespace fem - -} // namespace monad diff --git a/include/monad/field/density_field.hpp b/include/monad/field/density_field.hpp new file mode 100644 index 0000000..c3b15e6 --- /dev/null +++ b/include/monad/field/density_field.hpp @@ -0,0 +1,271 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include "monad/detail/constants.hpp" + +namespace monad { + + namespace field { + + /** + * @brief Per-element density field. + * + * @tparam D Spatial dimension (2 or 3). + */ + template + class DensityField { + public: + static_assert(D == 2 || D == 3, "Density field spatial dimension must be 2 or 3."); + + static constexpr int Dim = D; + + using Resolution = std::array; + using DensityList = std::vector; + + /** + * @brief Constructs a density field. + * + * @param[in] resolution Number of elements in each dimension. + * + * @throws std::invalid_argument if any entry in `resolution` is zero. + * + * @note Densities are initalized to zero. + */ + explicit DensityField(const Resolution& resolution) + : resolution_(resolution) { + for (std::size_t i = 0; i < D; ++i) { + if (resolution_[i] == 0) { + throw std::invalid_argument("Resolution in dimension " + std::to_string(i + 1) + " must be positive."); + } + } + + densities_.resize(numElements()); + setZeros(); + } + + /// @brief Number of elements in each dimension. + const Resolution& resolution() const noexcept { + return resolution_; + } + + /// @brief Number of elements. + std::size_t numElements() const noexcept { + std::size_t total = 1; + + for (std::size_t n : resolution_) { + total *= n; + } + + return total; + } + + /** + * @brief Per-element material densities. + * + * @note Densities are stored in row-major order. + */ + const DensityList& densities() const noexcept { + return densities_; + } + + /** + * @brief Material density of an element. + * + * @param[in] index Element index. + * + * @returns Material density of an element. + * + * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). + */ + double getDensity(std::size_t index) const { + if (index >= numElements()) { + throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); + } + + return densities_[index]; + } + + /** + * @brief Set the material density of an element. + * + * @param[in] index Element index. + * @param[in] density Density. + * + * @throws std::invalid_argument if `density` is outside the range [0,1]. + * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). + * + * @note Densities are clamped to a minimum value of `ZERO_TOLERANCE` to improve + * numerical stability. + */ + void setDensity(std::size_t index, double density) { + if (index >= numElements()) { + throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); + } + + if (density < 0.0 || density > 1.0) { + throw std::invalid_argument("Density (" + std::to_string(density) + ") is out of range [0,1]."); + } + + densities_[index] = std::max(NUMERICAL_ZERO, density); + } + + /** + * @brief Set the material densities. + * + * @param[in] densities Densities. + * + * @throws std::invalid_argument if the size of `densities` does not equal the number of grid elements. + * @throws std::invalid_argument if any value in `densities` is outside the range [0,1]. + * + * @note Densities are stored in row-major order. + * @note Densities are clamped to a minimum value of `ZERO_TOLERANCE` to improve numerical stability. + */ + void setDensities(const DensityList& densities) { + if (densities.size() != numElements()) { + throw std::invalid_argument("Densities size (" + std::to_string(densities.size()) + ") must equal number of elements (" + std::to_string(numElements()) + ")."); + } + + for (std::size_t i = 0; i < densities.size(); ++i) { + setDensity(i, densities[i]); + } + } + + /** + * @brief Sets all material densities to a constant value. + * + * @param[in] density Density. + * + * @throws std::invalid_argument if `density` is outside the range [0,1]. + * + * @note Densities are clamped to a minimum value of `ZERO_TOLERANCE` to + * improve numerical stability. + */ + void setConstant(double density) { + if (density < 0.0 || density > 1.0) { + throw std::invalid_argument("Density (" + std::to_string(density) + ") is out of range [0,1]."); + } + + for (std::size_t i = 0; i < numElements(); ++i) { + setDensity(i, density); + } + } + + /// @brief Sets all material densities to zero. + void setZeros() noexcept { + setConstant(0.0); + } + + /// @brief Sets all material densities to one. + void setOnes() noexcept { + setConstant(1.0); + } + + /** + * @brief Set the material densities to random values. + * + * @param[in] seed RNG seed (optional). + * + * @note Densities are clamped to a minimum value of + * `ZERO_TOLERANCE` to improve numerical stability. + */ + void setRandom(unsigned int seed = std::random_device{}()) noexcept { + std::mt19937 rng(seed); + + for (std::size_t i = 0; i < numElements(); ++i) { + // std::uniform_real_distribution is not portably defined across compilers. + // Use the standardized mt19937 engine to guarantee consistency across Mac, + // Windows, and Linux. + const double density = static_cast(rng()) / static_cast(std::mt19937::max()); + + setDensity(i, density); + } + } + + /** + * @brief Periodically translates the element densities. + * + * @param[in] shift Shift in each directions. + */ + void translate(const Resolution& shift) noexcept { + DensityList shifted(numElements()); + + if constexpr (D == 2) { + const std::size_t nx = resolution_[0]; + const std::size_t ny = resolution_[1]; + + for (std::size_t i = 0; i < nx; ++i) { + for (std::size_t j = 0; j < ny; ++j) { + const std::size_t oldIndex = j * nx + i; + const std::size_t iNew = (i + shift[0]) % nx; + const std::size_t jNew = (j + shift[1]) % ny; + const std::size_t newIndex = jNew * nx + iNew; + + shifted[newIndex] = densities_[oldIndex]; + } + } + } + else { + const std::size_t nx = resolution_[0]; + const std::size_t ny = resolution_[1]; + const std::size_t nz = resolution_[2]; + const std::size_t elementsPerPlane = nx * ny; + + for (std::size_t i = 0; i < nx; ++i) { + for (std::size_t j = 0; j < ny; ++j) { + for (std::size_t k = 0; k < nz; ++k) { + const std::size_t oldIndex = k * elementsPerPlane + j * nx + i; + const std::size_t iNew = (i + shift[0]) % nx; + const std::size_t jNew = (j + shift[1]) % ny; + const std::size_t kNew = (k + shift[2]) % nz; + const std::size_t newIndex = kNew * elementsPerPlane + jNew * nx + iNew; + + shifted[newIndex] = densities_[oldIndex]; + } + } + } + } + + setDensities(shifted); + } + + /// @brief Equality comparison. + bool operator==(const DensityField& other) const noexcept { + auto vectorEqual = [](const DensityList& v1, const DensityList& v2) noexcept { + if (v1.size() != v2.size()) { + return false; + } + + for (std::size_t i = 0; i < v1.size(); ++i) { + if (std::fabs(v1[i] - v2[i]) > NUMERICAL_ZERO) { + return false; + } + } + + return true; + }; + + return resolution_ == other.resolution_ && vectorEqual(densities_, other.densities_); + } + + /// @brief Inequality comparison. + bool operator!=(const DensityField& other) const noexcept { + return !(*this == other); + } + + private: + /// @brief Number of elements in each dimension. + Resolution resolution_; + + /// @brief Per-element material densities. + DensityList densities_; + }; + + } // namespace field + +} // namespace monad diff --git a/include/monad/field/field_aliases.hpp b/include/monad/field/field_aliases.hpp new file mode 100644 index 0000000..d223bf4 --- /dev/null +++ b/include/monad/field/field_aliases.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include "monad/field/density_field.hpp" + +namespace monad { + + /// @brief Per-element density field for 2d grids. + using DensityField2d = field::DensityField<2>; + + /// @brief Per-element density field for 2d grids. + using DensityField3d = field::DensityField<3>; + +} // namespace monad diff --git a/include/monad/field/make_density_field_from_csv.hpp b/include/monad/field/make_density_field_from_csv.hpp new file mode 100644 index 0000000..6c3a9c9 --- /dev/null +++ b/include/monad/field/make_density_field_from_csv.hpp @@ -0,0 +1,26 @@ +#pragma once + +#include +#include "monad/field/field_aliases.hpp" + +namespace monad { + + /** + * @brief Constructs a 2D density field from a CSV file. + * + * @param[in] file Path to the CSV file. + * + * @returns 2D density field defined by the `file` entries. + * + * @throws std::runtime_error if `file` cannot be opened. + * @throws std::runtime_error if `file` is empty. + * @throws std::runtime_error if `file` contains non-numeric values. + * @throws std::runtime_error if `file` contains any value outside the range [0,1]. + * @throws std::runtime_error if `file` contains rows with inconsistent lengths. + * + * @note CSV entries are interpreted as a 2D grid with the origin at the + * bottom-left corner. + */ + DensityField2d makeDensityFieldFromCsv(const std::string& file); + +} // namespace monad diff --git a/include/monad/field/make_density_field_from_function.hpp b/include/monad/field/make_density_field_from_function.hpp new file mode 100644 index 0000000..e3fbe4d --- /dev/null +++ b/include/monad/field/make_density_field_from_function.hpp @@ -0,0 +1,63 @@ +#pragma once + +#include +#include +#include +#include +#include "monad/field/density_field.hpp" +#include "monad/integration/integrate_scalar.hpp" + +namespace monad { + + /** + * @brief Constructs a density field from a continuous function. + * + * Element densities are computed by averaging a continuous function + * + * ```text + * f:ℝᵈ→[0,1] + * ``` + * + * over each grid element using numerical quadrature. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + * + * @param[in] grid Grid. + * @param[in] f Function. + * + * @returns Density field defined on the grid elements. + * + * @throws std::invalid_argument if `f` returns a value outside the range [0,1]. + * + * @note Densities are clamped to a minimum value of `ZERO_TOLERANCE` to improve + * numerical stability. + */ + template + inline field::DensityField makeDensityFieldFromFunction(const Grid &grid, const std::function& f) { + field::DensityField densityField(grid.resolution()); + + for (std::size_t i = 0; i < grid.numElements(); ++i) { + const auto nodes = grid.elementNodes(i); + + auto integrand = [&](const typename Grid::Point& point) -> double { + const auto N = Grid::Element::shapeFunctions(point); + const typename Grid::Point globalPoint = N.transpose() * nodes; + + const double density = f(globalPoint); + if (density < 0.0 || density > 1.0) { + throw std::invalid_argument("Function value (" + std::to_string(density) + ") is outside range [0,1]."); + } + + const auto J = Grid::Element::jacobian(point, nodes); + + return density * std::abs(J.determinant()); + }; + + const double density = integration::integrateScalar(integrand, Grid::Element::quadratureRule()) / Grid::Element::measure(nodes); + densityField.setDensity(i, density); + } + + return densityField; + } + +} // namespace monad diff --git a/include/monad/grid/grid_2d_base.hpp b/include/monad/grid/grid_2d_base.hpp deleted file mode 100644 index 06070a3..0000000 --- a/include/monad/grid/grid_2d_base.hpp +++ /dev/null @@ -1,154 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include "monad/grid/grid_base.hpp" - -namespace monad { - - /** - * @brief Curiously recurring template pattern (CRTP) base class for 2D grid meshes. - * - * @tparam Derived Concrete grid mesh class (CRTP). - * @tparam Element Concrete element class (e.g. Quad4). - * - * @note `Derived` classes must provide: - * - * - `std::size_t numNodes() const noexcept` - * - * - `std::size_t numPeriodicNodes() const noexcept` - * - * - `Point node(std::size_t index) const` - * - * - `ElementList element(std::size_t index) const` - * - * - `ElementList periodicElement(std::size_t index) const` - */ - template - class Grid2dBase : public GridBase { - public: - static_assert(Element::Dim == 2, "Element spatial dimension must be 2."); - - using GridBase::GridBase; - using Resolution = typename GridBase::Resolution; - using DensityList = typename GridBase::DensityList; - - /** - * @brief Translates the element densities periodically. - * - * @param[in] shift Shift in each directions. - */ - void translate(const Resolution &shift) noexcept { - DensityList shiftedDensities(this->numElements()); - - const std::size_t nx = this->resolution_[0]; - const std::size_t ny = this->resolution_[1]; - - for (std::size_t i = 0; i < nx; ++i) { - for (std::size_t j = 0; j < ny; ++j) { - const std::size_t oldIndex = j * nx + i; - - const std::size_t iNew = (i + shift[0]) % nx; - const std::size_t jNew = (j + shift[1]) % ny; - - std::size_t newIndex = jNew * nx + iNew; - - shiftedDensities[newIndex] = this->densities_[oldIndex]; - } - } - - this->setDensities(shiftedDensities); - } - - /// @brief Grid area. - double area() const noexcept { - return this->measure(); - } - - /** - * @brief Set the material densities using a CSV file. - * - * @param[in] file CSV file. - * - * @throws std::runtime_error if `file` cannot be opened. - * @throws std::runtime_error if `file` contains no data. - * @throws std::runtime_error if `file` contains non-numeric data. - * @throws std::runtime_error if `file` contains numbers outside the range [0, 1]. - * @throws std::runtime_error if `file` contains rows/columns not matching the grid resolution. - * - * @note The CSV data is interpreted as a 2D array with the origin - * located at the bottom-left corner. - */ - void setDensitiesFile(const std::string &file) { - std::ifstream ifs(file, std::ios::in | std::ios::binary); - if (!ifs.is_open()) { - throw std::runtime_error("Could not open " + file + " for reading."); - } - - const std::size_t nx = this->resolution_[0]; - const std::size_t ny = this->resolution_[1]; - - std::vector> rows; - - std::string line; - - // Load csv data - while (std::getline(ifs, line)) { - if (line.empty()) { - continue; - } - - std::istringstream iss(line); - std::string cell; - - std::vector row; - row.reserve(nx); - - while (std::getline(iss, cell, ',')) { - if (cell.empty()) { - continue; - } - - double value; - try { - value = std::stod(cell); - } - catch (const std::invalid_argument &) { - throw std::runtime_error("File " + file + " contains non-numeric data."); - } - if (value < 0.0 || value > 1.0) { - throw std::runtime_error("File " + file + " contains data outside the range [0,1]."); - } - row.push_back(value); - } - - if (row.empty()) { - continue; - } - - if (row.size() != nx) { - throw std::runtime_error("File " + file + " number of columns (" + std::to_string(row.size()) + ") does not equal grid x-resolution (" + std::to_string(nx) + ")."); - } - - rows.push_back(row); - } - - if (rows.size() != ny) { - throw std::runtime_error("File " + file + " number of rows (" + std::to_string(rows.size()) + ") does not equal grid y-resolution (" + std::to_string(ny) + ")."); - } - - // Flatten csv data - for (std::size_t i = 0; i < ny; ++i) { - for (std::size_t j = 0; j < nx; ++j) { - std::size_t rowStart = nx * (ny - 1 - i); - this->setDensity(rowStart + j, rows[i][j]); - } - } - } - }; - -} // namespace monad diff --git a/include/monad/grid/grid_3d_base.hpp b/include/monad/grid/grid_3d_base.hpp deleted file mode 100644 index e0cdc36..0000000 --- a/include/monad/grid/grid_3d_base.hpp +++ /dev/null @@ -1,73 +0,0 @@ -#pragma once - -#include "monad/grid/grid_base.hpp" - -namespace monad { - - /** - * @brief Curiously recurring template pattern (CRTP) base class for 3D grid meshes. - * - * @tparam Derived Concrete grid mesh class (CRTP). - * @tparam Element Concrete element class (e.g. Hex8). - * - * @note `Derived` classes must provide: - * - * - `std::size_t numNodes() const noexcept` - * - * - `std::size_t numPeriodicNodes() const noexcept` - * - * - `Point node(std::size_t index) const` - * - * - `ElementList element(std::size_t index) const` - * - * - `ElementList periodicElement(std::size_t index) const` - */ - template - class Grid3dBase : public GridBase { - public: - static_assert(Element::Dim == 3, "Element spatial dimension must be 3."); - - using GridBase::GridBase; - using Resolution = typename GridBase::Resolution; - using DensityList = typename GridBase::DensityList; - - /** - * @brief Translates the element densities periodically. - * - * @param[in] shift Shift in each directions. - */ - void translate(const Resolution &shift) noexcept { - DensityList shiftedDensities(this->numElements()); - - const std::size_t nx = this->resolution_[0]; - const std::size_t ny = this->resolution_[1]; - const std::size_t nz = this->resolution_[2]; - - const std::size_t elementsPerPlane = nx * ny; - - for (std::size_t i = 0; i < nx; ++i) { - for (std::size_t j = 0; j < ny; ++j) { - for (std::size_t k = 0; k < nz; ++k) { - const std::size_t oldIndex = k * elementsPerPlane + j * nx + i; - - const std::size_t iNew = (i + shift[0]) % nx; - const std::size_t jNew = (j + shift[1]) % ny; - const std::size_t kNew = (k + shift[2]) % nz; - - std::size_t newIndex = kNew * elementsPerPlane + jNew * nx + iNew; - - shiftedDensities[newIndex] = this->densities_[oldIndex]; - } - } - } - - this->setDensities(shiftedDensities); - } - - /// @brief Grid volume. - double volume() const noexcept { - return this->measure(); - } - }; - -} // namespace monad diff --git a/include/monad/grid/grid_aliases.hpp b/include/monad/grid/grid_aliases.hpp new file mode 100644 index 0000000..bbdd253 --- /dev/null +++ b/include/monad/grid/grid_aliases.hpp @@ -0,0 +1,139 @@ +#pragma once + +#include "monad/grid/structured_grid.hpp" +#include "monad/grid/quad4_topology.hpp" +#include "monad/grid/quad8_topology.hpp" +#include "monad/grid/hex8_topology.hpp" +#include "monad/grid/hex20_topology.hpp" + +namespace monad { + + /** + * @brief 2D structured grid of 4-node quadrilateral (Quad4) elements. + * + * Example 3x2 grid: + * + * ```text + * o───────o───────o───────o + * │ │ │ │ + * │ │ │ │ + * │ │ │ │ + * o───────o───────o───────o + * │ │ │ │ + * │ │ │ │ + * │ │ │ │ + * o───────o───────o───────o + * ``` + * + * Global axes: + * + * - x runs left→right. + * + * - y runs bottom→top. + */ + using Quad4Grid = grid::StructuredGrid; + + /** + * @brief 2D structured grid of 8-node quadrilateral (Quad8) elements. + * + * Example 3x2 grid: + * + * ```text + * o───o───o───o───o───o───o + * │ │ │ │ + * o o o o + * │ │ │ │ + * o───o───o───o───o───o───o + * │ │ │ │ + * o o o o + * │ │ │ │ + * o───o───o───o───o───o───o + * ``` + * + * Global axes: + * + * - x runs left→right. + * + * - y runs bottom→top. + */ + using Quad8Grid = grid::StructuredGrid; + + /** + * @brief 3D structured grid of 8-node hexahedral (Hex8) elements. + * + * Example 3x2x2 grid: + * + * ```text + * o─────────o─────────o─────────o + * / / / /│ + * / / / / │ + * / / / / │ + * o─────────o─────────o─────────o │ + * / / / /│ │ + * / / / / │ o + * / / / / │ /│ + * o─────────o─────────o─────────o │ / │ + * │ │ │ │ │/ │ + * │ │ │ │ o │ + * │ │ │ │ /│ │ + * │ │ │ │ / │ o + * │ │ │ │/ │ / + * o─────────o─────────o─────────o │ / + * │ │ │ │ │/ + * │ │ │ │ o + * │ │ │ │ / + * │ │ │ │ / + * │ │ │ │/ + * o─────────o─────────o─────────o + * ``` + * + * Global axes: + * + * - x runs left→right. + * + * - y runs front→back. + * + * - z runs bottom→top. + */ + using Hex8Grid = grid::StructuredGrid; + + /** + * @brief 3D structured grid of 20-node hexahedral (Hex20) elements. + * + * Example 3x2x2 grid: + * + * ```text + * o────o────o────o────o────o────o + * / / / /│ + * o o o o │ + * / / / / o + * o────o────o────o────o────o────o │ + * / / / /│ │ + * o o o o │ o + * / / / / o /│ + * o────o────o────o────o────o────o │ o │ + * │ │ │ │ │/ o + * │ │ │ │ o │ + * o o o o /│ │ + * │ │ │ │ o │ o + * │ │ │ │/ o / + * o────o────o────o────o────o────o │ o + * │ │ │ │ │/ + * │ │ │ │ o + * o o o o / + * │ │ │ │ o + * │ │ │ │/ + * o────o────o────o────o────o────o + * ``` + * + * Global axes: + * + * - x runs left→right. + * + * - y runs front→back. + * + * - z runs bottom→top. + */ + using Hex20Grid = grid::StructuredGrid; + +} // namespace monad diff --git a/include/monad/grid/grid_base.hpp b/include/monad/grid/grid_base.hpp deleted file mode 100644 index 0cb26e8..0000000 --- a/include/monad/grid/grid_base.hpp +++ /dev/null @@ -1,424 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include -#include "monad/detail/constants.hpp" -#include "monad/integration/integrate_scalar.hpp" - -namespace monad { - - /** - * @brief Curiously recurring template pattern (CRTP) base class for grid meshes. - * - * @tparam Derived Concrete grid mesh class (CRTP). - * @tparam ElementT Concrete element class (e.g. Quad4). - * - * @note `Derived` classes must provide: - * - * - `std::size_t numNodes() const noexcept` - * - * - `std::size_t numPeriodicNodes() const noexcept` - * - * - `Point node(std::size_t index) const` - * - * - `ElementList element(std::size_t index) const` - * - * - `ElementList periodicElement(std::size_t index) const` - * - * - `void translate(const Resolution &shift) noexcept` - */ - template - class GridBase { - public: - static_assert(ElementT::Dim == 2 || ElementT::Dim == 3, "Element spatial dimension must be 2 or 3."); - - using Element = ElementT; - - /// @brief Spatial dimension (2 or 3). - static constexpr int Dim = Element::Dim; - - using Resolution = std::array; - using Size = std::array; - - using Point = typename Element::Point; - using NodesMatrix = typename Element::NodesMatrix; - - using NodesList = std::vector; - using ElementList = std::array; - using ElementsList = std::vector; - using DensityList = std::vector; - - /** - * @brief Constructs a grid mesh. - * - * @param[in] resolution How many cells in each dimension. - * @param[in] size Physical lengths in each dimension. - * - * @throws std::invalid_argument if any entry in `resolution` is zero. - * @throws std::invalid_argument if any entry in `size` is non-positive. - * - * @note Densities are initalized to 0. - */ - GridBase(const Resolution &resolution, const Size &size) - : resolution_(resolution), size_(size) { - for (std::size_t i = 0; i < Dim; ++i) { - if (resolution_[i] == 0) { - throw std::invalid_argument("Resolution in dimension " + std::to_string(i + 1) + " must be positive."); - } - - if (size_[i] <= 0) { - throw std::invalid_argument("Size in dimension " + std::to_string(i + 1) + " (" + std::to_string(size_[i]) + ") must be positive."); - } - } - - densities_.resize(numElements()); - setDensitiesZeros(); - } - - /// @brief How many cells in each dimension. - const Resolution &resolution() const noexcept { - return resolution_; - } - - /// @brief Physical lengths in each dimension. - const Size &size() const noexcept { - return size_; - } - - /** - * @brief Material density at each element. - * - * @note Densities are stored in row-major order. - */ - const DensityList &densities() const noexcept { - return densities_; - } - - /// @brief Number of elements. - std::size_t numElements() const noexcept { - std::size_t product = 1; - - for (std::size_t entry : resolution_) { - product *= entry; - } - - return product; - } - - /// @brief Number of nodes. - std::size_t numNodes() const noexcept { - return derived().numNodes(); - } - - /// @brief Number of periodic nodes. - std::size_t numPeriodicNodes() const noexcept { - return derived().numPeriodicNodes(); - } - - /** - * @brief Coordinates for a specific node. - * - * @param[in] index Node index. - * - * @returns Coordinates. - * - * @throws std::out_of_range if `index` is outside the range [0,`numNodes()`). - */ - Point node(std::size_t index) const { - return derived().node(index); - } - - /// @brief Coordinates for all nodes. - NodesList nodes() const noexcept { - NodesList data; - data.reserve(numNodes()); - - for (std::size_t i = 0; i < numNodes(); ++i) { - data.push_back(node(i)); - } - - return data; - } - - /** - * @brief Node indices for a specific element. - * - * @param[in] index Element index. - * - * @returns Node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList element(std::size_t index) const { - return derived().element(index); - } - - /// @brief Node indices for all elements. - ElementsList elements() const noexcept { - ElementsList data; - data.reserve(numElements()); - - for (std::size_t i = 0; i < numElements(); ++i) { - data.push_back(element(i)); - } - - return data; - } - - /** - * @brief Periodic node indices for a specific element. - * - * @param[in] index Element index. - * - * @returns Periodic node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList periodicElement(std::size_t index) const { - return derived().periodicElement(index); - } - - /// @brief Periodic node indices for all elements. - ElementsList periodicElements() const noexcept { - ElementsList data; - data.reserve(numElements()); - - for (std::size_t i = 0; i < numElements(); ++i) { - data.push_back(periodicElement(i)); - } - - return data; - } - - /** - * @brief Material density for a specific element. - * - * @param[in] index Element index. - * - * @returns Material density. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - double getDensity(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - return densities_[index]; - } - - /** - * @brief Set the material density for a specific element. - * - * @param[in] index Element index. - * @param[in] density Element density. - * - * @throws std::invalid_argument if `density` is outside the range [0,1]. - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - * - * @note Densities are clamped to a minimum value `NUMERICAL_ZERO` to ensure numerical stability. - */ - void setDensity(std::size_t index, double density) { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - if (density < 0 || density > 1) { - throw std::invalid_argument("Density (" + std::to_string(density) + ") is out of range [0,1]."); - } - - densities_[index] = std::max(NUMERICAL_ZERO, density); - } - - /** - * @brief Set the material densities. - * - * @param[in] densities Material densities. - * - * @throws std::invalid_argument if the size of `densities` does not equal the number of grid elements. - * @throws std::invalid_argument if any value in `densities` is outside the range [0,1]. - * - * @note Densities are stored in row-major order. - * @note Densities are clamped to a minimum value `NUMERICAL_ZERO` to ensure numerical stability. - */ - void setDensities(DensityList densities) { - if (densities.size() != numElements()) { - throw std::invalid_argument("Densities size (" + std::to_string(densities.size()) + ") must equal number of grid elements (" + std::to_string(numElements()) + ")."); - } - - for (std::size_t i = 0; i < densities.size(); ++i) { - setDensity(i, densities[i]); - } - } - - /** - * @brief Set the material densities to a specific value. - * - * @param[in] density Element density. - * - * @throws std::invalid_argument if `density` is outside the range [0,1]. - * - * @note Densities are clamped to a minimum value `NUMERICAL_ZERO` to ensure numerical stability. - */ - void setDensitiesConstant(double density) { - if (density < 0 || density > 1) { - throw std::invalid_argument("Density (" + std::to_string(density) + ") is out of range [0,1]."); - } - - for (std::size_t i = 0; i < numElements(); ++i) { - setDensity(i, density); - } - } - - /// @brief Set the material densities to zeros. - void setDensitiesZeros() noexcept { - setDensitiesConstant(0.0); - } - - /// @brief Set the material densities to ones. - void setDensitiesOnes() noexcept { - setDensitiesConstant(1.0); - } - - /** - * @brief Set the material densities to random values. - * - * @param[in] seed RNG seed (default: -1 for random). - * - * @note Densities are clamped to a minimum value `NUMERICAL_ZERO` to ensure numerical stability. - */ - void setDensitiesRandom(int seed = -1) noexcept { - std::mt19937 rng; - if (seed >= 0) { - rng.seed(static_cast(seed)); - } - - // std::uniform_real_distribution generates values in [0, 1), so setting - // Use the next representable double after 1 to make the range effectively inclusive - const double upperBound = std::nextafter(1.0, 2.0); - - std::uniform_real_distribution dist(NUMERICAL_ZERO, upperBound); - - for (std::size_t i = 0; i < numElements(); ++i) { - setDensity(i, dist(rng)); - } - } - - /** - * @brief Set the material densities using a continuous function. - * - * Element values are computed as the element-wise average of the continuous function. - * - * @param[in] f Continuous function from ℝᵈ→[0,1] evaluated at element nodes. - * - * @throws std::invalid_argument if `f` is outside the range [0,1]. - * - * @note Densities are clamped to a minimum value `NUMERICAL_ZERO` to ensure numerical stability. - */ - void setDensitiesFunction(const std::function &f) { - for (std::size_t i = 0; i < numElements(); ++i) { - const auto nodes = elementNodes(i); - - auto integrand = [&](const Point &point) -> double { - const auto N = Element::shapeFunctions(point); - const Point globalPoint = N.transpose() * nodes; - - const double density = f(globalPoint); - - if (density < 0 || density > 1) { - throw std::invalid_argument("Function value (" + std::to_string(density) + ") is outside range [0,1]."); - } - - const auto J = Element::jacobian(point, nodes); - - return density * std::abs(J.determinant()); - }; - - double density = integration::integrateScalar(integrand, Element::quadratureRule()) / Element::measure(nodes); - - setDensity(i, density); - } - } - - /** - * @brief Translates the element densities periodically. - * - * @param[in] shift Shift in each directions. - */ - void translate(const Resolution &shift) noexcept { - derived().translate(shift); - } - - /** - * @brief Nodal coordinates for a specific element. - * - * @param[in] index Element index. - * - * @returns Nodal coordinates. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - NodesMatrix elementNodes(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - NodesMatrix data; - - int j = 0; - for (std::size_t i : element(index)) { - data.row(j++) = node(i); - } - - return data; - } - - /// @brief Grid area (2D) or volume (3D). - double measure() const noexcept { - const auto referenceElementNodes = elementNodes(0); - const double referenceElementMeasure = Element::measure(referenceElementNodes); - - return referenceElementMeasure * static_cast(numElements()); - } - - /// @brief Equality comparison. - bool operator==(const GridBase &other) const noexcept { - return resolution_ == other.resolution_ - && size_ == other.size_ - && densities_ == other.densities_; - } - - /// @brief Inequality comparison. - bool operator!=(const GridBase &other) const noexcept { - return !(*this == other); - } - - protected: - /// @brief How many cells in each dimension. - Resolution resolution_; - - /// @brief Physical lengths in each dimension. - Size size_; - - /** - * @brief Material density at each element. - * - * @note Densities are stored in row-major order. - */ - DensityList densities_; - - private: - /// @brief Utility method to safely cast the base class pointer to the derived class reference (CRTP). - const Derived &derived() const noexcept { - // The static_cast is safe because Derived must inherit from GridBase - return *static_cast(this); - } - }; - -} // namespace monad diff --git a/include/monad/grid/hex20_grid.hpp b/include/monad/grid/hex20_grid.hpp deleted file mode 100644 index 33b11de..0000000 --- a/include/monad/grid/hex20_grid.hpp +++ /dev/null @@ -1,167 +0,0 @@ -#pragma once - -#include "monad/grid/grid_3d_base.hpp" -#include "monad/fem/element/hex20.hpp" - -namespace monad { - - /** - * @brief 2D grid mesh of 4-node quadrilaterl (Hex20) elements. - * - * Example 3x2x2 grid: - * - * ```text - * o────o────o────o────o────o────o - * / / / /│ - * o o o o │ - * / / / / o - * o────o────o────o────o────o────o │ - * / / / /│ │ - * o o o o │ o - * / / / / o /│ - * o────o────o────o────o────o────o │ o │ - * │ │ │ │ │/ o - * │ │ │ │ o │ - * o o o o /│ │ - * │ │ │ │ o │ o - * │ │ │ │/ o / - * o────o────o────o────o────o────o │ o - * │ │ │ │ │/ - * │ │ │ │ o - * o o o o / - * │ │ │ │ o - * │ │ │ │/ - * o────o────o────o────o────o────o - * ``` - * - * Global axes: - * - * - x runs left→right. - * - * - y runs front→back. - * - * - z runs bottom→top. - */ - class Hex20Grid : public Grid3dBase { - public: - using Grid3dBase::Grid3dBase; - - /// @brief Number of nodes. - std::size_t numNodes() const noexcept; - - /// @brief Number of periodic nodes. - std::size_t numPeriodicNodes() const noexcept; - - /** - * @brief Coordinates for a specific node. - * - * Example 3x2x2 grid: - * - * ```text - * 32───60───33───61───34───62───35 - * / / / /│ - * 83 84 85 86│ - * / / / / 110 - * 28───57───29───58───30───59───31 │ - * / / / /│ │ - * 79 80 81 82│ 23 - * / / / / 106 /│ - * 24───54───25───55───26───56───27 │ 78│ - * │ │ │ │ │/ 98 - * │ │ │ │ 19 │ - * 99 100 101 102 /│ │ - * │ │ │ │ 74│ 11 - * │ │ │ │/ 94 / - * 12───45───13───46───14───47───15 │ 70 - * │ │ │ │ │/ - * │ │ │ │ 7 - * 87 88 89 90 / - * │ │ │ │ 66 - * │ │ │ │/ - * 0────36───1────37───2────38───3 - * ``` - * - * @param[in] index Node index. - * - * @returns Coordinates. - * - * @throws std::out_of_range if `index` is outside the range [0,`numNodes()`). - */ - Point node(std::size_t index) const; - - /** - * @brief Node indices for a specific element. - * - * Example 3x2x2 grid: - * - * ```text - * 32───60───33───61───34───62───35 - * / / / /│ - * 83 𝟿 84 𝟷𝟶 85 𝟷𝟷 86│ - * / / / / 110 - * 28───57───29───58───30───59───31 │ - * / / / /│ │ - * 79 80 81 82│ 23 - * / / / / 106 /│ - * 24───54───25───55───26───56───27 │ 78│ - * │ │ │ │ │/ 98 - * │ │ │ │ 19 │ - * 99 𝟼 100 𝟽 101 𝟾 102 /│ │ - * │ │ │ │ 74│ 11 - * │ │ │ │/ 94 / - * 12───45───13───46───14───47───15 │ 70 - * │ │ │ │ │/ - * │ │ │ │ 7 - * 87 𝟶 88 𝟷 89 𝟸 90 / - * │ │ │ │ 66 - * │ │ │ │/ - * 0────36───1────37───2────38───3 - * ``` - * - * @param[in] index Element index. - * - * @returns Node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList element(std::size_t index) const; - - /** - * @brief Periodic node indices for a specific element. - * - * Example 3x2x2 grid: - * - * ```text - * 0────12───1────13───2────14───0 - * / / / /│ - * 27 𝟿 28 𝟷𝟶 29 𝟷𝟷 27│ - * / / / / 42 - * 3────15───4────16───5────17───3 │ - * / / / /│ │ - * 24 25 26 24│ 6 - * / / / / 45 /│ - * 0────12───1────13───2────14───0 │ 33│ - * │ │ │ │ │/ 36 - * │ │ │ │ 9 │ - * 42 𝟼 43 𝟽 44 𝟾 42 /│ │ - * │ │ │ │ 30│ 0 - * │ │ │ │/ 39 / - * 6────18───7────19───8────20───6 │ 27 - * │ │ │ │ │/ - * │ │ │ │ 3 - * 36 𝟶 37 𝟷 38 𝟸 36 / - * │ │ │ │ 24 - * │ │ │ │/ - * 0────12───1────13───2────14───0 - * ``` - * - * @param[in] index Element index. - * - * @returns Periodic node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList periodicElement(std::size_t index) const; - }; - -} // namespace monad diff --git a/include/monad/grid/hex20_topology.hpp b/include/monad/grid/hex20_topology.hpp new file mode 100644 index 0000000..fae8126 --- /dev/null +++ b/include/monad/grid/hex20_topology.hpp @@ -0,0 +1,109 @@ +#pragma once + +#include +#include +#include "monad/fem/element/hex20.hpp" + +namespace monad { + + namespace grid { + + /** + * @brief Topology rules for structured 3D Hex20 grids. + */ + struct Hex20Topology { + using Element = fem::Hex20; + using Resolution = std::array; + using Size = std::array; + using Point = typename Element::Point; + using ElementList = std::array; + + /** + * @brief Number of corner nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of corner nodes. + */ + static std::size_t numCornerNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of x-edge midpoint nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of x-edge midpoint nodes. + */ + static std::size_t numXMidNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of y-edge midpoint nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of y-edge midpoint nodes. + */ + static std::size_t numYMidNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of z-edge midpoint nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of z-edge midpoint nodes. + */ + static std::size_t numZMidNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of nodes. + */ + static std::size_t numNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of periodic nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of periodic nodes. + */ + static std::size_t numPeriodicNodes(const Resolution& resolution) noexcept; + + /** + * @brief Coordinates of a node. + * + * @param[in] index Node index. + * @param[in] resolution Number of elements in each dimension. + * @param[in] size Physical lengths in each dimension. + * + * @returns Coordinates of a node. + */ + static Point node(std::size_t index, const Resolution& resolution, const Size& size) noexcept; + + /** + * @brief Node indices of an element. + * + * @param[in] index Element index. + * @param[in] resolution Number of elements in each dimension. + * + * @returns Node indices of an element. + */ + static ElementList element(std::size_t index, const Resolution& resolution) noexcept; + + /** + * @brief Periodic node indices of an element. + * + * @param[in] index Element index. + * @param[in] resolution Number of elements in each dimension. + * + * @returns Periodic node indices of an element. + */ + static ElementList periodicElement(std::size_t index, const Resolution& resolution) noexcept; + }; + + } // namespace grid + +} // namespace monad diff --git a/include/monad/grid/hex8_grid.hpp b/include/monad/grid/hex8_grid.hpp deleted file mode 100644 index 2360a19..0000000 --- a/include/monad/grid/hex8_grid.hpp +++ /dev/null @@ -1,167 +0,0 @@ -#pragma once - -#include "monad/grid/grid_3d_base.hpp" -#include "monad/fem/element/hex8.hpp" - -namespace monad { - - /** - * @brief 2D grid mesh of 4-node quadrilaterl (Hex8) elements. - * - * Example 3x2x2 grid: - * - * ```text - * o─────────o─────────o─────────o - * / / / /│ - * / / / / │ - * / / / / │ - * o─────────o─────────o─────────o │ - * / / / /│ │ - * / / / / │ o - * / / / / │ /│ - * o─────────o─────────o─────────o │ / │ - * │ │ │ │ │/ │ - * │ │ │ │ o │ - * │ │ │ │ /│ │ - * │ │ │ │ / │ o - * │ │ │ │/ │ / - * o─────────o─────────o─────────o │ / - * │ │ │ │ │/ - * │ │ │ │ o - * │ │ │ │ / - * │ │ │ │ / - * │ │ │ │/ - * o─────────o─────────o─────────o - * ``` - * - * Global axes: - * - * - x runs left→right. - * - * - y runs front→back. - * - * - z runs bottom→top. - */ - class Hex8Grid : public Grid3dBase { - public: - using Grid3dBase::Grid3dBase; - - /// @brief Number of nodes. - std::size_t numNodes() const noexcept; - - /// @brief Number of periodic nodes. - std::size_t numPeriodicNodes() const noexcept; - - /** - * @brief Coordinates for a specific node. - * - * Example 3x2x2 grid: - * - * ```text - * 32────────33────────34────────35 - * / / / /│ - * / / / / │ - * / / / / │ - * 28────────29────────30────────31 │ - * / / / /│ │ - * / / / / │ 23 - * / / / / │ /│ - * 24────────25────────26────────27 │ / │ - * │ │ │ │ │/ │ - * │ │ │ │ 19 │ - * │ │ │ │ /│ │ - * │ │ │ │ / │ 11 - * │ │ │ │/ │ / - * 12────────13────────14────────15 │ / - * │ │ │ │ │/ - * │ │ │ │ 7 - * │ │ │ │ / - * │ │ │ │ / - * │ │ │ │/ - * 0─────────1─────────2─────────3 - * ``` - * - * @param[in] index Node index. - * - * @returns Coordinates. - * - * @throws std::out_of_range if `index` is outside the range [0,`numNodes()`). - */ - Point node(std::size_t index) const; - - /** - * @brief Node indices for a specific element. - * - * Example 3x2x2 grid: - * - * ```text - * 32────────33────────34────────35 - * / / / /│ - * / 𝟿 / 𝟷𝟶 / 𝟷𝟷 / │ - * / / / / │ - * 28────────29────────30────────31 │ - * / / / /│ │ - * / / / / │ 23 - * / / / / │ /│ - * 24────────25────────26────────27 │ / │ - * │ │ │ │ │/ │ - * │ │ │ │ 19 │ - * │ 𝟼 │ 𝟽 │ 𝟾 │ /│ │ - * │ │ │ │ / │ 11 - * │ │ │ │/ │ / - * 12────────13────────14────────15 │ / - * │ │ │ │ │/ - * │ │ │ │ 7 - * │ 𝟶 │ 𝟷 │ 𝟸 │ / - * │ │ │ │ / - * │ │ │ │/ - * 0─────────1─────────2─────────3 - * ``` - * - * @param[in] index Element index. - * - * @returns Node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList element(std::size_t index) const; - - /** - * @brief Periodic node indices for a specific element. - * - * Example 3x2x2 grid: - * - * ```text - * 0─────────1─────────2─────────0 - * / / / /│ - * / 𝟿 / 𝟷𝟶 / 𝟷𝟷 / │ - * / / / / │ - * 3─────────4─────────5─────────3 │ - * / / / /│ │ - * / / / / │ 6 - * / / / / │ /│ - * 0─────────1─────────2─────────0 │ / │ - * │ │ │ │ │/ │ - * │ │ │ │ 9 │ - * │ 𝟼 │ 𝟽 │ 𝟾 │ /│ │ - * │ │ │ │ / │ 0 - * │ │ │ │/ │ / - * 6─────────7─────────8─────────6 │ / - * │ │ │ │ │/ - * │ │ │ │ 3 - * │ 𝟶 │ 𝟷 │ 𝟸 │ / - * │ │ │ │ / - * │ │ │ │/ - * 0─────────1─────────2─────────0 - * ``` - * - * @param[in] index Element index. - * - * @returns Periodic node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList periodicElement(std::size_t index) const; - }; - -} // namespace monad diff --git a/include/monad/grid/hex8_topology.hpp b/include/monad/grid/hex8_topology.hpp new file mode 100644 index 0000000..532e714 --- /dev/null +++ b/include/monad/grid/hex8_topology.hpp @@ -0,0 +1,73 @@ +#pragma once + +#include +#include +#include "monad/fem/element/hex8.hpp" + +namespace monad { + + namespace grid { + + /** + * @brief Topology rules for structured 3D Hex8 grids. + */ + struct Hex8Topology { + using Element = fem::Hex8; + using Resolution = std::array; + using Size = std::array; + using Point = typename Element::Point; + using ElementList = std::array; + + /** + * @brief Number of nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of nodes. + */ + static std::size_t numNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of periodic nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of periodic nodes. + */ + static std::size_t numPeriodicNodes(const Resolution& resolution) noexcept; + + /** + * @brief Coordinates of a node. + * + * @param[in] index Node index. + * @param[in] resolution Number of elements in each dimension. + * @param[in] size Physical lengths in each dimension. + * + * @returns Coordinates of a node. + */ + static Point node(std::size_t index, const Resolution& resolution, const Size& size) noexcept; + + /** + * @brief Node indices of an element. + * + * @param[in] index Element index. + * @param[in] resolution Number of elements in each dimension. + * + * @returns Node indices of an element. + */ + static ElementList element(std::size_t index, const Resolution& resolution) noexcept; + + /** + * @brief Periodic node indices of an element. + * + * @param[in] index Element index. + * @param[in] resolution Number of elements in each dimension. + * + * @returns Periodic node indices of an element. + */ + static ElementList periodicElement(std::size_t index, const Resolution& resolution) noexcept; + }; + + } // namespace grid + +} // namespace monad diff --git a/include/monad/grid/quad4_grid.hpp b/include/monad/grid/quad4_grid.hpp deleted file mode 100644 index 0380ccf..0000000 --- a/include/monad/grid/quad4_grid.hpp +++ /dev/null @@ -1,117 +0,0 @@ -#pragma once - -#include "monad/grid/grid_2d_base.hpp" -#include "monad/fem/element/quad4.hpp" - -namespace monad { - - /** - * @brief 2D grid mesh of 4-node quadrilaterl (Quad4) elements. - * - * Example 3x2 grid: - * - * ```text - * o───────o───────o───────o - * │ │ │ │ - * │ │ │ │ - * │ │ │ │ - * o───────o───────o───────o - * │ │ │ │ - * │ │ │ │ - * │ │ │ │ - * o───────o───────o───────o - * ``` - * - * Global axes: - * - * - x runs left→right. - * - * - y runs bottom→top. - */ - class Quad4Grid : public Grid2dBase { - public: - using Grid2dBase::Grid2dBase; - - /// @brief Number of nodes. - std::size_t numNodes() const noexcept; - - /// @brief Number of periodic nodes. - std::size_t numPeriodicNodes() const noexcept; - - /** - * @brief Coordinates for a specific node. - * - * Example 3x2 grid: - * - * ```text - * 8───────9───────10──────11 - * │ │ │ │ - * │ │ │ │ - * │ │ │ │ - * 4───────5───────6───────7 - * │ │ │ │ - * │ │ │ │ - * │ │ │ │ - * 0───────1───────2───────3 - * ``` - * - * @param[in] index Node index. - * - * @returns Coordinates. - * - * @throws std::out_of_range if `index` is outside the range [0,`numNodes()`). - */ - Point node(std::size_t index) const; - - /** - * @brief Node indices for a specific element. - * - * Example 3x2 grid: - * - * ```text - * 8───────9───────10──────11 - * │ │ │ │ - * │ 𝟹 │ 𝟺 │ 𝟻 │ - * │ │ │ │ - * 4───────5───────6───────7 - * │ │ │ │ - * │ 𝟶 │ 𝟷 │ 𝟸 │ - * │ │ │ │ - * 0───────1───────2───────3 - * ``` - * - * @param[in] index Element index. - * - * @returns Node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList element(std::size_t index) const; - - /** - * @brief Periodic node indices for a specific element. - * - * Example 3x2 grid: - * - * ```text - * 0───────1───────2───────0 - * │ │ │ │ - * │ 𝟹 │ 𝟺 │ 𝟻 │ - * │ │ │ │ - * 3───────4───────5───────3 - * │ │ │ │ - * │ 𝟶 │ 𝟷 │ 𝟸 │ - * │ │ │ │ - * 0───────1───────2───────0 - * ``` - * - * @param[in] index Element index. - * - * @returns Periodic node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList periodicElement(std::size_t index) const; - }; - -} // namespace monad diff --git a/include/monad/grid/quad4_topology.hpp b/include/monad/grid/quad4_topology.hpp new file mode 100644 index 0000000..caaa00d --- /dev/null +++ b/include/monad/grid/quad4_topology.hpp @@ -0,0 +1,73 @@ +#pragma once + +#include +#include +#include "monad/fem/element/quad4.hpp" + +namespace monad { + + namespace grid { + + /** + * @brief Topology rules for structured 2D Quad4 grids. + */ + struct Quad4Topology { + using Element = fem::Quad4; + using Resolution = std::array; + using Size = std::array; + using Point = typename Element::Point; + using ElementList = std::array; + + /** + * @brief Number of nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of nodes. + */ + static std::size_t numNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of periodic nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of periodic nodes. + */ + static std::size_t numPeriodicNodes(const Resolution& resolution) noexcept; + + /** + * @brief Coordinates of a node. + * + * @param[in] index Node index. + * @param[in] resolution Number of elements in each dimension. + * @param[in] size Physical lengths in each dimension. + * + * @returns Coordinates of a node. + */ + static Point node(std::size_t index, const Resolution& resolution, const Size& size) noexcept; + + /** + * @brief Node indices of an element. + * + * @param[in] index Element index. + * @param[in] resolution Number of elements in each dimension. + * + * @returns Node indices of an element. + */ + static ElementList element(std::size_t index, const Resolution& resolution) noexcept; + + /** + * @brief Periodic node indices of an element. + * + * @param[in] index Element index. + * @param[in] resolution Number of elements in each dimension. + * + * @returns Periodic node indices of an element. + */ + static ElementList periodicElement(std::size_t index, const Resolution& resolution) noexcept; + }; + + } // namespace grid + +} // namespace monad diff --git a/include/monad/grid/quad8_grid.hpp b/include/monad/grid/quad8_grid.hpp deleted file mode 100644 index a00b30f..0000000 --- a/include/monad/grid/quad8_grid.hpp +++ /dev/null @@ -1,117 +0,0 @@ -#pragma once - -#include "monad/grid/grid_2d_base.hpp" -#include "monad/fem/element/quad8.hpp" - -namespace monad { - - /** - * @brief 2D grid mesh of 8-node quadrilaterl (Quad8) elements. - * - * Example 3x2 grid: - * - * ```text - * o───o───o───o───o───o───o - * │ │ │ │ - * o o o o - * │ │ │ │ - * o───o───o───o───o───o───o - * │ │ │ │ - * o o o o - * │ │ │ │ - * o───o───o───o───o───o───o - * ``` - * - * Global axes: - * - * - x runs left→right. - * - * - y runs bottom→top. - */ - class Quad8Grid : public Grid2dBase { - public: - using Grid2dBase::Grid2dBase; - - /// @brief Number of nodes. - std::size_t numNodes() const noexcept; - - /// @brief Number of periodic nodes. - std::size_t numPeriodicNodes() const noexcept; - - /** - * @brief Coordinates for a specific node. - * - * Example 3x2 grid: - * - * ```text - * 8───18──9───19──10──20──11 - * │ │ │ │ - * 25 26 27 28 - * │ │ │ │ - * 4───15──5───16──6───17──7 - * │ │ │ │ - * 21 22 23 24 - * │ │ │ │ - * 0───12──1───13──2───14──3 - * ``` - * - * @param[in] index Node index. - * - * @returns Coordinates. - * - * @throws std::out_of_range if `index` is outside the range [0,`numNodes()`). - */ - Point node(std::size_t index) const; - - /** - * @brief Node indices for a specific element. - * - * Example 3x2 grid: - * - * ```text - * 8───18──9───19──10──20──11 - * │ │ │ │ - * 25 𝟹 26 𝟺 27 𝟻 28 - * │ │ │ │ - * 4───15──5───16──6───17──7 - * │ │ │ │ - * 21 𝟶 22 𝟷 23 𝟸 24 - * │ │ │ │ - * 0───12──1───13──2───14──3 - * ``` - * - * @param[in] index Element index. - * - * @returns Node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList element(std::size_t index) const; - - /** - * @brief Periodic node indices for a specific element. - * - * Example 3x2 grid: - * - * ```text - * 0───6───1───7───2───8───0 - * │ │ │ │ - * 15 𝟹 16 𝟺 17 𝟻 15 - * │ │ │ │ - * 3───9───4───10──5───11──3 - * │ │ │ │ - * 12 𝟶 13 𝟷 14 𝟸 13 - * │ │ │ │ - * 0───6───1───7───2───8───0 - * ``` - * - * @param[in] index Element index. - * - * @returns Periodic node indices. - * - * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). - */ - ElementList periodicElement(std::size_t index) const; - }; - -} // namespace monad diff --git a/include/monad/grid/quad8_topology.hpp b/include/monad/grid/quad8_topology.hpp new file mode 100644 index 0000000..4f4de58 --- /dev/null +++ b/include/monad/grid/quad8_topology.hpp @@ -0,0 +1,100 @@ +#pragma once + +#include +#include +#include "monad/fem/element/quad8.hpp" + +namespace monad { + + namespace grid { + + /** + * @brief Topology rules for 2D structured Quad8 grids. + */ + struct Quad8Topology { + using Element = fem::Quad8; + using Resolution = std::array; + using Size = std::array; + using Point = typename Element::Point; + using ElementList = std::array; + + /** + * @brief Number of corner nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of corner nodes. + */ + static std::size_t numCornerNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of x-edge midpoint nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of x-edge midpoint nodes. + */ + static std::size_t numXMidNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of y-edge midpoint nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of y-edge midpoint nodes. + */ + static std::size_t numYMidNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of nodes. + */ + static std::size_t numNodes(const Resolution& resolution) noexcept; + + /** + * @brief Number of periodic nodes. + * + * @param[in] resolution Number of elements in each dimension. + * + * @returns Number of periodic nodes. + */ + static std::size_t numPeriodicNodes(const Resolution& resolution) noexcept; + + /** + * @brief Coordinates of a node. + * + * @param[in] index Node index. + * @param[in] resolution Number of elements in each dimension. + * @param[in] size Physical lengths in each dimension. + * + * @returns Coordinates of a node. + */ + static Point node(std::size_t index, const Resolution& resolution, const Size& size) noexcept; + + /** + * @brief Node indices of an element. + * + * @param[in] index Element index. + * @param[in] resolution Number of elements in each dimension. + * + * @returns Node indices of an element. + */ + static ElementList element(std::size_t index, const Resolution& resolution) noexcept; + + /** + * @brief Periodic node indices of an element. + * + * @param[in] index Element index. + * @param[in] resolution Number of elements in each dimension. + * + * @returns Periodic node indices of an element. + */ + static ElementList periodicElement(std::size_t index, const Resolution& resolution) noexcept; + }; + + } // namespace grid + +} // namespace monad diff --git a/include/monad/grid/structured_grid.hpp b/include/monad/grid/structured_grid.hpp new file mode 100644 index 0000000..c876d55 --- /dev/null +++ b/include/monad/grid/structured_grid.hpp @@ -0,0 +1,239 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +namespace monad { + + namespace grid { + + /** + * @brief Structured grid mesh. + * + * @tparam TopologyT Concrete topology type (e.g. Quad4Topology). + */ + template + class StructuredGrid { + public: + using Topology = TopologyT; + using Element = typename Topology::Element; + + static constexpr int Dim = Element::Dim; + + using Resolution = std::array; + using Size = std::array; + using Point = typename Element::Point; + using NodesMatrix = typename Element::NodesMatrix; + using ElementList = std::array; + using ElementsList = std::vector; + using NodesList = std::vector; + + /** + * @brief Constructs a structured grid. + * + * @param[in] resolution Number of elements in each dimension. + * @param[in] size Physical lengths in each dimension. + * + * @throws std::invalid_argument if any entry in `resolution` is zero. + * @throws std::invalid_argument if any entry in `size` is non-positive. + */ + StructuredGrid(const Resolution &resolution, const Size &size) + : resolution_(resolution), size_(size) { + for (std::size_t i = 0; i < Dim; ++i) { + if (resolution_[i] == 0) { + throw std::invalid_argument("Resolution in dimension " + std::to_string(i + 1) + " must be positive."); + } + + if (size_[i] <= 0) { + throw std::invalid_argument("Size in dimension " + std::to_string(i + 1) + " (" + std::to_string(size_[i]) + ") must be positive."); + } + } + } + + /// @brief Number of elements in each dimension. + const Resolution &resolution() const noexcept { + return resolution_; + } + + /// @brief Physical lengths in each dimension. + const Size &size() const noexcept { + return size_; + } + + /// @brief Number of elements. + std::size_t numElements() const noexcept { + std::size_t total = 1; + + for (std::size_t n : resolution_) { + total *= n; + } + + return total; + } + + /// @brief Number of nodes. + std::size_t numNodes() const noexcept { + return Topology::numNodes(resolution_); + } + + /// @brief Number of periodic nodes. + std::size_t numPeriodicNodes() const noexcept { + return Topology::numPeriodicNodes(resolution_); + } + + /** + * @brief Coordinates of a node + * + * @param[in] index Node index. + * + * @returns Coordinates of a node. + * + * @throws std::out_of_range if `index` is outside the range [0,`numNodes()`). + */ + Point node(std::size_t index) const { + if (index >= numNodes()) { + throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numNodes()) + ")."); + } + + return Topology::node(index, resolution_, size_); + } + + /// @brief Coordinates of all nodes. + NodesList nodes() const noexcept { + NodesList out; + out.reserve(numNodes()); + + for (std::size_t i = 0; i < numNodes(); ++i) { + out.push_back(node(i)); + } + + return out; + } + + /** + * @brief Node indices of an element. + * + * @param[in] index Element index. + * + * @returns Node indices of an element. + * + * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). + */ + ElementList element(std::size_t index) const { + if (index >= numElements()) { + throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); + } + + return Topology::element(index, resolution_); + } + + /// @brief Node indices of all elements. + ElementsList elements() const noexcept { + ElementsList out; + out.reserve(numElements()); + + for (std::size_t i = 0; i < numElements(); ++i) { + out.push_back(element(i)); + } + + return out; + } + + /** + * @brief Periodic node indices of an element. + * + * @param[in] index Element index. + * + * @returns Periodic node indices of an element. + * + * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). + */ + ElementList periodicElement(std::size_t index) const { + if (index >= numElements()) { + throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); + } + + return Topology::periodicElement(index, resolution_); + } + + /// @brief Periodic node indices of all elements. + ElementsList periodicElements() const noexcept { + ElementsList out; + out.reserve(numElements()); + + for (std::size_t i = 0; i < numElements(); ++i) { + out.push_back(periodicElement(i)); + } + + return out; + } + + /** + * @brief Nodal coordinates of an element. + * + * @param[in] index Element index. + * + * @returns Nodal coordinates of an element. + * + * @throws std::out_of_range if `index` is outside the range [0,`numElements()`). + */ + NodesMatrix elementNodes(std::size_t index) const { + if (index >= numElements()) { + throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); + } + + NodesMatrix out; + + int row = 0; + for (std::size_t nodeIndex : element(index)) { + out.row(row++) = node(nodeIndex); + } + + return out; + } + + /// @brief Grid area (2D) or volume (3D). + double measure() const noexcept { + const auto referenceElementNodes = elementNodes(0); + const double referenceElementMeasure = Element::measure(referenceElementNodes); + + return referenceElementMeasure * static_cast(numElements()); + } + + /// @brief Grid area. + template + std::enable_if_t area() const noexcept { + return measure(); + } + + /// @brief Grid volume. + template + std::enable_if_t volume() const noexcept { + return measure(); + } + + /// @brief Equality comparison. + bool operator==(const StructuredGrid &other) const noexcept { + return resolution_ == other.resolution_ && size_ == other.size_; + } + + /// @brief Inequality comparison. + bool operator!=(const StructuredGrid &other) const noexcept { + return !(*this == other); + } + + private: + /// @brief Number of elements in each dimension. + Resolution resolution_; + + /// @brief Physical lengths in each dimension. + Size size_; + }; + + } // namespace grid + +} // namespace monad diff --git a/include/monad/integration/integrate_matrix.hpp b/include/monad/integration/integrate_matrix.hpp index 9c1d283..25bf43d 100644 --- a/include/monad/integration/integrate_matrix.hpp +++ b/include/monad/integration/integrate_matrix.hpp @@ -9,15 +9,19 @@ namespace monad { namespace integration { /** - * @brief Performs numerical integration (quadrature) of a vector integrand function. + * @brief Performs numerical integration (quadrature) of a matrix-valued integrand. * - * The integrand is a scalar function from ℝᵈ→ℝᵐˣᵐ. + * The integrand is a function of the form: + * + * ```text + * f:ℝᵈ→ℝᵐˣⁿ + * ``` * * @tparam F Type of the integrand. * @tparam D Spatial dimension of the integration domain. * @tparam N Number of integration points. * - * @param[in] integrand Function to be integrated. + * @param[in] integrand Integrand function. * @param[in] rule Quadrature rule. * * @returns Approximate value of the integral. @@ -27,7 +31,7 @@ namespace monad { using DomainType = typename QuadratureRule::Point; using RangeType = std::invoke_result_t; - static_assert(std::is_invocable_r_v, "Integrand must be callable as PointRange(PointDomain)."); + static_assert(std::is_invocable_r_v, "Integrand must be callable as f(x)."); RangeType result = RangeType::Zero(); diff --git a/include/monad/integration/integrate_scalar.hpp b/include/monad/integration/integrate_scalar.hpp index 1db0475..88d57c1 100644 --- a/include/monad/integration/integrate_scalar.hpp +++ b/include/monad/integration/integrate_scalar.hpp @@ -9,15 +9,19 @@ namespace monad { namespace integration { /** - * @brief Performs numerical integration (quadrature) of a scalar integrand function. + * @brief Performs numerical integration (quadrature) of a scalar-valued integrand. * - * The integrand is a scalar function from ℝᵈ→ℝ. + * The integrand is a function of the form: + * + * ```text + * f:ℝᵈ→ℝ + * ``` * * @tparam F Type of the integrand. * @tparam D Spatial dimension of the integration domain. * @tparam N Number of integration points. * - * @param[in] integrand Function to be integrated. + * @param[in] integrand Integrand function. * @param[in] rule Quadrature rule. * * @returns Approximate value of the integral. @@ -26,7 +30,7 @@ namespace monad { double integrateScalar(const F &integrand, const QuadratureRule &rule) { using DomainType = typename QuadratureRule::Point; - static_assert(std::is_invocable_r_v, "Integrand must be callable as double(Point)."); + static_assert(std::is_invocable_r_v, "Integrand must be callable as f(x)."); double result = 0.0; diff --git a/include/monad/integration/quadrature_rule.hpp b/include/monad/integration/quadrature_rule.hpp index 4ca7033..cbab247 100644 --- a/include/monad/integration/quadrature_rule.hpp +++ b/include/monad/integration/quadrature_rule.hpp @@ -3,6 +3,7 @@ #include #include #include +#include "monad/detail/constants.hpp" namespace monad { @@ -11,13 +12,10 @@ namespace monad { /** * @brief Quadrature rule for numerical integration. * - * A quadrature rule contains: + * A quadrature rule consists of a set of integration + * points and the corresponding integration weights. * - * 1. A list of integration points. - * - * 2. A corresponding list of weights. - * - * @tparam D Spatial dimension of the integration domain. + * @tparam D Spatial dimension. * @tparam N Number of integration points. */ template @@ -25,7 +23,7 @@ namespace monad { static_assert(D > 0, "Spatial dimension of the integration domain must be positive."); static_assert(N > 0, "Number of integration points must be positive."); - /// @brief Spatial dimension of the integration domain. + /// @brief Spatial dimension. static constexpr int Dim = D; /// @brief Number of integration points. @@ -38,13 +36,13 @@ namespace monad { /// @brief Integration points. PointsList points; - /// @brief Integration point weights. + /// @brief Integration weights. WeightsList weights; /// @brief Equality comparison. - bool operator==(QuadratureRule const &other) const { + bool operator==(const QuadratureRule &other) const noexcept { for (std::size_t i = 0; i < NumPoints; ++i) { - if (!points[i].isApprox(other.points[i])) { + if (!points[i].isApprox(other.points[i], NUMERICAL_ZERO)) { return false; } } @@ -52,7 +50,7 @@ namespace monad { } /// @brief Inequality comparison. - bool operator!=(QuadratureRule const &rhs) const { + bool operator!=(const QuadratureRule &rhs) const noexcept { return !(*this == rhs); } }; diff --git a/include/monad/io/gmsh/write_gmsh_densities.hpp b/include/monad/io/gmsh/write_gmsh_densities.hpp index c28c00a..3d147b4 100644 --- a/include/monad/io/gmsh/write_gmsh_densities.hpp +++ b/include/monad/io/gmsh/write_gmsh_densities.hpp @@ -3,6 +3,7 @@ #include #include #include +#include "monad/field/density_field.hpp" #include "monad/detail/constants.hpp" namespace monad { @@ -12,17 +13,19 @@ namespace monad { namespace gmsh { /** - * @brief Writes the Gmsh file `$ElementData` section containing per-element material densities. + * @brief Writes the Gmsh `$ElementData` section for per-element material densities. * - * @tparam Grid Grid class (e.g. Quad4Grid). + * @tparam D Spatial dimension (2 or 3). * * @param[in,out] os Output stream. - * @param[in] grid Periodic unit cell grid. + * @param[in] densityField Per-element density field. * * @note Gmsh documentation: https://gmsh.info/doc/texinfo/gmsh.html#MSH-file-format */ - template - void writeGmshDensities(std::ostream &os, const Grid &grid) noexcept { + template + void writeGmshDensities(std::ostream &os, const field::DensityField &densityField) noexcept { + static_assert(D == 2 || D == 3, "Density field spatial dimension must be 2 or 3."); + const int numStringTags = 1; const std::string stringTag = "Density"; const int numRealTags = 0; @@ -37,15 +40,15 @@ namespace monad { << numIntegerTags << "\n" << "0\n" << "1\n" - << static_cast(grid.numElements()) << "\n"; + << static_cast(densityField.numElements()) << "\n"; // Section body - for (std::size_t i = 0; i < grid.numElements(); ++i) { + for (std::size_t i = 0; i < densityField.numElements(); ++i) { const std::size_t elementTag = i + 1; os << elementTag; - double value = grid.getDensity(i); + double value = densityField.getDensity(i); // Report 0 rather than NUMERICAL_ZERO for cleaner output if (value <= NUMERICAL_ZERO) { diff --git a/include/monad/io/gmsh/write_gmsh_elements.hpp b/include/monad/io/gmsh/write_gmsh_elements.hpp index fa947a6..3aee46e 100644 --- a/include/monad/io/gmsh/write_gmsh_elements.hpp +++ b/include/monad/io/gmsh/write_gmsh_elements.hpp @@ -10,12 +10,12 @@ namespace monad { namespace gmsh { /** - * @brief Writes the Gmsh file `$Elements` section. + * @brief Writes the Gmsh `$Elements` section. * - * @tparam Grid Grid class (e.g. Quad4Grid). + * @tparam Grid Grid type (e.g. Quad4Grid). * * @param[in,out] os Output stream. - * @param[in] grid Periodic unit cell grid. + * @param[in] grid Grid. * * @note Gmsh documentation: https://gmsh.info/doc/texinfo/gmsh.html#MSH-file-format */ diff --git a/include/monad/io/gmsh/write_gmsh_header.hpp b/include/monad/io/gmsh/write_gmsh_header.hpp index 227ee05..30402f4 100644 --- a/include/monad/io/gmsh/write_gmsh_header.hpp +++ b/include/monad/io/gmsh/write_gmsh_header.hpp @@ -9,7 +9,7 @@ namespace monad { namespace gmsh { /** - * @brief Writes the Gmsh file `$MeshFormat` section. + * @brief Writes the Gmsh `$MeshFormat` section. * * @param[in,out] os Output stream. * diff --git a/include/monad/io/gmsh/write_gmsh_nodes.hpp b/include/monad/io/gmsh/write_gmsh_nodes.hpp index 8450972..8d44e7b 100644 --- a/include/monad/io/gmsh/write_gmsh_nodes.hpp +++ b/include/monad/io/gmsh/write_gmsh_nodes.hpp @@ -10,12 +10,12 @@ namespace monad { namespace gmsh { /** - * @brief Writes the Gmsh file `$Nodes` section. + * @brief Writes the Gmsh `$Nodes` section. * - * @tparam Grid Grid class (e.g. Quad4Grid). + * @tparam Grid Grid type (e.g. Quad4Grid). * * @param[in,out] os Output stream. - * @param[in] grid Periodic unit cell grid. + * @param[in] grid Grid. * * @note Gmsh documentation: https://gmsh.info/doc/texinfo/gmsh.html#MSH-file-format */ diff --git a/include/monad/io/save_grid.hpp b/include/monad/io/save_grid.hpp index e60bcf6..bd45d3c 100644 --- a/include/monad/io/save_grid.hpp +++ b/include/monad/io/save_grid.hpp @@ -13,17 +13,16 @@ namespace monad { /** * @brief Writes a grid to a Gmsh file. * - * @tparam Grid Grid class (e.g. Quad4Grid). + * @tparam Grid Grid type (e.g. Quad4Grid). * - * @param[in] grid Periodic unit cell grid. - * @param[in] file File. - * @param[in] saveDensities Set to `true` to save the material densities (default=`false`). + * @param[in] grid Grid. + * @param[in] file Path to the Gmsh file. * - * @throws std::invalid_argument if the `file` extension is not `.msh`. + * @throws std::invalid_argument if `file` does not have the `.msh` extension. * @throws std::runtime_error if the `file` cannot be opened for writing. */ template - void saveGrid(const Grid &grid, const std::string &file, bool saveDensities = false) { + void saveGrid(const Grid &grid, const std::string &file) { static_assert(Grid::Dim == 2 || Grid::Dim == 3, "Grid spatial dimension must be 2 or 3."); if (std::filesystem::path(file).extension() != ".msh") { @@ -40,12 +39,6 @@ namespace monad { io::gmsh::writeGmshNodes(ofs, grid); ofs << "\n\n"; io::gmsh::writeGmshElements(ofs, grid); - - if (saveDensities) { - ofs << "\n\n"; - io::gmsh::writeGmshDensities(ofs, grid); - } - ofs << "\n"; } diff --git a/include/monad/io/save_grid_and_density_field.hpp b/include/monad/io/save_grid_and_density_field.hpp new file mode 100644 index 0000000..f4c2f34 --- /dev/null +++ b/include/monad/io/save_grid_and_density_field.hpp @@ -0,0 +1,55 @@ +#pragma once + +#include +#include +#include +#include +#include "monad/field/density_field.hpp" +#include "monad/io/gmsh/write_gmsh_header.hpp" +#include "monad/io/gmsh/write_gmsh_nodes.hpp" +#include "monad/io/gmsh/write_gmsh_elements.hpp" +#include "monad/io/gmsh/write_gmsh_densities.hpp" + +namespace monad { + + /** + * @brief Writes a grid and its element density field to a Gmsh file. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + * + * @param[in] grid Grid. + * @param[in] densityField Per-element density field defined on `grid`. + * @param[in] file Path to the Gmsh file. + * + * @throws std::invalid_argument if `grid` and `densityField` do not have the same resolution. + * @throws std::invalid_argument if `file` does not have the `.msh` extension. + * @throws std::runtime_error if the `file` cannot be opened for writing. + */ + template + void saveGridAndDensityField(const Grid &grid, const field::DensityField &densityField, const std::string &file) { + static_assert(Grid::Dim == 2 || Grid::Dim == 3, "Grid spatial dimension must be 2 or 3."); + + if (grid.resolution() != densityField.resolution()) { + throw std::invalid_argument( "Grid resolution must match density field resolution."); + } + + if (std::filesystem::path(file).extension() != ".msh") { + throw std::invalid_argument("File extension must be \".msh\"."); + } + + std::ofstream ofs(file, std::ios::trunc); + if (!ofs.is_open()) { + throw std::runtime_error("Could not open " + file + " for writing."); + } + + io::gmsh::writeGmshHeader(ofs); + ofs << "\n\n"; + io::gmsh::writeGmshNodes(ofs, grid); + ofs << "\n\n"; + io::gmsh::writeGmshElements(ofs, grid); + ofs << "\n\n"; + io::gmsh::writeGmshDensities(ofs, densityField); + ofs << "\n"; + } + +} // namespace monad diff --git a/include/monad/io/save_grid_and_field.hpp b/include/monad/io/save_grid_and_nodal_field.hpp similarity index 73% rename from include/monad/io/save_grid_and_field.hpp rename to include/monad/io/save_grid_and_nodal_field.hpp index 0a3f9e4..e78efa1 100644 --- a/include/monad/io/save_grid_and_field.hpp +++ b/include/monad/io/save_grid_and_nodal_field.hpp @@ -11,33 +11,34 @@ #include "monad/io/gmsh/write_gmsh_nodal_field.hpp" namespace monad { + /** - * @brief Writes a grid and nodal field to a Gmsh file. + * @brief Writes a grid and its nodal field to a Gmsh file. * - * @tparam Grid Grid class (e.g. Quad4Grid). + * @tparam Grid Grid type (e.g. Quad4Grid). * @tparam Derived Eigen matrix type. * - * @param[in] grid Periodic unit cell grid. - * @param[in] file File. + * @param[in] grid Grid. * @param[in] field An Nx1 (scalar), Nx2 or Nx3 (vector) nodal field. - * @param[in] name Optional name tag for the nodal field. + * @param[in] file Path to the Gmsh file. + * @param[in] name Optional name for the nodal field. * - * @throws std::invalid_argument if the `file` extension is not `.msh`. - * @throws std::invalid_argument if the `field` size (N) does not equal the number of `grid` nodes. + * @throws std::invalid_argument if `field` size does not equal the number of `grid` nodes. + * @throws std::invalid_argument if `file` does not have the `.msh` extension. * @throws std::runtime_error if the `file` cannot be opened for writing. */ template - void saveGridAndField(const Grid &grid, const Eigen::MatrixBase& field, const std::string &file, const std::string &name = "") { + void saveGridAndNodalField(const Grid &grid, const Eigen::MatrixBase& field, const std::string &file, const std::string &name = "") { static_assert(Grid::Dim == 2 || Grid::Dim == 3, "Grid spatial dimension must be 2 or 3."); - if (std::filesystem::path(file).extension() != ".msh") { - throw std::invalid_argument("File extension must be \".msh\"."); - } - if (field.rows() != static_cast(grid.numNodes())) { throw std::invalid_argument("Field size (" + std::to_string(field.rows()) + ") must equal number of grid nodes (" + std::to_string(grid.numNodes()) + ")."); } + if (std::filesystem::path(file).extension() != ".msh") { + throw std::invalid_argument("File extension must be \".msh\"."); + } + std::ofstream ofs(file, std::ios::trunc); if (!ofs.is_open()) { throw std::runtime_error("Could not open " + file + " for writing."); diff --git a/include/monad/material/bounds.hpp b/include/monad/material/bounds.hpp new file mode 100644 index 0000000..0c63973 --- /dev/null +++ b/include/monad/material/bounds.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include "monad/field/density_field.hpp" +#include "monad/detail/mean.hpp" + +namespace monad { + + /** + * @brief Voigt upper bound for the homogenized material tensor. + * + * @tparam Material Material type (e.g. LinearElasticMaterial2d). + * + * @param[in] material Base material. + * @param[in] densityField Per-element density field. + * + * @returns Voigt upper bound for the homogenized material tensor. + */ + template + auto voigtBound(const Material& material, const field::DensityField& densityField) { + const double density = detail::arithmeticMean(densityField.densities()); + + return density * material.materialTensor(); + } + + /** + * @brief Reuss lower bound for the homogenized material tensor. + * + * @tparam Material Material type (e.g. LinearElasticMaterial2d). + * + * @param[in] material Base material. + * @param[in] densityField Per-element density field. + * + * @returns Reuss lower bound for the homogenized material tensor. + */ + template + auto reussBound(const Material& material, const field::DensityField& densityField) { + const double density = detail::harmonicMean(densityField.densities()); + + return density * material.materialTensor(); + } + +} // namespace monad diff --git a/include/monad/material/material_aliases.hpp b/include/monad/material/material_aliases.hpp new file mode 100644 index 0000000..3d228b7 --- /dev/null +++ b/include/monad/material/material_aliases.hpp @@ -0,0 +1,240 @@ +#pragma once + +#include "monad/material/transport/linear_transport_material.hpp" +#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" + +namespace monad { + + /** + * @brief 2D linear dielectric material model. + * + * By Gauss's law, the electric displacement D∈ℝ² is a linear function of + * the electric field E∈ℝ²: + * + * ```text + * D=ϵE=-ϵ∇φ + * ``` + * + * - φ∈ℝ is the electric potential. + * + * - ϵ∈Sym₂(ℝ) is the permittivity tensor. + */ + using LinearDielectricMaterial2d = material::LinearTransportMaterial<2>; + + /** + * @brief 3D linear dielectric material model. + * + * By Gauss's law, the electric displacement D∈ℝ³ is a linear function of + * the electric field E∈ℝ³: + * + * ```text + * D=ϵE=-ϵ∇φ + * ``` + * + * - φ∈ℝ is the electric potential. + * + * - ϵ∈Sym₃(ℝ) is the permittivity tensor. + */ + using LinearDielectricMaterial3d = material::LinearTransportMaterial<3>; + + /** + * @brief 2D linear electrical conductive material model. + * + * By Ohm's law, the current density J∈ℝ² is a linear function of + * the electric field E∈ℝ²: + * + * ```text + * J=σE=-σ∇φ + * ``` + * + * - φ∈ℝ is the electric potential. + * + * - σ∈Sym₂(ℝ) is the conductivity tensor. + */ + using LinearElectricalConductiveMaterial2d = material::LinearTransportMaterial<2>; + + /** + * @brief 3D linear electrical conductive material model. + * + * By Ohm's law, the current density J∈ℝ³ is a linear function of + * the electric field E∈ℝ³: + * + * ```text + * J=σE=-σ∇φ + * ``` + * + * - φ∈ℝ is the electric potential. + * + * - σ∈Sym₃(ℝ) is the conductivity tensor. + */ + using LinearElectricalConductiveMaterial3d = material::LinearTransportMaterial<3>; + + /** + * @brief 2D linear magnetic material model + * + * In a linear magnetic constitutive law, the magnetic flux density B∈ℝ² is a linear function of + * the magnetic field H∈ℝ²: + * + * ```text + * B=μH=-μ∇φ + * ``` + * + * - φ∈ℝ is the magnetic potential. + * + * - μ∈Sym₂(ℝ) is the permeability tensor. + */ + using LinearMagneticMaterial2d = material::LinearTransportMaterial<2>; + + /** + * @brief 3D linear magnetic material model + * + * In a linear magnetic constitutive law, the magnetic flux density B∈ℝ³ is a linear function of + * the magnetic field H∈ℝ³: + * + * ```text + * B=μH=-μ∇φ + * ``` + * + * - φ∈ℝ is the magnetic potential. + * + * - μ∈Sym₃(ℝ) is the permeability tensor. + */ + using LinearMagneticMaterial3d = material::LinearTransportMaterial<3>; + + /** + * @brief 2D linear mass diffusive material model. + * + * By Fick's law, the diffusion flux J∈ℝ² is a linear function of + * the mass concentration gradient ∇c∈ℝ²: + * + * ```text + * J=-D∇c + * ``` + * + * - c∈ℝ is the mass concentration. + * + * - D∈Sym₂(ℝ) is the diffusivity tensor. + */ + using LinearMassDiffusiveMaterial2d = material::LinearTransportMaterial<2>; + + /** + * @brief 3D linear mass diffusive material model. + * + * By Fick's law, the diffusion flux J∈ℝ³ is a linear function of + * the mass concentration gradient ∇c∈ℝ³: + * + * ```text + * J=-D∇c + * ``` + * + * - c∈ℝ is the mass concentration. + * + * - D∈Sym₃(ℝ) is the diffusivity tensor. + */ + using LinearMassDiffusiveMaterial3d = material::LinearTransportMaterial<3>; + + /** + * @brief 2D linear porous material model. + * + * By Darcy's law, the volumetric flux q∈ℝ² is a linear function of + * the pressure gradient ∇p∈ℝ²: + * + * ```text + * q=-K∇p + * ``` + * + * - p∈ℝ is the pressure. + * + * - K∈Sym₂(ℝ) is the permeability tensor. + */ + using LinearPorousMaterial2d = material::LinearTransportMaterial<2>; + + /** + * @brief 3D linear porous material model. + * + * By Darcy's law, the volumetric flux q∈ℝ³ is a linear function of + * the pressure gradient ∇p∈ℝ³: + * + * ```text + * q=-K∇p + * ``` + * + * - p∈ℝ is the pressure. + * + * - K∈Sym₃(ℝ) is the permeability tensor. + */ + using LinearPorousMaterial3d = material::LinearTransportMaterial<3>; + + /** + * @brief 2D linear thermal conductive material model. + * + * By Fourier's law, the heat flux q∈ℝ² is a linear function of + * the temperature gradient ∇T∈ℝ²: + * + * ```text + * q=-κ∇T + * ``` + * + * - T∈ℝ is the temperature. + * + * - κ∈Sym₂(ℝ) is the conductivity tensor. + */ + using LinearThermalConductiveMaterial2d = material::LinearTransportMaterial<2>; + + /** + * @brief 3D linear thermal conductive material model. + * + * By Fourier's law, the heat flux q∈ℝ³ is a linear function of + * the temperature gradient ∇T∈ℝ³: + * + * ```text + * q=-κ∇T + * ``` + * + * - T∈ℝ is the temperature. + * + * - κ∈Sym₃(ℝ) is the conductivity tensor. + */ + using LinearThermalConductiveMaterial3d = material::LinearTransportMaterial<3>; + + /** + * @brief 2D linear piezoelectric material model. + * + * In the stress-charge form, mechanical fields (stress T∈ℝ³ and strain S∈ℝ³) + * and electrical fields (electric displacement D∈ℝ² and electric field E∈ℝ²) + * are coupled by: + * + * ```text + * T=cS-dᵀE + * D=dT+ϵE + * ``` + * + * - c∈Sym₃(ℝ) is the stiffness tensor in Voigt notation. + * + * - ϵ∈Sym₂(ℝ) is the permittivity tensor. + * + * - d∈ℝ²ˣ³ is the piezoelectric coupling tensor. + */ + using LinearPiezoelectricMaterial2d = material::LinearPiezoelectricMaterial<2>; + + /** + * @brief 3D linear piezoelectric material model. + * + * In the stress-charge form, mechanical fields (stress T∈ℝ⁶ and strain S∈ℝ⁶) + * and electrical fields (electric displacement D∈ℝ³ and electric field E∈ℝ³) + * are coupled by: + * + * ```text + * T=cS-dᵀE + * D=dT+ϵE + * ``` + * + * - c∈Sym₆(ℝ) is the stiffness tensor in Voigt notation. + * + * - ϵ∈Sym₃(ℝ) is the permittivity tensor. + * + * - d∈ℝ³ˣ⁶ is the piezoelectric coupling tensor. + */ + using LinearPiezoelectricMaterial3d = material::LinearPiezoelectricMaterial<3>; + +} // namespace monad diff --git a/include/monad/material/mechanical/linear_elastic_material.hpp b/include/monad/material/mechanical/linear_elastic_material.hpp index b33de7c..d768a61 100644 --- a/include/monad/material/mechanical/linear_elastic_material.hpp +++ b/include/monad/material/mechanical/linear_elastic_material.hpp @@ -2,106 +2,78 @@ #include #include -#include "monad/detail/mean.hpp" #include "monad/detail/eigen_utils.hpp" -#include "monad/grid/grid_base.hpp" +#include "monad/detail/constants.hpp" namespace monad { - /** - * @brief Represents a linear elastic material model. - * - * By Hooke's law, stress σ∈ℝᵛ is a linear function of strain ε∈ℝᵛ: - * - * σ=Cε - * - * - C∈Symᵥ(ℝ) is the stiffness tensor (in Voigt notation). - * - * @tparam D Spatial dimension (2 or 3). - */ - template - class LinearElasticMaterial { - public: - static_assert(D == 2 || D == 3, "Spatial dimension D must be 2 or 3."); - - /// @brief Spatial dimension (2 or 3). - static constexpr int Dim = D; - - /// @brief Number of components in Voigt notation. - static constexpr int VoigtSize = (Dim == 2) ? 3 : 6; - - /// @brief Stiffness tensor (in Voigt notation) type. - using MaterialTensor = Eigen::Matrix; - - /// @brief Default constructor. - LinearElasticMaterial() = default; + namespace material { /** - * @brief Constructs a linear elastic material. - * - * @param[in] C Stiffness tensor (in Voigt notation). + * @brief Linear elastic material model. * - * @throws std::invalid_argument if `C` is not positive definite. - */ - explicit LinearElasticMaterial(const MaterialTensor &C) - : C_(C) { - if (!detail::isPD(C_)) { - throw std::invalid_argument("Stiffness tensor is not positive definite."); - } - } - - /// @brief Stiffness tensor C (in Voigt notation). - const MaterialTensor &materialTensor() const noexcept { - return C_; - } - - /** - * @brief Voigt upper bound for the homogenized stiffness tensor. + * By Hooke's law, the stress σ∈ℝᵛ is a linear function of + * the strain ε∈ℝᵛ: * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). + * ```text + * σ=Cε + * ``` * - * @param[in] grid Periodic unit cell grid. + * - C∈Symᵥ(ℝ) is the stiffness tensor in Voigt notation. * - * @returns Voigt upper bound for the homogenized stiffness tensor. + * @tparam D Spatial dimension (2 or 3). */ - template - MaterialTensor voigt(const GridBase &grid) const noexcept { - const double density = detail::arithmeticMean(grid.densities()); - - return density * C_; - } + template + class LinearElasticMaterial { + public: + static_assert(D == 2 || D == 3, "Spatial dimension D must be 2 or 3."); + + /// @brief Spatial dimension (2 or 3). + static constexpr int Dim = D; + + /// @brief Number of components in Voigt notation. + static constexpr int VoigtSize = (Dim == 2) ? 3 : 6; + + /// @brief Stiffness tensor type. + using MaterialTensor = Eigen::Matrix; + + /// @brief Default constructor. + LinearElasticMaterial() = default; + + /** + * @brief Constructs a linear elastic material. + * + * @param[in] C Stiffness tensor. + * + * @throws std::invalid_argument if `C` is not positive definite. + */ + explicit LinearElasticMaterial(const MaterialTensor &C) + : C_(C) { + if (!detail::isPD(C_)) { + throw std::invalid_argument("Stiffness tensor is not positive definite."); + } + } - /** - * @brief Reuss lower bound for the homogenized stiffness tensor. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * - * @param[in] grid Periodic unit cell grid. - * - * @returns Reuss lower bound for the homogenized stiffness tensor. - */ - template - MaterialTensor reuss(const GridBase &grid) const noexcept { - const double density = detail::harmonicMean(grid.densities()); + /// @brief Stiffness tensor. + const MaterialTensor &materialTensor() const noexcept { + return C_; + } - return density * C_; - } + /// @brief Equality comparison. + bool operator==(const LinearElasticMaterial &other) const noexcept { + return C_.isApprox(other.C_, NUMERICAL_ZERO); + } - /// @brief Equality comparison. - bool operator==(const LinearElasticMaterial &other) const noexcept { - return C_.isApprox(other.C_); - } + /// @brief Inequality comparison. + bool operator!=(const LinearElasticMaterial &other) const noexcept { + return !(*this == other); + } - /// @brief Inequality comparison. - bool operator!=(const LinearElasticMaterial &other) const noexcept { - return !(*this == other); - } + protected: + /// @brief Stiffness tensor. + MaterialTensor C_; + }; - protected: - /// @brief Stiffness tensor (in Voigt notation). - MaterialTensor C_; - }; + } // namespace material } // namespace monad diff --git a/include/monad/material/mechanical/linear_elastic_material_2d.hpp b/include/monad/material/mechanical/linear_elastic_material_2d.hpp index c91821a..cb40077 100644 --- a/include/monad/material/mechanical/linear_elastic_material_2d.hpp +++ b/include/monad/material/mechanical/linear_elastic_material_2d.hpp @@ -5,24 +5,27 @@ namespace monad { /** - * @brief Represents a 2D linear elastic material model. + * @brief 2D linear elastic material model. * - * By Hooke's law, stress σ∈ℝ² is a linear function of strain ε∈ℝ²: + * By Hooke's law, the stress σ∈ℝ³ is a linear function of + * the strain ε∈ℝ³: * + * ```text * σ=Cε + * ``` * - * - C∈Sym₂(ℝ) is the stiffness tensor (in Voigt notation). + * - C∈Sym₃(ℝ) is the stiffness tensor in Voigt notation. */ - class LinearElasticMaterial2d : public LinearElasticMaterial<2> { + class LinearElasticMaterial2d : public material::LinearElasticMaterial<2> { public: - using LinearElasticMaterial<2>::LinearElasticMaterial; + using material::LinearElasticMaterial<2>::LinearElasticMaterial; - /// @brief Defines the plane conditions for 2D linear elasticity. + /// @brief Plane condition for 2D linear elasticity. enum class PlaneCondition { - /// @brief Assumes zero out-of-plane stress. + /// @brief Zero out-of-plane stress. PlaneStress = 0, - /// @brief Assumes zero out-of-plane strain. + /// @brief Zero out-of-plane strain. PlaneStrain }; @@ -31,7 +34,7 @@ namespace monad { * * @param[in] E Young's modulus. * @param[in] nu Poisson's ratio. - * @param[in] condition 2D plane condition. + * @param[in] condition Plane condition. * * @throws std::invalid_argument if `E` is non-positive. * @throws std::invalid_argument if `nu` is not in range (-1,0.5). diff --git a/include/monad/material/mechanical/linear_elastic_material_3d.hpp b/include/monad/material/mechanical/linear_elastic_material_3d.hpp index c1ee246..fd3cc3e 100644 --- a/include/monad/material/mechanical/linear_elastic_material_3d.hpp +++ b/include/monad/material/mechanical/linear_elastic_material_3d.hpp @@ -5,17 +5,20 @@ namespace monad { /** - * @brief Represents a 3D linear elastic material model. + * @brief 3D linear elastic material model. * - * By Hooke's law, stress σ∈ℝ³ is a linear function of strain ε∈ℝ³: + * By Hooke's law, the stress σ∈ℝ⁶ is a linear function of + * the strain ε∈ℝ⁶: * + * ```text * σ=Cε + * ``` * - * - C∈Sym₃(ℝ) is the stiffness tensor (in Voigt notation). + * - C∈Sym₆(ℝ) is the stiffness tensor in Voigt notation. */ - class LinearElasticMaterial3d : public LinearElasticMaterial<3> { + class LinearElasticMaterial3d : public material::LinearElasticMaterial<3> { public: - using LinearElasticMaterial<3>::LinearElasticMaterial; + using material::LinearElasticMaterial<3>::LinearElasticMaterial; /** * @brief Constructs a 3D isotropic linear elastic material. diff --git a/include/monad/material/multiphysics/linear_piezoelectric_material.hpp b/include/monad/material/multiphysics/linear_piezoelectric_material.hpp index 7894808..7cdcb3e 100644 --- a/include/monad/material/multiphysics/linear_piezoelectric_material.hpp +++ b/include/monad/material/multiphysics/linear_piezoelectric_material.hpp @@ -2,197 +2,177 @@ #include #include -#include "monad/material/mechanical/linear_elastic_material.hpp" -#include "monad/material/transport/linear_transport_material.hpp" #include "monad/detail/eigen_utils.hpp" -#include "monad/grid/grid_base.hpp" namespace monad { - /** - * @brief Represents a linear piezoelectric material model. - * - * By the stress-charge form, mechanical (stress S∈ℝᵛ and strain T∈ℝᵛ) and - * electrical (electric displacement D∈ℝᵈ and electric field E∈ℝᵈ) fields - * are coupled: - * - * S=cT-dᵀE - * - * -D=-dT-εE - * - * - c∈Symᵥ(ℝ) is the stiffness tensor (in Voigt notation). - * - * - ε∈Symᴅ(ℝ) is the permittivity tensor (analogous to transport tensor K). - * - * - d∈ℝᵈˣᵛ is the piezoelectric coupling tensor. - * - * @tparam MechanicalMaterial Linear elastic material class (e.g. LinearElasticMaterial2d). - * @tparam ElectricalMaterial Linear dielectric material class (e.g. LinearDielectricMaterial2d). - */ - template - class LinearPiezoelectricMaterial { - public: - static_assert(MechanicalMaterial::Dim == ElectricalMaterial::Dim, "Spatial dimension of materials must be equal."); - static_assert(MechanicalMaterial::Dim == 2 || MechanicalMaterial::Dim == 3, "Spatial dimension D must be 2 or 3."); - - /// @brief Spatial dimension (2 or 3). - static constexpr int Dim = MechanicalMaterial::Dim; - - /// @brief Number of components in Voigt notation. - static constexpr int VoigtSize = MechanicalMaterial::VoigtSize; - - using CouplingTensor = Eigen::Matrix; - - /** @brief Coupled constitutive operator type. + namespace material { + + /** + * @brief Linear piezoelectric material model. + * + * In the stress-charge form, mechanical fields (stress T∈ℝᵛ and strain S∈ℝᵛ) + * and electrical fields (electric displacement D∈ℝᵈ and electric field E∈ℝᵈ) + * are coupled by: * * ```text - * ⎡ c -dᵀ⎤ - * ⎣-d -ε ⎦ + * T=cS-dᵀE + * D=dT+ϵE * ``` - */ - using MaterialTensor = Eigen::Matrix; - - /** - * @brief Constructs a linear piezoelectric material. * - * @param[in] elasticMaterial The linear elastic material. - * @param[in] dielectricMaterial The linear dielectric material. - * @param[in] d The piezoelectric coupling tensor. + * - c∈Symᵥ(ℝ) is the stiffness tensor in Voigt notation. * - * @throws std::invalid_argument if Schur complement + * - ϵ∈Symᴅ(ℝ) is the permittivity tensor. * - * c-dᵀε⁻¹d + * - d∈ℝᵈˣᵛ is the piezoelectric coupling tensor. * - * is not positive definite. + * @tparam D Spatial dimension (2 or 3). */ - LinearPiezoelectricMaterial(const MechanicalMaterial &elasticMaterial, const ElectricalMaterial &dielectricMaterial, const CouplingTensor &d) - : elasticMaterial_(elasticMaterial), dielectricMaterial_(dielectricMaterial), d_(d) { - const auto &c = elasticMaterial_.materialTensor(); - const auto &epsilon = dielectricMaterial_.materialTensor(); - - // Schur complement - // Must be PD for thermodynamic stability - auto S = c - d_.transpose() * epsilon.inverse() * d_; - if (!detail::isPD(S)) { - throw std::invalid_argument("Schur complement is not positive definite."); + template + class LinearPiezoelectricMaterial { + public: + static_assert(D == 2 || D == 3, "Spatial dimension D must be 2 or 3."); + + /// @brief Spatial dimension (2 or 3). + static constexpr int Dim = D; + + /// @brief Number of components in Voigt notation. + static constexpr int VoigtSize = (Dim == 2) ? 3 : 6; + + /// @brief Stiffness tensor type. + using StiffnessTensor = Eigen::Matrix; + + /// @brief Permittivity tensor type. + using PermittivityTensor = Eigen::Matrix; + + /// @brief Piezoelectric coupling tensor type. + using CouplingTensor = Eigen::Matrix; + + /** @brief Coupled constitutive operator type. + * + * ```text + * ⎡ c -dᵀ⎤ + * ⎣-d -ϵ ⎦ + * ``` + */ + using MaterialTensor = Eigen::Matrix; + + /** + * @brief Constructs a linear piezoelectric material. + * + * @param[in] c Stiffness tensor. + * @param[in] epsilon Permittivity tensor. + * @param[in] d Piezoelectric coupling tensor. + * + * @throws std::invalid_argument if `c` is not positive definite. + * @throws std::invalid_argument if `epsilon` is not positive definite. + * @throws std::invalid_argument if the Schur complement + * + * ``` + * c-dᵀϵ⁻¹d + * ``` + * + * is not positive definite. + */ + LinearPiezoelectricMaterial(const StiffnessTensor &c, const PermittivityTensor &epsilon, const CouplingTensor &d) + : c_(c), epsilon_(epsilon), d_(d) { + + if (!detail::isPD(c_)) { + throw std::invalid_argument("Stiffness tensor is not positive definite."); + } + + if (!detail::isPD(epsilon_)) { + throw std::invalid_argument("Permittivity tensor is not positive definite."); + } + + op_ << c_, -d_.transpose(), + -d_, -epsilon_; + + // Schur complement must be positive definite for thermodynamic stability. + const auto schur = c_ - d_.transpose() * epsilon_.inverse() * d_; + if (!detail::isPD(schur)) { + throw std::invalid_argument("Schur complement is not positive definite."); + } } - op_ << c, -d_.transpose(), - -d_, -epsilon; - } + // /** + // * @brief Converts from a compatible piezoelectric material type. + // * + // * This constructor allows piezoelectric materials built from compatible + // * mechanical and electrical material types to be converted into this + // * instantiation. + // * + // * This is needed when solver code expects a canonical + // * `LinearPiezoelectricMaterial<...>` type, but the input uses derived + // * or aliased component material types. + // * + // * @tparam OtherMechanicalMaterial Compatible mechanical material type. + // * @tparam OtherElectricalMaterial Compatible electrical material type. + // * + // * @param[in] other Piezoelectric material to convert from. + // */ + // template + // LinearPiezoelectricMaterial(const LinearPiezoelectricMaterial &other) + // : LinearPiezoelectricMaterial(other.elasticMaterial(), other.dielectricMaterial(), other.couplingTensor()) {} + + /// @brief Stiffness tensor. + const StiffnessTensor &stiffnessTensor() const noexcept { + return c_; + } - /** - * @brief Converting constructor for compatible piezoelectric material types. - * - * Converts any derived instantiation of `LinearPiezoelectricMaterial` into the - * canonical form expected by the solver. - * - * Example: - * - * LinearPiezoelectricMaterial2d - * - * ↳ LinearPiezoelectricMaterial, LinearTransportMaterial<2>> - * - * @tparam OtherMechanicalMaterial Derived mechanical material type. - * @tparam OtherElectricalMaterial Derived electrical material type. - * - * @param[in] other Linear piezoelectric material. - * - * @note Unlike single-physics materials, the piezoelectric class is a nested - * template over two material types, which prevents implicit type deduction - * for the solver. This constructor explicitly bridges that gap by forwarding - * the material to the canonical base type. - */ - template - LinearPiezoelectricMaterial(const LinearPiezoelectricMaterial &other) - : LinearPiezoelectricMaterial(other.elasticMaterial(), other.dielectricMaterial(), other.couplingTensor()) {} - - /// @brief Linear elastic material. - const MechanicalMaterial &elasticMaterial() const noexcept { - return elasticMaterial_; - } - - /// @brief Linear dielectric material. - const ElectricalMaterial &dielectricMaterial() const noexcept { - return dielectricMaterial_; - } - - /// @brief Piezoelectric coupling tensor d. - const CouplingTensor &couplingTensor() const noexcept { - return d_; - } - - /// @brief Coupled constitutive operator. - const MaterialTensor &materialTensor() const noexcept { - return op_; - } - - /// @brief Equality comparison. - bool operator==(const LinearPiezoelectricMaterial &other) const noexcept { - return op_ == other.op_; - } - - /// @brief Inequality comparison. - bool operator!=(const LinearPiezoelectricMaterial &other) const noexcept { - return !(*this == other); - } - - private: - /// @brief Linear elastic material. - const MechanicalMaterial elasticMaterial_; - - /// @brief Linear dielectric material. - const ElectricalMaterial dielectricMaterial_; - - /// @brief Piezoelectric coupling tensor. - const CouplingTensor d_; - - /** @brief Coupled constitutive operator. - * - * ```text - * ⎡ c -dᵀ⎤ - * ⎣-d -ε ⎦ - * ``` - */ - MaterialTensor op_; - }; - - /** - * @brief Represents a 2D linear piezoelectric material model. - * - * By the stress-charge form, mechanical (stress S∈ℝ³ and strain T∈ℝ³) and - * electrical (electric displacement D∈ℝ² and electric field E∈ℝ²) fields - * are coupled: - * - * S=cT-dᵀE - * - * -D=-dT-εE - * - * - c∈Sym₃(ℝ) is the stiffness tensor (in Voigt notation). - * - * - ε∈Sym₂(ℝ) is the dielectric tensor. - * - * - d∈ℝ²ˣ³ is the piezoelectric coupling tensor. - */ - using LinearPiezoelectricMaterial2d = LinearPiezoelectricMaterial, LinearTransportMaterial<2>>; - - /** - * @brief Represents a 3D linear piezoelectric material model. - * - * By the stress-charge form, mechanical (stress S∈ℝ⁶ and strain T∈ℝ⁶) and - * electrical (electric displacement D∈ℝ³ and electric field E∈ℝ³) fields - * are coupled: - * - * S=cT-dᵀE - * - * -D=-dT-εE - * - * - c∈Sym₆(ℝ) is the stiffness tensor (in Voigt notation). - * - * - ε∈Sym₃(ℝ) is the dielectric tensor. - * - * - d∈ℝ³ˣ⁶ is the piezoelectric coupling tensor. - */ - using LinearPiezoelectricMaterial3d = LinearPiezoelectricMaterial, LinearTransportMaterial<3>>; + /// @brief Permittivity tensor. + const PermittivityTensor &permittivityTensor() const noexcept { + return epsilon_; + } + + /// @brief Piezoelectric coupling tensor. + const CouplingTensor &couplingTensor() const noexcept { + return d_; + } + + /** @brief Coupled constitutive operator. + * + * ```text + * ⎡ c -dᵀ⎤ + * ⎣-d -ϵ ⎦ + * ``` + */ + const MaterialTensor &materialTensor() const noexcept { + return op_; + } + + /// @brief Equality comparison. + bool operator==(const LinearPiezoelectricMaterial &other) const noexcept { + return c_.isApprox(other.c_, NUMERICAL_ZERO) + && epsilon_.isApprox(other.epsilon_, NUMERICAL_ZERO) + && d_.isApprox(other.d_, NUMERICAL_ZERO); + } + + /// @brief Inequality comparison. + bool operator!=(const LinearPiezoelectricMaterial &other) const noexcept { + return !(*this == other); + } + + private: + /// @brief Stiffness tensor. + const StiffnessTensor c_; + + /// @brief Permittivity tensor. + const PermittivityTensor epsilon_; + + /// @brief Piezoelectric coupling tensor. + const CouplingTensor d_; + + /** @brief Coupled constitutive operator. + * + * ```text + * ⎡ c -dᵀ⎤ + * ⎣-d -ϵ ⎦ + * ``` + */ + MaterialTensor op_; + }; + + } // namespace material } // namespace monad diff --git a/include/monad/material/transport/linear_transport_material.hpp b/include/monad/material/transport/linear_transport_material.hpp index 71e2541..2507769 100644 --- a/include/monad/material/transport/linear_transport_material.hpp +++ b/include/monad/material/transport/linear_transport_material.hpp @@ -3,115 +3,87 @@ #include #include #include -#include "monad/detail/mean.hpp" #include "monad/detail/eigen_utils.hpp" -#include "monad/grid/grid_base.hpp" +#include "monad/detail/constants.hpp" namespace monad { - /** - * @brief Represents a linear transport material model. - * - * By a linear transport constitutive law, a flux J∈ℝᵈ is a linear function of a scalar potential gradient ∇φ∈ℝᵈ: - * - * J=-K∇φ - * - * - K∈Symᴅ(ℝ) is the transport tensor. - * - * @tparam D Spatial dimension (2 or 3). - */ - template - class LinearTransportMaterial { - public: - static_assert(D == 2 || D == 3, "Spatial dimension D must be 2 or 3."); - - /// @brief Spatial dimension (2 or 3). - static constexpr int Dim = D; - - /// @brief Transport tensor type. - using MaterialTensor = Eigen::Matrix; + namespace material { /** - * @brief Constructs a linear transport material. + * @brief Linear transport material model. * - * @param[in] K Transport tensor. + * In a linear transport constitutive law, the flux J∈ℝᵈ is + * a linear function of a scalar potential gradient ∇φ∈ℝᵈ: * - * @throws std::invalid_argument if `K` is not positive definite. - */ - explicit LinearTransportMaterial(const MaterialTensor &K) - : K_(K) { - if (!detail::isPD(K_)) { - throw std::invalid_argument("Transport tensor is not positive definite."); - } - } - - /** - * @brief Constructs an isotropic linear transport material. + * ```text + * J=-K∇φ + * ``` * - * @param[in] K Transport constant. + * - K∈Symᴅ(ℝ) is the transport tensor. * - * @throws std::invalid_argument if `K` is non-positive. + * @tparam D Spatial dimension (2 or 3). */ - explicit LinearTransportMaterial(double K) { - if (K <= 0.0) { - throw std::invalid_argument("K (" + std::to_string(K) + ") must be positive."); + template + class LinearTransportMaterial { + public: + static_assert(D == 2 || D == 3, "Spatial dimension D must be 2 or 3."); + + /// @brief Spatial dimension (2 or 3). + static constexpr int Dim = D; + + /// @brief Transport tensor type. + using MaterialTensor = Eigen::Matrix; + + /** + * @brief Constructs a linear transport material. + * + * @param[in] K Transport tensor. + * + * @throws std::invalid_argument if `K` is not positive definite. + */ + explicit LinearTransportMaterial(const MaterialTensor &K) + : K_(K) { + if (!detail::isPD(K_)) { + throw std::invalid_argument("Transport tensor is not positive definite."); + } } - K_ = MaterialTensor::Identity() * K; - } - - /// @brief Transport tensor K. - const MaterialTensor &materialTensor() const noexcept { - return K_; - } - - /** - * @brief Voigt upper bound for the homogenized transport tensor. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * - * @param[in] grid Periodic unit cell grid. - * - * @returns Voigt upper bound for the homogenized transport tensor. - */ - template - MaterialTensor voigt(const GridBase &grid) const noexcept { - const double density = detail::arithmeticMean(grid.densities()); - - return density * K_; - } + /** + * @brief Constructs an isotropic linear transport material. + * + * @param[in] K Transport constant. + * + * @throws std::invalid_argument if `K` is non-positive. + */ + explicit LinearTransportMaterial(double K) { + if (K <= 0.0) { + throw std::invalid_argument("K (" + std::to_string(K) + ") must be positive."); + } + + K_ = MaterialTensor::Identity() * K; + } - /** - * @brief Reuss lower bound for the homogenized transport tensor. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * - * @param[in] grid Periodic unit cell grid. - * - * @returns Reuss lower bound for the homogenized transport tensor. - */ - template - MaterialTensor reuss(const GridBase &grid) const noexcept { - const double density = detail::harmonicMean(grid.densities()); + /// @brief Transport tensor. + const MaterialTensor &materialTensor() const noexcept { + return K_; + } - return density * K_; - } + /// @brief Equality comparison. + bool operator==(const LinearTransportMaterial &other) const noexcept { + return K_.isApprox(other.K_, NUMERICAL_ZERO); + } - /// @brief Equality comparison. - bool operator==(const LinearTransportMaterial &other) const noexcept { - return K_.isApprox(other.K_); - } + /// @brief Inequality comparison. + bool operator!=(const LinearTransportMaterial &other) const noexcept { + return !(*this == other); + } - /// @brief Inequality comparison. - bool operator!=(const LinearTransportMaterial &other) const noexcept { - return !(*this == other); - } + private: + /// @brief Transport tensor. + MaterialTensor K_; + }; - private: - /// @brief Transport tensor K. - MaterialTensor K_; - }; + } // namespace material } // namespace monad diff --git a/include/monad/material/transport/linear_transport_material_aliases.hpp b/include/monad/material/transport/linear_transport_material_aliases.hpp deleted file mode 100644 index 1cd9bd7..0000000 --- a/include/monad/material/transport/linear_transport_material_aliases.hpp +++ /dev/null @@ -1,259 +0,0 @@ -#pragma once - -#include "monad/material/transport/linear_transport_material.hpp" - -namespace monad { - - /** - * @brief Represents a 2D linear dielectric material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For dielectric materials, Gauss's law provides the constitutive relation: - * - * D=εE - * - * - D∈ℝ² is the electric displacement (analogous to flux J).. - * - * - E=-∇φ∈ℝ² is the electric field (analogous to scalar potential gradient ∇φ).. - * - * - φ∈ℝ is the electric potential (analogous to scalar potential φ).. - * - * - ε∈Sym₂(ℝ) is the permittivity tensor (analogous to transport tensor K).. - */ - using LinearDielectricMaterial2d = LinearTransportMaterial<2>; - - /** - * @brief Represents a 3D linear dielectric material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For dielectric materials, Gauss's law provides the constitutive relation: - * - * D=εE - * - * - D∈ℝ³ is the electric displacement (analogous to flux J). - * - * - E=-∇φ∈ℝ³ is the electric field (analogous to scalar potential gradient ∇φ). - * - * - φ∈ℝ is the electric potential (analogous to scalar potential φ). - * - * - ε∈Sym₃(ℝ) is the permittivity tensor (analogous to transport tensor K). - */ - using LinearDielectricMaterial3d = LinearTransportMaterial<3>; - - /** - * @brief Represents a 2D linear electrical conductive material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For electrical conductive materials, Ohm's law provides the constitutive relation: - * - * J=σE - * - * - J∈ℝ² is the current density (analogous to flux J). - * - * - E=-∇φ∈ℝ² is the electric field (analogous to scalar potential gradient ∇φ). - * - * - φ∈ℝ is the electric potential (analogous to scalar potential φ). - * - * - σ∈Sym₂(ℝ) is the conductivity tensor (analogous to transport tensor K). - */ - using LinearElectricalConductiveMaterial2d = LinearTransportMaterial<2>; - - /** - * @brief Represents a 3D linear electrical conductive material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For electrical conductive materials, Ohm's law provides the constitutive relation: - * - * J=σE - * - * - J∈ℝ³ is the current density (analogous to flux J). - * - * - E=-∇φ∈ℝ³ is the electric field (analogous to scalar potential gradient ∇φ). - * - * - φ∈ℝ is the electric potential (analogous to scalar potential φ). - * - * - σ∈Sym₃(ℝ) is the conductivity tensor (analogous to transport tensor K). - */ - using LinearElectricalConductiveMaterial3d = LinearTransportMaterial<3>; - - /** - * @brief Represents a 2D linear magnetic material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For magnetic materials, the constitutive relation is: - * - * B=μH - * - * - B∈ℝ² is the magnetic flux density (analogous to flux J). - * - * - H=-∇φ∈ℝ² is the magnetic field (analogous to scalar potential gradient ∇φ). - * - * - φ∈ℝ is the magnetic potential (analogous to scalar potential φ). - * - * - μ∈Sym₂(ℝ) is the permeability tensor (analogous to transport tensor K). - */ - using LinearMagneticMaterial2d = LinearTransportMaterial<2>; - - /** - * @brief Represents a 3D linear magnetic material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For magnetic materials, the constitutive relation is: - * - * B=μH - * - * - B∈ℝ³ is the magnetic flux density (analogous to flux J). - * - * - H=-∇φ∈ℝ³ is the magnetic field (analogous to scalar potential gradient ∇φ). - * - * - φ∈ℝ is the magnetic potential (analogous to scalar potential φ). - * - * - μ∈Sym₃(ℝ) is the permeability tensor (analogous to transport tensor K). - */ - using LinearMagneticMaterial3d = LinearTransportMaterial<3>; - - /** - * @brief Represents a 2D linear mass diffusive material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For mass diffusive materials, Fick's law provides the constitutive relation: - * - * J=-D∇c - * - * - J∈ℝ² is the diffusion flux (analogous to flux J). - * - * - ∇c∈ℝ² is the mass concentration gradient (analogous to scalar potential gradient ∇φ). - * - * - D∈Sym₂(ℝ) is the diffusivity tensor (analogous to transport tensor K). - */ - using LinearMassDiffusiveMaterial2d = LinearTransportMaterial<2>; - - /** - * @brief Represents a 3D linear mass diffusive material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For mass diffusive materials, Fick's law provides the constitutive relation: - * - * J=-D∇c - * - * - J∈ℝ³ is the diffusion flux (analogous to flux J). - * - * - ∇c∈ℝ³ is the mass concentration gradient (analogous to scalar potential gradient ∇φ). - * - * - D∈Sym₃(ℝ) is the diffusivity tensor (analogous to transport tensor K). - */ - using LinearMassDiffusiveMaterial3d = LinearTransportMaterial<3>; - - /** - * @brief Represents a 2D linear porous material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For porous materials, Darcy's law provides the constitutive relation: - * - * q=-K∇p - * - * - q∈ℝ² is the volumetric flux (analogous to flux J). - * - * - ∇p∈ℝ² is the pressure gradient (analogous to scalar potential gradient ∇φ). - * - * - K∈Sym₂(ℝ) is the permeability tensor (analogous to transport tensor K). - */ - using LinearPorousMaterial2d = LinearTransportMaterial<2>; - - /** - * @brief Represents a 3D linear porous material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For porous materials, Darcy's law provides the constitutive relation: - * - * q=-K∇p - * - * - D∈ℝ³ is the volumetric flux (analogous to flux J). - * - * - ∇p∈ℝ³ is the pressure gradient (analogous to scalar potential gradient ∇φ). - * - * - K∈Sym₃(ℝ) is the permeability tensor (analogous to transport tensor K). - */ - using LinearPorousMaterial3d = LinearTransportMaterial<3>; - - /** - * @brief Represents a 2D linear thermal conductive material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For thermal conductive materials, Fourier's law provides the constitutive relation: - * - * q=-κ∇T - * - * - q∈ℝ² is the heat flux (analogous to flux J). - * - * - ∇T∈ℝ² is the temperature gradient (analogous to scalar potential gradient ∇φ). - * - * - κ∈Sym₂(ℝ) is the conductivity tensor (analogous to transport tensor K). - */ - using LinearThermalConductiveMaterial2d = LinearTransportMaterial<2>; - - /** - * @brief Represents a 3D linear thermal conductive material model. - * - * This type is a physics-specific alias of a general linear transport material, - * whose constitutive relation takes the form: - * - * J=-K∇φ - * - * For thermal conductive materials, Fourier's law provides the constitutive relation: - * - * q=-κ∇T - * - * - q∈ℝ³ is the heat flux (analogous to flux J). - * - * - ∇T∈ℝ³ is the temperature gradient (analogous to scalar potential gradient ∇φ). - * - * - κ∈Sym₃(ℝ) is the conductivity tensor (analogous to transport tensor K). - */ - using LinearThermalConductiveMaterial3d = LinearTransportMaterial<3>; - -} // namespace monad diff --git a/include/monad/monad.hpp b/include/monad/monad.hpp index 44a9082..6cdb979 100644 --- a/include/monad/monad.hpp +++ b/include/monad/monad.hpp @@ -1,23 +1,24 @@ #pragma once +// Fields +#include "monad/field/field_aliases.hpp" +#include "monad/field/make_density_field_from_csv.hpp" +#include "monad/field/make_density_field_from_function.hpp" + // Grids -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" +#include "monad/grid/grid_aliases.hpp" // IO #include "monad/io/save_grid.hpp" -#include "monad/io/save_grid_and_field.hpp" +#include "monad/io/save_grid_and_density_field.hpp" +#include "monad/io/save_grid_and_nodal_field.hpp" // Material #include "monad/material/mechanical/linear_elastic_material_2d.hpp" #include "monad/material/mechanical/linear_elastic_material_3d.hpp" -#include "monad/material/transport/linear_transport_material_aliases.hpp" -#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" +#include "monad/material/bounds.hpp" +#include "monad/material/material_aliases.hpp" // Solvers #include "monad/solver/solver_options.hpp" -#include "monad/solver/mechanical/linear_elastic_solver.hpp" -#include "monad/solver/scalar/linear_scalar_diffusive_solver_aliases.hpp" -#include "monad/solver/multiphysics/linear_piezoelectric_solver.hpp" +#include "monad/solver/solver_aliases.hpp" diff --git a/include/monad/solver/identity_preconditioner.hpp b/include/monad/solver/identity_preconditioner.hpp new file mode 100644 index 0000000..a5d5bf1 --- /dev/null +++ b/include/monad/solver/identity_preconditioner.hpp @@ -0,0 +1,23 @@ +#pragma once + +#include + +namespace monad { + + namespace solver { + + /** + * @brief Identity preconditioner for a matrix-free stiffness operator. + * + * This preconditioner approximates the inverse of the reduced global + * stiffness operator A by the identity matrix: + * + * ```text + * A⁻¹≈I + * ``` + */ + using IdentityPreconditioner = Eigen::IdentityPreconditioner; + + } // namespace solver + +} // namespace monad diff --git a/include/monad/fem/operator/jacobi_preconditioner.hpp b/include/monad/solver/jacobi_preconditioner.hpp similarity index 52% rename from include/monad/fem/operator/jacobi_preconditioner.hpp rename to include/monad/solver/jacobi_preconditioner.hpp index e03e59f..f50c12b 100644 --- a/include/monad/fem/operator/jacobi_preconditioner.hpp +++ b/include/monad/solver/jacobi_preconditioner.hpp @@ -4,17 +4,19 @@ namespace monad { - namespace fem { + namespace solver { /** - * @brief Jacobi (diagonal) preconditioner for the matrix-free operator. + * @brief Jacobi preconditioner for a matrix-free stiffness operator. * - * This preconditioner approximates the inverse of the global stiffness matrix A - * by inverting only its diagonal: + * This preconditioner approximates the inverse of the reduced global + * stiffness operator A by inverting only its diagonal: * + * ```text * A⁻¹≈diag(A)⁻¹ + * ``` * - * @tparam Operator Matrix-free operator class (e.g. MatrixFreeOperator>). + * @tparam Operator Matrix-free operator type (e.g. MatrixFreeOperator>). */ template class JacobiPreconditioner { @@ -35,7 +37,7 @@ namespace monad { } /** - * @brief Computes the diagonal of the global stiffness matrix. + * @brief Computes the diagonal preconditioner from a matrix-free operator. * * @param[in] op Matrix-free operator. * @@ -46,24 +48,33 @@ namespace monad { diagonal_.setZero(n); const auto &elementKReference = op.elementKReference(); - const auto &elementDofs = op.elementDofs(); - const auto &densities = op.densities(); + const auto &dofMap = op.dofMap(); + const auto &densityField = op.densityField(); - // Loop over all elements and accumulate their diagonal contributions - for (std::size_t i = 0; i < elementDofs.size(); ++i) { - const double density = densities[i]; - const auto &dofs = elementDofs[i]; + // Assemble the reduced global diagonal by accumulating the + // density-scaled diagonal entries of each element matrix + for (std::size_t i = 0; i < dofMap.size(); ++i) { + const double density = densityField.getDensity(i); + const auto &reducedDofs = dofMap.reducedDofs(i); - for (std::size_t j = 0; j < dofs.size(); ++j) { - const int globalDof = dofs[j]; - const int localDof = static_cast(j); + for (std::size_t j = 0; j < reducedDofs.size(); ++j) { + const int reducedDof = reducedDofs[j]; + const int localReducedDof = static_cast(j); - if (globalDof >= 0) { - diagonal_(globalDof) += density * elementKReference(localDof, localDof); + if (reducedDof >= 0) { + diagonal_(reducedDof) += density * elementKReference(localReducedDof, localReducedDof); } } } + // Jacobi requires invertible diagonal entries + for (int i = 0; i < diagonal_.size(); ++i) { + if (diagonal_(i) == Scalar(0)) { + info_ = Eigen::NumericalIssue; + break; + } + } + return *this; } @@ -72,9 +83,11 @@ namespace monad { * * Computes * + * ```text * x=A⁻¹b≈diag(A)⁻¹b + * ``` * - * via element-wise division. + * by element-wise division. * * @tparam Rhs Type of the right-hand side vector. * @@ -83,20 +96,23 @@ namespace monad { * @returns Preconditioned vector. */ template - inline Vector solve(const Eigen::MatrixBase &b) const noexcept { + inline Vector solve(const Eigen::MatrixBase &b) const { return b.cwiseQuotient(diagonal_); } /// @brief Status of the preconditioner. Eigen::ComputationInfo info() const noexcept { - return Eigen::Success; + return info_; } private: /// @brief Diagonal of the global stiffness matrix. Vector diagonal_; + + /// @brief Status of the preconditioner. + Eigen::ComputationInfo info_ = Eigen::Success; }; - } // namespace fem + } // namespace solver } // namespace monad diff --git a/include/monad/solver/mechanical/linear_elastic_physics.hpp b/include/monad/solver/mechanical/linear_elastic_physics.hpp deleted file mode 100644 index 67402d4..0000000 --- a/include/monad/solver/mechanical/linear_elastic_physics.hpp +++ /dev/null @@ -1,154 +0,0 @@ -#pragma once - -#include -#include -#include "monad/fem/kernel/mechanical/linear_elastic_kernel.hpp" -#include "monad/fem/operator/mechanical/linear_elastic_matrix_free_operator_traits.hpp" -#include "monad/solver/solver_options.hpp" -#include "monad/solver/mechanical/linear_elastic_physics_traits.hpp" - -namespace monad { - - namespace solver { - - namespace mechanical { - - /** - * @brief Physics policy for linear elastic homogenization. - * - * @tparam Element Element class (e.g. Quad4). - */ - template - struct LinearElasticPhysics { - using Kernel = fem::mechanical::LinearElasticKernel; - using Material = typename Kernel::Material; - - /// @brief Spatial dimension (2 or 3). - static constexpr int Dim = Element::Dim; - - /** - * @brief Number of macroscopic fields: - * - * - D=2: ε̄₁₁, ε̄₂₂, ε̄₁₂. - * - * - D=3: ε̄₁₁, ε̄₂₂, ε̄₃₃, ε̄₁₂, ε̄₁₃, ε̄₂₃. - */ - static constexpr int NumMacroFields = Material::VoigtSize; - - using OperatorTraits = fem::mechanical::LinearElasticMatrixFreeOperatorTraits; - - using Traits = LinearElasticPhysicsTraits; - - /// @brief Global force matrix type. - using FieldMatrix = Eigen::Matrix; - - /// @brief Homogenized stiffness tensor type. - using MaterialTensor = typename Material::MaterialTensor; - - /** - * @brief Results from linear elastic homogenization. - * - * @note Displacement fields are stored in arrays - * ordered by the prescribed macroscopic strain - * loading directions: - * - * - D=2: ε̄₁₁, ε̄₂₂, ε̄₁₂. - * - * - D=3: ε̄₁₁, ε̄₂₂, ε̄₃₃, ε̄₁₂, ε̄₁₃, ε̄₂₃. - * - * Each array entry corresponds to one independent macroscopic loading case. - */ - struct Results { - using NodalField = Eigen::Matrix; - - /// @brief Homogenized stiffness tensor C̄. - MaterialTensor CBar; - - /// @brief Total nodal displacement fields u=ū+ũ. - std::array u; - - /// @brief Macroscopic nodal displacement fields ū. - std::array uMacro; - - /// @brief Microscopic nodal displacement fields ũ. - std::array uMicro; - }; - - /** - * @brief Macroscopic nodal displacements. - * - * The macroscopic displacements Ū are the displacements - * resulting from the macroscopic strains ε̄: - * - * Ū=ε̄x - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * - * @param[in] grid Periodic unit cell grid. - * - * @returns Macroscopic nodal displacements. - */ - template - static FieldMatrix macroscopicField(const GridBase &grid) { - return Traits::macroDisplacements(grid); - } - - /** - * @brief Constructs linear elastic homogenization results. - * - * @param[in] CBar Homogenized stiffness tensor. - * @param[in] U Total nodal displacement fields. - * @param[in] UMacro Macroscopic nodal displacement fields. - * @param[in] UMicro Microscopic nodal displacement fields. - * @param[in] fields Controls which nodal fields are stored in the solver results. - * - * @returns Linear elastic homogenization results. - */ - static Results makeResults(const MaterialTensor &CBar, const FieldMatrix &U, const FieldMatrix &UMacro, const FieldMatrix &UMicro, FieldSave fields) noexcept { - using NodalField = typename Results::NodalField; - - Results results; - - results.CBar = CBar; - - const auto numNodes = U.rows() / Dim; - - if (wants(fields, FieldSave::Total)) { - std::array temp; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - temp[i] = U.col(static_cast(i)).template reshaped(numNodes, Dim); - } - - results.u = temp; - } - - if (wants(fields, FieldSave::Macro)) { - std::array temp; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - temp[i] = UMacro.col(static_cast(i)).template reshaped(numNodes, Dim); - } - - results.uMacro = temp; - } - - if (wants(fields, FieldSave::Micro)) { - std::array temp; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - temp[i] = UMicro.col(static_cast(i)).template reshaped(numNodes, Dim); - } - - results.uMicro = temp; - } - - return results; - } - }; - - } // namespace mechanical - - } // namespace solver - -} // namespace monad diff --git a/include/monad/solver/mechanical/linear_elastic_physics_traits.hpp b/include/monad/solver/mechanical/linear_elastic_physics_traits.hpp deleted file mode 100644 index c7f4755..0000000 --- a/include/monad/solver/mechanical/linear_elastic_physics_traits.hpp +++ /dev/null @@ -1,144 +0,0 @@ -#pragma once - -#include -#include -#include "monad/grid/grid_base.hpp" -#include "monad/fem/operator/mechanical/linear_elastic_matrix_free_operator_traits.hpp" - -namespace monad { - - namespace solver { - - namespace mechanical { - - /** - * @brief Linear elastic physics traits. - * - * This struct isolates dimension-specific logic so that linear elastic physics - * can be written generically in terms of spatial dimension. - * - * @tparam D Spatial dimension (2 or 3). - */ - template - struct LinearElasticPhysicsTraits; - - /** - * @brief 2D linear elastic physics traits. - * - * This struct isolates 2D-specific logic so that linear elastic physics - * can be written generically in terms of spatial dimension. - */ - template <> - struct LinearElasticPhysicsTraits<2> { - using OperatorTraits = fem::mechanical::LinearElasticMatrixFreeOperatorTraits<2>; - - /** - * @brief Macroscopic nodal displacements. - * - * The macroscopic displacements Ū are the displacements - * resulting from the macroscopic strains ε̄: - * - * Ū=ε̄x - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * - * @param[in] grid Periodic unit cell grid. - * - * @returns Macroscopic nodal displacements. - */ - template - static Eigen::MatrixX3d macroDisplacements(const GridBase &grid) { - static_assert(Element::Dim == Grid::Dim, "Element spatial dimension must equal grid spatial dimension."); - - const std::size_t numNodes = grid.numNodes(); - const std::size_t numDofs = OperatorTraits::NumNodeDofs * numNodes; - - Eigen::MatrixX3d U = Eigen::MatrixX3d::Zero(static_cast(numDofs), 3); - - for (std::size_t i = 0; i < grid.numNodes(); ++i) { - auto node = grid.node(i); - - const double x = node(0); - const double y = node(1); - - const int u = static_cast(2 * i); - const int v = static_cast(2 * i + 1); - - U(u, 0) = x; - U(v, 1) = y; - U(u, 2) = 0.5 * y; - U(v, 2) = 0.5 * x; - } - - return U; - } - }; - - /** - * @brief 3D linear elastic physics traits. - * - * This struct isolates 3D-specific logic so that linear elastic physics - * can be written generically in terms of spatial dimension. - */ - template <> - struct LinearElasticPhysicsTraits<3> { - using OperatorTraits = fem::mechanical::LinearElasticMatrixFreeOperatorTraits<3>; - - using MatrixX6d = Eigen::Matrix; - - /** - * @brief Macroscopic nodal displacements. - * - * The macroscopic displacements Ū are the displacements - * resulting from the macroscopic strains ε̄: - * - * Ū=ε̄x - * - * @tparam Grid Grid class (e.g. Hex8Grid). - * @tparam Element Element class (e.g. Hex8). - * - * @param[in] grid Periodic unit cell grid. - * - * @returns Macroscopic nodal displacements. - */ - template - static MatrixX6d macroDisplacements(const GridBase &grid) { - static_assert(Element::Dim == Grid::Dim, "Element spatial dimension must equal grid spatial dimension."); - - const std::size_t numNodes = grid.numNodes(); - const std::size_t numDofs = OperatorTraits::NumNodeDofs * numNodes; - - MatrixX6d U = MatrixX6d::Zero(static_cast(numDofs), 6); - - for (std::size_t i = 0; i < grid.numNodes(); ++i) { - const auto node = grid.node(i); - - const double x = node(0); - const double y = node(1); - const double z = node(2); - - const int u = static_cast(3 * i); - const int v = static_cast(3 * i + 1); - const int w = static_cast(3 * i + 2); - - U(u, 0) = x; - U(v, 1) = y; - U(w, 2) = z; - U(u, 3) = 0.5 * y; - U(v, 3) = 0.5 * x; - U(u, 4) = 0.5 * z; - U(w, 4) = 0.5 * x; - U(w, 5) = 0.5 * y; - U(v, 5) = 0.5 * z; - } - - return U; - } - }; - - } // namespace mechanical - - } // namespace solver - -} // namespace monad diff --git a/include/monad/solver/mechanical/linear_elastic_policy.hpp b/include/monad/solver/mechanical/linear_elastic_policy.hpp new file mode 100644 index 0000000..ee66736 --- /dev/null +++ b/include/monad/solver/mechanical/linear_elastic_policy.hpp @@ -0,0 +1,199 @@ +#pragma once + +#include +#include +#include +#include "monad/fem/kernel/mechanical/linear_elastic_kernel.hpp" +#include "monad/fem/operator/mechanical/linear_elastic_dof_traits.hpp" +#include "monad/material/mechanical/linear_elastic_material.hpp" +#include "monad/solver/solver_options.hpp" + +namespace monad { + + namespace solver { + + namespace mechanical { + + /** + * @brief Physics policy for periodic linear elastic homogenization. + * + * @tparam Element Element type (e.g. Quad4). + */ + template + struct LinearElasticPolicy { + using Kernel = fem::mechanical::LinearElasticKernel; + using DofTraits = fem::mechanical::LinearElasticDofTraits; + using Material = material::LinearElasticMaterial; + using MaterialTensor = typename Material::MaterialTensor; + + /// @brief Spatial dimension (2 or 3). + static constexpr int Dim = Element::Dim; + + /** + * @brief Number of macroscopic strain load cases. + * + * The load cases are ordered in Voigt notation: + * + * - 2D: ε̄₁₁, ε̄₂₂, ε̄₁₂. + * + * - 3D: ε̄₁₁, ε̄₂₂, ε̄₃₃, ε̄₁₂, ε̄₁₃, ε̄₂₃. + */ + static constexpr int NumLoadCases = Material::VoigtSize; + + /// @brief Dof-major matrix type storing one global field per load case. + using DofFieldMatrix = Eigen::Matrix; + + /// @brief Nodal field type. + using NodalFieldMatrix = Eigen::Matrix; + + /// @brief List of nodal fields, one per load case. + using NodalFieldList = std::array; + + /** + * @brief Linear elastic homogenization results. + * + * The homogenized stiffness tensor is always returned. + * Nodal displacements are stored only when requested + * through `FieldSave`. + */ + struct Results { + /// @brief Homogenized stiffness tensor. + MaterialTensor CBar; + + /// @brief Total nodal displacements. + NodalFieldList u; + + /// @brief Macroscopic nodal displacements. + NodalFieldList uMacro; + + /// @brief Microscopic nodal displacements. + NodalFieldList uMicro; + }; + + /** + * @brief Macroscopic nodal displacements. + * + * For each prescribed macroscopic strain ε̄, + * the macroscopic displacements are: + * + * ```text + * ū=ε̄x + * ``` + * + * @tparam Grid Grid type (e.g. Quad4Grid). + * + * @param[in] grid Grid. + * + * @returns Macroscopic nodal displacements. + */ + template + static DofFieldMatrix makeMacroscopicFields(const Grid &grid) noexcept { + const std::size_t numNodes = grid.numNodes(); + const std::size_t numDofs = DofTraits::NumNodeDofs * numNodes; + + DofFieldMatrix UBar = DofFieldMatrix::Zero(static_cast(numDofs), NumLoadCases); + + for (std::size_t i = 0; i < numNodes; ++i) { + const auto node = grid.node(i); + + if constexpr (Dim == 2) { + const double x = node(0); + const double y = node(1); + + const int u = static_cast(2 * i); + const int v = static_cast(2 * i + 1); + + // ū⁽¹¹⁾=ε̄⁽¹¹⁾x + UBar(u, 0) = x; + // ū⁽²²⁾=ε̄⁽²²⁾x + UBar(v, 1) = y; + // ū⁽¹²⁾=ε̄⁽¹²⁾x + UBar(u, 2) = 0.5 * y; + UBar(v, 2) = 0.5 * x; + } + else { + const double x = node(0); + const double y = node(1); + const double z = node(2); + + const int u = static_cast(3 * i); + const int v = static_cast(3 * i + 1); + const int w = static_cast(3 * i + 2); + + // ū⁽¹¹⁾=ε̄⁽¹¹⁾x + UBar(u, 0) = x; + // ū⁽²²⁾=ε̄⁽²²⁾x + UBar(v, 1) = y; + // ū⁽³³⁾=ε̄⁽³³⁾x + UBar(w, 2) = z; + // ū⁽¹²⁾=ε̄⁽¹²⁾x + UBar(u, 3) = 0.5 * y; + UBar(v, 3) = 0.5 * x; + // ū⁽¹³⁾=ε̄⁽¹³⁾x + UBar(u, 4) = 0.5 * z; + UBar(w, 4) = 0.5 * x; + // ū⁽²³⁾=ε̄⁽²³⁾x + UBar(v, 5) = 0.5 * z; + UBar(w, 5) = 0.5 * y; + } + } + + return UBar; + } + + /** + * @brief Packages solver outputs into linear elastic results. + * + * @param[in] CBar Homogenized stiffness tensor. + * @param[in] U Total nodal displacements. + * @param[in] UMacro Macroscopic nodal displacements. + * @param[in] UMicro Microscopic nodal displacements. + * @param[in] fields Controls which nodal fields are stored. + * + * @returns Homogenization results. + */ + static Results makeResults(const MaterialTensor &CBar, const DofFieldMatrix &U, const DofFieldMatrix &UMacro, const DofFieldMatrix &UMicro, FieldSave fields) noexcept { + Results results; + results.CBar = CBar; + + if (wants(fields, FieldSave::Total)) { + results.u = makeStoredFields_(U); + } + + if (wants(fields, FieldSave::Macro)) { + results.uMacro = makeStoredFields_(UMacro); + } + + if (wants(fields, FieldSave::Micro)) { + results.uMicro = makeStoredFields_(UMicro); + } + + return results; + } + + private: + /** + * @brief Converts a nodal displacement block matrix into a list of nodal displacements. + * + * @param[in] U Nodal displacement block matrix. + * + * @return List of nodal displacements. + */ + static NodalFieldList makeStoredFields_(const DofFieldMatrix &U) { + const int numNodes = static_cast(U.rows()) / Dim; + NodalFieldList out; + + for (std::size_t i = 0; i < NumLoadCases; ++i) { + const NodalFieldMatrix u = U.col(static_cast(i)).template reshaped(numNodes, Dim); + out[i] = u; + } + + return out; + } + }; + + } // namespace mechanical + + } // namespace solver + +} // namespace monad diff --git a/include/monad/solver/mechanical/linear_elastic_solver.hpp b/include/monad/solver/mechanical/linear_elastic_solver.hpp deleted file mode 100644 index 4a0fef2..0000000 --- a/include/monad/solver/mechanical/linear_elastic_solver.hpp +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "monad/grid/grid_base.hpp" -#include "monad/solver/mechanical/linear_elastic_physics.hpp" -#include "monad/solver/periodic_cell_solver.hpp" -#include "monad/material/mechanical/linear_elastic_material.hpp" - -namespace monad { - - /** - * @brief Periodic unit cell solver for linear elastic problems. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - */ - template - class LinearElasticSolver : public solver::PeriodicCellSolver> { - public: - using Base = solver::PeriodicCellSolver>; - using Base::Base; - }; - - // Template arugment deduction - template - LinearElasticSolver(const GridBase &, const LinearElasticMaterial &) -> LinearElasticSolver; - -} // namespace monad diff --git a/include/monad/solver/multiphysics/linear_piezoelectric_physics.hpp b/include/monad/solver/multiphysics/linear_piezoelectric_physics.hpp deleted file mode 100644 index dc2466d..0000000 --- a/include/monad/solver/multiphysics/linear_piezoelectric_physics.hpp +++ /dev/null @@ -1,217 +0,0 @@ -#pragma once - -#include -#include -#include "monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp" -#include "monad/fem/operator/multiphysics/linear_piezoelectric_matrix_free_operator_traits.hpp" -#include "monad/solver/mechanical/linear_elastic_physics.hpp" -#include "monad/solver/scalar/linear_scalar_diffusive_physics.hpp" -#include "monad/solver/solver_options.hpp" - -namespace monad { - - namespace solver { - - namespace multiphysics { - - /** - * @brief Physics policy for linear piezoelectric homogenization. - * - * @tparam Element Element class (e.g. Quad4). - */ - template - struct LinearPiezoelectricPhysics { - using Kernel = fem::multiphysics::LinearPiezoelectricKernel; - using Material = typename Kernel::Material; - - /// @brief Spatial dimension (2 or 3). - static constexpr int Dim = Element::Dim; - - /** - * @brief Number of macroscopic fields: - * - * - D=2: ε̄₁₁, ε̄₂₂, ε̄₁₂, Ē₁₁, Ē₂₂. - * - * - D=3: ε̄₁₁, ε̄₂₂, ε̄₃₃, ε̄₁₂, ε̄₁₃, ε̄₂₃, Ē₁₁, Ē₂₂, Ē₃₃. - */ - static constexpr int NumMacroFields = Material::VoigtSize + Dim; - - using OperatorTraits = fem::multiphysics::LinearPiezoelectricMatrixFreeOperatorTraits; - - using MechanicalPhysics = solver::mechanical::LinearElasticPhysics; - using ElectricalPhysics = solver::scalar::LinearScalarDiffusivePhysics; - - /// @brief Global electromechanical field matrix type. - using FieldMatrix = Eigen::Matrix; - - /// @brief Homogenized coupled constitutive operator type. - using MaterialTensor = typename Material::MaterialTensor; - - /** - * @brief Results from linear piezoelectric homogenization. - * - * @note Displacement fields are stored in arrays - * ordered by the prescribed macroscopic strain - * loading directions: - * - * - D=2: ε̄₁₁, ε̄₂₂, ε̄₁₂, Ē₁₁, Ē₂₂. - * - * - D=3: ε̄₁₁, ε̄₂₂, ε̄₃₃, ε̄₁₂, ε̄₁₃, ε̄₂₃, Ē₁₁, Ē₂₂, Ē₃₃. - * - * Each array entry corresponds to one independent macroscopic loading case. - */ - struct Results { - using MechanicalNodalField = Eigen::Matrix; - using ElectricalNodalField = Eigen::VectorXd; - - using LinearElasticMaterialTensor = typename MechanicalPhysics::Material::MaterialTensor; - using LinearDielectricMaterialTensor = typename ElectricalPhysics::Material::MaterialTensor; - using CouplingTensor = typename Material::CouplingTensor; - - /// @brief Homogenized stiffness tensor c̄. - LinearElasticMaterialTensor cBar; - - /// @brief Homogenized permittivity tensor ε̄. - LinearDielectricMaterialTensor epsilonBar; - - /// @brief Homogenized piezoelectric coupling tensor d̄. - CouplingTensor dBar; - - /// @brief Total nodal displacement fields u=ū+ũ. - std::array u; - - /// @brief Macroscopic nodal displacement fields ū. - std::array uMacro; - - /// @brief Microscopic nodal displacement fields ũ. - std::array uMicro; - - /// @brief Total nodal electric potential fields φ=φ̄+φ̃. - std::array phi; - - /// @brief Macroscopic nodal electric potential fields φ̄. - std::array phiMacro; - - /// @brief Microscopic nodal electric potential fields φ̃. - std::array phiMicro; - }; - - /** - * @brief Macroscopic electromechanical fields. - * - * The macroscopic electromechanical fields X̄ are: - * - * ```text - * ⎡Ū 0⎤ - * ⎣0 φ̄⎦ - * ``` - * - * - Ū are the displacements resulting from the macroscopic strains ε̄. - * - φ̄ are the electric potentials resulting from macroscopic electric fields Ē. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * - * @param[in] grid Periodic unit cell grid. - * - * @returns Macroscopic electromechanical fields. - */ - template - static FieldMatrix macroscopicField(const GridBase &grid) { - const std::size_t numNodes = grid.numNodes(); - const std::size_t numDofs = OperatorTraits::NumNodeDofs * numNodes; - - FieldMatrix X = FieldMatrix::Zero(static_cast(numDofs), NumMacroFields); - - // Mechanical block - const auto U = MechanicalPhysics::macroscopicField(grid); - X.topLeftCorner(U.rows(), MechanicalPhysics::NumMacroFields) = U; - - // Electrical block - const auto Phi = ElectricalPhysics::macroscopicField(grid); - X.bottomRightCorner(Phi.rows(), ElectricalPhysics::NumMacroFields) = Phi; - - return X; - } - - /** - * @brief Constructs linear piezoelectric homogenization results. - * - * @param[in] opBar Homogenized coupled constitutive operator. - * @param[in] X Total nodal fields. - * @param[in] XMacro Macroscopic nodal fields. - * @param[in] XMicro Microscopic nodal fields. - * @param[in] fields Controls which nodal fields are stored in the solver results. - * - * @returns Linear piezoelectric homogenization results. - */ - static Results makeResults(const MaterialTensor &opBar, const FieldMatrix &X, const FieldMatrix &XMacro, const FieldMatrix &XMicro, FieldSave fields) noexcept { - using MechanicalNodalField = typename Results::MechanicalNodalField; - using ElectricalNodalField = typename Results::ElectricalNodalField; - - Results results; - - results.cBar = opBar.topLeftCorner(Material::VoigtSize, Material::VoigtSize); - results.epsilonBar = -opBar.bottomRightCorner(Dim, Dim); - results.dBar = -opBar.bottomLeftCorner(Dim, Material::VoigtSize); - - const auto numNodes = X.rows() / OperatorTraits::NumNodeDofs; - const auto numMechanicalDofs = numNodes * OperatorTraits::MechanicalTraits::NumNodeDofs; - const auto numElectricalDofs = numNodes * OperatorTraits::ElectricalTraits::NumNodeDofs; - - if (wants(fields, FieldSave::Total)) { - const auto U = X.topRows(numMechanicalDofs); - const auto Phi = X.bottomRows(numElectricalDofs); - - std::array tempU; - std::array tempPhi; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - tempU[i] = U.col(static_cast(i)).template reshaped(numNodes, Dim); - tempPhi[i] = Phi.col(static_cast(i)); - } - - results.u = tempU; - results.phi = tempPhi; - } - - if (wants(fields, FieldSave::Macro)) { - const auto UMacro = XMacro.topRows(numMechanicalDofs); - const auto PhiMacro = XMacro.bottomRows(numElectricalDofs); - - std::array tempU; - std::array tempPhi; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - tempU[i] = UMacro.col(static_cast(i)).template reshaped(numNodes, Dim); - tempPhi[i] = PhiMacro.col(static_cast(i)); - } - - results.uMacro = tempU; - results.phiMacro = tempPhi; - } - - if (wants(fields, FieldSave::Micro)) { - const auto UMicro = XMicro.topRows(numMechanicalDofs); - const auto PhiMicro = XMicro.bottomRows(numElectricalDofs); - - std::array tempU; - std::array tempPhi; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - tempU[i] = UMicro.col(static_cast(i)).template reshaped(numNodes, Dim); - tempPhi[i] = PhiMicro.col(static_cast(i)); - } - - results.uMicro = tempU; - results.phiMicro = tempPhi; - } - - return results; - } - }; - - } // namespace multiphysics - - } // namespace solver - -} // namespace monad diff --git a/include/monad/solver/multiphysics/linear_piezoelectric_policy.hpp b/include/monad/solver/multiphysics/linear_piezoelectric_policy.hpp new file mode 100644 index 0000000..b473256 --- /dev/null +++ b/include/monad/solver/multiphysics/linear_piezoelectric_policy.hpp @@ -0,0 +1,223 @@ +#pragma once + +#include +#include +#include +#include +#include "monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp" +#include "monad/fem/operator/multiphysics/linear_piezoelectric_dof_traits.hpp" +#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" +#include "monad/solver/mechanical/linear_elastic_policy.hpp" +#include "monad/solver/scalar/linear_scalar_diffusive_policy.hpp" +#include "monad/solver/solver_options.hpp" + +namespace monad { + + namespace solver { + + namespace multiphysics { + + /** + * @brief Physics policy for periodic linear piezoelectric homogenization. + * + * @tparam Element Element type (e.g. Quad4). + */ + template + struct LinearPiezoelectricPolicy { + using Kernel = fem::multiphysics::LinearPiezoelectricKernel; + using DofTraits = fem::multiphysics::LinearPiezoelectricDofTraits; + using Material = material::LinearPiezoelectricMaterial; + using MaterialTensor = typename Material::MaterialTensor; + using StiffnessTensor = typename Material::StiffnessTensor; + using PermittivityTensor = typename Material::PermittivityTensor; + using CouplingTensor = typename Material::CouplingTensor; + using MechanicalPolicy = solver::mechanical::LinearElasticPolicy; + using ElectricalPolicy = solver::scalar::LinearScalarDiffusivePolicy; + + /// @brief Spatial dimension (2 or 3). + static constexpr int Dim = Element::Dim; + + /** + * @brief Number of macroscopic electromechanical load cases. + * + * The load cases are ordered as mechanical strain cases in + * Voigt order followed by electrical field cases in Cartesian + * component order: + * + * - 2D: S̄₁₁, S̄₂₂, S̄₁₂, Ē₁₁, Ē₂₂. + * + * - 3D: S̄₁₁, S̄₂₂, S̄₃₃, S̄₁₂, S̄₁₃, S̄₂₃, Ē₁₁, Ē₂₂, Ē₃₃. + */ + static constexpr int NumLoadCases = Material::VoigtSize + Dim; + + /// @brief Dof-major matrix type storing one global field per load case. + using DofFieldMatrix = Eigen::Matrix; + + /// @brief Nodal mechanical field type. + using NodalFieldMatrix = Eigen::Matrix; + + /// @brief Nodal electrical field type. + using NodalFieldVector = Eigen::Vector; + + /// @brief List of nodal mechanical fields, one per load case. + using MechanicalNodalFieldList = std::array; + + /// @brief List of nodal electrical fields, one per load case. + using ElectricalNodalFieldList = std::array; + + /** + * @brief Linear piezoelectric homogenization results. + * + * The homogenized material tensors are always returned. + * Nodal fields are stored only when requested + * through `FieldSave`. + */ + struct Results { + /// @brief Homogenized coupled constitutive operator. + MaterialTensor opBar; + + /// @brief Homogenized stiffness tensor. + StiffnessTensor cBar; + + /// @brief Homogenized permittivity tensor. + PermittivityTensor epsilonBar; + + /// @brief Homogenized piezoelectric coupling tensor. + CouplingTensor dBar; + + /// @brief Total nodal displacements. + MechanicalNodalFieldList u; + + /// @brief Macroscopic nodal displacements. + MechanicalNodalFieldList uMacro; + + /// @brief Microscopic nodal displacements. + MechanicalNodalFieldList uMicro; + + /// @brief Total nodal electric potentials. + ElectricalNodalFieldList phi; + + /// @brief Macroscopic nodal electric potentials. + ElectricalNodalFieldList phiMacro; + + /// @brief Microscopic nodal electric potentials. + ElectricalNodalFieldList phiMicro; + }; + + /** + * @brief Macroscopic electromechanical fields. + * + * The macroscopic field is assembled blockwise from: + * + * - Macroscopic displacements for unit macroscopic strains + * + * - Macroscopic electric potentials for unit macroscopic electric fields + * + * ```text + * ⎡Ū 0⎤ + * ⎣0 Φ̄⎦ + * ``` + * + * @tparam Grid Grid type (e.g. Quad4Grid). + * + * @param[in] grid Grid. + * + * @returns Macroscopic electromechanical fields. + */ + template + static DofFieldMatrix makeMacroscopicFields(const Grid &grid) noexcept { + const std::size_t numNodes = grid.numNodes(); + const std::size_t numDofs = DofTraits::NumNodeDofs * numNodes; + + DofFieldMatrix XBar = DofFieldMatrix::Zero(static_cast(numDofs), NumLoadCases); + + // Mechanical block + const auto UBar = MechanicalPolicy::makeMacroscopicFields(grid); + XBar.topLeftCorner(UBar.rows(), MechanicalPolicy::NumLoadCases) = UBar; + + // Electrical block + const auto PhiBar = ElectricalPolicy::makeMacroscopicFields(grid); + XBar.bottomRightCorner(PhiBar.rows(), ElectricalPolicy::NumLoadCases) = PhiBar; + + return XBar; + } + + /** + * @brief Packages solver outputs into linear elastic results. + * + * @param[in] opBar Homogenized coupled constitutive operator. + * @param[in] X Total nodal fields. + * @param[in] XMacro Macroscopic nodal fields. + * @param[in] XMicro Microscopic nodal fields. + * @param[in] fields Controls which nodal fields are stored. + * + * @returns Homogenization results. + */ + static Results makeResults(const MaterialTensor &opBar, const DofFieldMatrix &X, const DofFieldMatrix &XMacro, const DofFieldMatrix &XMicro, FieldSave fields) noexcept { + Results results; + results.opBar = opBar; + results.cBar = opBar.topLeftCorner(Material::VoigtSize, Material::VoigtSize); + results.epsilonBar = -opBar.bottomRightCorner(Dim, Dim); + results.dBar = -opBar.bottomLeftCorner(Dim, Material::VoigtSize); + + if (wants(fields, FieldSave::Total)) { + auto [u, phi] = makeStoredFields_(X); + + results.u = u; + results.phi = phi; + } + + if (wants(fields, FieldSave::Macro)) { + auto [uMacro, phiMacro] = makeStoredFields_(XMacro); + + results.uMacro = uMacro; + results.phiMacro = phiMacro; + } + + if (wants(fields, FieldSave::Micro)) { + auto [uMicro, phiMicro] = makeStoredFields_(XMicro); + + results.uMicro = uMicro; + results.phiMicro = phiMicro; + } + + return results; + } + + private: + /** + * @brief Splits a nodal coupled field block matrix into lists of nodal displacements and + * and electric potentials. + * + * @param[in] X Nodal coupled field block matrix. + * + * @return Pair of lists for nodal displacements and nodal electric potentials. + */ + static std::pair makeStoredFields_(const DofFieldMatrix &X) { + const int numNodes = static_cast(X.rows()) / (Dim + 1); + const int numMechanicalDofs = numNodes * Dim; + const int numElectricalDofs = numNodes; + + const auto U = X.topRows(numMechanicalDofs); + const auto Phi = X.bottomRows(numElectricalDofs); + + MechanicalNodalFieldList outMechanical; + ElectricalNodalFieldList outElectrical; + + for (std::size_t i = 0; i < NumLoadCases; ++i) { + const NodalFieldMatrix u = U.col(static_cast(i)).template reshaped(numNodes, Dim); + const NodalFieldVector phi = Phi.col(static_cast(i)); + + outMechanical[i] = u; + outElectrical[i] = phi; + } + + return {outMechanical, outElectrical}; + } + }; + + } // namespace multiphysics + + } // namespace solver + +} // namespace monad diff --git a/include/monad/solver/multiphysics/linear_piezoelectric_solver.hpp b/include/monad/solver/multiphysics/linear_piezoelectric_solver.hpp deleted file mode 100644 index 9127d87..0000000 --- a/include/monad/solver/multiphysics/linear_piezoelectric_solver.hpp +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include "monad/grid/grid_base.hpp" -#include "monad/solver/multiphysics/linear_piezoelectric_physics.hpp" -#include "monad/solver/periodic_cell_solver.hpp" -#include "monad/material/mechanical/linear_elastic_material.hpp" -#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" -#include "monad/material/transport/linear_transport_material.hpp" - -namespace monad { - - template - class LinearPiezoelectricSolver : public solver::PeriodicCellSolver> { - public: - using Base = solver::PeriodicCellSolver>; - using Base::Base; - }; - - // Template arugment deduction - template - LinearPiezoelectricSolver(const GridBase &, const LinearPiezoelectricMaterial &) -> LinearPiezoelectricSolver; - -} // namespace monad diff --git a/include/monad/solver/periodic_cell_solver.hpp b/include/monad/solver/periodic_cell_solver.hpp index abb732d..1057c81 100644 --- a/include/monad/solver/periodic_cell_solver.hpp +++ b/include/monad/solver/periodic_cell_solver.hpp @@ -3,36 +3,38 @@ #include #include #include +#include +#include #include #include -#include "monad/detail/constants.hpp" +#include "monad/field/density_field.hpp" +#include "monad/fem/operator/matrix_free_operator.hpp" #include "monad/detail/eigen_utils.hpp" -#include "monad/grid/grid_base.hpp" #include "monad/solver/solver_options.hpp" -#include "monad/fem/operator/matrix_free_operator.hpp" -#include "monad/fem/operator/jacobi_preconditioner.hpp" +#include "monad/solver/jacobi_preconditioner.hpp" namespace monad { namespace solver { /** - * @brief Periodic unit cell solver for linear physics problems. - * - * This class provides a dimension- and physics-agnostic implementation of a - * periodic unit cell solver using a matrix-free finite element operator. + * @brief Stateless periodic-cell solver for structured linear homogenization problems. * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * @tparam Physics Physics class (e.g. LinearElasticPhysics2d). + * @tparam Grid Grid type (e.g. Quad4Grid). + * @tparam Policy Physics policy type (e.g. LinearElasticPolicy). */ - template + template class PeriodicCellSolver { public: - using Material = typename Physics::Material; - using Kernel = typename Physics::Kernel; - using OperatorTraits = typename Physics::OperatorTraits; - using Operator = fem::MatrixFreeOperator; + using Material = typename Policy::Material; + using Kernel = typename Policy::Kernel; + using DofTraits = typename Policy::DofTraits; + using DensityField = field::DensityField; + using Operator = fem::MatrixFreeOperator; + using DofMap = fem::DofMap; + using Preconditioner = JacobiPreconditioner; + + using MaterialTensor = typename Material::MaterialTensor; /// @brief Element stiffness matrix type. using ElementStiffnessMatrix = typename Kernel::StiffnessMatrix; @@ -41,126 +43,113 @@ namespace monad { using ElementFieldMatrix = typename Kernel::FieldMatrix; /// @brief Global field matrix type. - using FieldMatrix = typename Physics::FieldMatrix; - - /// @brief Homogenized material tensor type. - using MaterialTensor = typename Material::MaterialTensor; + using FieldMatrix = typename Policy::DofFieldMatrix; /// @brief Homogenized results type. - using Results = typename Physics::Results; - - /** - * @brief Constructs a periodic unit cell solver. - * - * @param[in] grid Periodic unit cell grid. - * @param[in] material Base material model. - */ - PeriodicCellSolver(const GridBase &grid, const Material &material) - : grid_(grid), material_(material) { - const auto nodes = grid_.elementNodes(0); - - elementKReference_ = Kernel::lhs(material_, nodes); - elementFReference_ = Kernel::rhs(material_, nodes); - } - - /// @brief Periodic unit cell grid_. - const GridBase &grid() const noexcept { - return grid_; - } - - /// @brief Base material model. - const Material &material() const noexcept { - return material_; - } + using Results = typename Policy::Results; /** - * @brief Solves the periodic unit cell problem and computes the homogenized material tensor. - * - * The solver computes the total field X decomposed as: - * - * X=X̄+X̃ - * - * - X̄ is the macroscopic field prescribed via uniform macroscopic loading. - * - * - X̃ is the microscopic field enforcing equilibrium under periodic boundary conditions. - * - * The homogenized material tensor M̄ is then computed via the physics-specific - * homogenization functional: - * - * M̄=1/V∑ₑXₑᵀKₑXₑ + * @brief Solves the periodic cell problem. * + * @param[in] grid Grid. + * @param[in] densityField Per-element density field defined on `grid`. + * @param[in] material Base material. * @param[in] options Solver options. * * @returns Homogenized material tensor. * - * @throws std::runtime_error if the linear solver fails to converge. + * @throws std::invalid_argument if `grid` and `densityField` do not + * have the same resolution. + * @throws std::runtime_error if the iterative linear solver fails. */ - Results solve(const SolverOptions &options = SolverOptions::defaults()) const { - const FieldMatrix XMacro = Physics::macroscopicField(grid_); - const FieldMatrix XMicro = microscopicField_(options); - const FieldMatrix X = XMacro + XMicro; + Results solve(const Grid &grid, const DensityField &densityField, const Material &material, const SolverOptions &options = {}) const { + if (grid.resolution() != densityField.resolution()) { + throw std::invalid_argument("Grid resolution must match density field resolution."); + } - const MaterialTensor MBar = homogenize_(X); + const auto referenceNodes = grid.elementNodes(0); + const ElementStiffnessMatrix elementKReference = Kernel::lhs(material, referenceNodes); + const ElementFieldMatrix elementFReference = Kernel::rhs(material, referenceNodes); + + const Operator K(grid, densityField, elementKReference); + const DofMap dofMap = K.dofMap(); + + if (options.verbose) { + std::cout << "[PeriodicCellSolver]\n" + << "\t[Problem]\n" + << "\t\tElements: " << grid.numElements() << std::endl + << "\t\tNodes: " << grid.numNodes() << std::endl + << "\t\tPeriodic nodes: " << grid.numPeriodicNodes() << std::endl + << "\t\tGlobal dofs: " << grid.numNodes() * DofTraits::NumNodeDofs << std::endl + << "\t\tReduced periodic dofs: " << dofMap.numReducedDofs() << std::endl + << "\t\tLoad cases: " << Policy::NumLoadCases << std::endl + << "\t[Solver]\n" + << "\t\tIterations: " << options.maxIterations << std::endl + << "\t\tTolerance: " << options.tolerance << std::endl; + } - return Physics::makeResults(MBar, X, XMacro, XMicro, options.fields); - } + int iterations = 0; + double error = 0.0; - /// @brief Equality comparison. - bool operator==(const PeriodicCellSolver &other) const noexcept { - return material_ == other.material_ && grid_ == other.grid_; - } + const FieldMatrix reducedF = buildReducedRhs_(grid, densityField, dofMap, elementFReference); - /// @brief Inequality comparison. - bool operator!=(const PeriodicCellSolver &other) const noexcept { - return !(*this == other); - } + const auto start = std::chrono::steady_clock::now(); + const FieldMatrix reducedWMicro = solveReducedSystem_(K, reducedF, options, iterations, error); + const auto stop = std::chrono::steady_clock::now(); + auto duration = std::chrono::duration_cast(stop - start); - private: - /// @brief Periodic unit cell grid_. - GridBase grid_; + if (options.verbose) { + std::cout << "\t[Results]\n" + << "\t\tIterations: " << iterations << std::endl + << "\t\tError: " << error << std::endl + << "\t\tSolve time (ms): " << duration.count() << std::endl; + } - /// @brief Base material model. - Material material_; + const FieldMatrix WMicro = expandReducedLhs_(grid, dofMap, reducedWMicro); + const FieldMatrix WMacro = Policy::makeMacroscopicFields(grid); + const FieldMatrix W = WMacro + WMicro; - /// @brief Reference element stiffness matrix for unit density. - ElementStiffnessMatrix elementKReference_; + const MaterialTensor ABar = homogenize_(grid, densityField, elementKReference, W); - /// @brief Reference element source matrix for unit density. - ElementFieldMatrix elementFReference_; + return Policy::makeResults(ABar, W, WMacro, WMicro, options.fields); + } + private: /** - * @brief Builds the reduced right-hand side source matrix. + * @brief Builds the reduced source matrix for the microscopic solve. * - * Constructs the source matrix F in the reduced linear system + * Constructs the right-hand side matrix F in * - * KX̃=F + * ```text + * KW̃=F + * ``` * - * where K acts only on a reduced set of unconstrained periodic dofs. + * on the reduced periodic dof space. * - * @param[in] K Matrix-free stiffness operator. + * @param[in] grid Grid. + * @param[in] densityField Per-element density field defined on `grid`. + * @param[in] dofMap Reduced periodic dof map. + * @param[in] elementFReference Reference element source matrix for unit density. * - * @returns Reduced right-hand side source matrix. + * @returns Reduced periodic source matrix. */ - FieldMatrix buildReducedRhs_(const Operator &K) const noexcept { - const std::size_t numPeriodicNodes = grid_.numPeriodicNodes(); - const std::size_t numPeriodicDofs = OperatorTraits::NumNodeDofs * numPeriodicNodes; - const std::size_t numReducedDofs = numPeriodicDofs - OperatorTraits::NumFixedDofs; - - FieldMatrix reducedF = FieldMatrix::Zero(static_cast(numReducedDofs), static_cast(Physics::NumMacroFields)); + FieldMatrix buildReducedRhs_(const Grid &grid, const DensityField &densityField, const DofMap &dofMap, const ElementFieldMatrix &elementFReference) const noexcept { + const int numReducedDofs = static_cast(dofMap.numReducedDofs()); + const int numLoadCases = static_cast(Policy::NumLoadCases); - const auto &elementDofs = K.elementDofs(); + FieldMatrix reducedF = FieldMatrix::Zero(numReducedDofs, numLoadCases); - for (std::size_t i = 0; i < grid_.numElements(); ++i) { - const double density = grid_.getDensity(i); - const ElementFieldMatrix elementF = density * elementFReference_; + for (std::size_t i = 0; i < grid.numElements(); ++i) { + const auto &reducedDofs = dofMap.reducedDofs(i); + const double density = densityField.getDensity(i); + const ElementFieldMatrix elementF = density * elementFReference; - const auto &dofs = elementDofs[i]; - - for (std::size_t j = 0; j < dofs.size(); ++j) { - const int dof = dofs[j]; + for (std::size_t j = 0; j < reducedDofs.size(); ++j) { + const int reducedDof = reducedDofs[j]; + const int localReducedDof = static_cast(j); - if (dof >= 0) { - reducedF(dof, Eigen::indexing::all) += elementF.row(static_cast(j)); + if (reducedDof >= 0) { + reducedF.row(reducedDof) += elementF.row(localReducedDof); } } } @@ -169,136 +158,154 @@ namespace monad { } /** - * @brief Builds the expanded left-hand side microscopic field. + * @brief Solves the reduced microscopic system. * - * Expands the microscopic field matrix X̃ in the reduced linear system + * Solves * - * KX̃=F + * ```text + * KW̃=F + * ``` * - * from a reduced set of unconstrained periodic dofs to global dofs. + * on the reduced periodic dof space. * - * @param[in] reducedX Reduced microscopic field. + * @param[in] K Matrix-free operator for the reduced periodic stiffness matrix. + * @param[in] reducedF Reduced periodic source matrix. + * @param[in] options Solver options. + * @param[out] iterations Number of iterations used by the solver. + * @param[out] error Final relative residual reported by the solver. + * + * @returns Reduced microscopic field matrix. * - * @returns Expanded left-hand side microscopic field. + * @throws std::runtime_error if the iterative solver fails. */ - FieldMatrix buildExpandedLhs_(const FieldMatrix &reducedX) const noexcept { - // Expand reduced to periodic - const std::size_t numPeriodicNodes = grid_.numPeriodicNodes(); - const std::size_t numPeriodicDofs = OperatorTraits::NumNodeDofs * numPeriodicNodes; - const std::size_t numReducedDofs = numPeriodicDofs - OperatorTraits::NumFixedDofs; - - FieldMatrix periodicX = FieldMatrix::Zero(static_cast(numPeriodicDofs), static_cast(Physics::NumMacroFields)); - - for (std::size_t i = 0; i < numReducedDofs; ++i) { - const std::size_t iExpanded = OperatorTraits::expandedDof(i, numPeriodicNodes); - periodicX.row(static_cast(iExpanded)) = reducedX.row(static_cast(i)); - } - - // Expand periodic to global - const std::size_t numNodes = grid_.numNodes(); - const std::size_t numDofs = OperatorTraits::NumNodeDofs * numNodes; + FieldMatrix solveReducedSystem_(const Operator &K, const FieldMatrix &reducedF, const SolverOptions &options, int &iterations, double &error) const { + Eigen::ConjugateGradient cg; - FieldMatrix X = FieldMatrix::Zero(static_cast(numDofs), static_cast(Physics::NumMacroFields)); + cg.setMaxIterations(options.maxIterations); + cg.setTolerance(options.tolerance); + cg.compute(K); - for (std::size_t i = 0; i < grid_.numElements(); ++i) { - const auto element = grid_.element(i); - const auto periodicElement = grid_.periodicElement(i); + FieldMatrix reducedXMicro = cg.solve(reducedF); - const auto dofs = OperatorTraits::dofs(element, numNodes); - const auto periodicDofs = OperatorTraits::dofs(periodicElement, numPeriodicNodes); + iterations = static_cast(cg.iterations()); + error = cg.error(); - for (std::size_t j = 0; j < dofs.size(); ++j) { - const std::size_t dof = dofs[j]; - const std::size_t periodicDof = periodicDofs[j]; + if (cg.info() != Eigen::Success) { + std::string message = "Iterative solver failed"; - X.row(static_cast(dof)) = periodicX.row(static_cast(periodicDof)); + if (cg.info() == Eigen::NoConvergence) { + message += ": No convergence before the iteration limit."; } + else if (cg.info() == Eigen::NumericalIssue) { + message += ": Numerical issue encountered during the solve."; + } + + throw std::runtime_error(message); } - return X; + return reducedXMicro; } /** - * @brief Microscopic correction field. - * - * Solves the reduced linear system: + * @brief Expands the reduced periodic microscopic field matrix to the global dof space. * - * KX̃=F + * Expands the left-hand side matrix W̃ in * - * using a matrix-free solver then expands - * the solution to global dofs. + * ```text + * KW̃=F + * ``` * - * @param[in] options Solver options. - * - * @returns Microscopic correction field. + * to the global dof space. * - * @throws std::runtime_error if the solver fails to converge. + * @param[in] grid Grid. + * @param[in] dofMap Reduced periodic dof map. + * @param[in] reducedX Reduced microscopic field matrix. * - * @note If the global stiffness matric is symmetric, conjugate gradient - * is used, otherwise biconjugate gradient stabilized (BiCSSTAB) is used. + * @returns Global microscopic field matrix. */ - FieldMatrix microscopicField_(const SolverOptions &options) const { - const Operator K(grid_, elementKReference_); - const FieldMatrix reducedF = buildReducedRhs_(K); + FieldMatrix expandReducedLhs_(const Grid &grid, const DofMap &dofMap, const FieldMatrix &reducedX) const noexcept { + // Expand reduced periodic dofs to periodic dofs + const std::size_t numPeriodicNodes = grid.numPeriodicNodes(); + const std::size_t numPeriodicDofs = DofTraits::NumNodeDofs * numPeriodicNodes; - using preconditioner = fem::JacobiPreconditioner; + FieldMatrix periodicX = FieldMatrix::Zero(static_cast(numPeriodicDofs), static_cast(Policy::NumLoadCases)); - Eigen::ConjugateGradient cg; - cg.setMaxIterations(options.maxIterations); - cg.setTolerance(options.tolerance); - cg.compute(K); + for (std::size_t i = 0; i < dofMap.numReducedDofs(); ++i) { + const std::size_t reducedDof = i; + const std::size_t periodicDof = dofMap.reducedToPeriodicDof(i); - FieldMatrix reducedX = cg.solve(reducedF); + periodicX.row(static_cast(periodicDof)) = reducedX.row(static_cast(reducedDof)); + } - if (cg.info() != Eigen::Success) { - std::string error_message = "Solver failed to converge."; - if (cg.info() == Eigen::NoConvergence) { - error_message += " No Convergence - Max iterations reached or tolerance not met."; - } - else if (cg.info() == Eigen::NumericalIssue) { - error_message += " Numerical Issue - Solver encountered stability problems."; - } + // Expand periodic dofs to global dofs + const std::size_t numNodes = grid.numNodes(); + const std::size_t numDofs = DofTraits::NumNodeDofs * numNodes; + + FieldMatrix X = FieldMatrix::Zero(static_cast(numDofs), static_cast(Policy::NumLoadCases)); + + for (std::size_t i = 0; i < grid.numElements(); ++i) { + const auto element = grid.element(i); + const auto periodicElement = grid.periodicElement(i); - throw std::runtime_error(error_message); + const auto globalDofs = DofTraits::elementDofs(element, numNodes); + const auto periodicDofs = DofTraits::elementDofs(periodicElement, numPeriodicNodes); + + for (std::size_t j = 0; j < globalDofs.size(); ++j) { + const std::size_t globalDof = globalDofs[j]; + const std::size_t periodicDof = periodicDofs[j]; + + X.row(static_cast(globalDof)) = periodicX.row(static_cast(periodicDof)); + } } - return buildExpandedLhs_(reducedX); + return X; } /** * @brief Homogenized material tensor. * - * The homogenized material tensor M̄ is obtained via the Hill-Mandel lemma, + * Using the total field matrix W, the homogenized material tensor Ā + * is computed via the Hill-Mandel lemma: * - * M̄=1/V∑ₑXₑᵀKₑXₑ + * ```text + * Ā=1/V∑ₑWₑᵀKₑWₑ + * ``` * - * where the total field X is the sum of the macroscopic and microscopic components, X=X̄+X̃. - * - * @param[in] X Nodal total field. + * @param[in] grid Grid. + * @param[in] densityField Per-element density field defined on `grid`. + * @param[in] elementKReference Reference element stiffness matrix for unit density. + * @param[in] W Global total field matrix. * * @returns Homogenized material tensor. */ - MaterialTensor homogenize_(const FieldMatrix &X) const { - MaterialTensor MBar = MaterialTensor::Zero(); + MaterialTensor homogenize_(const Grid &grid, const DensityField &densityField, const ElementStiffnessMatrix &elementKReference, const FieldMatrix &W) const { + MaterialTensor ABar = MaterialTensor::Zero(); + + const std::size_t numNodes = grid.numNodes(); - const std::size_t numNodes = grid_.numNodes(); + for (std::size_t i = 0; i < grid.numElements(); ++i) { + const double density = densityField.getDensity(i); + const auto elementK = density * elementKReference; + const auto element = grid.element(i); + const auto dofs = DofTraits::elementDofs(element, numNodes); - for (std::size_t i = 0; i < grid_.numElements(); ++i) { - const double density = grid_.getDensity(i); - const auto elementK = density * elementKReference_; - const auto element = grid_.element(i); - const auto dofs = OperatorTraits::dofs(element, numNodes); - const auto elementX = X(detail::arrayToEigen(dofs), Eigen::indexing::all); + ElementFieldMatrix elementW; + + for (std::size_t j = 0; j < dofs.size(); ++j) { + const std::size_t dof = dofs[j]; + const std::size_t localDof = j; + elementW.row(static_cast(localDof)) = W.row(static_cast(dof)); + } - MBar.noalias() += elementX.transpose() * elementK * elementX; + ABar.noalias() += elementW.transpose() * elementK * elementW; } - MBar /= grid_.measure(); + ABar /= grid.measure(); - // Remove numerical artifacts - detail::symmetrize(MBar); + // Remove numerical asymmetry + detail::symmetrize(ABar); - return MBar; + return ABar; } }; diff --git a/include/monad/solver/scalar/linear_scalar_diffusive_physics.hpp b/include/monad/solver/scalar/linear_scalar_diffusive_physics.hpp deleted file mode 100644 index 46bf66e..0000000 --- a/include/monad/solver/scalar/linear_scalar_diffusive_physics.hpp +++ /dev/null @@ -1,156 +0,0 @@ -#pragma once - -#include -#include -#include "monad/fem/kernel/scalar/linear_scalar_diffusive_kernel.hpp" -#include "monad/fem/operator/scalar/linear_scalar_diffusive_matrix_free_operator_traits.hpp" -#include "monad/solver/solver_options.hpp" - -namespace monad { - - namespace solver { - - namespace scalar { - - /** - * @brief Physics policy for linear scalar diffusive homogenization. - * - * @tparam Element Element class (e.g. Quad4). - * @tparam C Gradient sign convention (GradientConvention::Negative or Positive). - */ - template - struct LinearScalarDiffusivePhysics { - using Kernel = fem::scalar::LinearScalarDiffusiveKernel; - using Material = typename Kernel::Material; - - /** - * @brief Number of macroscopic fields: - * - * - D=2: ∇φ̄₁₁, ∇φ̄₂₂. - * - * - D=3: ∇φ̄₁₁, ∇φ̄₂₂, ∇φ̄₃₃. - */ - static constexpr int NumMacroFields = Element::Dim; - - using OperatorTraits = fem::scalar::LinearScalarDiffusiveMatrixFreeOperatorTraits; - - /// @brief Global field matrix type. - using FieldMatrix = Eigen::Matrix; - - /// @brief Homogenized material tensor type. - using MaterialTensor = typename Material::MaterialTensor; - - /** - * @brief Linear scalar diffusive homogenization results. - * - * @note Scalar potential fields are stored in arrays - * ordered by the prescribed macroscopic scalar field - * gradient loading directions: - * - * - D=2: ∇φ̄₁₁, ∇φ̄₂₂. - * - * - D=3: ∇φ̄₁₁, ∇φ̄₂₂, ∇φ̄₃₃. - * - * Each array entry corresponds to one independent macroscopic loading case. - */ - struct Results { - using NodalField = Eigen::VectorXd; - - /// @brief Homogenized transport tensor K̄. - MaterialTensor KBar; - - /// @brief Total nodal scalar potential fields φ=φ̄+φ̃. - std::array phi; - - /// @brief Macroscopic nodal scalar potential fields φ̄. - std::array phiMacro; - - /// @brief Microscopic nodal scalar potential fields φ̃. - std::array phiMicro; - }; - - /** - * @brief Macroscopic nodal scalar potentials. - * - * The macroscopic scalar potentials φ̄ are the scalar potentials - * resulting from macroscopic scalar potential gradients ∇φ̄: - * - * φ̄=(∇φ̄)·x - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * - * @param[in] grid Periodic unit cell grid. - * - * @returns Macroscopic nodal scalar potentials. - */ - template - static FieldMatrix macroscopicField(const GridBase &grid) { - const std::size_t numNodes = grid.numNodes(); - const std::size_t numDofs = OperatorTraits::NumNodeDofs * numNodes; - - FieldMatrix Phi = FieldMatrix::Zero(static_cast(numDofs), NumMacroFields); - - for (std::size_t i = 0; i < grid.numNodes(); ++i) { - Phi.row(static_cast(i)) = Kernel::GradSign * grid.node(i); - } - - return Phi; - } - - /** - * @brief Constructs linear scalar diffusive homogenization results. - * - * @param[in] KBar Homogenized transport tensor. - * @param[in] Phi Total nodal scalar potential fields. - * @param[in] PhiMacro Macroscopic nodal scalar potential fields. - * @param[in] PhiMicro Microscopic nodal scalar potential fields. - * @param[in] fields Controls which nodal fields are stored in the solver results. - * - * @returns Linear scalar diffusive homogenization results. - */ - static Results makeResults(const MaterialTensor &KBar, const FieldMatrix &Phi, const FieldMatrix &PhiMacro, const FieldMatrix &PhiMicro, FieldSave fields) noexcept { - using NodalField = typename Results::NodalField; - - Results results; - - results.KBar = KBar; - - if (wants(fields, FieldSave::Total)) { - std::array temp; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - temp[i] = Phi.col(static_cast(i)); - } - - results.phi = temp; - } - - if (wants(fields, FieldSave::Macro)) { - std::array temp; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - temp[i] = PhiMacro.col(static_cast(i)); - } - - results.phiMacro = temp; - } - - if (wants(fields, FieldSave::Micro)) { - std::array temp; - - for (std::size_t i = 0; i < NumMacroFields; ++i) { - temp[i] = PhiMicro.col(static_cast(i)); - } - - results.phiMicro = temp; - } - - return results; - } - }; - - } // namespace scalar - - } // namespace solver - -} // namespace monad diff --git a/include/monad/solver/scalar/linear_scalar_diffusive_policy.hpp b/include/monad/solver/scalar/linear_scalar_diffusive_policy.hpp new file mode 100644 index 0000000..5cdfcb6 --- /dev/null +++ b/include/monad/solver/scalar/linear_scalar_diffusive_policy.hpp @@ -0,0 +1,159 @@ +#pragma once + +#include +#include +#include "monad/fem/kernel/scalar/linear_scalar_diffusive_kernel.hpp" +#include "monad/fem/operator/scalar/linear_scalar_diffusive_dof_traits.hpp" +#include "monad/material/transport/linear_transport_material.hpp" +#include "monad/solver/solver_options.hpp" + +namespace monad { + + namespace solver { + + namespace scalar { + + /** + * @brief Physics policy for periodic linear scalar diffusive homogenization. + * + * @tparam Element Element type (e.g. Quad4). + * @tparam C Gradient sign convention (GradientConvention::Negative or Positive). + */ + template + struct LinearScalarDiffusivePolicy { + using Kernel = fem::scalar::LinearScalarDiffusiveKernel; + using DofTraits = fem::scalar::LinearScalarDiffusiveDofTraits; + using Material = material::LinearTransportMaterial; + using MaterialTensor = typename Material::MaterialTensor; + + /// @brief Spatial dimension (2 or 3). + static constexpr int Dim = Element::Dim; + + /** + * @brief Number of macroscopic scalar potential gradient load cases. + * + * The load cases are ordered in Cartesian component order: + * + * - 2D: ∇φ̄₁₁, ∇φ̄₂₂. + * + * - 3D: ∇φ̄₁₁, ∇φ̄₂₂, ∇φ̄₃₃. + */ + static constexpr int NumLoadCases = Dim; + + /// @brief Dof-major matrix type storing one global field per load case. + using DofFieldMatrix = Eigen::Matrix; + + /// @brief Nodal field type. + using NodalFieldVector = Eigen::Vector; + + /// @brief List of nodal fields, one per load case. + using NodalFieldList = std::array; + + /** + * @brief Linear scalar diffusive homogenization results. + * + * The homogenized transport tensor is always returned. + * Nodal scalar potentials are stored only when requested + * through `FieldSave`. + * + * Each array entry corresponds to one independent macroscopic loading case. + */ + struct Results { + /// @brief Homogenized transport tensor. + MaterialTensor KBar; + + /// @brief Total nodal scalar potential fields. + NodalFieldList phi; + + /// @brief Macroscopic nodal scalar potential fields. + NodalFieldList phiMacro; + + /// @brief Microscopic nodal scalar potential fields. + NodalFieldList phiMicro; + }; + + /** + * @brief Macroscopic nodal scalar potentials. + * + * For each prescribed macroscopic scalar potential gradient ∇φ̄, + * the macroscopic scalar potentials are: + * + * ```text + * φ̄=(∇φ̄)·x + * ``` + * + * @tparam Grid Grid type (e.g. Quad4Grid). + * + * @param[in] grid Grid. + * + * @returns Macroscopic nodal scalar potentials. + */ + template + static DofFieldMatrix makeMacroscopicFields(const Grid &grid) { + const std::size_t numNodes = grid.numNodes(); + const std::size_t numDofs = DofTraits::NumNodeDofs * numNodes; + + DofFieldMatrix PhiBar = DofFieldMatrix::Zero(static_cast(numDofs), NumLoadCases); + + for (std::size_t i = 0; i < numNodes; ++i) { + PhiBar.row(static_cast(i)) = Kernel::GradSign * grid.node(i); + } + + return PhiBar; + } + + /** + * @brief Packages solver outputs into linear elastic results. + * + * @param[in] KBar Homogenized transport tensor. + * @param[in] Phi Total nodal scalar potentials. + * @param[in] PhiMacro Macroscopic nodal scalar potentials. + * @param[in] PhiMicro Microscopic nodal scalar potentials. + * @param[in] fields Controls which nodal fields are stored. + * + * @returns Homogenization results. + */ + static Results makeResults(const MaterialTensor &KBar, const DofFieldMatrix &Phi, const DofFieldMatrix &PhiMacro, const DofFieldMatrix &PhiMicro, FieldSave fields) noexcept { + Results results; + results.KBar = KBar; + + if (wants(fields, FieldSave::Total)) { + results.phi = makeStoredFields_(Phi); + } + + if (wants(fields, FieldSave::Macro)) { + results.phiMacro = makeStoredFields_(PhiMacro); + } + + if (wants(fields, FieldSave::Micro)) { + results.phiMicro = makeStoredFields_(PhiMicro); + } + + return results; + } + + private: + /** + * @brief Converts a nodal scalar potential block matrix into a list of nodal scalar potentials. + * + * @param[in] Phi Nodal scalar potential block matrix. + * + * @return List of nodal scalar potentials. + */ + static NodalFieldList makeStoredFields_(const DofFieldMatrix &Phi) { + NodalFieldList out; + + for (std::size_t i = 0; i < NumLoadCases; ++i) { + const NodalFieldVector phi = Phi.col(static_cast(i)); + out[i] = phi; + } + + return out; + } + }; + + } // namespace scalar + + } // namespace solver + +} // namespace monad diff --git a/include/monad/solver/scalar/linear_scalar_diffusive_solver.hpp b/include/monad/solver/scalar/linear_scalar_diffusive_solver.hpp deleted file mode 100644 index bd4fe87..0000000 --- a/include/monad/solver/scalar/linear_scalar_diffusive_solver.hpp +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "monad/solver/scalar/linear_scalar_diffusive_physics.hpp" -#include "monad/solver/periodic_cell_solver.hpp" - -namespace monad { - - /** - * @brief Periodic unit cell solver for linear scalar diffusive problems. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - * @tparam C Gradient sign convention (GradientConvention::Negative or Positive). - */ - template - class LinearScalarDiffusiveSolver : public solver::PeriodicCellSolver> { - public: - using Base = solver::PeriodicCellSolver>; - using Base::Base; - }; - -} // namespace monad diff --git a/include/monad/solver/scalar/linear_scalar_diffusive_solver_aliases.hpp b/include/monad/solver/scalar/linear_scalar_diffusive_solver_aliases.hpp deleted file mode 100644 index ae39379..0000000 --- a/include/monad/solver/scalar/linear_scalar_diffusive_solver_aliases.hpp +++ /dev/null @@ -1,111 +0,0 @@ -#pragma once - -#include "monad/grid/grid_base.hpp" -#include "monad/solver/scalar/linear_scalar_diffusive_solver.hpp" -#include "monad/material/transport/linear_transport_material.hpp" - -namespace monad { - - /** - * @brief Periodic unit cell solver for linear dielectric problems. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - */ - template - class LinearDielectricSolver : public LinearScalarDiffusiveSolver { - public: - using Base = LinearScalarDiffusiveSolver; - using Base::Base; - }; - - // Template arugment deduction - template - LinearDielectricSolver(const GridBase &, const LinearTransportMaterial &) -> LinearDielectricSolver; - - /** - * @brief Periodic unit cell solver for linear electrical conductive problems. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - */ - template - class LinearElectricalConductiveSolver : public LinearScalarDiffusiveSolver { - public: - using Base = LinearScalarDiffusiveSolver; - using Base::Base; - }; - - // Template arugment deduction - template - LinearElectricalConductiveSolver(const GridBase &, const LinearTransportMaterial &) -> LinearElectricalConductiveSolver; - - /** - * @brief Periodic unit cell solver for linear magnetic problems. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - */ - template - class LinearMagneticSolver : public LinearScalarDiffusiveSolver { - public: - using Base = LinearScalarDiffusiveSolver; - using Base::Base; - }; - - // Template arugment deduction - template - LinearMagneticSolver(const GridBase &, const LinearTransportMaterial &) -> LinearMagneticSolver; - - /** - * @brief Periodic unit cell solver for linear mass diffusive problems. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - */ - template - class LinearMassDiffusiveSolver : public LinearScalarDiffusiveSolver { - public: - using Base = LinearScalarDiffusiveSolver; - using Base::Base; - }; - - // Template arugment deduction - template - LinearMassDiffusiveSolver(const GridBase &, const LinearTransportMaterial &) -> LinearMassDiffusiveSolver; - - /** - * @brief Periodic unit cell solver for linear porous problems. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - */ - template - class LinearPorousSolver : public LinearScalarDiffusiveSolver { - public: - using Base = LinearScalarDiffusiveSolver; - using Base::Base; - }; - - // Template arugment deduction - template - LinearPorousSolver(const GridBase &, const LinearTransportMaterial &) -> LinearPorousSolver; - - /** - * @brief Periodic unit cell solver for linear thermal conductive problems. - * - * @tparam Grid Grid class (e.g. Quad4Grid). - * @tparam Element Element class (e.g. Quad4). - */ - template - class LinearThermalConductiveSolver : public LinearScalarDiffusiveSolver { - public: - using Base = LinearScalarDiffusiveSolver; - using Base::Base; - }; - - // Template arugment deduction - template - LinearThermalConductiveSolver(const GridBase &, const LinearTransportMaterial &) -> LinearThermalConductiveSolver; - -} // namespace monad diff --git a/include/monad/solver/solver_aliases.hpp b/include/monad/solver/solver_aliases.hpp new file mode 100644 index 0000000..7ad54be --- /dev/null +++ b/include/monad/solver/solver_aliases.hpp @@ -0,0 +1,74 @@ +#pragma once + +#include "monad/solver/mechanical/linear_elastic_policy.hpp" +#include "monad/solver/scalar/linear_scalar_diffusive_policy.hpp" +#include "monad/solver/multiphysics/linear_piezoelectric_policy.hpp" +#include "monad/solver/periodic_cell_solver.hpp" + +namespace monad { + + /** + * @brief Stateless periodic-cell solver for structured linear elastic homogenization problems. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + */ + template + using LinearElasticSolver = solver::PeriodicCellSolver>; + + /** + * @brief Stateless periodic-cell solver for structured linear dielectric homogenization problems. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + */ + template + using LinearDielectricSolver = solver::PeriodicCellSolver>; + + /** + * @brief Stateless periodic-cell solver for structured linear electrical conductive homogenization problems. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + */ + template + using LinearElectricalConductiveSolver = solver::PeriodicCellSolver>; + + /** + * @brief Stateless periodic-cell solver for structured linear magnetic homogenization problems. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + */ + template + using LinearMagneticSolver = solver::PeriodicCellSolver>; + + /** + * @brief Stateless periodic-cell solver for structured linear mass diffusive homogenization problems. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + */ + template + using LinearMassDiffusiveSolver = solver::PeriodicCellSolver>; + + /** + * @brief Stateless periodic-cell solver for structured linear porous homogenization problems. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + */ + template + using LinearPorousSolver = solver::PeriodicCellSolver>; + + /** + * @brief Stateless periodic-cell solver for structured linear thermal conductive homogenization problems. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + */ + template + using LinearThermalConductiveSolver = solver::PeriodicCellSolver>; + + /** + * @brief Stateless periodic-cell solver for structured linear piezoelectric homogenization problems. + * + * @tparam Grid Grid type (e.g. Quad4Grid). + */ + template + using LinearPiezoelectricSolver = solver::PeriodicCellSolver>; + +} // namespace monad diff --git a/include/monad/solver/solver_options.hpp b/include/monad/solver/solver_options.hpp index a4d4a4b..6755f23 100644 --- a/include/monad/solver/solver_options.hpp +++ b/include/monad/solver/solver_options.hpp @@ -4,51 +4,51 @@ namespace monad { /// @brief Bitmask controlling which nodal fields are stored in solver results. enum class FieldSave : unsigned int { - /// @brief Do not store any noal fields. + /// @brief Do not store any nodal fields. None = 0, - /// @brief Store total nodal fields X=X̄+X̃. + /// @brief Store total nodal fields. Total = 1 << 0, - /// @brief Store macroscopic nodal fields X̄. + /// @brief Store macroscopic nodal fields. Macro = 1 << 1, - /// @brief Store microscopic nodal fields X̃. + /// @brief Store microscopic nodal fields. Micro = 1 << 2, /// @brief Store all nodal fields. All = Total | Macro | Micro }; - /// @brief Bitwise OR operator. + /// @brief Bitwise OR for field-save flags. FieldSave operator|(FieldSave a, FieldSave b) noexcept; - /// @brief Bitwise AND operator. + /// @brief Bitwise AND for field-save flags. FieldSave operator&(FieldSave a, FieldSave b) noexcept; /** - * @brief Checks whether a specific field-save flag is enabled. + * @brief Returns `true` if a field-save flag is enabled, `false` otherwise. * * @param[in] flags Combined field-save flags. - * @param[in] bit Specific field-save option to test. + * @param[in] bit Flag to test. * * @returns `true` if `bit` is enabled in `flags`, `false` otherwise. */ bool wants(FieldSave flags, FieldSave bit) noexcept; - /// @brief Solver options. + /// @brief Options controlling the iterative solves and result storage. struct SolverOptions { /// @brief Maximum number of solver iterations. int maxIterations = 1000; - /// @brief Convergence tolerance for the solver's residual norm. + /// @brief Relative residual tolerance. double tolerance = 1e-6; - /// @brief Controls which nodal fields are stored in the solver results. + /// @brief Nodal fields to store in the results. FieldSave fields = FieldSave::None; - /// @brief Default solver options. - static SolverOptions defaults(); + /// @brief Set to `true` to print solver diagnostics. + bool verbose = false; /// @brief Equality comparison. bool operator==(const SolverOptions &other) const; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9aecef1..07cf168 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,10 +4,11 @@ set(MONAD_SOURCES fem/element/hex20.cpp fem/element/quad4.cpp fem/element/quad8.cpp - grid/hex8_grid.cpp - grid/hex20_grid.cpp - grid/quad4_grid.cpp - grid/quad8_grid.cpp + field/make_density_field_from_csv.cpp + grid/hex8_topology.cpp + grid/hex20_topology.cpp + grid/quad4_topology.cpp + grid/quad8_topology.cpp io/gmsh/write_gmsh_header.cpp material/mechanical/linear_elastic_2d.cpp material/mechanical/linear_elastic_3d.cpp diff --git a/src/field/make_density_field_from_csv.cpp b/src/field/make_density_field_from_csv.cpp new file mode 100644 index 0000000..61ed676 --- /dev/null +++ b/src/field/make_density_field_from_csv.cpp @@ -0,0 +1,82 @@ +#include +#include +#include +#include +#include +#include "monad/field/make_density_field_from_csv.hpp" + +namespace monad { + + DensityField2d makeDensityFieldFromCsv(const std::string& file) { + std::ifstream ifs(file, std::ios::in | std::ios::binary); + if (!ifs.is_open()) { + throw std::runtime_error("Could not open " + file + " for reading."); + } + + std::size_t nx = 0; + std::vector> rows; + std::string line; + + while (std::getline(ifs, line)) { + if (line.empty()) { + continue; + } + + std::istringstream iss(line); + std::string cell; + std::vector row; + + while (std::getline(iss, cell, ',')) { + if (cell.empty()) { + continue; + } + + double value = 0.0; + try { + value = std::stod(cell); + } + catch (const std::invalid_argument&) { + throw std::runtime_error("File " + file + " contains non-numeric values."); + } + + if (value < 0.0 || value > 1.0) { + throw std::runtime_error("File " + file + " contains values outside the range [0,1]."); + } + + row.push_back(value); + } + + if (row.empty()) { + continue; + } + + if (rows.empty()) { + nx = row.size(); + } + + if (row.size() != nx) { + throw std::runtime_error("File " + file + " number of columns (" + std::to_string(row.size()) + ") does not equal density field x-resolution (" + std::to_string(nx) + ")."); + } + + rows.push_back(row); + } + + const std::size_t ny = rows.size(); + + if (ny == 0) { + throw std::runtime_error("File " + file + " is empty."); + } + + DensityField2d densityField({nx, ny}); + + for (std::size_t i = 0; i < ny; ++i) { + for (std::size_t j = 0; j < nx; ++j) { + const std::size_t rowStart = nx * (ny - 1 - i); + densityField.setDensity(rowStart + j, rows[i][j]); + } + } + + return densityField; + } + +} // namespace monad diff --git a/src/grid/hex20_grid.cpp b/src/grid/hex20_grid.cpp deleted file mode 100644 index 3c20986..0000000 --- a/src/grid/hex20_grid.cpp +++ /dev/null @@ -1,262 +0,0 @@ -#include -#include -#include "monad/grid/hex20_grid.hpp" - -namespace monad { - - std::size_t Hex20Grid::numNodes() const noexcept { - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - const std::size_t nz = resolution_[2]; - - const std::size_t numCornerNodes = (nx + 1) * (ny + 1) * (nz + 1); - const std::size_t numXMidNodes = nx * (ny + 1) * (nz + 1); - const std::size_t numYMidNodes = (nx + 1) * ny * (nz + 1); - const std::size_t numZMidNodes = (nx + 1) * (ny + 1) * nz; - - return numCornerNodes + numXMidNodes + numYMidNodes + numZMidNodes; - } - - std::size_t Hex20Grid::numPeriodicNodes() const noexcept { - return 4 * numElements(); - } - - Hex20Grid::Point Hex20Grid::node(std::size_t index) const { - if (index >= numNodes()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numNodes()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - const std::size_t nz = resolution_[2]; - - const std::size_t numCornerNodes = (nx + 1) * (ny + 1) * (nz + 1); - const std::size_t numXMidNodes = nx * (ny + 1) * (nz + 1); - const std::size_t numYMidNodes = (nx + 1) * ny * (nz + 1); - - const double lx = size_[0]; - const double ly = size_[1]; - const double lz = size_[2]; - - const double dx = lx / static_cast(nx); - const double dy = ly / static_cast(ny); - const double dz = lz / static_cast(nz); - - double x; - double y; - double z; - - if (index < numCornerNodes) { - const std::size_t nodesPerPlane = (nx + 1) * (ny + 1); - const std::size_t indexInPlane = index % nodesPerPlane; - - const std::size_t i = indexInPlane % (nx + 1); - const std::size_t j = indexInPlane / (nx + 1); - const std::size_t k = index / nodesPerPlane; - - x = static_cast(i) * dx; - y = static_cast(j) * dy; - z = static_cast(k) * dz; - } - else if (index < numCornerNodes + numXMidNodes) { - // x-midpoints: grid size (i: nx, j: ny+1, k: nz+1) - index -= numCornerNodes; - - std::size_t nodesPerPlane = nx * (ny + 1); - std::size_t indexInPlane = index % nodesPerPlane; - - std::size_t i = indexInPlane % nx; - std::size_t j = indexInPlane / nx; - std::size_t k = index / nodesPerPlane; - - x = (static_cast(i) + 0.5) * dx; - y = static_cast(j) * dy; - z = static_cast(k) * dz; - } - else if (index < numCornerNodes + numXMidNodes + numYMidNodes) { - // y-midpoints: grid size (i: nx+1, j: ny, k: nz+1) - index -= numCornerNodes + numXMidNodes; - - const std::size_t nodesPerPlane = (nx + 1) * ny; - const std::size_t indexInPlane = index % nodesPerPlane; - - const std::size_t i = indexInPlane % (nx + 1); - const std::size_t j = indexInPlane / (nx + 1); - const std::size_t k = index / nodesPerPlane; - - x = static_cast(i) * dx; - y = (static_cast(j) + 0.5) * dy; - z = static_cast(k) * dz; - } - else { - // z-midpoints: grid size (i: nx+1, j: ny+1, k: nz) - index -= numCornerNodes + numXMidNodes + numYMidNodes; - - const std::size_t nodesPerPlane = (nx + 1) * (ny + 1); - const std::size_t indexInPlane = index % nodesPerPlane; - - const std::size_t i = indexInPlane % (nx + 1); - const std::size_t j = indexInPlane / (nx + 1); - const std::size_t k = index / nodesPerPlane; - - x = static_cast(i) * dx; - y = static_cast(j) * dy; - z = (static_cast(k) + 0.5) * dz; - } - - return Point(x, y, z); - } - - Hex20Grid::ElementList Hex20Grid::element(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - const std::size_t nz = resolution_[2]; - - const std::size_t elementsPerPlane = nx * ny; - const std::size_t numCornerNodes = (nx + 1) * (ny + 1) * (nz + 1); - const std::size_t numXMidNodes = nx * (ny + 1) * (nz + 1); - const std::size_t numYMidNodes = (nx + 1) * ny * (nz + 1); - - const std::size_t i = index % nx; - const std::size_t j = (index / nx) % ny; - const std::size_t k = index / elementsPerPlane; - - auto cornerNodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - return k * ((nx + 1) * (ny + 1)) + j * (nx + 1) + i; - }; - - auto xMidNodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - return numCornerNodes + k * nx * (ny + 1) + j * nx + i; - }; - - auto yMidNodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - return numCornerNodes + numXMidNodes + k * (nx + 1) * ny + j * (nx + 1) + i; - }; - - auto zMidNodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - return numCornerNodes + numXMidNodes + numYMidNodes + k * (nx + 1) * (ny + 1) + j * (nx + 1) + i; - }; - - // Bottom face corners - const std::size_t n1 = cornerNodeIndex(i, j, k); - const std::size_t n2 = cornerNodeIndex(i + 1, j, k); - const std::size_t n3 = cornerNodeIndex(i + 1, j + 1, k); - const std::size_t n4 = cornerNodeIndex(i, j + 1, k); - - // Top face corners - const std::size_t n5 = cornerNodeIndex(i, j, k + 1); - const std::size_t n6 = cornerNodeIndex(i + 1, j, k + 1); - const std::size_t n7 = cornerNodeIndex(i + 1, j + 1, k + 1); - const std::size_t n8 = cornerNodeIndex(i, j + 1, k + 1); - - // Bottom face midpoints - const std::size_t n9 = xMidNodeIndex(i, j, k); // between n1-n2 - const std::size_t n10 = yMidNodeIndex(i + 1, j, k); // between n2-n3 - const std::size_t n11 = xMidNodeIndex(i, j + 1, k); // between n3-n4 - const std::size_t n12 = yMidNodeIndex(i, j, k); // between n1-n4 - - // Top face edge midpoints - const std::size_t n13 = xMidNodeIndex(i, j, k + 1); // between n5-n6 - const std::size_t n14 = yMidNodeIndex(i + 1, j, k + 1); // between n6-n7 - const std::size_t n15 = xMidNodeIndex(i, j + 1, k + 1); // between n7-n8 - const std::size_t n16 = yMidNodeIndex(i, j, k + 1); // between n5-n8 - - // Vertical midpoints - const std::size_t n17 = zMidNodeIndex(i, j, k); // between n1-n5 - const std::size_t n18 = zMidNodeIndex(i + 1, j, k); // between n2-n6 - const std::size_t n19 = zMidNodeIndex(i + 1, j + 1, k); // between n3-n7 - const std::size_t n20 = zMidNodeIndex(i, j + 1, k); // between n4-n8 - - return {n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20}; - } - - Hex20Grid::ElementList Hex20Grid::periodicElement(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - const std::size_t nz = resolution_[2]; - - const std::size_t elementsPerPlane = nx * ny; - const std::size_t numElements = nx * ny * nz; - - const std::size_t i = index % nx; - const std::size_t j = (index / nx) % ny; - const std::size_t k = index / elementsPerPlane; - - auto cornerNodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - // Periodic wrapping - const std::size_t iP = (i + nx) % nx; - const std::size_t jP = (j + ny) % ny; - const std::size_t kP = (k + nz) % nz; - - return kP * nx * ny + jP * nx + iP; - }; - - auto xMidNodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - // Periodic wrapping - const std::size_t iP = (i + nx) % nx; - const std::size_t jP = (j + ny) % ny; - const std::size_t kP = (k + nz) % nz; - - return numElements + kP * nx * ny + jP * nx + iP; - }; - - auto yMidNodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - // Periodic wrapping - const std::size_t iP = (i + nx) % nx; - const std::size_t jP = (j + ny) % ny; - const std::size_t kP = (k + nz) % nz; - - return numElements + numElements + kP * nx * ny + jP * nx + iP; - }; - - auto zMidNodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - // Periodic wrapping - const std::size_t iP = (i + nx) % nx; - const std::size_t jP = (j + ny) % ny; - const std::size_t kP = (k + nz) % nz; - - return numElements + numElements + numElements + kP * nx * ny + jP * nx + iP; - }; - - // Bottom face corners - const std::size_t n1 = cornerNodeIndex(i, j, k); - const std::size_t n2 = cornerNodeIndex(i + 1, j, k); - const std::size_t n3 = cornerNodeIndex(i + 1, j + 1, k); - const std::size_t n4 = cornerNodeIndex(i, j + 1, k); - - // Top face corners - const std::size_t n5 = cornerNodeIndex(i, j, k + 1); - const std::size_t n6 = cornerNodeIndex(i + 1, j, k + 1); - const std::size_t n7 = cornerNodeIndex(i + 1, j + 1, k + 1); - const std::size_t n8 = cornerNodeIndex(i, j + 1, k + 1); - - // Bottom face midpoints - const std::size_t n9 = xMidNodeIndex(i, j, k); // between n1-n2 - const std::size_t n10 = yMidNodeIndex(i + 1, j, k); // between n2-n3 - const std::size_t n11 = xMidNodeIndex(i, j + 1, k); // between n3-n4 - const std::size_t n12 = yMidNodeIndex(i, j, k); // between n1-n4 - - // Top face edge midpoints - const std::size_t n13 = xMidNodeIndex(i, j, k + 1); // between n5-n6 - const std::size_t n14 = yMidNodeIndex(i + 1, j, k + 1); // between n6-n7 - const std::size_t n15 = xMidNodeIndex(i, j + 1, k + 1); // between n7-n8 - const std::size_t n16 = yMidNodeIndex(i, j, k + 1); // between n5-n8 - - // Vertical midpoints - const std::size_t n17 = zMidNodeIndex(i, j, k); // between n1-n5 - const std::size_t n18 = zMidNodeIndex(i + 1, j, k); // between n2-n6 - const std::size_t n19 = zMidNodeIndex(i + 1, j + 1, k); // between n3-n7 - const std::size_t n20 = zMidNodeIndex(i, j + 1, k); // between n4-n8 - - return {n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20}; - } - -} // namespace monad diff --git a/src/grid/hex20_topology.cpp b/src/grid/hex20_topology.cpp new file mode 100644 index 0000000..b8c2766 --- /dev/null +++ b/src/grid/hex20_topology.cpp @@ -0,0 +1,206 @@ +#include "monad/grid/hex20_topology.hpp" + +namespace monad { + + namespace grid { + + std::size_t Hex20Topology::numCornerNodes(const Resolution& resolution) noexcept { + return (resolution[0] + 1) * (resolution[1] + 1) * (resolution[2] + 1); + } + + std::size_t Hex20Topology::numXMidNodes(const Resolution& resolution) noexcept { + return resolution[0] * (resolution[1] + 1) * (resolution[2] + 1); + } + + std::size_t Hex20Topology::numYMidNodes(const Resolution& resolution) noexcept { + return (resolution[0] + 1) * resolution[1] * (resolution[2] + 1); + } + + std::size_t Hex20Topology::numZMidNodes(const Resolution& resolution) noexcept { + return (resolution[0] + 1) * (resolution[1] + 1) * resolution[2]; + } + + std::size_t Hex20Topology::numNodes(const Resolution& resolution) noexcept { + return numCornerNodes(resolution) + numXMidNodes(resolution) + numYMidNodes(resolution) + numZMidNodes(resolution); + } + + std::size_t Hex20Topology::numPeriodicNodes(const Resolution& resolution) noexcept { + return 4 * resolution[0] * resolution[1] * resolution[2]; + } + + Hex20Topology::Point Hex20Topology::node(std::size_t index, const Resolution& resolution, const Size& size) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t nz = resolution[2]; + const std::size_t corners = numCornerNodes(resolution); + const std::size_t xMids = numXMidNodes(resolution); + const std::size_t yMids = numYMidNodes(resolution); + + const double dx = size[0] / static_cast(nx); + const double dy = size[1] / static_cast(ny); + const double dz = size[2] / static_cast(nz); + + double x; + double y; + double z; + + if (index < corners) { + const std::size_t nodesPerPlane = (nx + 1) * (ny + 1); + const std::size_t indexInPlane = index % nodesPerPlane; + const std::size_t i = indexInPlane % (nx + 1); + const std::size_t j = indexInPlane / (nx + 1); + const std::size_t k = index / nodesPerPlane; + + x = static_cast(i) * dx; + y = static_cast(j) * dy; + z = static_cast(k) * dz; + } + else if (index < corners + xMids) { + index -= corners; + + const std::size_t nodesPerPlane = nx * (ny + 1); + const std::size_t indexInPlane = index % nodesPerPlane; + const std::size_t i = indexInPlane % nx; + const std::size_t j = indexInPlane / nx; + const std::size_t k = index / nodesPerPlane; + + x = (static_cast(i) + 0.5) * dx; + y = static_cast(j) * dy; + z = static_cast(k) * dz; + } + else if (index < corners + xMids + yMids) { + index -= corners + xMids; + + const std::size_t nodesPerPlane = (nx + 1) * ny; + const std::size_t indexInPlane = index % nodesPerPlane; + const std::size_t i = indexInPlane % (nx + 1); + const std::size_t j = indexInPlane / (nx + 1); + const std::size_t k = index / nodesPerPlane; + + x = static_cast(i) * dx; + y = (static_cast(j) + 0.5) * dy; + z = static_cast(k) * dz; + } + else { + index -= corners + xMids + yMids; + + const std::size_t nodesPerPlane = (nx + 1) * (ny + 1); + const std::size_t indexInPlane = index % nodesPerPlane; + const std::size_t i = indexInPlane % (nx + 1); + const std::size_t j = indexInPlane / (nx + 1); + const std::size_t k = index / nodesPerPlane; + + x = static_cast(i) * dx; + y = static_cast(j) * dy; + z = (static_cast(k) + 0.5) * dz; + } + + return Point(x, y, z); + } + + Hex20Topology::ElementList Hex20Topology::element(std::size_t index, const Resolution& resolution) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t elementsPerPlane = nx * ny; + const std::size_t corners = numCornerNodes(resolution); + const std::size_t xMids = numXMidNodes(resolution); + const std::size_t yMids = numYMidNodes(resolution); + + const std::size_t i = index % nx; + const std::size_t j = (index / nx) % ny; + const std::size_t k = index / elementsPerPlane; + + const auto cornerNodeIndex = [nx, ny](std::size_t ii, std::size_t jj, std::size_t kk) { + return kk * ((nx + 1) * (ny + 1)) + jj * (nx + 1) + ii; + }; + + const auto xMidNodeIndex = [nx, ny, corners](std::size_t ii, std::size_t jj, std::size_t kk) { + return corners + kk * nx * (ny + 1) + jj * nx + ii; + }; + + const auto yMidNodeIndex = [nx, ny, corners, xMids](std::size_t ii, std::size_t jj, std::size_t kk) { + return corners + xMids + kk * (nx + 1) * ny + jj * (nx + 1) + ii; + }; + + const auto zMidNodeIndex = [nx, ny, corners, xMids, yMids](std::size_t ii, std::size_t jj, std::size_t kk) { + return corners + xMids + yMids + kk * (nx + 1) * (ny + 1) + jj * (nx + 1) + ii; + }; + + return { + cornerNodeIndex(i, j, k), + cornerNodeIndex(i + 1, j, k), + cornerNodeIndex(i + 1, j + 1, k), + cornerNodeIndex(i, j + 1, k), + cornerNodeIndex(i, j, k + 1), + cornerNodeIndex(i + 1, j, k + 1), + cornerNodeIndex(i + 1, j + 1, k + 1), + cornerNodeIndex(i, j + 1, k + 1), + xMidNodeIndex(i, j, k), + yMidNodeIndex(i + 1, j, k), + xMidNodeIndex(i, j + 1, k), + yMidNodeIndex(i, j, k), + xMidNodeIndex(i, j, k + 1), + yMidNodeIndex(i + 1, j, k + 1), + xMidNodeIndex(i, j + 1, k + 1), + yMidNodeIndex(i, j, k + 1), + zMidNodeIndex(i, j, k), + zMidNodeIndex(i + 1, j, k), + zMidNodeIndex(i + 1, j + 1, k), + zMidNodeIndex(i, j + 1, k) + }; + } + + Hex20Topology::ElementList Hex20Topology::periodicElement(std::size_t index, const Resolution& resolution) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t nz = resolution[2]; + const std::size_t numElements = nx * ny * nz; + const std::size_t elementsPerPlane = nx * ny; + + const std::size_t i = index % nx; + const std::size_t j = (index / nx) % ny; + const std::size_t k = index / elementsPerPlane; + + const auto cornerNodeIndex = [nx, ny, nz](std::size_t ii, std::size_t jj, std::size_t kk) { + return (kk % nz) * (nx * ny) + (jj % ny) * nx + (ii % nx); + }; + + const auto xMidNodeIndex = [nx, ny, nz, numElements](std::size_t ii, std::size_t jj, std::size_t kk) { + return numElements + (kk % nz) * (nx * ny) + (jj % ny) * nx + (ii % nx); + }; + + const auto yMidNodeIndex = [nx, ny, nz, numElements](std::size_t ii, std::size_t jj, std::size_t kk) { + return 2 * numElements + (kk % nz) * (nx * ny) + (jj % ny) * nx + (ii % nx); + }; + + const auto zMidNodeIndex = [nx, ny, nz, numElements](std::size_t ii, std::size_t jj, std::size_t kk) { + return 3 * numElements + (kk % nz) * (nx * ny) + (jj % ny) * nx + (ii % nx); + }; + + return { + cornerNodeIndex(i, j, k), + cornerNodeIndex(i + 1, j, k), + cornerNodeIndex(i + 1, j + 1, k), + cornerNodeIndex(i, j + 1, k), + cornerNodeIndex(i, j, k + 1), + cornerNodeIndex(i + 1, j, k + 1), + cornerNodeIndex(i + 1, j + 1, k + 1), + cornerNodeIndex(i, j + 1, k + 1), + xMidNodeIndex(i, j, k), + yMidNodeIndex(i + 1, j, k), + xMidNodeIndex(i, j + 1, k), + yMidNodeIndex(i, j, k), + xMidNodeIndex(i, j, k + 1), + yMidNodeIndex(i + 1, j, k + 1), + xMidNodeIndex(i, j + 1, k + 1), + yMidNodeIndex(i, j, k + 1), + zMidNodeIndex(i, j, k), + zMidNodeIndex(i + 1, j, k), + zMidNodeIndex(i + 1, j + 1, k), + zMidNodeIndex(i, j + 1, k) + }; + } + + } // namespace grid + +} // namespace monad diff --git a/src/grid/hex8_grid.cpp b/src/grid/hex8_grid.cpp deleted file mode 100644 index 1f9e467..0000000 --- a/src/grid/hex8_grid.cpp +++ /dev/null @@ -1,121 +0,0 @@ -#include -#include -#include "monad/grid/hex8_grid.hpp" - -namespace monad { - - std::size_t Hex8Grid::numNodes() const noexcept { - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - const std::size_t nz = resolution_[2]; - - return (nx + 1) * (ny + 1) * (nz + 1); - } - - std::size_t Hex8Grid::numPeriodicNodes() const noexcept { - return numElements(); - } - - Hex8Grid::Point Hex8Grid::node(std::size_t index) const { - if (index >= numNodes()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numNodes()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - const std::size_t nz = resolution_[2]; - - const std::size_t nodesPerPlane = (nx + 1) * (ny + 1); - const std::size_t indexInPlane = index % nodesPerPlane; - - const double lx = size_[0]; - const double ly = size_[1]; - const double lz = size_[2]; - - const double dx = lx / static_cast(nx); - const double dy = ly / static_cast(ny); - const double dz = lz / static_cast(nz); - - const std::size_t i = indexInPlane % (nx + 1); - const std::size_t j = indexInPlane / (nx + 1); - const std::size_t k = index / nodesPerPlane; - - const double x = static_cast(i) * dx; - const double y = static_cast(j) * dy; - const double z = static_cast(k) * dz; - - return Point(x, y, z); - } - - Hex8Grid::ElementList Hex8Grid::element(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - - const std::size_t elementsPerPlane = nx * ny; - - const std::size_t i = index % nx; - const std::size_t j = (index / nx) % ny; - const std::size_t k = index / elementsPerPlane; - - auto nodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - return k * ((nx + 1) * (ny + 1)) + j * (nx + 1) + i; - }; - - // Bottom face - const std::size_t n1 = nodeIndex(i, j, k); - const std::size_t n2 = nodeIndex(i + 1, j, k); - const std::size_t n3 = nodeIndex(i + 1, j + 1, k); - const std::size_t n4 = nodeIndex(i, j + 1, k); - - // Top face - const std::size_t n5 = nodeIndex(i, j, k + 1); - const std::size_t n6 = nodeIndex(i + 1, j, k + 1); - const std::size_t n7 = nodeIndex(i + 1, j + 1, k + 1); - const std::size_t n8 = nodeIndex(i, j + 1, k + 1); - - return {n1, n2, n3, n4, n5, n6, n7, n8}; - } - - Hex8Grid::ElementList Hex8Grid::periodicElement(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - const std::size_t nz = resolution_[2]; - - const std::size_t elementsPerPlane = nx * ny; - - const std::size_t i = index % nx; - const std::size_t j = (index / nx) % ny; - const std::size_t k = index / elementsPerPlane; - - auto nodeIndex = [&](std::size_t i, std::size_t j, std::size_t k) { - const std::size_t iP = i % nx; - const std::size_t jP = j % ny; - const std::size_t kP = k % nz; - - return kP * (nx * ny) + jP * nx + iP; - }; - - // Bottom face - const std::size_t n1 = nodeIndex(i, j, k); - const std::size_t n2 = nodeIndex(i + 1, j, k); - const std::size_t n3 = nodeIndex(i + 1, j + 1, k); - const std::size_t n4 = nodeIndex(i, j + 1, k); - - // Top face - const std::size_t n5 = nodeIndex(i, j, k + 1); - const std::size_t n6 = nodeIndex(i + 1, j, k + 1); - const std::size_t n7 = nodeIndex(i + 1, j + 1, k + 1); - const std::size_t n8 = nodeIndex(i, j + 1, k + 1); - - return {n1, n2, n3, n4, n5, n6, n7, n8}; - } - -} // namespace monad diff --git a/src/grid/hex8_topology.cpp b/src/grid/hex8_topology.cpp new file mode 100644 index 0000000..a2a6431 --- /dev/null +++ b/src/grid/hex8_topology.cpp @@ -0,0 +1,90 @@ +#include "monad/grid/hex8_topology.hpp" + +namespace monad { + + namespace grid { + + std::size_t Hex8Topology::numNodes(const Resolution& resolution) noexcept { + return (resolution[0] + 1) * (resolution[1] + 1) * (resolution[2] + 1); + } + + std::size_t Hex8Topology::numPeriodicNodes(const Resolution& resolution) noexcept { + return resolution[0] * resolution[1] * resolution[2]; + } + + Hex8Topology::Point Hex8Topology::node(std::size_t index, const Resolution& resolution, const Size& size) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t nz = resolution[2]; + const std::size_t nodesPerPlane = (nx + 1) * (ny + 1); + const std::size_t indexInPlane = index % nodesPerPlane; + + const std::size_t i = indexInPlane % (nx + 1); + const std::size_t j = indexInPlane / (nx + 1); + const std::size_t k = index / nodesPerPlane; + + const double dx = size[0] / static_cast(nx); + const double dy = size[1] / static_cast(ny); + const double dz = size[2] / static_cast(nz); + + const double x = static_cast(i) * dx; + const double y = static_cast(j) * dy; + const double z = static_cast(k) * dz; + + return Point(x, y, z); + } + + Hex8Topology::ElementList Hex8Topology::element(std::size_t index, const Resolution& resolution) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t elementsPerPlane = nx * ny; + + const std::size_t i = index % nx; + const std::size_t j = (index / nx) % ny; + const std::size_t k = index / elementsPerPlane; + + const auto nodeIndex = [nx, ny](std::size_t ii, std::size_t jj, std::size_t kk) { + return kk * ((nx + 1) * (ny + 1)) + jj * (nx + 1) + ii; + }; + + return { + nodeIndex(i, j, k), + nodeIndex(i + 1, j, k), + nodeIndex(i + 1, j + 1, k), + nodeIndex(i, j + 1, k), + nodeIndex(i, j, k + 1), + nodeIndex(i + 1, j, k + 1), + nodeIndex(i + 1, j + 1, k + 1), + nodeIndex(i, j + 1, k + 1) + }; + } + + Hex8Topology::ElementList Hex8Topology::periodicElement(std::size_t index, const Resolution& resolution) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t nz = resolution[2]; + const std::size_t elementsPerPlane = nx * ny; + + const std::size_t i = index % nx; + const std::size_t j = (index / nx) % ny; + const std::size_t k = index / elementsPerPlane; + + const auto nodeIndex = [nx, ny, nz](std::size_t ii, std::size_t jj, std::size_t kk) { + return (kk % nz) * (nx * ny) + (jj % ny) * nx + (ii % nx); + }; + + return { + nodeIndex(i, j, k), + nodeIndex(i + 1, j, k), + nodeIndex(i + 1, j + 1, k), + nodeIndex(i, j + 1, k), + nodeIndex(i, j, k + 1), + nodeIndex(i + 1, j, k + 1), + nodeIndex(i + 1, j + 1, k + 1), + nodeIndex(i, j + 1, k + 1) + }; + } + + } // namespace grid + +} // namespace monad diff --git a/src/grid/quad4_grid.cpp b/src/grid/quad4_grid.cpp deleted file mode 100644 index b19612b..0000000 --- a/src/grid/quad4_grid.cpp +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include -#include "monad/grid/quad4_grid.hpp" - -namespace monad { - - std::size_t Quad4Grid::numNodes() const noexcept { - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - - return (nx + 1) * (ny + 1); - } - - std::size_t Quad4Grid::numPeriodicNodes() const noexcept { - return numElements(); - } - - Quad4Grid::Point Quad4Grid::node(std::size_t index) const { - if (index >= numNodes()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numNodes()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - - const double lx = size_[0]; - const double ly = size_[1]; - - const double dx = lx / static_cast(nx); - const double dy = ly / static_cast(ny); - - const std::size_t i = index % (nx + 1); - const std::size_t j = index / (nx + 1); - - const double x = static_cast(i) * dx; - const double y = static_cast(j) * dy; - - return Point(x, y); - } - - Quad4Grid::ElementList Quad4Grid::element(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - const std::size_t nx = resolution_[0]; - - const std::size_t i = index % nx; - const std::size_t j = index / nx; - - auto nodeIndex = [&](std::size_t i, std::size_t j) { - return j * (nx + 1) + i; - }; - - const std::size_t n1 = nodeIndex(i, j); - const std::size_t n2 = nodeIndex(i + 1, j); - const std::size_t n3 = nodeIndex(i + 1, j + 1); - const std::size_t n4 = nodeIndex(i, j + 1); - - return {n1, n2, n3, n4}; - } - - Quad4Grid::ElementList Quad4Grid::periodicElement(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - - const std::size_t i = index % nx; - const std::size_t j = index / nx; - - auto nodeIndex = [&](std::size_t i, std::size_t j) { - const std::size_t iP = i % nx; - const std::size_t jP = j % ny; - - return jP * nx + iP; - }; - - const std::size_t n1 = nodeIndex(i, j); - const std::size_t n2 = nodeIndex(i + 1, j); - const std::size_t n3 = nodeIndex(i + 1, j + 1); - const std::size_t n4 = nodeIndex(i, j + 1); - - return {n1, n2, n3, n4}; - } - -} // namespace monad diff --git a/src/grid/quad4_topology.cpp b/src/grid/quad4_topology.cpp new file mode 100644 index 0000000..9848843 --- /dev/null +++ b/src/grid/quad4_topology.cpp @@ -0,0 +1,67 @@ +#include "monad/grid/quad4_topology.hpp" + +namespace monad { + + namespace grid { + + std::size_t Quad4Topology::numNodes(const Resolution& resolution) noexcept { + return (resolution[0] + 1) * (resolution[1] + 1); + } + + std::size_t Quad4Topology::numPeriodicNodes(const Resolution& resolution) noexcept { + return resolution[0] * resolution[1]; + } + + Quad4Topology::Point Quad4Topology::node(std::size_t index, const Resolution& resolution, const Size& size) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t i = index % (nx + 1); + const std::size_t j = index / (nx + 1); + + const double dx = size[0] / static_cast(nx); + const double dy = size[1] / static_cast(ny); + + const double x = static_cast(i) * dx; + const double y = static_cast(j) * dy; + + return Point(x, y); + } + + Quad4Topology::ElementList Quad4Topology::element(std::size_t index, const Resolution& resolution) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t i = index % nx; + const std::size_t j = index / nx; + + const auto nodeIndex = [nx](std::size_t ii, std::size_t jj) { + return jj * (nx + 1) + ii; + }; + + return { + nodeIndex(i, j), + nodeIndex(i + 1, j), + nodeIndex(i + 1, j + 1), + nodeIndex(i, j + 1) + }; + } + + Quad4Topology::ElementList Quad4Topology::periodicElement(std::size_t index, const Resolution& resolution) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t i = index % nx; + const std::size_t j = index / nx; + + const auto nodeIndex = [nx, ny](std::size_t ii, std::size_t jj) { + return (jj % ny) * nx + (ii % nx); + }; + + return { + nodeIndex(i, j), + nodeIndex(i + 1, j), + nodeIndex(i + 1, j + 1), + nodeIndex(i, j + 1) + }; + } + + } // namespace grid + +} // namespace monad diff --git a/src/grid/quad8_grid.cpp b/src/grid/quad8_grid.cpp deleted file mode 100644 index 31508c5..0000000 --- a/src/grid/quad8_grid.cpp +++ /dev/null @@ -1,165 +0,0 @@ -#include -#include -#include "monad/grid/quad8_grid.hpp" - -namespace monad { - - std::size_t Quad8Grid::numNodes() const noexcept { - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - - const std::size_t numCornerNodes = (nx + 1) * (ny + 1); - const std::size_t numXMidNodes = nx * (ny + 1); - const std::size_t numYMidNodes = (nx + 1) * ny; - - return numCornerNodes + numXMidNodes + numYMidNodes; - } - - std::size_t Quad8Grid::numPeriodicNodes() const noexcept { - return 3 * numElements(); - } - - Quad8Grid::Point Quad8Grid::node(std::size_t index) const { - if (index >= numNodes()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numNodes()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - - const std::size_t numCornerNodes = (nx + 1) * (ny + 1); - const std::size_t numXMidNodes = nx * (ny + 1); - - const double lx = size_[0]; - const double ly = size_[1]; - - const double dx = lx / static_cast(nx); - const double dy = ly / static_cast(ny); - - double x; - double y; - - if (index < numCornerNodes) { - const std::size_t i = index % (nx + 1); - const std::size_t j = index / (nx + 1); - - x = static_cast(i) * dx; - y = static_cast(j) * dy; - } - else if (index < numCornerNodes + numXMidNodes) { - // x-midpoints are laid out in nx columns (i) and (ny + 1) rows (j). - index -= numCornerNodes; - - const std::size_t i = index % nx; - const std::size_t j = index / nx; - - x = (static_cast(i) + 0.5) * dx; - y = static_cast(j) * dy; - } - else { - // y-midpoints are laid out in (nx + 1) columns (i) and ny rows (j). - index -= numCornerNodes + numXMidNodes; - - const std::size_t i = index % (nx + 1); - const std::size_t j = index / (nx + 1); - - x = static_cast(i) * dx; - y = (static_cast(j) + 0.5) * dy; - } - - return Point(x, y); - } - - Quad8Grid::ElementList Quad8Grid::element(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - - const std::size_t numCornerNodes = (nx + 1) * (ny + 1); - const std::size_t numXMidNodes = nx * (ny + 1); - - const std::size_t i = index % nx; - const std::size_t j = index / nx; - - auto cornerNodeIndex = [&](std::size_t i, std::size_t j) { - return j * (nx + 1) + i; - }; - - auto xMidNodeIndex = [&](std::size_t i, std::size_t j) { - return numCornerNodes + j * nx + i; - }; - - auto yMidNodeIndex = [&](std::size_t i, std::size_t j) { - return numCornerNodes + numXMidNodes + j * (nx + 1) + i; - }; - - // Corner nodes - const std::size_t n1 = cornerNodeIndex(i, j); - const std::size_t n2 = cornerNodeIndex(i + 1, j); - const std::size_t n3 = cornerNodeIndex(i + 1, j + 1); - const std::size_t n4 = cornerNodeIndex(i, j + 1); - - // Midpoint nodes - const std::size_t n5 = xMidNodeIndex(i, j); // between n1-n2 - const std::size_t n6 = yMidNodeIndex(i + 1, j); // between n2-n3 - const std::size_t n7 = xMidNodeIndex(i, j + 1); // between n3-n4 - const std::size_t n8 = yMidNodeIndex(i, j); // between n1-n4 - - return {n1, n2, n3, n4, n5, n6, n7, n8}; - } - - Quad8Grid::ElementList Quad8Grid::periodicElement(std::size_t index) const { - if (index >= numElements()) { - throw std::out_of_range("Index (" + std::to_string(index) + ") is out of range [0," + std::to_string(numElements()) + ")."); - } - - const std::size_t nx = resolution_[0]; - const std::size_t ny = resolution_[1]; - - const std::size_t numElements = nx * ny; - - const std::size_t i = index % nx; - const std::size_t j = index / nx; - - auto cornerNodeIndex = [&](std::size_t i, std::size_t j) { - const std::size_t iP = i % nx; - const std::size_t jP = j % ny; - - return jP * nx + iP; - }; - - auto xMidNodeIndex = [&](std::size_t i, std::size_t j) { - // Periodic wrapping - const std::size_t iP = i % nx; - const std::size_t jP = j % ny; - - return numElements + jP * nx + iP; - }; - - auto yMidNodeIndex = [&](std::size_t i, std::size_t j) { - // Periodic wrapping - const std::size_t iP = i % nx; - const std::size_t jP = j % ny; - - return numElements + numElements + jP * nx + iP; - }; - - // Corner nodes - const std::size_t n1 = cornerNodeIndex(i, j); - const std::size_t n2 = cornerNodeIndex(i + 1, j); - const std::size_t n3 = cornerNodeIndex(i + 1, j + 1); - const std::size_t n4 = cornerNodeIndex(i, j + 1); - - // Midpoint nodes - const std::size_t n5 = xMidNodeIndex(i, j); // between n1-n2 - const std::size_t n6 = yMidNodeIndex(i + 1, j); // between n2-n3 - const std::size_t n7 = xMidNodeIndex(i, j + 1); // between n3-n4 - const std::size_t n8 = yMidNodeIndex(i, j); // between n1-n4 - - return {n1, n2, n3, n4, n5, n6, n7, n8}; - } - -} // namespace monad diff --git a/src/grid/quad8_topology.cpp b/src/grid/quad8_topology.cpp new file mode 100644 index 0000000..b916b6d --- /dev/null +++ b/src/grid/quad8_topology.cpp @@ -0,0 +1,134 @@ +#include "monad/grid/quad8_topology.hpp" + +namespace monad { + + namespace grid { + + std::size_t Quad8Topology::numCornerNodes(const Resolution& resolution) noexcept { + return (resolution[0] + 1) * (resolution[1] + 1); + } + + std::size_t Quad8Topology::numXMidNodes(const Resolution& resolution) noexcept { + return resolution[0] * (resolution[1] + 1); + } + + std::size_t Quad8Topology::numYMidNodes(const Resolution& resolution) noexcept { + return (resolution[0] + 1) * resolution[1]; + } + + std::size_t Quad8Topology::numNodes(const Resolution& resolution) noexcept { + return numCornerNodes(resolution) + numXMidNodes(resolution) + numYMidNodes(resolution); + } + + std::size_t Quad8Topology::numPeriodicNodes(const Resolution& resolution) noexcept { + return 3 * resolution[0] * resolution[1]; + } + + Quad8Topology::Point Quad8Topology::node(std::size_t index, const Resolution& resolution, const Size& size) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t corners = numCornerNodes(resolution); + const std::size_t xMids = numXMidNodes(resolution); + + const double dx = size[0] / static_cast(nx); + const double dy = size[1] / static_cast(ny); + + double x; + double y; + + if (index < corners) { + const std::size_t i = index % (nx + 1); + const std::size_t j = index / (nx + 1); + + x = static_cast(i) * dx; + y = static_cast(j) * dy; + } + else if (index < corners + xMids) { + index -= corners; + + const std::size_t i = index % nx; + const std::size_t j = index / nx; + + x = (static_cast(i) + 0.5) * dx; + y = static_cast(j) * dy; + } + else { + index -= corners + xMids; + + const std::size_t i = index % (nx + 1); + const std::size_t j = index / (nx + 1); + + x = static_cast(i) * dx; + y = (static_cast(j) + 0.5) * dy; + } + + return Point(x, y); + } + + Quad8Topology::ElementList Quad8Topology::element(std::size_t index, const Resolution& resolution) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t corners = numCornerNodes(resolution); + const std::size_t xMids = numXMidNodes(resolution); + + const std::size_t i = index % nx; + const std::size_t j = index / nx; + + const auto cornerNodeIndex = [nx](std::size_t ii, std::size_t jj) { + return jj * (nx + 1) + ii; + }; + + const auto xMidNodeIndex = [nx, corners](std::size_t ii, std::size_t jj) { + return corners + jj * nx + ii; + }; + + const auto yMidNodeIndex = [nx, corners, xMids](std::size_t ii, std::size_t jj) { + return corners + xMids + jj * (nx + 1) + ii; + }; + + return { + cornerNodeIndex(i, j), + cornerNodeIndex(i + 1, j), + cornerNodeIndex(i + 1, j + 1), + cornerNodeIndex(i, j + 1), + xMidNodeIndex(i, j), + yMidNodeIndex(i + 1, j), + xMidNodeIndex(i, j + 1), + yMidNodeIndex(i, j) + }; + } + + Quad8Topology::ElementList Quad8Topology::periodicElement(std::size_t index, const Resolution& resolution) noexcept { + const std::size_t nx = resolution[0]; + const std::size_t ny = resolution[1]; + const std::size_t numElements = nx * ny; + + const std::size_t i = index % nx; + const std::size_t j = index / nx; + + const auto cornerNodeIndex = [nx, ny](std::size_t ii, std::size_t jj) { + return (jj % ny) * nx + (ii % nx); + }; + + const auto xMidNodeIndex = [nx, ny, numElements](std::size_t ii, std::size_t jj) { + return numElements + (jj % ny) * nx + (ii % nx); + }; + + const auto yMidNodeIndex = [nx, ny, numElements](std::size_t ii, std::size_t jj) { + return 2 * numElements + (jj % ny) * nx + (ii % nx); + }; + + return { + cornerNodeIndex(i, j), + cornerNodeIndex(i + 1, j), + cornerNodeIndex(i + 1, j + 1), + cornerNodeIndex(i, j + 1), + xMidNodeIndex(i, j), + yMidNodeIndex(i + 1, j), + xMidNodeIndex(i, j + 1), + yMidNodeIndex(i, j) + }; + } + + } // namespace grid + +} // namespace monad diff --git a/src/solver/solver_options.cpp b/src/solver/solver_options.cpp index 8e2474b..5b3329d 100644 --- a/src/solver/solver_options.cpp +++ b/src/solver/solver_options.cpp @@ -14,14 +14,11 @@ namespace monad { return (flags & bit) != FieldSave::None; } - SolverOptions SolverOptions::defaults() { - return SolverOptions{}; - } - bool SolverOptions::operator==(const SolverOptions &other) const { return maxIterations == other.maxIterations && tolerance == other.tolerance - && fields == other.fields; + && fields == other.fields + && verbose == other.verbose; } bool SolverOptions::operator!=(const SolverOptions &other) const { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 44c3677..de89344 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,6 +1,44 @@ cmake_minimum_required(VERSION 3.10) -file(GLOB_RECURSE TEST_SOURCES ${CMAKE_SOURCE_DIR}/tests/*.cpp) +set(TEST_SOURCES + detail/eigen_utils_test.cpp + detail/mean_test.cpp + fem/element/element_test.cpp + fem/kernel/mechanical/linear_elastic_kernel_test.cpp + fem/kernel/multiphysics/linear_piezoelectric_kernel_test.cpp + fem/kernel/scalar/linear_scalar_diffusion_kernel_test.cpp + fem/operator/mechanical/linear_elastic_dof_traits_test.cpp + fem/operator/multiphysics/linear_piezoelectric_dof_traits_test.cpp + fem/operator/scalar/linear_scalar_diffusion_dof_traits_test.cpp + field/density_field_test.cpp + field/make_density_field_from_csv_test.cpp + field/make_density_field_from_function_test.cpp + grid/hex8_topology_test.cpp + grid/hex20_topology_test.cpp + grid/quad4_topology_test.cpp + grid/quad8_topology_test.cpp + grid/structured_grid_test.cpp + integration/integrate_matrix_test.cpp + integration/integrate_scalar_test.cpp + integration/quadrature_rule_test.cpp + io/gmsh/write_gmsh_densities_test.cpp + io/gmsh/write_gmsh_elements_test.cpp + io/gmsh/write_gmsh_header_test.cpp + io/gmsh/write_gmsh_nodal_field_test.cpp + io/gmsh/write_gmsh_nodes_test.cpp + io/save_grid_and_density_field_test.cpp + io/save_grid_and_nodal_field_test.cpp + io/save_grid_test.cpp + material/mechanical/linear_elastic_material_2d_test.cpp + material/mechanical/linear_elastic_material_3d_test.cpp + material/multiphysics/linear_piezoelectric_material_test.cpp + material/transport/linear_transport_material_test.cpp + material/bounds_test.cpp + solver/mechanical/linear_elastic_solver_test.cpp + solver/multiphysics/linear_piezoelectric_solver_test.cpp + solver/scalar/linear_scalar_diffusion_solver_test.cpp + solver/solver_options_test.cpp +) add_executable(monad_tests ${TEST_SOURCES}) diff --git a/tests/detail/eigen_utils_test.cpp b/tests/detail/eigen_utils_test.cpp index 291b57e..1ba67b1 100644 --- a/tests/detail/eigen_utils_test.cpp +++ b/tests/detail/eigen_utils_test.cpp @@ -6,16 +6,11 @@ using namespace monad::detail; -TEST_CASE("monad::detail: Test arrayToEigen", "[monad]") { - const std::array array{1, 2, 3}; - - const Eigen::Vector3i expected(1, 2, 3); - - REQUIRE(arrayToEigen(array) == expected); -} - TEST_CASE("monad::detail: Test symmetrize/isSymmetric", "[monad]") { - Eigen::Matrix3d A = Eigen::Matrix3d::Random(); + Eigen::Matrix3d A; + A << 1, 2, 3, + 2, 3, 4.001, + 3, 4, 5; REQUIRE(!isSymmetric(A)); diff --git a/tests/fem/element/element_test.cpp b/tests/fem/element/element_test.cpp index 2cf6236..0dfc322 100644 --- a/tests/fem/element/element_test.cpp +++ b/tests/fem/element/element_test.cpp @@ -1,8 +1,8 @@ #include +#include #include #include #include -#include #include "monad/fem/element/quad4.hpp" #include "monad/fem/element/quad8.hpp" #include "monad/fem/element/hex8.hpp" @@ -118,7 +118,7 @@ TEMPLATE_LIST_TEST_CASE("monad::fem::ElementBase Test quadratureRule", "[monad]" expected = analyticIntegral(p, p, p); } - auto integrand = [p](const Point &point) -> double { + auto integrand = [&](const Point &point) -> double { if constexpr (TestType::Dim == 2) { return numericIntegrand(point, p, p); } diff --git a/tests/fem/kernel/mechanical/linear_elastic_kernel_2d_test.cpp b/tests/fem/kernel/mechanical/linear_elastic_kernel_2d_test.cpp deleted file mode 100644 index d728673..0000000 --- a/tests/fem/kernel/mechanical/linear_elastic_kernel_2d_test.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include -#include -#include -#include -#include "monad/fem/element/quad4.hpp" -#include "monad/fem/element/quad8.hpp" -#include "monad/fem/kernel/mechanical/linear_elastic_kernel.hpp" -#include "monad/material/mechanical/linear_elastic_material_2d.hpp" -#include "monad/detail/eigen_utils.hpp" -#include "monad/detail/constants.hpp" - -using namespace monad; -using namespace monad::fem; -using namespace monad::fem::mechanical; -using namespace monad::detail; - -using Types = std::tuple; - -TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (2d): Test bMatrix", "[monad]", Types) { - using FieldMatrix = typename LinearElasticKernel::FieldMatrix; - - auto nodes = TestType::localNodes(); - const auto points = TestType::quadratureRule().points; - - SECTION("BU=ε for unit strains") { - const auto expected = Eigen::Matrix3d::Identity(); - - for (auto point : points) { - const auto B = LinearElasticKernel::bMatrix(point, nodes); - - FieldMatrix U; - U.setZero(); - - // Displacements of unit axial strain ε₁₁ - U(Eigen::seq(0, Eigen::indexing::last, 2), 0) = nodes.col(0); - - // Displacements of unit axial strain ε₂₂ - U(Eigen::seq(1, Eigen::indexing::last, 2), 1) = nodes.col(1); - - // Displacements of unit shear strain ε₁₂ - U(Eigen::seq(0, Eigen::indexing::last, 2), 2) = 0.5 * nodes.col(1); - U(Eigen::seq(1, Eigen::indexing::last, 2), 2) = 0.5 * nodes.col(0); - - REQUIRE((B * U).isApprox(expected, NUMERICAL_ZERO)); - } - } - - SECTION("BU=0 for rigid body transformations") { - for (auto point : points) { - const auto B = LinearElasticKernel::bMatrix(point, nodes); - - FieldMatrix U; - U.setZero(); - - // Unit x translation - U(Eigen::seq(0, Eigen::indexing::last, 2), 0).setOnes(); - - // Unit y translation - U(Eigen::seq(1, Eigen::indexing::last, 2), 1).setOnes(); - - // 90° ccw rotation - U(Eigen::seq(0, Eigen::indexing::last, 2), 2) = -nodes.col(1); - U(Eigen::seq(1, Eigen::indexing::last, 2), 2) = nodes.col(0); - - REQUIRE((B * U).isZero(NUMERICAL_ZERO)); - } - } - - SECTION("Invalid element - degenerate element") { - nodes = 0.0 * nodes; - - const auto point = nodes.row(0); - - REQUIRE_THROWS_AS(LinearElasticKernel::bMatrix(point, nodes), std::invalid_argument); - } - - SECTION("Invalid element - reverse node ordering") { - nodes = nodes.rowwise().reverse(); - - const auto point = nodes.row(0); - - REQUIRE_THROWS_AS(LinearElasticKernel::bMatrix(point, nodes), std::invalid_argument); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (2d): Test lhs/rhs", "[monad]", Types) { - using FieldMatrix = typename LinearElasticKernel::FieldMatrix; - - const LinearElasticMaterial2d material(1.0, 0.3, LinearElasticMaterial2d::PlaneCondition::PlaneStress); - auto nodes = TestType::localNodes(); - - SECTION("No errors") { - const auto K = LinearElasticKernel::lhs(material, nodes); - - REQUIRE(isSymmetric(K)); - REQUIRE(isPSD(K)); - - SECTION("UᵀKU=UᵀF=0 for rigid body transformations") { - const FieldMatrix F = LinearElasticKernel::rhs(material, nodes); - - FieldMatrix U; - U.setZero(); - - // Unit x translation - U(Eigen::seq(0, Eigen::indexing::last, 2), 0).setOnes(); - - // Unit y translation - U(Eigen::seq(1, Eigen::indexing::last, 2), 1).setOnes(); - - // 90° ccw rotation - U(Eigen::seq(0, Eigen::indexing::last, 2), 2) = -nodes.col(1); - U(Eigen::seq(1, Eigen::indexing::last, 2), 2) = nodes.col(0); - - REQUIRE((U.transpose() * K * U).isZero(NUMERICAL_ZERO)); - REQUIRE((U.transpose() * F).isZero(NUMERICAL_ZERO)); - } - } - - SECTION("Invalid element - degenerate element") { - nodes = 0.0 * nodes; - - REQUIRE_THROWS_AS(LinearElasticKernel::lhs(material, nodes), std::invalid_argument); - REQUIRE_THROWS_AS(LinearElasticKernel::rhs(material, nodes), std::invalid_argument); - } - - SECTION("Invalid element - reverse node ordering") { - nodes = nodes.rowwise().reverse(); - - REQUIRE_THROWS_AS(LinearElasticKernel::lhs(material, nodes), std::invalid_argument); - REQUIRE_THROWS_AS(LinearElasticKernel::rhs(material, nodes), std::invalid_argument); - } -} diff --git a/tests/fem/kernel/mechanical/linear_elastic_kernel_3d_test.cpp b/tests/fem/kernel/mechanical/linear_elastic_kernel_test.cpp similarity index 56% rename from tests/fem/kernel/mechanical/linear_elastic_kernel_3d_test.cpp rename to tests/fem/kernel/mechanical/linear_elastic_kernel_test.cpp index 43a00f3..389dd06 100644 --- a/tests/fem/kernel/mechanical/linear_elastic_kernel_3d_test.cpp +++ b/tests/fem/kernel/mechanical/linear_elastic_kernel_test.cpp @@ -4,7 +4,10 @@ #include #include "monad/fem/element/hex8.hpp" #include "monad/fem/element/hex20.hpp" +#include "monad/fem/element/quad4.hpp" +#include "monad/fem/element/quad8.hpp" #include "monad/fem/kernel/mechanical/linear_elastic_kernel.hpp" +#include "monad/material/mechanical/linear_elastic_material_2d.hpp" #include "monad/material/mechanical/linear_elastic_material_3d.hpp" #include "monad/detail/eigen_utils.hpp" #include "monad/detail/constants.hpp" @@ -14,9 +17,75 @@ using namespace monad::fem; using namespace monad::fem::mechanical; using namespace monad::detail; -using Types = std::tuple; +using Types2d = std::tuple; +using Types3d = std::tuple; -TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (3d): Test bMatrix", "[monad]", Types) { +TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (2d): Test bMatrix", "[monad]", Types2d) { + using FieldMatrix = typename LinearElasticKernel::FieldMatrix; + + auto nodes = TestType::localNodes(); + const auto points = TestType::quadratureRule().points; + + SECTION("BU=ε for unit strains") { + const auto expected = Eigen::Matrix3d::Identity(); + + for (auto point : points) { + const auto B = LinearElasticKernel::bMatrix(point, nodes); + + FieldMatrix U = FieldMatrix::Zero(); + + // Displacements of unit axial strain ε₁₁ + U(Eigen::seq(0, Eigen::indexing::last, 2), 0) = nodes.col(0); + + // Displacements of unit axial strain ε₂₂ + U(Eigen::seq(1, Eigen::indexing::last, 2), 1) = nodes.col(1); + + // Displacements of unit shear strain ε₁₂ + U(Eigen::seq(0, Eigen::indexing::last, 2), 2) = 0.5 * nodes.col(1); + U(Eigen::seq(1, Eigen::indexing::last, 2), 2) = 0.5 * nodes.col(0); + + REQUIRE((B * U).isApprox(expected, NUMERICAL_ZERO)); + } + } + + SECTION("BU=0 for rigid body transformations") { + for (auto point : points) { + const auto B = LinearElasticKernel::bMatrix(point, nodes); + + FieldMatrix U = FieldMatrix::Zero(); + + // Unit x translation + U(Eigen::seq(0, Eigen::indexing::last, 2), 0).setOnes(); + + // Unit y translation + U(Eigen::seq(1, Eigen::indexing::last, 2), 1).setOnes(); + + // 90° ccw rotation + U(Eigen::seq(0, Eigen::indexing::last, 2), 2) = -nodes.col(1); + U(Eigen::seq(1, Eigen::indexing::last, 2), 2) = nodes.col(0); + + REQUIRE((B * U).isZero(NUMERICAL_ZERO)); + } + } + + SECTION("Invalid element - degenerate element") { + nodes = 0.0 * nodes; + + const auto point = nodes.row(0); + + REQUIRE_THROWS_AS(LinearElasticKernel::bMatrix(point, nodes), std::invalid_argument); + } + + SECTION("Invalid element - reverse node ordering") { + nodes = nodes.rowwise().reverse(); + + const auto point = nodes.row(0); + + REQUIRE_THROWS_AS(LinearElasticKernel::bMatrix(point, nodes), std::invalid_argument); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (3d): Test bMatrix", "[monad]", Types3d) { using FieldMatrix = typename LinearElasticKernel::FieldMatrix; auto nodes = TestType::localNodes(); @@ -28,8 +97,7 @@ TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (3d): Test for (auto point : points) { const auto B = LinearElasticKernel::bMatrix(point, nodes); - FieldMatrix U; - U.setZero(); + FieldMatrix U = FieldMatrix::Zero(); // Displacements of unit axial strain ε₁₁ U(Eigen::seq(0, Eigen::indexing::last, 3), 0) = nodes.col(0); @@ -60,8 +128,7 @@ TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (3d): Test for (auto point : points) { auto B = LinearElasticKernel::bMatrix(point, nodes); - FieldMatrix U; - U.setZero(); + FieldMatrix U = FieldMatrix::Zero(); // Unit x translation U(Eigen::seq(0, Eigen::indexing::last, 3), 0).setOnes(); @@ -105,7 +172,54 @@ TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (3d): Test } } -TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (3d): Test lhs", "[monad]", Types) { +TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (2d): Test lhs/rhs", "[monad]", Types2d) { + using FieldMatrix = typename LinearElasticKernel::FieldMatrix; + + const LinearElasticMaterial2d material(1.0, 0.3, LinearElasticMaterial2d::PlaneCondition::PlaneStress); + auto nodes = TestType::localNodes(); + + SECTION("No errors") { + const auto K = LinearElasticKernel::lhs(material, nodes); + + REQUIRE(isSymmetric(K)); + REQUIRE(isPSD(K)); + + SECTION("UᵀKU=UᵀF=0 for rigid body transformations") { + const FieldMatrix F = LinearElasticKernel::rhs(material, nodes); + + FieldMatrix U = FieldMatrix::Zero(); + + // Unit x translation + U(Eigen::seq(0, Eigen::indexing::last, 2), 0).setOnes(); + + // Unit y translation + U(Eigen::seq(1, Eigen::indexing::last, 2), 1).setOnes(); + + // 90° ccw rotation + U(Eigen::seq(0, Eigen::indexing::last, 2), 2) = -nodes.col(1); + U(Eigen::seq(1, Eigen::indexing::last, 2), 2) = nodes.col(0); + + REQUIRE((U.transpose() * K * U).isZero(NUMERICAL_ZERO)); + REQUIRE((U.transpose() * F).isZero(NUMERICAL_ZERO)); + } + } + + SECTION("Invalid element - degenerate element") { + nodes = 0.0 * nodes; + + REQUIRE_THROWS_AS(LinearElasticKernel::lhs(material, nodes), std::invalid_argument); + REQUIRE_THROWS_AS(LinearElasticKernel::rhs(material, nodes), std::invalid_argument); + } + + SECTION("Invalid element - reverse node ordering") { + nodes = nodes.rowwise().reverse(); + + REQUIRE_THROWS_AS(LinearElasticKernel::lhs(material, nodes), std::invalid_argument); + REQUIRE_THROWS_AS(LinearElasticKernel::rhs(material, nodes), std::invalid_argument); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (3d): Test lhs", "[monad]", Types3d) { using FieldMatrix = typename LinearElasticKernel::FieldMatrix; const LinearElasticMaterial3d material(1.0, 0.3); @@ -120,8 +234,7 @@ TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticKernel (3d): Test SECTION("UᵀKU=UᵀF=0 for rigid body transformations") { const FieldMatrix F = LinearElasticKernel::rhs(material, nodes); - FieldMatrix U; - U.setZero(); + FieldMatrix U = FieldMatrix::Zero(); // Unit x translation U(Eigen::seq(0, Eigen::indexing::last, 3), 0).setOnes(); diff --git a/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_2d_test.cpp b/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_2d_test.cpp deleted file mode 100644 index d285a96..0000000 --- a/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_2d_test.cpp +++ /dev/null @@ -1,98 +0,0 @@ -#include -#include -#include -#include -#include "monad/fem/element/quad4.hpp" -#include "monad/fem/element/quad8.hpp" -#include "monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp" -#include "monad/material/mechanical/linear_elastic_material_2d.hpp" -#include "monad/material/transport/linear_transport_material_aliases.hpp" -#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" -#include "monad/detail/eigen_utils.hpp" -#include "monad/detail/constants.hpp" - -using namespace monad; -using namespace monad::fem; -using namespace monad::fem::mechanical; -using namespace monad::fem::scalar; -using namespace monad::fem::multiphysics; -using namespace monad::detail; - -using Types = std::tuple; - -TEMPLATE_LIST_TEST_CASE("monad::fem::electrical::LinearPiezoelectricKernel (2d): Test lhs/rhs", "[monad]", Types) { - using CouplingTensor = typename LinearPiezoelectricMaterial2d::CouplingTensor; - - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const LinearPiezoelectricMaterial2d material(elasticMaterial, dielectricMaterial, d); - - auto nodes = TestType::localNodes(); - - SECTION("No errors") { - const auto K = LinearPiezoelectricKernel::lhs(material, nodes); - - REQUIRE(isSymmetric(K)); - REQUIRE(!isPSD(K)); - - SECTION("xᵀKx=xᵀF=0 for rigid body transformations") { - using FieldVector = Eigen::Vector::NumDofs>; - using MechanicalKernel = typename LinearPiezoelectricKernel::MechanicalKernel; - - const auto F = LinearPiezoelectricKernel::rhs(material, nodes); - - FieldVector x; - - const int numMechanicalDofs = MechanicalKernel::NumDofs; - - // Unit x translation - x.setZero(); - x(Eigen::seq(0, numMechanicalDofs - 1, 2)).setOnes(); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // Unit y translation - x.setZero(); - x(Eigen::seq(1, numMechanicalDofs - 1, 2)).setOnes(); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // 90° ccw rotation - x.setZero(); - x(Eigen::seq(0, numMechanicalDofs - 1, 2)) = -nodes.col(1); - x(Eigen::seq(1, numMechanicalDofs - 1, 2)) = nodes.col(0); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // Unit electrical translation - x.setZero(); - x(Eigen::seq(numMechanicalDofs, Eigen::indexing::last)).setOnes(); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - } - } - - SECTION("Invalid element - degenerate element") { - nodes = 0.0 * nodes; - - REQUIRE_THROWS_AS(LinearPiezoelectricKernel::lhs(material, nodes), std::invalid_argument); - REQUIRE_THROWS_AS(LinearPiezoelectricKernel::rhs(material, nodes), std::invalid_argument); - } - - SECTION("Invalid element - reverse node ordering") { - nodes = nodes.rowwise().reverse(); - - REQUIRE_THROWS_AS(LinearPiezoelectricKernel::lhs(material, nodes), std::invalid_argument); - REQUIRE_THROWS_AS(LinearPiezoelectricKernel::rhs(material, nodes), std::invalid_argument); - } -} diff --git a/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_3d_test.cpp b/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_3d_test.cpp deleted file mode 100644 index 2504960..0000000 --- a/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_3d_test.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include -#include -#include -#include -#include "monad/fem/element/hex8.hpp" -#include "monad/fem/element/hex20.hpp" -#include "monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp" -#include "monad/material/mechanical/linear_elastic_material_3d.hpp" -#include "monad/material/transport/linear_transport_material_aliases.hpp" -#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" -#include "monad/detail/eigen_utils.hpp" -#include "monad/detail/constants.hpp" - -using namespace monad; -using namespace monad::fem; -using namespace monad::fem::mechanical; -using namespace monad::fem::scalar; -using namespace monad::fem::multiphysics; -using namespace monad::detail; - -using Types = std::tuple; - -TEMPLATE_LIST_TEST_CASE("monad::fem::electrical::LinearPiezoelectricKernel (3d): Test lhs/rhs", "[monad]", Types) { - using CouplingTensor = typename LinearPiezoelectricMaterial3d::CouplingTensor; - - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material(elasticMaterial, dielectricMaterial, d); - - auto nodes = TestType::localNodes(); - - SECTION("No errors") { - const auto K = LinearPiezoelectricKernel::lhs(material, nodes); - - REQUIRE(isSymmetric(K)); - REQUIRE(!isPSD(K)); - - SECTION("xᵀKx=xᵀF=0 for rigid body transformations") { - using FieldVector = Eigen::Vector::NumDofs>; - using MechanicalKernel = typename LinearPiezoelectricKernel::MechanicalKernel; - - const auto F = LinearPiezoelectricKernel::rhs(material, nodes); - - FieldVector x; - - const int numMechanicalDofs = MechanicalKernel::NumDofs; - - // Unit x translation - x.setZero(); - x(Eigen::seq(0, numMechanicalDofs - 1, 3)).setOnes(); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // Unit y translation - x.setZero(); - x(Eigen::seq(1, numMechanicalDofs - 1, 3)).setOnes(); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // Unit z translation - x.setZero(); - x(Eigen::seq(2, numMechanicalDofs - 1, 3)).setOnes(); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // 90° ccw rotation in xy-plane - x.setZero(); - x(Eigen::seq(0, numMechanicalDofs - 1, 3)) = -nodes.col(1); - x(Eigen::seq(1, numMechanicalDofs - 1, 3)) = nodes.col(0); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // 90° ccw rotation in xz-plane - x.setZero(); - x(Eigen::seq(0, numMechanicalDofs - 1, 3)) = nodes.col(2); - x(Eigen::seq(2, numMechanicalDofs - 1, 3)) = -nodes.col(0); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // 90° ccw rotation in yz-plane - x.setZero(); - x(Eigen::seq(1, numMechanicalDofs - 1, 3)) = -nodes.col(2); - x(Eigen::seq(2, numMechanicalDofs - 1, 3)) = nodes.col(1); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - - // Unit electrical translation - x.setZero(); - x(Eigen::seq(numMechanicalDofs, Eigen::indexing::last)).setOnes(); - - REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); - REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); - } - } - - SECTION("Invalid element - degenerate element") { - nodes = 0.0 * nodes; - - REQUIRE_THROWS_AS(LinearPiezoelectricKernel::lhs(material, nodes), std::invalid_argument); - REQUIRE_THROWS_AS(LinearPiezoelectricKernel::rhs(material, nodes), std::invalid_argument); - } - - SECTION("Invalid element - reverse node ordering") { - nodes = nodes.rowwise().reverse(); - - REQUIRE_THROWS_AS(LinearPiezoelectricKernel::lhs(material, nodes), std::invalid_argument); - REQUIRE_THROWS_AS(LinearPiezoelectricKernel::rhs(material, nodes), std::invalid_argument); - } -} diff --git a/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_test.cpp b/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_test.cpp new file mode 100644 index 0000000..a4ec24a --- /dev/null +++ b/tests/fem/kernel/multiphysics/linear_piezoelectric_kernel_test.cpp @@ -0,0 +1,219 @@ +#include +#include +#include +#include +#include "monad/fem/element/hex8.hpp" +#include "monad/fem/element/hex20.hpp" +#include "monad/fem/element/quad4.hpp" +#include "monad/fem/element/quad8.hpp" +#include "monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp" +#include "monad/detail/eigen_utils.hpp" +#include "monad/detail/constants.hpp" + +using namespace monad; +using namespace monad::fem; +using namespace monad::fem::mechanical; +using namespace monad::fem::scalar; +using namespace monad::fem::multiphysics; +using namespace monad::detail; +using namespace monad::material; + +using Types2d = std::tuple; +using Types3d = std::tuple; + +TEMPLATE_LIST_TEST_CASE("monad::fem::electrical::LinearPiezoelectricKernel (2d): Test lhs/rhs", "[monad]", Types2d) { + using Kernel = LinearPiezoelectricKernel; + using Material = typename Kernel::Material; + using StiffnessTensor = typename Material::StiffnessTensor; + using PermittivityTensor = typename Material::PermittivityTensor; + using CouplingTensor = typename Material::CouplingTensor; + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + const Material material(c, epsilon, d); + + auto nodes = TestType::localNodes(); + + SECTION("No errors") { + const auto K = Kernel::lhs(material, nodes); + + REQUIRE(isSymmetric(K)); + REQUIRE(!isPSD(K)); + + SECTION("xᵀKx=xᵀF=0 for rigid body transformations") { + using FieldVector = Eigen::Vector; + using MechanicalKernel = typename Kernel::MechanicalKernel; + + const auto F = Kernel::rhs(material, nodes); + + FieldVector x; + + const int numMechanicalDofs = MechanicalKernel::NumDofs; + + // Unit x translation + x.setZero(); + x(Eigen::seq(0, numMechanicalDofs - 1, 2)).setOnes(); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // Unit y translation + x.setZero(); + x(Eigen::seq(1, numMechanicalDofs - 1, 2)).setOnes(); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // 90° ccw rotation + x.setZero(); + x(Eigen::seq(0, numMechanicalDofs - 1, 2)) = -nodes.col(1); + x(Eigen::seq(1, numMechanicalDofs - 1, 2)) = nodes.col(0); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // Unit electrical translation + x.setZero(); + x(Eigen::seq(numMechanicalDofs, Eigen::indexing::last)).setOnes(); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + } + } + + SECTION("Invalid element - degenerate element") { + nodes = 0.0 * nodes; + + REQUIRE_THROWS_AS(Kernel::lhs(material, nodes), std::invalid_argument); + REQUIRE_THROWS_AS(Kernel::rhs(material, nodes), std::invalid_argument); + } + + SECTION("Invalid element - reverse node ordering") { + nodes = nodes.rowwise().reverse(); + + REQUIRE_THROWS_AS(Kernel::lhs(material, nodes), std::invalid_argument); + REQUIRE_THROWS_AS(Kernel::rhs(material, nodes), std::invalid_argument); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::fem::electrical::LinearPiezoelectricKernel (3d): Test lhs/rhs", "[monad]", Types3d) { + using Kernel = LinearPiezoelectricKernel; + using Material = typename Kernel::Material; + using StiffnessTensor = typename Material::StiffnessTensor; + using PermittivityTensor = typename Material::PermittivityTensor; + using CouplingTensor = typename Material::CouplingTensor; + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + const Material material(c, epsilon, d); + + auto nodes = TestType::localNodes(); + + SECTION("No errors") { + const auto K = Kernel::lhs(material, nodes); + + REQUIRE(isSymmetric(K)); + REQUIRE(!isPSD(K)); + + SECTION("xᵀKx=xᵀF=0 for rigid body transformations") { + using FieldVector = Eigen::Vector; + using MechanicalKernel = typename Kernel::MechanicalKernel; + + const auto F = Kernel::rhs(material, nodes); + + FieldVector x; + + const int numMechanicalDofs = MechanicalKernel::NumDofs; + + // Unit x translation + x.setZero(); + x(Eigen::seq(0, numMechanicalDofs - 1, 3)).setOnes(); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // Unit y translation + x.setZero(); + x(Eigen::seq(1, numMechanicalDofs - 1, 3)).setOnes(); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // Unit z translation + x.setZero(); + x(Eigen::seq(2, numMechanicalDofs - 1, 3)).setOnes(); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // 90° ccw rotation in xy-plane + x.setZero(); + x(Eigen::seq(0, numMechanicalDofs - 1, 3)) = -nodes.col(1); + x(Eigen::seq(1, numMechanicalDofs - 1, 3)) = nodes.col(0); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // 90° ccw rotation in xz-plane + x.setZero(); + x(Eigen::seq(0, numMechanicalDofs - 1, 3)) = nodes.col(2); + x(Eigen::seq(2, numMechanicalDofs - 1, 3)) = -nodes.col(0); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // 90° ccw rotation in yz-plane + x.setZero(); + x(Eigen::seq(1, numMechanicalDofs - 1, 3)) = -nodes.col(2); + x(Eigen::seq(2, numMechanicalDofs - 1, 3)) = nodes.col(1); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + + // Unit electrical translation + x.setZero(); + x(Eigen::seq(numMechanicalDofs, Eigen::indexing::last)).setOnes(); + + REQUIRE((x.transpose() * K * x).isZero(NUMERICAL_ZERO)); + REQUIRE((x.transpose() * F).isZero(NUMERICAL_ZERO)); + } + } + + SECTION("Invalid element - degenerate element") { + nodes = 0.0 * nodes; + + REQUIRE_THROWS_AS(Kernel::lhs(material, nodes), std::invalid_argument); + REQUIRE_THROWS_AS(Kernel::rhs(material, nodes), std::invalid_argument); + } + + SECTION("Invalid element - reverse node ordering") { + nodes = nodes.rowwise().reverse(); + + REQUIRE_THROWS_AS(Kernel::lhs(material, nodes), std::invalid_argument); + REQUIRE_THROWS_AS(Kernel::rhs(material, nodes), std::invalid_argument); + } +} diff --git a/tests/fem/kernel/scalar/linear_scalar_diffusion_kernel_test.cpp b/tests/fem/kernel/scalar/linear_scalar_diffusion_kernel_test.cpp index a48b722..6c1b796 100644 --- a/tests/fem/kernel/scalar/linear_scalar_diffusion_kernel_test.cpp +++ b/tests/fem/kernel/scalar/linear_scalar_diffusion_kernel_test.cpp @@ -15,6 +15,7 @@ using namespace monad; using namespace monad::fem; using namespace monad::fem::scalar; using namespace monad::detail; +using namespace monad::material; using Types = std::tuple< LinearScalarDiffusiveKernel, diff --git a/tests/fem/operator/mechanical/linear_elastic_matrix_free_operator_test.cpp b/tests/fem/operator/mechanical/linear_elastic_dof_traits_test.cpp similarity index 64% rename from tests/fem/operator/mechanical/linear_elastic_matrix_free_operator_test.cpp rename to tests/fem/operator/mechanical/linear_elastic_dof_traits_test.cpp index cedaa94..7e0b0be 100644 --- a/tests/fem/operator/mechanical/linear_elastic_matrix_free_operator_test.cpp +++ b/tests/fem/operator/mechanical/linear_elastic_dof_traits_test.cpp @@ -1,25 +1,25 @@ #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" +#include "monad/grid/grid_aliases.hpp" +#include "monad/field/density_field.hpp" #include "monad/fem/kernel/mechanical/linear_elastic_kernel.hpp" +#include "monad/fem/operator/mechanical/linear_elastic_dof_traits.hpp" #include "monad/fem/operator/matrix_free_operator.hpp" -#include "monad/fem/operator/mechanical/linear_elastic_matrix_free_operator_traits.hpp" using namespace monad; +using namespace monad::field; using namespace monad::fem; using namespace monad::fem::mechanical; using Types = std::tuple; -TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticMatrixFreeOperator: Test isSymmetric/isPSD", "[monad]", Types) { +TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical: Test LinearElasticDofTraits", "[monad]", Types) { using Resolution = typename TestType::Resolution; using Size = typename TestType::Size; using Element = typename TestType::Element; using Kernel = LinearElasticKernel; - using Operator = MatrixFreeOperator>; + using Traits = LinearElasticDofTraits; + using Operator = MatrixFreeOperator; using Material = typename Kernel::Material; using StiffnessTensor = typename Material::MaterialTensor; @@ -29,8 +29,10 @@ TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticMatrixFreeOperator Size size; size.fill(0.5); - TestType grid(resolution, size); - grid.setDensitiesRandom(1234); + const TestType grid(resolution, size); + + DensityField densityField(resolution); + densityField.setRandom(1234); StiffnessTensor C = StiffnessTensor::Random(); // Make PSD @@ -43,7 +45,7 @@ TEMPLATE_LIST_TEST_CASE("monad::fem::mechanical::LinearElasticMatrixFreeOperator const auto nodes = grid.elementNodes(0); const auto elementKReference = Kernel::lhs(material, nodes); - const Operator K(grid, elementKReference); + const Operator K(grid, densityField, elementKReference); REQUIRE(K.isSymmetric()); REQUIRE(K.isPSD()); diff --git a/tests/fem/operator/multiphysics/linear_piezoelectric_dof_traits_test.cpp b/tests/fem/operator/multiphysics/linear_piezoelectric_dof_traits_test.cpp new file mode 100644 index 0000000..b898d7d --- /dev/null +++ b/tests/fem/operator/multiphysics/linear_piezoelectric_dof_traits_test.cpp @@ -0,0 +1,62 @@ +#include +#include +#include "monad/grid/grid_aliases.hpp" +#include "monad/field/density_field.hpp" +#include "monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp" +#include "monad/fem/operator/multiphysics/linear_piezoelectric_dof_traits.hpp" +#include "monad/fem/operator/matrix_free_operator.hpp" + +using namespace monad; +using namespace monad::field; +using namespace monad::fem; +using namespace monad::fem::multiphysics; + +using Types = std::tuple; + +TEMPLATE_LIST_TEST_CASE("monad::fem::multiphysics: Test LinearPiezoelectricDofTraits", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + using Element = typename TestType::Element; + using Kernel = LinearPiezoelectricKernel; + using Traits = LinearPiezoelectricDofTraits; + using Operator = MatrixFreeOperator; + using Material = typename Kernel::Material; + using StiffnessTensor = typename Material::StiffnessTensor; + using PermittivityTensor = typename Material::PermittivityTensor; + using CouplingTensor = typename Material::CouplingTensor; + + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.5); + + const TestType grid(resolution, size); + + DensityField densityField(resolution); + densityField.setRandom(1234); + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + const Material material(c, epsilon, d); + + const auto nodes = grid.elementNodes(0); + const auto elementKReference = Kernel::lhs(material, nodes); + + const Operator K(grid, densityField, elementKReference); + + REQUIRE(K.isSymmetric()); + REQUIRE(!K.isPSD()); +} diff --git a/tests/fem/operator/multiphysics/linear_piezoelectric_matrix_free_operator_test.cpp b/tests/fem/operator/multiphysics/linear_piezoelectric_matrix_free_operator_test.cpp deleted file mode 100644 index 7d900af..0000000 --- a/tests/fem/operator/multiphysics/linear_piezoelectric_matrix_free_operator_test.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include -#include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" -#include "monad/fem/kernel/multiphysics/linear_piezoelectric_kernel.hpp" -#include "monad/fem/operator/matrix_free_operator.hpp" -#include "monad/fem/operator/multiphysics/linear_piezoelectric_matrix_free_operator_traits.hpp" -#include "monad/material/mechanical/linear_elastic_material_2d.hpp" -#include "monad/material/mechanical/linear_elastic_material.hpp" -#include "monad/material/transport/linear_transport_material.hpp" - -using namespace monad; -using namespace monad::fem; -using namespace monad::fem::multiphysics; - -using Types = std::tuple; - -TEMPLATE_LIST_TEST_CASE("monad::fem::multiphysics::LinearPiezoelectricMatrixFreeOperator: Test isSymmetric/isPSD", "[monad]", Types) { - using Resolution = typename TestType::Resolution; - using Size = typename TestType::Size; - using Element = typename TestType::Element; - using Kernel = LinearPiezoelectricKernel; - using Operator = MatrixFreeOperator>; - using MechanicalMaterial = LinearElasticMaterial; - using ElectricalMaterial = LinearTransportMaterial; - using Material = typename Kernel::Material; - using StiffnessTensor = typename MechanicalMaterial::MaterialTensor; - using CouplingTensor = typename Material::CouplingTensor; - - Resolution resolution; - resolution.fill(2); - - Size size; - size.fill(0.5); - - TestType grid(resolution, size); - grid.setDensitiesRandom(1234); - - StiffnessTensor c = StiffnessTensor::Random(); - // Make PSD - c = c.transpose() * c; - // Make PD - c += StiffnessTensor::Identity(); - - const MechanicalMaterial elasticMaterial(c); - const ElectricalMaterial dielectricMaterial(2.1); - - const CouplingTensor d = 0.1 * CouplingTensor::Random(); - - const Material material(elasticMaterial, dielectricMaterial, d); - - const auto nodes = grid.elementNodes(0); - const auto elementKReference = Kernel::lhs(material, nodes); - - const Operator K(grid, elementKReference); - - REQUIRE(K.isSymmetric()); - REQUIRE(!K.isPSD()); -} diff --git a/tests/fem/operator/scalar/linear_scalar_diffusion_matrix_free_operator_traits_test.cpp b/tests/fem/operator/scalar/linear_scalar_diffusion_dof_traits_test.cpp similarity index 71% rename from tests/fem/operator/scalar/linear_scalar_diffusion_matrix_free_operator_traits_test.cpp rename to tests/fem/operator/scalar/linear_scalar_diffusion_dof_traits_test.cpp index 8a14a71..ce69051 100644 --- a/tests/fem/operator/scalar/linear_scalar_diffusion_matrix_free_operator_traits_test.cpp +++ b/tests/fem/operator/scalar/linear_scalar_diffusion_dof_traits_test.cpp @@ -1,14 +1,13 @@ #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" +#include "monad/grid/grid_aliases.hpp" +#include "monad/field/density_field.hpp" #include "monad/fem/kernel/scalar/linear_scalar_diffusive_kernel.hpp" #include "monad/fem/operator/matrix_free_operator.hpp" -#include "monad/fem/operator/scalar/linear_scalar_diffusive_matrix_free_operator_traits.hpp" +#include "monad/fem/operator/scalar/linear_scalar_diffusive_dof_traits.hpp" using namespace monad; +using namespace monad::field; using namespace monad::fem; using namespace monad::fem::scalar; @@ -29,13 +28,14 @@ using Types = std::tuple< TypePair >; -TEMPLATE_LIST_TEST_CASE("monad::fem::scalar::LinearScalarDiffusiveMatrixFreeOperator: Test isSymmetric/isPSD", "[monad]", Types) { +TEMPLATE_LIST_TEST_CASE("monad::fem::scalar: Test LinearScalarDiffusiveDofTraits", "[monad]", Types) { using Grid = typename TestType::Grid; using Resolution = typename Grid::Resolution; using Size = typename Grid::Size; using Element = typename Grid::Element; using Kernel = LinearScalarDiffusiveKernel; - using Operator = MatrixFreeOperator; + using Traits = LinearScalarDiffusiveDofTraits; + using Operator = MatrixFreeOperator; using Material = typename Kernel::Material; Resolution resolution; @@ -44,15 +44,17 @@ TEMPLATE_LIST_TEST_CASE("monad::fem::scalar::LinearScalarDiffusiveMatrixFreeOper Size size; size.fill(0.5); - Grid grid(resolution, size); - grid.setDensitiesRandom(1234); + const Grid grid(resolution, size); + + DensityField densityField(resolution); + densityField.setRandom(1234); const Material material(2.1); const auto nodes = grid.elementNodes(0); const auto elementKReference = Kernel::lhs(material, nodes); - const Operator K(grid, elementKReference); + const Operator K(grid, densityField, elementKReference); REQUIRE(K.isSymmetric()); REQUIRE(K.isPSD()); diff --git a/tests/grid/csv/bad1.csv b/tests/field/csv/bad1.csv similarity index 100% rename from tests/grid/csv/bad1.csv rename to tests/field/csv/bad1.csv diff --git a/tests/grid/csv/bad2.csv b/tests/field/csv/bad2.csv similarity index 100% rename from tests/grid/csv/bad2.csv rename to tests/field/csv/bad2.csv diff --git a/tests/grid/csv/bad3.csv b/tests/field/csv/bad3.csv similarity index 100% rename from tests/grid/csv/bad3.csv rename to tests/field/csv/bad3.csv diff --git a/tests/grid/csv/bad4.csv b/tests/field/csv/bad4.csv similarity index 100% rename from tests/grid/csv/bad4.csv rename to tests/field/csv/bad4.csv diff --git a/tests/grid/csv/bad5.csv b/tests/field/csv/bad5.csv similarity index 100% rename from tests/grid/csv/bad5.csv rename to tests/field/csv/bad5.csv diff --git a/tests/grid/csv/bad6.csv b/tests/field/csv/bad6.csv similarity index 100% rename from tests/grid/csv/bad6.csv rename to tests/field/csv/bad6.csv diff --git a/tests/grid/csv/good.csv b/tests/field/csv/good.csv similarity index 100% rename from tests/grid/csv/good.csv rename to tests/field/csv/good.csv diff --git a/tests/field/density_field_test.cpp b/tests/field/density_field_test.cpp new file mode 100644 index 0000000..fda5957 --- /dev/null +++ b/tests/field/density_field_test.cpp @@ -0,0 +1,282 @@ +#include +#include +#include +#include +#include +#include +#include +#include "monad/field/field_aliases.hpp" +#include "monad/detail/constants.hpp" + +using namespace monad; + +using Types = std::tuple; + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test initalization", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + SECTION("Invalid resolution") { + for (std::size_t i = 0; i < TestType::Dim; ++i) { + Resolution resolutionInvalid = resolution; + resolutionInvalid[i] = 0; + + REQUIRE_THROWS_AS(TestType(resolutionInvalid), std::invalid_argument); + } + } +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test resolution", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + const TestType densityField(resolution); + + const Resolution actual = densityField.resolution(); + + REQUIRE(actual == resolution); +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test numElements", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + const TestType densityField(resolution); + + const std::size_t actual = static_cast(std::pow(2.0, TestType::Dim)); + const std::size_t expected = densityField.numElements(); + + REQUIRE(actual == expected); +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test densities", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using DensityList = typename TestType::DensityList; + + Resolution resolution; + resolution.fill(2); + + const TestType densityField(resolution); + + const DensityList actual(densityField.numElements(), NUMERICAL_ZERO); + const DensityList expected = densityField.densities(); + + REQUIRE_THAT(actual, Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test getDensity/setDensity", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + TestType densityField(resolution); + + SECTION("No errors") { + REQUIRE_THAT(densityField.getDensity(1), Catch::Matchers::WithinAbs(NUMERICAL_ZERO, NUMERICAL_ZERO)); + + densityField.setDensity(1, 0.4); + + REQUIRE_THAT(densityField.getDensity(1), Catch::Matchers::WithinAbs(0.4, NUMERICAL_ZERO)); + } + + SECTION("Invalid index") { + const std::size_t badIndex = densityField.numElements(); + + REQUIRE_THROWS_AS(densityField.getDensity(badIndex), std::out_of_range); + REQUIRE_THROWS_AS(densityField.setDensity(badIndex, 0.4), std::out_of_range); + } + + SECTION("Invalid density") { + REQUIRE_THROWS_AS(densityField.setDensity(0, -0.1), std::invalid_argument); + REQUIRE_THROWS_AS(densityField.setDensity(0, 1.1), std::invalid_argument); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test setDensities", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using DensityList = typename TestType::DensityList; + + Resolution resolution; + resolution.fill(2); + + TestType densityField(resolution); + + DensityList densities(densityField.numElements(), 0.4); + + SECTION("No errors") { + densityField.setDensities(densities); + + REQUIRE_THAT(densityField.densities(), Catch::Matchers::Approx(densities).margin(NUMERICAL_ZERO)); + } + + SECTION("Invalid density") { + densities[0] = -0.1; + + REQUIRE_THROWS_AS(densityField.setDensities(densities), std::invalid_argument); + + densities[0] = 1.1; + + REQUIRE_THROWS_AS(densityField.setDensities(densities), std::invalid_argument); + } + + SECTION("Invalid size") { + densities.push_back(0.4); + + REQUIRE_THROWS_AS(densityField.setDensities(densities), std::invalid_argument); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test setConstant", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using DensityList = typename TestType::DensityList; + + Resolution resolution; + resolution.fill(2); + + TestType densityField(resolution); + + SECTION("No errors") { + DensityList expected(densityField.numElements(), 0.4); + + densityField.setConstant(0.4); + + REQUIRE_THAT(densityField.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); + } + + SECTION("Invalid density") { + REQUIRE_THROWS_AS(densityField.setConstant(-0.1), std::invalid_argument); + REQUIRE_THROWS_AS(densityField.setConstant(1.1), std::invalid_argument); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test setZeros", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + TestType densityField1(resolution); + TestType densityField2(resolution); + + densityField1.setConstant(0.0); + densityField2.setZeros(); + + REQUIRE(densityField1 == densityField2); +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test setOnes", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + TestType densityField1(resolution); + TestType densityField2(resolution); + + densityField1.setConstant(1.0); + densityField2.setOnes(); + + REQUIRE(densityField1 == densityField2); +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test setRandom", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using DensityList = typename TestType::DensityList; + + Resolution resolution; + resolution.fill(2); + + TestType densityField(resolution); + + densityField.setRandom(1234); + + if constexpr (TestType::Dim == 2) { + DensityList expected{ + 0.19151945020806033, + 0.49766366637723142, + 0.62210876648829061, + 0.8178384429351051, + }; + + REQUIRE_THAT(densityField.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); + } + + else { + DensityList expected{ + 0.19151945020806033, + 0.49766366637723142, + 0.62210876648829061, + 0.8178384429351051, + 0.43772773734240972, + 0.61211189362502472, + 0.78535858373748102, + 0.77135991905149071 + }; + + REQUIRE_THAT(densityField.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test translate", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + TestType densityField(resolution); + + densityField.setDensity(1, 0.4); + + if constexpr (TestType::Dim == 2) { + // Pre-shift: Point=(1,0) → Index=1 + // Post-shift: Point=(0,0) → Index=0 + densityField.translate({1, 2}); + + REQUIRE_THAT(densityField.getDensity(0), Catch::Matchers::WithinAbs(0.4, NUMERICAL_ZERO)); + } + + else { + // Pre-shift: Point=(1,0,0) → Index=1 + // Post-shift: Point=(0,0,1) → Index=4 + densityField.translate({1, 2, 3}); + + REQUIRE_THAT(densityField.getDensity(4), Catch::Matchers::WithinAbs(0.4, NUMERICAL_ZERO)); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test operator==", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + TestType densityField1(resolution); + densityField1.setConstant(0.4); + + TestType densityField2(resolution); + densityField2.setConstant(0.4); + + REQUIRE(densityField1 == densityField2); +} + +TEMPLATE_LIST_TEST_CASE("monad::DensityField: Test operator!=", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + + Resolution resolution; + resolution.fill(2); + + TestType densityField1(resolution); + densityField1.setConstant(0.4); + + TestType densityField2(resolution); + densityField2.setConstant(0.5); + + REQUIRE(densityField1 != densityField2); +} diff --git a/tests/field/make_density_field_from_csv_test.cpp b/tests/field/make_density_field_from_csv_test.cpp new file mode 100644 index 0000000..d7407f8 --- /dev/null +++ b/tests/field/make_density_field_from_csv_test.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include +#include "monad/field/field_aliases.hpp" +#include "monad/field/make_density_field_from_csv.hpp" + +using namespace monad; + +TEST_CASE("monad: Test makeDensityFieldFromCsv", "[monad]") { + using DensityList = typename DensityField2d::DensityList; + + DensityField2d densityField({2, 3}); + + const auto folder = std::filesystem::path(__FILE__).parent_path() / "csv"; + + SECTION("No errors") { + const auto file = folder / "good.csv"; + + auto densityField = makeDensityFieldFromCsv(file.string()); + + const DensityList expected { + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 0.6 + }; + + REQUIRE_THAT(densityField.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); + } + + SECTION("Invalid csv data") { + // data < 0 + auto file = folder / "bad1.csv"; + + REQUIRE_THROWS_AS(makeDensityFieldFromCsv(file.string()), std::runtime_error); + + // data > 1 + file = folder / "bad2.csv"; + + REQUIRE_THROWS_AS(makeDensityFieldFromCsv(file.string()), std::runtime_error); + + // not enough data + file = folder / "bad3.csv"; + + REQUIRE_THROWS_AS(makeDensityFieldFromCsv(file.string()), std::runtime_error); + + // too much data + file = folder / "bad4.csv"; + + REQUIRE_THROWS_AS(makeDensityFieldFromCsv(file.string()), std::runtime_error); + + // no data + file = folder / "bad5.csv"; + + REQUIRE_THROWS_AS(makeDensityFieldFromCsv(file.string()), std::runtime_error); + + // non-numeric data + file = folder / "bad6.csv"; + + REQUIRE_THROWS_AS(makeDensityFieldFromCsv(file.string()), std::runtime_error); + } +} diff --git a/tests/field/make_density_field_from_function_test.cpp b/tests/field/make_density_field_from_function_test.cpp new file mode 100644 index 0000000..2487e9e --- /dev/null +++ b/tests/field/make_density_field_from_function_test.cpp @@ -0,0 +1,49 @@ +#include +#include +#include +#include +#include "monad/grid/grid_aliases.hpp" +#include "monad/field/make_density_field_from_function.hpp" + +using namespace monad; + +using Types = std::tuple; + +TEMPLATE_LIST_TEST_CASE("monad: Test makeDensityFieldFromFunction", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + using Point = typename TestType::Point; + + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.4); + + const TestType grid(resolution, size); + + SECTION("No errors") { + // f(x)=0.1Σᵢxᵢ + auto f = [](const Point &x) -> double { + return 0.1 * x.sum(); + }; + + const auto densityField = makeDensityFieldFromFunction(grid, f); + + // The average of a linear function over a convex region equals its value at the centroid + const auto nodes = grid.elementNodes(1); + const Point centroid = nodes.colwise().mean(); + const double expected = f(centroid); + + REQUIRE_THAT(densityField.getDensity(1), Catch::Matchers::WithinAbs(expected, NUMERICAL_ZERO)); + } + + SECTION("Bad function") { + // f(x)=exp(Σᵢxᵢ) + auto f = [](const Point &x) -> double { + return std::exp(x.sum()); + }; + + REQUIRE_THROWS_AS(makeDensityFieldFromFunction(grid, f), std::invalid_argument); + } +} diff --git a/tests/grid/grid_2d_test.cpp b/tests/grid/grid_2d_test.cpp deleted file mode 100644 index 841db9a..0000000 --- a/tests/grid/grid_2d_test.cpp +++ /dev/null @@ -1,620 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/detail/constants.hpp" -#include "test_common.hpp" - -using namespace monad; -using namespace monad::testing; - -using Types = std::tuple; - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test initalization", "[monad]", Types) { - SECTION("Invalid resolution") { - REQUIRE_THROWS_AS(TestType({0, 3}, {0.5, 1.5}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 0}, {0.5, 1.5}), std::invalid_argument); - } - - SECTION("Invalid size") { - REQUIRE_THROWS_AS(TestType({2, 3}, {0.0, 1.5}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3}, {-0.5, 1.5}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3}, {0.5, 0.0}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3}, {0.5, -1.5}), std::invalid_argument); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test resolution", "[monad]", Types) { - using Resolution = typename TestType::Resolution; - - const TestType grid({2, 3}, {0.5, 1.5}); - - const Resolution expected{2, 3}; - - REQUIRE(grid.resolution() == expected); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test size", "[monad]", Types) { - using Size = typename TestType::Size; - - const TestType grid({2, 3}, {0.5, 1.5}); - - const Size expected{0.5, 1.5}; - - REQUIRE(grid.size() == expected); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test densities", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - const TestType grid({2, 3}, {0.5, 1.5}); - - const DensityList expected(6, 0.0); - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test numElements", "[monad]", Types) { - const TestType grid({2, 3}, {0.5, 1.5}); - - REQUIRE(grid.numElements() == 6); -} - -TEST_CASE("monad::Grid2d: Test numNodes", "[monad]") { - SECTION("Quad4Grid") { - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - REQUIRE(grid.numNodes() == 12); - } - - SECTION("Quad8Grid") { - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - REQUIRE(grid.numNodes() == 29); - } -} - -TEST_CASE("monad::Grid2d: Test numPeriodicNodes", "[monad]") { - SECTION("Quad4Grid") { - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - REQUIRE(grid.numPeriodicNodes() == 6); - } - - SECTION("Quad8Grid") { - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - REQUIRE(grid.numPeriodicNodes() == 18); - } -} - -TEST_CASE("monad::Grid2d: Test node", "[monad]") { - SECTION("Quad4Grid") { - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const Quad4Grid::Point expected(0.25, 0.0); - - REQUIRE(grid.node(1).isApprox(expected, NUMERICAL_ZERO)); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.node(grid.numNodes()), std::out_of_range); - } - } - - SECTION("Quad8Grid") { - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const Quad8Grid::Point expected(0.25, 0.0); - - REQUIRE(grid.node(1).isApprox(expected, NUMERICAL_ZERO)); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.node(grid.numNodes()), std::out_of_range); - } - } -} - -TEST_CASE("monad::Grid2d: Test nodes", "[monad]") { - SECTION("Quad4Grid") { - using NodesList = typename Quad4Grid::NodesList; - - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - const auto actual = grid.nodes(); - - const NodesList expected { - {0.0, 0.0}, - {0.25, 0.0}, - {0.5, 0.0}, - {0.0, 0.5}, - {0.25, 0.5}, - {0.5, 0.5}, - {0.0, 1.0}, - {0.25, 1.0}, - {0.5, 1.0}, - {0.0, 1.5}, - {0.25, 1.5}, - {0.5, 1.5} - }; - - REQUIRE(actual.size() == expected.size()); - - for (std::size_t i = 0; i < actual.size(); ++i) { - REQUIRE(actual[i].isApprox(expected[i], NUMERICAL_ZERO)); - } - } - - SECTION("Quad8Grid") { - using NodesList = typename Quad8Grid::NodesList; - - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - const auto actual = grid.nodes(); - - const NodesList expected { - {0.0, 0.0}, - {0.25, 0.0}, - {0.5, 0.0}, - {0.0, 0.5}, - {0.25, 0.5}, - {0.5, 0.5}, - {0.0, 1.0}, - {0.25, 1.0}, - {0.5, 1.0}, - {0.0, 1.5}, - {0.25, 1.5}, - {0.5, 1.5}, - {0.125, 0.0}, - {0.375, 0.0}, - {0.125, 0.5}, - {0.375, 0.5}, - {0.125, 1.0}, - {0.375, 1.0}, - {0.125, 1.5}, - {0.375, 1.5}, - {0.0, 0.25}, - {0.25, 0.25}, - {0.5, 0.25}, - {0.0, 0.75}, - {0.25, 0.75}, - {0.5, 0.75}, - {0.0, 1.25}, - {0.25, 1.25}, - {0.5, 1.25} - }; - - REQUIRE(actual.size() == expected.size()); - - for (std::size_t i = 0; i < actual.size(); ++i) { - REQUIRE(actual[i].isApprox(expected[i], NUMERICAL_ZERO)); - } - } -} - -TEST_CASE("monad::Grid2d: Test element", "[monad]") { - SECTION("Quad4Grid") { - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const Quad4Grid::ElementList expected{1, 2, 5, 4}; - - REQUIRE(grid.element(1) == expected); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.element(grid.numElements()), std::out_of_range); - } - } - - SECTION("Quad8Grid") { - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const Quad8Grid::ElementList expected{1, 2, 5, 4, 13, 22, 15, 21}; - - REQUIRE(grid.element(1) == expected); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.element(grid.numElements()), std::out_of_range); - } - } -} - -TEST_CASE("monad::Grid2d: Test elements", "[monad]") { - SECTION("Quad4Grid") { - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - const Quad4Grid::ElementsList expected { - {0, 1, 4, 3}, - {1, 2, 5, 4}, - {3, 4, 7, 6}, - {4, 5, 8, 7}, - {6, 7, 10, 9}, - {7, 8, 11, 10} - }; - - REQUIRE(grid.elements() == expected); - } - - SECTION("Quad8Grid") { - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - const Quad8Grid::ElementsList expected { - {0, 1, 4, 3, 12, 21, 14, 20}, - {1, 2, 5, 4, 13, 22, 15, 21}, - {3, 4, 7, 6, 14, 24, 16, 23}, - {4, 5, 8, 7, 15, 25, 17, 24}, - {6, 7, 10, 9, 16, 27, 18, 26}, - {7, 8, 11, 10, 17, 28, 19, 27} - }; - - REQUIRE(grid.elements() == expected); - } -} - -TEST_CASE("monad::Grid2d: Test periodicElement", "[monad]") { - SECTION("Quad4Grid") { - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const Quad4Grid::ElementList expected{1, 0, 2, 3}; - - REQUIRE(grid.periodicElement(1) == expected); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.periodicElement(grid.numElements()), std::out_of_range); - } - } - - SECTION("Quad8Grid") { - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const Quad8Grid::ElementList expected{1, 0, 2, 3, 7, 12, 9, 13}; - - REQUIRE(grid.periodicElement(1) == expected); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.periodicElement(grid.numElements()), std::out_of_range); - } - } -} - -TEST_CASE("monad::Grid2d: Test periodicElements", "[monad]") { - SECTION("Quad4Grid") { - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - const Quad4Grid::ElementsList expected { - {0, 1, 3, 2}, - {1, 0, 2, 3}, - {2, 3, 5, 4}, - {3, 2, 4, 5}, - {4, 5, 1, 0}, - {5, 4, 0, 1} - }; - - REQUIRE(grid.periodicElements() == expected); - } - - SECTION("Quad8Grid") { - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - const Quad8Grid::ElementsList expected { - {0, 1, 3, 2, 6, 13, 8, 12}, - {1, 0, 2, 3, 7, 12, 9, 13}, - {2, 3, 5, 4, 8, 15, 10, 14}, - {3, 2, 4, 5, 9, 14, 11, 15}, - {4, 5, 1, 0, 10, 17, 6, 16}, - {5, 4, 0, 1, 11, 16, 7, 17} - }; - - REQUIRE(grid.periodicElements() == expected); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test getDensity/setDensity", "[monad]", Types) { - TestType grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - REQUIRE_THAT(grid.getDensity(1), Catch::Matchers::WithinAbs(0.0, NUMERICAL_ZERO)); - - grid.setDensity(1, 0.1); - - REQUIRE_THAT(grid.getDensity(1), Catch::Matchers::WithinAbs(0.1, NUMERICAL_ZERO)); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.getDensity(grid.numElements()), std::out_of_range); - - REQUIRE_THROWS_AS(grid.setDensity(grid.numElements(), 0.1), std::out_of_range); - } - - SECTION("Invalid density") { - REQUIRE_THROWS_AS(grid.setDensity(1, -0.1), std::invalid_argument); - REQUIRE_THROWS_AS(grid.setDensity(1, 1.1), std::invalid_argument); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test setDensities", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const DensityList densities(grid.numElements(), 0.5); - - grid.setDensities(densities); - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(densities).margin(NUMERICAL_ZERO)); - } - - SECTION("Invalid size") { - const DensityList densities(grid.numElements() + 1, 0.5); - - REQUIRE_THROWS_AS(grid.setDensities(densities), std::invalid_argument); - } - - SECTION("Invalid density") { - DensityList densities(grid.numElements(), 0.5); - densities[1] *= -1; - - REQUIRE_THROWS_AS(grid.setDensities(densities), std::invalid_argument); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test setDensitiesConstant", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - grid.setDensitiesConstant(0.5); - - const DensityList expected(grid.numElements(), 0.5); - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); - } - - SECTION("Invalid density") { - REQUIRE_THROWS_AS(grid.setDensitiesConstant(-0.1), std::invalid_argument); - REQUIRE_THROWS_AS(grid.setDensitiesConstant(1.1), std::invalid_argument); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test setDensitiesZeros", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3}, {0.5, 1.5}); - - grid.setDensitiesZeros(); - - const DensityList expected(grid.numElements(), 0.0); - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test setDensitiesOnes", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3}, {0.5, 1.5}); - - grid.setDensitiesOnes(); - - const DensityList expected(grid.numElements(), 1.0); - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test setDensitiesRandom", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3}, {0.5, 1.5}); - - grid.setDensitiesRandom(1234); - - const DensityList expected { - 0.49766366630595177, - 0.81783844288953345, - 0.61211189358442286, - 0.77135991905475021, - 0.86066977348643747, - 0.15063696570521984 - }; - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test setDensitiesFunction", "[monad]", Types) { - using Point = typename TestType::Point; - - TestType grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - // 0.1x+0.2y - auto f = [](const Point &p) -> double { - return 0.1 * p(0) + 0.2 * p(1); - }; - - grid.setDensitiesFunction(f); - - // The average of a linear function over a convex region equals its value at the centroid - const auto nodes = grid.elementNodes(1); - const Point centroid = nodes.colwise().mean(); - const double expected = f(centroid); - - REQUIRE_THAT(grid.getDensity(1), Catch::Matchers::WithinAbs(expected, NUMERICAL_ZERO)); - } - - SECTION("Bad function") { - // exp(x+y) - auto f = [](const Point &point) -> double { - const double x = point(0); - const double y = point(1); - - return std::exp(x + y); - }; - - REQUIRE_THROWS_AS(grid.setDensitiesFunction(f), std::invalid_argument); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test setDensitiesFile", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3}, {0.5, 1.5}); - - const auto folder = std::filesystem::path(__FILE__).parent_path() / "csv"; - - SECTION("No errors") { - const auto file = folder / "good.csv"; - - grid.setDensitiesFile(file.string()); - - const DensityList expected { - 0.1, - 0.2, - 0.3, - 0.4, - 0.5, - 0.6 - }; - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); - } - - SECTION("Invalid csv data") { - // data < 0 - auto file = folder / "bad1.csv"; - - REQUIRE_THROWS_AS(grid.setDensitiesFile(file.string()), std::runtime_error); - - // data > 1 - file = folder / "bad2.csv"; - - REQUIRE_THROWS_AS(grid.setDensitiesFile(file.string()), std::runtime_error); - - // not enough data - file = folder / "bad3.csv"; - - REQUIRE_THROWS_AS(grid.setDensitiesFile(file.string()), std::runtime_error); - - // too much data - file = folder / "bad4.csv"; - - REQUIRE_THROWS_AS(grid.setDensitiesFile(file.string()), std::runtime_error); - - // no data - file = folder / "bad5.csv"; - - REQUIRE_THROWS_AS(grid.setDensitiesFile(file.string()), std::runtime_error); - - // non-numeric data - file = folder / "bad6.csv"; - - REQUIRE_THROWS_AS(grid.setDensitiesFile(file.string()), std::runtime_error); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test translate", "[monad]", Types) { - TestType grid({2, 3}, {0.5, 1.5}); - - // Index=1 → Point=(1,0) - grid.setDensity(1, 0.5); - - // Point=(0,2) - grid.translate({1, 2}); - - REQUIRE_THAT(grid.getDensity(4), Catch::Matchers::WithinAbs(0.5, NUMERICAL_ZERO)); -} - -TEST_CASE("monad::Grid2d: Test elementNodes", "[monad]") { - SECTION("Quad4Grid") { - const Quad4Grid grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const Quad4Grid::NodesMatrix expected { - {0.25, 0.0}, - {0.5, 0.0}, - {0.5, 0.5}, - {0.25, 0.5} - }; - - REQUIRE(grid.elementNodes(1).isApprox(expected, NUMERICAL_ZERO)); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.elementNodes(grid.numElements()), std::out_of_range); - } - } - - SECTION("Quad8Grid") { - const Quad8Grid grid({2, 3}, {0.5, 1.5}); - - SECTION("No errors") { - const Quad8Grid::NodesMatrix expected { - {0.25, 0.0}, - {0.5, 0.0}, - {0.5, 0.5}, - {0.25, 0.5}, - {0.375, 0.0}, - {0.5, 0.25}, - {0.375, 0.5}, - {0.25, 0.25} - }; - - REQUIRE(grid.elementNodes(1).isApprox(expected, NUMERICAL_ZERO)); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.elementNodes(grid.numElements()), std::out_of_range); - } - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test measure/area", "[monad]", Types) { - const TestType grid({2, 3}, {0.5, 1.5}); - - REQUIRE_THAT(grid.measure(), Catch::Matchers::WithinAbs(0.75, NUMERICAL_ZERO)); - REQUIRE_THAT(grid.area(), Catch::Matchers::WithinAbs(0.75, NUMERICAL_ZERO)); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test operator==", "[monad]", Types) { - const TestType grid1({2, 3}, {0.5, 1.5}); - const TestType grid2({2, 3}, {0.5, 1.5}); - - REQUIRE(grid1 == grid2); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid2d: Test operator!=", "[monad]", Types) { - const TestType grid1({2, 3}, {0.5, 1.5}); - - SECTION("Different resolution") { - const TestType grid2({3, 3}, {0.5, 1.5}); - const TestType grid3({2, 4}, {0.5, 1.5}); - - REQUIRE(grid1 != grid2); - REQUIRE(grid1 != grid3); - } - - SECTION("Different size") { - const TestType grid2({2, 3}, {0.6, 1.5}); - const TestType grid3({2, 3}, {0.5, 1.6}); - - REQUIRE(grid1 != grid2); - REQUIRE(grid1 != grid3); - } -} diff --git a/tests/grid/hex20_topology_test.cpp b/tests/grid/hex20_topology_test.cpp new file mode 100644 index 0000000..8bc4539 --- /dev/null +++ b/tests/grid/hex20_topology_test.cpp @@ -0,0 +1,35 @@ +#include +#include "monad/grid/hex20_topology.hpp" +#include "monad/detail/constants.hpp" + +using namespace monad; +using namespace monad::grid; + +TEST_CASE("monad::grid::Hex20Topology: test numNodes", "[monad]") { + REQUIRE(Hex20Topology::numNodes({2, 3, 4}) == 193); +} + +TEST_CASE("monad::grid::Hex20Topology: test numPeriodicNodes", "[monad]") { + REQUIRE(Hex20Topology::numPeriodicNodes({2, 3, 4}) == 96); +} + +TEST_CASE("monad::grid::Hex20Topology: test node", "[monad]") { + const Hex20Topology::Point expected(0.25, 0.0, 0.0); + const Hex20Topology::Point actual = Hex20Topology::node(1, {2, 3, 4}, {0.5, 1.5, 2.0}); + + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); +} + +TEST_CASE("monad::grid::Hex20Topology: test element", "[monad]") { + const Hex20Topology::ElementList expected{1, 2, 5, 4, 13, 14, 17, 16, 61, 102, 63, 101, 69, 111, 71, 110, 146, 147, 150, 149}; + const Hex20Topology::ElementList actual = Hex20Topology::element(1, {2, 3, 4}); + + REQUIRE(actual == expected); +} + +TEST_CASE("monad::grid::Hex20Topology: test periodicElement", "[monad]") { + const Hex20Topology::ElementList expected{1, 0, 2, 3, 7, 6, 8, 9, 25, 48, 27, 49, 31, 54, 33, 55, 73, 72, 74, 75}; + const Hex20Topology::ElementList actual = Hex20Topology::periodicElement(1, {2, 3, 4}); + + REQUIRE(actual == expected); +} diff --git a/tests/grid/hex8_topology_test.cpp b/tests/grid/hex8_topology_test.cpp new file mode 100644 index 0000000..1aa046b --- /dev/null +++ b/tests/grid/hex8_topology_test.cpp @@ -0,0 +1,35 @@ +#include +#include "monad/grid/hex8_topology.hpp" +#include "monad/detail/constants.hpp" + +using namespace monad; +using namespace monad::grid; + +TEST_CASE("monad::grid::Hex8Topology: test numNodes", "[monad]") { + REQUIRE(Hex8Topology::numNodes({2, 3, 4}) == 60); +} + +TEST_CASE("monad::grid::Hex8Topology: test numPeriodicNodes", "[monad]") { + REQUIRE(Hex8Topology::numPeriodicNodes({2, 3, 4}) == 24); +} + +TEST_CASE("monad::grid::Hex8Topology: test node", "[monad]") { + const Hex8Topology::Point expected(0.25, 0.0, 0.0); + const Hex8Topology::Point actual = Hex8Topology::node(1, {2, 3, 4}, {0.5, 1.5, 2.0}); + + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); +} + +TEST_CASE("monad::grid::Hex8Topology: test element", "[monad]") { + const Hex8Topology::ElementList expected{1, 2, 5, 4, 13, 14, 17, 16}; + const Hex8Topology::ElementList actual = Hex8Topology::element(1, {2, 3, 4}); + + REQUIRE(actual == expected); +} + +TEST_CASE("monad::grid::Hex8Topology: test periodicElement", "[monad]") { + const Hex8Topology::ElementList expected{1, 0, 2, 3, 7, 6, 8, 9}; + const Hex8Topology::ElementList actual = Hex8Topology::periodicElement(1, {2, 3, 4}); + + REQUIRE(actual == expected); +} diff --git a/tests/grid/quad4_topology_test.cpp b/tests/grid/quad4_topology_test.cpp new file mode 100644 index 0000000..1e103b4 --- /dev/null +++ b/tests/grid/quad4_topology_test.cpp @@ -0,0 +1,35 @@ +#include +#include "monad/grid/quad4_topology.hpp" +#include "monad/detail/constants.hpp" + +using namespace monad; +using namespace monad::grid; + +TEST_CASE("monad::grid::Quad4Topology: test numNodes", "[monad]") { + REQUIRE(Quad4Topology::numNodes({2, 3}) == 12); +} + +TEST_CASE("monad::grid::Quad4Topology: test numPeriodicNodes", "[monad]") { + REQUIRE(Quad4Topology::numPeriodicNodes({2, 3}) == 6); +} + +TEST_CASE("monad::grid::Quad4Topology: test node", "[monad]") { + const Quad4Topology::Point expected(0.25, 0.0); + const Quad4Topology::Point actual = Quad4Topology::node(1, {2, 3}, {0.5, 1.5}); + + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); +} + +TEST_CASE("monad::grid::Quad4Topology: test element", "[monad]") { + const Quad4Topology::ElementList expected{1, 2, 5, 4}; + const Quad4Topology::ElementList actual = Quad4Topology::element(1, {2, 3}); + + REQUIRE(actual == expected); +} + +TEST_CASE("monad::grid::Quad4Topology: test periodicElement", "[monad]") { + const Quad4Topology::ElementList expected{1, 0, 2, 3}; + const Quad4Topology::ElementList actual = Quad4Topology::periodicElement(1, {2, 3}); + + REQUIRE(actual == expected); +} diff --git a/tests/grid/quad8_topology_test.cpp b/tests/grid/quad8_topology_test.cpp new file mode 100644 index 0000000..1d13bc7 --- /dev/null +++ b/tests/grid/quad8_topology_test.cpp @@ -0,0 +1,35 @@ +#include +#include "monad/grid/quad8_topology.hpp" +#include "monad/detail/constants.hpp" + +using namespace monad; +using namespace monad::grid; + +TEST_CASE("monad::grid::Quad8Topology: test numNodes", "[monad]") { + REQUIRE(Quad8Topology::numNodes({2, 3}) == 29); +} + +TEST_CASE("monad::grid::Quad8Topology: test numPeriodicNodes", "[monad]") { + REQUIRE(Quad8Topology::numPeriodicNodes({2, 3}) == 18); +} + +TEST_CASE("monad::grid::Quad8Topology: test node", "[monad]") { + const Quad8Topology::Point expected(0.25, 0.0); + const Quad8Topology::Point actual = Quad8Topology::node(1, {2, 3}, {0.5, 1.5}); + + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); +} + +TEST_CASE("monad::grid::Quad8Topology: test element", "[monad]") { + const Quad8Topology::ElementList expected{1, 2, 5, 4, 13, 22, 15, 21}; + const Quad8Topology::ElementList actual = Quad8Topology::element(1, {2, 3}); + + REQUIRE(actual == expected); +} + +TEST_CASE("monad::grid::Quad8Topology: test periodicElement", "[monad]") { + const Quad8Topology::ElementList expected{1, 0, 2, 3, 7, 12, 9, 13}; + const Quad8Topology::ElementList actual = Quad8Topology::periodicElement(1, {2, 3}); + + REQUIRE(actual == expected); +} diff --git a/tests/grid/grid_3d_test.cpp b/tests/grid/structured_grid_test.cpp similarity index 60% rename from tests/grid/grid_3d_test.cpp rename to tests/grid/structured_grid_test.cpp index c0d3e27..479474d 100644 --- a/tests/grid/grid_3d_test.cpp +++ b/tests/grid/structured_grid_test.cpp @@ -1,140 +1,245 @@ #include #include -#include #include +#include #include #include -#include #include -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" +#include "monad/grid/grid_aliases.hpp" #include "monad/detail/constants.hpp" -#include "test_common.hpp" using namespace monad; -using namespace monad::testing; -using Types = std::tuple; +using Types = std::tuple; + +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test initalization", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.4); -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test initalization", "[monad]", Types) { SECTION("Invalid resolution") { - REQUIRE_THROWS_AS(TestType({0, 3, 4}, {0.5, 1.5, 2.0}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 0, 4}, {0.5, 1.5, 2.0}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3, 0}, {0.5, 1.5, 2.0}), std::invalid_argument); + for (std::size_t i = 0; i < TestType::Dim; ++i) { + Resolution resolutionInvalid = resolution; + resolutionInvalid[i] = 0; + + REQUIRE_THROWS_AS(TestType(resolutionInvalid, size), std::invalid_argument); + } } SECTION("Invalid size") { - REQUIRE_THROWS_AS(TestType({2, 3, 4}, {0.0, 1.5, 2.0}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3, 4}, {-0.5, 1.5, 2.0}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3, 4}, {0.5, 0.0, 2.0}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3, 4}, {0.5, -1.5, 2.0}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3, 4}, {0.5, 1.5, 0.0}), std::invalid_argument); - REQUIRE_THROWS_AS(TestType({2, 3, 4}, {0.5, 1.5, -2.0}), std::invalid_argument); + for (std::size_t i = 0; i < TestType::Dim; ++i) { + Size sizeInvalid = size; + sizeInvalid[i] = 0.0; + + REQUIRE_THROWS_AS(TestType(resolution, sizeInvalid), std::invalid_argument); + + sizeInvalid[i] = -1.0; + + REQUIRE_THROWS_AS(TestType(resolution, sizeInvalid), std::invalid_argument); + } } } -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test resolution", "[monad]", Types) { +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test resolution", "[monad]", Types) { using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + + Resolution resolution; + resolution.fill(2); - const TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); + Size size; + size.fill(0.4); - const Resolution expected{2, 3, 4}; + const TestType grid(resolution, size); - REQUIRE(grid.resolution() == expected); + REQUIRE(grid.resolution() == resolution); } -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test size", "[monad]", Types) { +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test size", "[monad]", Types) { + using Resolution = typename TestType::Resolution; using Size = typename TestType::Size; - const TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.4); - const Size expected{0.5, 1.5, 2.0}; + const TestType grid(resolution, size); - REQUIRE(grid.size() == expected); + REQUIRE(grid.size() == size); } -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test densities", "[monad]", Types) { - using DensityList = typename TestType::DensityList; +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test numElements", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.4); - const TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); + const TestType grid(resolution, size); - const DensityList expected(24, 0.0); + const std::size_t expected = static_cast(std::pow(2.0, TestType::Dim)); + const std::size_t actual = grid.numElements(); - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); + REQUIRE(actual == expected); } -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test numElements", "[monad]", Types) { - const TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test numNodes", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + using Topology = typename TestType::Topology; - REQUIRE(grid.numElements() == 24); + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.4); + + const TestType grid(resolution, size); + + const std::size_t expected = Topology::numNodes(resolution); + const std::size_t actual = grid.numNodes(); + + REQUIRE(actual == expected); } -TEST_CASE("monad::Grid3d: Test numNodes", "[monad]") { - SECTION("Hex8Grid") { - const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test numPeriodicNodes", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + using Topology = typename TestType::Topology; - REQUIRE(grid.numNodes() == 60); - } + Resolution resolution; + resolution.fill(2); - SECTION("Hex20Grid") { - const Hex20Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); + Size size; + size.fill(0.4); - REQUIRE(grid.numNodes() == 193); - } + const TestType grid(resolution, size); + + const std::size_t expected = Topology::numPeriodicNodes(resolution); + const std::size_t actual = grid.numPeriodicNodes(); + + REQUIRE(actual == expected); } -TEST_CASE("monad::Grid3d: Test numPeriodicNodes", "[monad]") { - SECTION("Hex8Grid") { - const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test node", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + using Topology = typename TestType::Topology; + using Point = typename TestType::Point; - REQUIRE(grid.numPeriodicNodes() == 24); - } + Resolution resolution; + resolution.fill(2); - SECTION("Hex20Grid") { - const Hex20Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); + Size size; + size.fill(0.4); - REQUIRE(grid.numPeriodicNodes() == 96); + const TestType grid(resolution, size); + + SECTION("No errors") { + const Point expected = Topology::node(1, resolution, size); + const Point actual = grid.node(1); + + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); + } + + SECTION("Invalid index") { + const std::size_t badIndex = grid.numNodes(); + + REQUIRE_THROWS_AS(grid.node(badIndex), std::out_of_range); } } -TEST_CASE("monad::Grid3d: Test node", "[monad]") { - SECTION("Hex8Grid") { - const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); +TEST_CASE("monad::grid::StructuredGrid: Test nodes", "[monad]") { + SECTION("Quad4Grid") { + using NodesList = typename Quad4Grid::NodesList; - SECTION("No errors") { - const Hex8Grid::Point expected(0.25, 0.0, 0.0); + const Quad4Grid grid({2, 3}, {0.5, 1.5}); - REQUIRE(grid.node(1).isApprox(expected, NUMERICAL_ZERO)); - } + const NodesList expected { + {0.0, 0.0}, + {0.25, 0.0}, + {0.5, 0.0}, + {0.0, 0.5}, + {0.25, 0.5}, + {0.5, 0.5}, + {0.0, 1.0}, + {0.25, 1.0}, + {0.5, 1.0}, + {0.0, 1.5}, + {0.25, 1.5}, + {0.5, 1.5} + }; - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.node(grid.numNodes()), std::out_of_range); + const auto actual = grid.nodes(); + + REQUIRE(actual.size() == expected.size()); + + for (std::size_t i = 0; i < actual.size(); ++i) { + REQUIRE(actual[i].isApprox(expected[i], NUMERICAL_ZERO)); } } - SECTION("Hex20Grid") { - const Hex20Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); + SECTION("Quad8Grid") { + using NodesList = typename Quad8Grid::NodesList; - SECTION("No errors") { - const Hex20Grid::Point expected(0.25, 0.0, 0.0); + const Quad8Grid grid({2, 3}, {0.5, 1.5}); - REQUIRE(grid.node(1).isApprox(expected, NUMERICAL_ZERO)); - } + const NodesList expected { + {0.0, 0.0}, + {0.25, 0.0}, + {0.5, 0.0}, + {0.0, 0.5}, + {0.25, 0.5}, + {0.5, 0.5}, + {0.0, 1.0}, + {0.25, 1.0}, + {0.5, 1.0}, + {0.0, 1.5}, + {0.25, 1.5}, + {0.5, 1.5}, + {0.125, 0.0}, + {0.375, 0.0}, + {0.125, 0.5}, + {0.375, 0.5}, + {0.125, 1.0}, + {0.375, 1.0}, + {0.125, 1.5}, + {0.375, 1.5}, + {0.0, 0.25}, + {0.25, 0.25}, + {0.5, 0.25}, + {0.0, 0.75}, + {0.25, 0.75}, + {0.5, 0.75}, + {0.0, 1.25}, + {0.25, 1.25}, + {0.5, 1.25} + }; - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.node(grid.numNodes()), std::out_of_range); + const auto actual = grid.nodes(); + + REQUIRE(actual.size() == expected.size()); + + for (std::size_t i = 0; i < actual.size(); ++i) { + REQUIRE(actual[i].isApprox(expected[i], NUMERICAL_ZERO)); } } -} -TEST_CASE("monad::Grid3d: Test nodes", "[monad]") { SECTION("Hex8Grid") { using NodesList = typename Hex8Grid::NodesList; const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); - const auto actual = grid.nodes(); - const NodesList expected { {0.0, 0.0, 0.0}, {0.25, 0.0, 0.0}, @@ -198,6 +303,8 @@ TEST_CASE("monad::Grid3d: Test nodes", "[monad]") { {0.5, 1.5, 2.0} }; + const auto actual = grid.nodes(); + REQUIRE(actual.size() == expected.size()); for (std::size_t i = 0; i < actual.size(); ++i) { @@ -210,8 +317,6 @@ TEST_CASE("monad::Grid3d: Test nodes", "[monad]") { const Hex20Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); - const auto actual = grid.nodes(); - const NodesList expected { {0.0, 0.0, 0.0}, {0.25, 0.0, 0.0}, @@ -408,6 +513,8 @@ TEST_CASE("monad::Grid3d: Test nodes", "[monad]") { {0.5, 1.5, 1.75} }; + const auto actual = grid.nodes(); + REQUIRE(actual.size() == expected.size()); for (std::size_t i = 0; i < actual.size(); ++i) { @@ -416,37 +523,65 @@ TEST_CASE("monad::Grid3d: Test nodes", "[monad]") { } } -TEST_CASE("monad::Grid3d: Test element", "[monad]") { - SECTION("Hex8Grid") { - const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test element", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + using Topology = typename TestType::Topology; + using ElementList = typename TestType::ElementList; - SECTION("No errors") { - const Hex8Grid::ElementList expected{1, 2, 5, 4, 13, 14, 17, 16}; + Resolution resolution; + resolution.fill(2); - REQUIRE(grid.element(1) == expected); - } + Size size; + size.fill(0.4); - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.element(grid.numElements()), std::out_of_range); - } - } + const TestType grid(resolution, size); - SECTION("Hex20Grid") { - const Hex20Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); + SECTION("No errors") { + const ElementList expected = Topology::element(1, resolution); + const ElementList actual = grid.element(1); - SECTION("No errors") { - const Hex20Grid::ElementList expected{1, 2, 5, 4, 13, 14, 17, 16, 61, 102, 63, 101, 69, 111, 71, 110, 146, 147, 150, 149}; + REQUIRE(actual == expected); + } - REQUIRE(grid.element(1) == expected); - } + SECTION("Invalid index") { + const std::size_t badIndex = grid.numElements(); - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.element(grid.numElements()), std::out_of_range); - } + REQUIRE_THROWS_AS(grid.element(badIndex), std::out_of_range); } } -TEST_CASE("monad::Grid3d: Test elements", "[monad]") { +TEST_CASE("monad::grid::StructuredGrid: Test elements", "[monad]") { + SECTION("Quad4Grid") { + const Quad4Grid grid({2, 3}, {0.5, 1.5}); + + const Quad4Grid::ElementsList expected { + {0, 1, 4, 3}, + {1, 2, 5, 4}, + {3, 4, 7, 6}, + {4, 5, 8, 7}, + {6, 7, 10, 9}, + {7, 8, 11, 10} + }; + + REQUIRE(grid.elements() == expected); + } + + SECTION("Quad8Grid") { + const Quad8Grid grid({2, 3}, {0.5, 1.5}); + + const Quad8Grid::ElementsList expected { + {0, 1, 4, 3, 12, 21, 14, 20}, + {1, 2, 5, 4, 13, 22, 15, 21}, + {3, 4, 7, 6, 14, 24, 16, 23}, + {4, 5, 8, 7, 15, 25, 17, 24}, + {6, 7, 10, 9, 16, 27, 18, 26}, + {7, 8, 11, 10, 17, 28, 19, 27} + }; + + REQUIRE(grid.elements() == expected); + } + SECTION("Hex8Grid") { const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); @@ -514,37 +649,65 @@ TEST_CASE("monad::Grid3d: Test elements", "[monad]") { } } -TEST_CASE("monad::Grid3d: Test periodicElement", "[monad]") { - SECTION("Hex8Grid") { - const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test periodicElement", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + using Topology = typename TestType::Topology; + using ElementList = typename TestType::ElementList; - SECTION("No errors") { - const Hex8Grid::ElementList expected{1, 0, 2, 3, 7, 6, 8, 9}; + Resolution resolution; + resolution.fill(2); - REQUIRE(grid.periodicElement(1) == expected); - } + Size size; + size.fill(0.4); - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.periodicElement(grid.numElements()), std::out_of_range); - } + const TestType grid(resolution, size); + + SECTION("No errors") { + const ElementList expected = Topology::periodicElement(1, resolution); + const ElementList actual = grid.periodicElement(1); + + REQUIRE(actual == expected); } - SECTION("Hex20Grid") { - const Hex20Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); + SECTION("Invalid index") { + const std::size_t badIndex = grid.numElements(); + + REQUIRE_THROWS_AS(grid.element(badIndex), std::out_of_range); + } +} - SECTION("No errors") { - const Hex20Grid::ElementList expected{1, 0, 2, 3, 7, 6, 8, 9, 25, 48, 27, 49, 31, 54, 33, 55, 73, 72, 74, 75}; +TEST_CASE("monad::grid::StructuredGrid: Test periodicElements", "[monad]") { + SECTION("Quad4Grid") { + const Quad4Grid grid({2, 3}, {0.5, 1.5}); + + const Quad4Grid::ElementsList expected { + {0, 1, 3, 2}, + {1, 0, 2, 3}, + {2, 3, 5, 4}, + {3, 2, 4, 5}, + {4, 5, 1, 0}, + {5, 4, 0, 1} + }; - REQUIRE(grid.periodicElement(1) == expected); - } + REQUIRE(grid.periodicElements() == expected); + } - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.periodicElement(grid.numElements()), std::out_of_range); - } + SECTION("Quad8Grid") { + const Quad8Grid grid({2, 3}, {0.5, 1.5}); + + const Quad8Grid::ElementsList expected { + {0, 1, 3, 2, 6, 13, 8, 12}, + {1, 0, 2, 3, 7, 12, 9, 13}, + {2, 3, 5, 4, 8, 15, 10, 14}, + {3, 2, 4, 5, 9, 14, 11, 15}, + {4, 5, 1, 0, 10, 17, 6, 16}, + {5, 4, 0, 1, 11, 16, 7, 17} + }; + + REQUIRE(grid.periodicElements() == expected); } -} -TEST_CASE("monad::Grid3d: Test periodicElements", "[monad]") { SECTION("Hex8Grid") { const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); @@ -612,184 +775,57 @@ TEST_CASE("monad::Grid3d: Test periodicElements", "[monad]") { } } -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test getDensity/setDensity", "[monad]", Types) { - TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); - - SECTION("No errors") { - REQUIRE_THAT(grid.getDensity(1), Catch::Matchers::WithinAbs(0.0, NUMERICAL_ZERO)); - - grid.setDensity(1, 0.1); - - REQUIRE_THAT(grid.getDensity(1), Catch::Matchers::WithinAbs(0.1, NUMERICAL_ZERO)); - } - - SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.getDensity(grid.numElements()), std::out_of_range); - - REQUIRE_THROWS_AS(grid.setDensity(grid.numElements(), 0.1), std::out_of_range); - } - - SECTION("Invalid density") { - REQUIRE_THROWS_AS(grid.setDensity(1, -0.1), std::invalid_argument); - REQUIRE_THROWS_AS(grid.setDensity(1, 1.1), std::invalid_argument); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test setDensities", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); - - SECTION("No errors") { - const DensityList densities(grid.numElements(), 0.5); - - grid.setDensities(densities); - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(densities).margin(NUMERICAL_ZERO)); - } - - SECTION("Invalid size") { - const DensityList densities(grid.numElements() + 1, 0.5); - - REQUIRE_THROWS_AS(grid.setDensities(densities), std::invalid_argument); - } - - SECTION("Invalid density") { - DensityList densities(grid.numElements(), 0.5); - densities[1] *= -1; - - REQUIRE_THROWS_AS(grid.setDensities(densities), std::invalid_argument); - } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test setDensitiesConstant", "[monad]", Types) { - using DensityList = typename TestType::DensityList; +TEST_CASE("monad::grid::StructuredGrid: Test elementNodes", "[monad]") { + SECTION("Quad4Grid") { + const Quad4Grid grid({2, 3}, {0.5, 1.5}); - TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); + SECTION("No errors") { + const Quad4Grid::NodesMatrix expected { + {0.25, 0.0}, + {0.5, 0.0}, + {0.5, 0.5}, + {0.25, 0.5} + }; - SECTION("No errors") { - grid.setDensitiesConstant(0.5); + const auto actual = grid.elementNodes(1); - const DensityList expected(grid.numElements(), 0.5); + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); + } - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); - } + SECTION("Invalid index") { + const std::size_t badIndex = grid.numElements(); - SECTION("Invalid density") { - REQUIRE_THROWS_AS(grid.setDensitiesConstant(-0.1), std::invalid_argument); - REQUIRE_THROWS_AS(grid.setDensitiesConstant(1.1), std::invalid_argument); + REQUIRE_THROWS_AS(grid.elementNodes(badIndex), std::out_of_range); + } } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test setDensitiesZeros", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); + SECTION("Quad8Grid") { + const Quad8Grid grid({2, 3}, {0.5, 1.5}); - grid.setDensitiesZeros(); - - const DensityList expected(grid.numElements(), 0.0); - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test setDensitiesOnes", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); - - grid.setDensitiesOnes(); - - const DensityList expected(grid.numElements(), 1.0); - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test setDensitiesRandom", "[monad]", Types) { - using DensityList = typename TestType::DensityList; - - TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); - - grid.setDensitiesRandom(1234); - - const DensityList expected { - 0.49766366630595177, - 0.81783844288953345, - 0.61211189358442286, - 0.77135991905475021, - 0.86066977348643747, - 0.15063696570521984, - 0.19851876010104652, - 0.8151629340839277, - 0.15881535340057207, - 0.11613783027882053, - 0.01290753305838846, - 0.48683344491314973, - 0.33101542682467566, - 0.80263957374559314, - 0.09825193844042972, - 0.05599344953922467, - 0.44266265526020054, - 0.02214390901237923, - 0.29072854825594158, - 0.24639444143572856, - 0.73828676607573551, - 0.88922613337994483, - 0.98713930325475108, - 0.1174433832915556 - }; - - REQUIRE_THAT(grid.densities(), Catch::Matchers::Approx(expected).margin(NUMERICAL_ZERO)); -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test setDensitiesFunction", "[monad]", Types) { - using Point = typename TestType::Point; - - TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); - - SECTION("No errors") { - // 0.1x+0.2y+0.3z - auto f = [](const Point &p) -> double { - return 0.1 * p(0) + 0.2 * p(1) + 0.3 * p(2); - }; - - grid.setDensitiesFunction(f); - - // The average of a linear function over a convex region equals its value at the centroid - const auto nodes = grid.elementNodes(1); - const Point centroid = nodes.colwise().mean(); - const double expected = f(centroid); + SECTION("No errors") { + const Quad8Grid::NodesMatrix expected { + {0.25, 0.0}, + {0.5, 0.0}, + {0.5, 0.5}, + {0.25, 0.5}, + {0.375, 0.0}, + {0.5, 0.25}, + {0.375, 0.5}, + {0.25, 0.25} + }; - REQUIRE_THAT(grid.getDensity(1), Catch::Matchers::WithinAbs(expected, NUMERICAL_ZERO)); - } + const auto actual = grid.elementNodes(1); - SECTION("Bad function") { - // exp(x+y+z) - auto f = [](const Point &point) -> double { - const double x = point(0); - const double y = point(1); - const double z = point(2); + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); + } - return std::exp(x + y + z); - }; + SECTION("Invalid index") { + const std::size_t badIndex = grid.numElements(); - REQUIRE_THROWS_AS(grid.setDensitiesFunction(f), std::invalid_argument); + REQUIRE_THROWS_AS(grid.elementNodes(badIndex), std::out_of_range); + } } -} - -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test translate", "[monad]", Types) { - TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); - - // Index=1 → Point=(1,0,0) - grid.setDensity(1, 0.5); - - // Point=(0,2,3) - grid.translate({1, 2, 3}); - REQUIRE_THAT(grid.getDensity(22), Catch::Matchers::WithinAbs(0.5, NUMERICAL_ZERO)); -} - -TEST_CASE("monad::Grid3d: Test elementNodes", "[monad]") { SECTION("Hex8Grid") { const Hex8Grid grid({2, 3, 4}, {0.5, 1.5, 2.0}); @@ -805,11 +841,15 @@ TEST_CASE("monad::Grid3d: Test elementNodes", "[monad]") { {0.25, 0.5, 0.5} }; - REQUIRE(grid.elementNodes(1).isApprox(expected, NUMERICAL_ZERO)); + const auto actual = grid.elementNodes(1); + + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); } SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.elementNodes(grid.numElements()), std::out_of_range); + const std::size_t badIndex = grid.numElements(); + + REQUIRE_THROWS_AS(grid.elementNodes(badIndex), std::out_of_range); } } @@ -840,49 +880,91 @@ TEST_CASE("monad::Grid3d: Test elementNodes", "[monad]") { {0.25, 0.5, 0.25} }; - REQUIRE(grid.elementNodes(1).isApprox(expected, NUMERICAL_ZERO)); + const auto actual = grid.elementNodes(1); + + REQUIRE(actual.isApprox(expected, NUMERICAL_ZERO)); } SECTION("Invalid index") { - REQUIRE_THROWS_AS(grid.elementNodes(grid.numElements()), std::out_of_range); + const std::size_t badIndex = grid.numElements(); + + REQUIRE_THROWS_AS(grid.elementNodes(badIndex), std::out_of_range); } } } -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test measure/volume", "[monad]", Types) { - const TestType grid({2, 3, 4}, {0.5, 1.5, 2.0}); +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test measure/area/volume", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; - REQUIRE_THAT(grid.measure(), Catch::Matchers::WithinAbs(1.5, NUMERICAL_ZERO)); - REQUIRE_THAT(grid.volume(), Catch::Matchers::WithinAbs(1.5, NUMERICAL_ZERO)); + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.4); + + const TestType grid(resolution, size); + + const double expected = std::pow(0.4, TestType::Dim); + const double actual = grid.measure(); + + REQUIRE_THAT(actual, Catch::Matchers::WithinAbs(expected, NUMERICAL_ZERO)); + + if constexpr (TestType::Dim == 2) { + REQUIRE_THAT(grid.area(), Catch::Matchers::WithinAbs(expected, NUMERICAL_ZERO)); + } + else { + REQUIRE_THAT(grid.volume(), Catch::Matchers::WithinAbs(expected, NUMERICAL_ZERO)); + } } -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test operator==", "[monad]", Types) { - const TestType grid1({2, 3, 4}, {0.5, 1.5, 2.0}); - const TestType grid2({2, 3, 4}, {0.5, 1.5, 2.0}); +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test operator==", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.4); + + const TestType grid1(resolution, size); + const TestType grid2(resolution, size); REQUIRE(grid1 == grid2); } -TEMPLATE_LIST_TEST_CASE("monad::Grid3d: Test operator!=", "[monad]", Types) { - const TestType grid1({2, 3, 4}, {0.5, 1.5, 2.0}); +TEMPLATE_LIST_TEST_CASE("monad::grid::StructuredGrid: Test operator!=", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.4); + + const TestType grid1(resolution, size); SECTION("Different resolution") { - const TestType grid2({3, 3, 4}, {0.5, 1.5, 2.0}); - const TestType grid3({2, 4, 4}, {0.5, 1.5, 2.0}); - const TestType grid4({2, 3, 5}, {0.5, 1.5, 2.0}); + for (std::size_t i = 0; i < TestType::Dim; ++i) { + Resolution resolutionDifferent = resolution; + resolutionDifferent[i] += 1; + + const TestType grid2(resolutionDifferent, size); - REQUIRE(grid1 != grid2); - REQUIRE(grid1 != grid3); - REQUIRE(grid1 != grid4); + REQUIRE(grid1 != grid2); + } } SECTION("Different size") { - const TestType grid2({2, 3, 4}, {0.6, 1.5, 2.0}); - const TestType grid3({2, 3, 4}, {0.5, 1.6, 2.0}); - const TestType grid4({2, 3, 4}, {0.5, 1.5, 2.1}); + for (std::size_t i = 0; i < TestType::Dim; ++i) { + Size sizeDifferent = size; + sizeDifferent[i] += 0.1; + + const TestType grid2(resolution, sizeDifferent); - REQUIRE(grid1 != grid2); - REQUIRE(grid1 != grid3); - REQUIRE(grid1 != grid4); + REQUIRE(grid1 != grid2); + } } } diff --git a/tests/io/gmsh/write_gmsh_densities_test.cpp b/tests/io/gmsh/write_gmsh_densities_test.cpp index ba42ea0..db855f9 100644 --- a/tests/io/gmsh/write_gmsh_densities_test.cpp +++ b/tests/io/gmsh/write_gmsh_densities_test.cpp @@ -2,33 +2,26 @@ #include #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" +#include "monad/field/field_aliases.hpp" #include "monad/io/gmsh/write_gmsh_densities.hpp" using namespace monad; using namespace monad::io::gmsh; -using Types = std::tuple; +using Types = std::tuple; TEMPLATE_LIST_TEST_CASE("monad::io::gmsh: Test writeGmshDensities", "[monad]", Types) { using Resolution = typename TestType::Resolution; - using Size = typename TestType::Size; Resolution resolution; resolution.fill(1); - Size size; - size.fill(0.5); - - TestType grid(resolution, size); - grid.setDensitiesRandom(1234); + TestType densityField(resolution); + densityField.setRandom(1234); std::ostringstream oss; - writeGmshDensities(oss, grid); + writeGmshDensities(oss, densityField); const std::string expected = "$ElementData\n" "1\n" @@ -38,7 +31,7 @@ TEMPLATE_LIST_TEST_CASE("monad::io::gmsh: Test writeGmshDensities", "[monad]", T "0\n" "1\n" "1\n" - "1 0.497664\n" + "1 0.191519\n" "$EndElementData"; REQUIRE(oss.str() == expected); diff --git a/tests/io/gmsh/write_gmsh_elements_test.cpp b/tests/io/gmsh/write_gmsh_elements_test.cpp index 0ca2c3c..4c5b71f 100644 --- a/tests/io/gmsh/write_gmsh_elements_test.cpp +++ b/tests/io/gmsh/write_gmsh_elements_test.cpp @@ -1,10 +1,7 @@ #include #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" +#include "monad/grid/grid_aliases.hpp" #include "monad/io/gmsh/write_gmsh_elements.hpp" using namespace monad; diff --git a/tests/io/gmsh/write_gmsh_nodal_data_test.cpp b/tests/io/gmsh/write_gmsh_nodal_field_test.cpp similarity index 100% rename from tests/io/gmsh/write_gmsh_nodal_data_test.cpp rename to tests/io/gmsh/write_gmsh_nodal_field_test.cpp diff --git a/tests/io/gmsh/write_gmsh_nodes_test.cpp b/tests/io/gmsh/write_gmsh_nodes_test.cpp index ea1f894..9f9ac4d 100644 --- a/tests/io/gmsh/write_gmsh_nodes_test.cpp +++ b/tests/io/gmsh/write_gmsh_nodes_test.cpp @@ -1,10 +1,7 @@ #include #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" +#include "monad/grid/grid_aliases.hpp" #include "monad/io/gmsh/write_gmsh_nodes.hpp" using namespace monad; diff --git a/tests/io/save_grid_and_density_field_test.cpp b/tests/io/save_grid_and_density_field_test.cpp new file mode 100644 index 0000000..59c8516 --- /dev/null +++ b/tests/io/save_grid_and_density_field_test.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include +#include "monad/grid/grid_aliases.hpp" +#include "monad/field/density_field.hpp" +#include "monad/io/save_grid_and_density_field.hpp" + +using namespace monad; +using namespace monad::field; + +using Types = std::tuple; + +TEMPLATE_LIST_TEST_CASE("monad: Test saveGridAndDensityField", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.5); + + const TestType grid(resolution, size); + const DensityField densityField(resolution); + + const std::filesystem::path folder = std::filesystem::path(__FILE__).parent_path(); + std::filesystem::path file = folder / "output.msh"; + + SECTION("No errors") { + saveGridAndDensityField(grid, densityField, file.string()); + + REQUIRE(std::filesystem::is_regular_file(file)); + + std::filesystem::remove(file); + } + + SECTION("Invalid field size") { + resolution[0] += 1; + + REQUIRE_THROWS_AS(saveGridAndDensityField(grid, DensityField(resolution), file.string()), std::invalid_argument); + } + + SECTION("Invalid file extension") { + file = folder / "output.csv"; + + REQUIRE_THROWS_AS(saveGridAndDensityField(grid, densityField, file.string()), std::invalid_argument); + } + + SECTION("Invalid file path") { + file = folder / "NonExistentDir" / "output.msh"; + + REQUIRE_THROWS_AS(saveGridAndDensityField(grid, densityField, file.string()), std::runtime_error); + } +} diff --git a/tests/io/save_grid_and_field_test.cpp b/tests/io/save_grid_and_field_test.cpp deleted file mode 100644 index b8d149c..0000000 --- a/tests/io/save_grid_and_field_test.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include -#include -#include -#include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" -#include "monad/io/save_grid_and_field.hpp" - -using namespace monad; - -using Types = std::tuple; - -TEMPLATE_LIST_TEST_CASE("monad: Test saveGridAndField", "[monad]", Types) { - using Resolution = typename TestType::Resolution; - using Size = typename TestType::Size; - - Resolution resolution; - resolution.fill(2); - - Size size; - size.fill(0.5); - - TestType grid(resolution, size); - grid.setDensitiesRandom(); - const int numNodes = static_cast(grid.numNodes()); - - const std::filesystem::path folder = std::filesystem::path(__FILE__).parent_path(); - std::filesystem::path file = folder / "output.msh"; - - SECTION("No errors") { - const Eigen::MatrixX2d field = Eigen::MatrixX2d::Random(numNodes, 2); - - saveGridAndField(grid, field, file.string()); - - REQUIRE(std::filesystem::is_regular_file(file)); - - std::filesystem::remove(file); - } - - SECTION("Invalid field size") { - const Eigen::MatrixX4d field = Eigen::MatrixX4d::Random(numNodes, 4); - - REQUIRE_THROWS_AS(saveGridAndField(grid, field, file.string()), std::invalid_argument); - } - - SECTION("Invalid file extension") { - const Eigen::MatrixX2d field = Eigen::MatrixX2d::Random(numNodes, 2); - - file = folder / "output.csv"; - - REQUIRE_THROWS_AS(saveGridAndField(grid, field, file.string()), std::invalid_argument); - } - - SECTION("Invalid file path") { - const Eigen::MatrixX2d field = Eigen::MatrixX2d::Random(numNodes, 2); - - file = folder / "NonExistentDir" / "output.msh"; - - REQUIRE_THROWS_AS(saveGridAndField(grid, field, file.string()), std::runtime_error); - } -} diff --git a/tests/io/save_grid_and_nodal_field_test.cpp b/tests/io/save_grid_and_nodal_field_test.cpp new file mode 100644 index 0000000..2ef0cde --- /dev/null +++ b/tests/io/save_grid_and_nodal_field_test.cpp @@ -0,0 +1,81 @@ +#include +#include +#include +#include +#include "monad/grid/grid_aliases.hpp" +#include "monad/io/save_grid_and_nodal_field.hpp" + +using namespace monad; + +using Types = std::tuple; + +TEMPLATE_LIST_TEST_CASE("monad: Test saveGridAndNodalField", "[monad]", Types) { + using Resolution = typename TestType::Resolution; + using Size = typename TestType::Size; + + Resolution resolution; + resolution.fill(2); + + Size size; + size.fill(0.5); + + const TestType grid(resolution, size); + const int numNodes = static_cast(grid.numNodes()); + + const std::filesystem::path folder = std::filesystem::path(__FILE__).parent_path(); + std::filesystem::path file = folder / "output.msh"; + + SECTION("No errors") { + SECTION("Scalar field") { + const Eigen::VectorXd field = Eigen::VectorXd::Random(numNodes); + + saveGridAndNodalField(grid, field, file.string()); + + REQUIRE(std::filesystem::is_regular_file(file)); + + std::filesystem::remove(file); + } + + SECTION("2D Vector field") { + const Eigen::MatrixX2d field = Eigen::MatrixX2d::Random(numNodes, 2); + + saveGridAndNodalField(grid, field, file.string()); + + REQUIRE(std::filesystem::is_regular_file(file)); + + std::filesystem::remove(file); + } + + SECTION("3D Vector field") { + const Eigen::MatrixX3d field = Eigen::MatrixX3d::Random(numNodes, 3); + + saveGridAndNodalField(grid, field, file.string()); + + REQUIRE(std::filesystem::is_regular_file(file)); + + std::filesystem::remove(file); + } + } + + SECTION("Invalid field size") { + const Eigen::VectorXd field = Eigen::VectorXd::Random(numNodes - 1); + + REQUIRE_THROWS_AS(saveGridAndNodalField(grid, field, file.string()), std::invalid_argument); + } + + SECTION("Invalid file extension") { + const Eigen::VectorXd field = Eigen::VectorXd::Random(numNodes); + + file = folder / "output.csv"; + + REQUIRE_THROWS_AS(saveGridAndNodalField(grid, field, file.string()), std::invalid_argument); + } + + SECTION("Invalid file path") { + const Eigen::VectorXd field = Eigen::VectorXd::Random(numNodes); + + file = folder / "NonExistentDir" / "output.msh"; + + REQUIRE_THROWS_AS(saveGridAndNodalField(grid, field, file.string()), std::runtime_error); + } +} diff --git a/tests/io/save_grid_test.cpp b/tests/io/save_grid_test.cpp index dc5f319..80ce26d 100644 --- a/tests/io/save_grid_test.cpp +++ b/tests/io/save_grid_test.cpp @@ -2,10 +2,7 @@ #include #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" +#include "monad/grid/grid_aliases.hpp" #include "monad/io/save_grid.hpp" using namespace monad; @@ -23,13 +20,12 @@ TEMPLATE_LIST_TEST_CASE("monad: Test saveGrid", "[monad]", Types) { size.fill(0.5); TestType grid(resolution, size); - grid.setDensitiesRandom(); const std::filesystem::path folder = std::filesystem::path(__FILE__).parent_path(); std::filesystem::path file = folder / "output.msh"; SECTION("No errors") { - saveGrid(grid, file.string(), true); + saveGrid(grid, file.string()); REQUIRE(std::filesystem::is_regular_file(file)); @@ -39,12 +35,12 @@ TEMPLATE_LIST_TEST_CASE("monad: Test saveGrid", "[monad]", Types) { SECTION("Invalid file extension") { file = folder / "output.csv"; - REQUIRE_THROWS_AS(saveGrid(grid, file.string(), true), std::invalid_argument); + REQUIRE_THROWS_AS(saveGrid(grid, file.string()), std::invalid_argument); } SECTION("Invalid file path") { file = folder / "NonExistentDir" / "output.msh"; - REQUIRE_THROWS_AS(saveGrid(grid, file.string(), true), std::runtime_error); + REQUIRE_THROWS_AS(saveGrid(grid, file.string()), std::runtime_error); } } diff --git a/tests/material/bounds_test.cpp b/tests/material/bounds_test.cpp new file mode 100644 index 0000000..c77a3e1 --- /dev/null +++ b/tests/material/bounds_test.cpp @@ -0,0 +1,44 @@ +#include +#include +#include "monad/material/transport/linear_transport_material.hpp" +#include "monad/field/density_field.hpp" +#include "monad/material/bounds.hpp" +#include "monad/detail/constants.hpp" + +using namespace monad; +using namespace monad::material; +using namespace monad::field; + +using Types = std::tuple, LinearTransportMaterial<3>>; + +TEMPLATE_LIST_TEST_CASE("monad: Test voigtBound/reussBound", "[monad]", Types) { + using Resolution = typename DensityField::Resolution; + + const TestType material(2.1); + + Resolution resolution; + resolution.fill(2); + + DensityField densityField(resolution); + + SECTION("Solid material: reuss=voigt=K") { + const auto K = material.materialTensor(); + + densityField.setOnes(); + + const auto voigt = voigtBound(material, densityField); + const auto reuss = reussBound(material, densityField); + + REQUIRE(voigt.isApprox(K, NUMERICAL_ZERO)); + REQUIRE(reuss.isApprox(K, NUMERICAL_ZERO)); + } + + SECTION("Random material: reuss≤voigt") { + densityField.setRandom(1234); + + const auto voigt = voigtBound(material, densityField); + const auto reuss = reussBound(material, densityField); + + REQUIRE(reuss.trace() <= voigt.trace()); + } +} diff --git a/tests/material/mechanical/linear_elastic_material_2d_test.cpp b/tests/material/mechanical/linear_elastic_material_2d_test.cpp index ab824f0..dd466dc 100644 --- a/tests/material/mechanical/linear_elastic_material_2d_test.cpp +++ b/tests/material/mechanical/linear_elastic_material_2d_test.cpp @@ -1,7 +1,6 @@ #include #include #include "monad/material/mechanical/linear_elastic_material_2d.hpp" -#include "monad/grid/quad4_grid.hpp" #include "monad/detail/constants.hpp" using namespace monad; @@ -54,34 +53,6 @@ TEST_CASE("monad::LinearElasticMaterial2d: Test materialTensor", "[monad]") { REQUIRE(material.materialTensor().isApprox(C, NUMERICAL_ZERO)); } -TEST_CASE("monad::LinearElasticMaterial2d: Test voigt/reuss", "[monad]") { - const LinearElasticMaterial2d material(1.0, 0.3, LinearElasticMaterial2d::PlaneCondition::PlaneStress); - - // Just using to get density values (does not matter 2D vs. 3D) - Quad4Grid grid({3, 3}, {1.0, 1.0}); - - SECTION("Solid material: reuss=voigt=C") { - const auto C = material.materialTensor(); - - grid.setDensitiesOnes(); - - const auto voigt = material.voigt(grid); - const auto reuss = material.reuss(grid); - - REQUIRE(voigt.trace() == reuss.trace()); - REQUIRE(voigt.trace() == C.trace()); - } - - SECTION("Random material: reuss≤voigt") { - grid.setDensitiesRandom(1234); - - const auto voigt = material.voigt(grid); - const auto reuss = material.reuss(grid); - - REQUIRE(reuss.trace() <= voigt.trace()); - } -} - TEST_CASE("monad::LinearElasticMaterial2d: Test operator==", "[monad]") { LinearElasticMaterial2d material1(1.0, 0.3, LinearElasticMaterial2d::PlaneCondition::PlaneStress); LinearElasticMaterial2d material2(1.0, 0.3, LinearElasticMaterial2d::PlaneCondition::PlaneStress); diff --git a/tests/material/mechanical/linear_elastic_material_3d_test.cpp b/tests/material/mechanical/linear_elastic_material_3d_test.cpp index 7536679..3fd3def 100644 --- a/tests/material/mechanical/linear_elastic_material_3d_test.cpp +++ b/tests/material/mechanical/linear_elastic_material_3d_test.cpp @@ -1,7 +1,6 @@ #include #include #include "monad/material/mechanical/linear_elastic_material_3d.hpp" -#include "monad/grid/quad4_grid.hpp" #include "monad/detail/constants.hpp" using namespace monad; @@ -47,34 +46,6 @@ TEST_CASE("monad::LinearElasticMaterial3d: Test materialTensor", "[monad]") { REQUIRE(material.materialTensor().isApprox(C, NUMERICAL_ZERO)); } -TEST_CASE("monad::LinearElasticMaterial3d: Test voigt/reuss", "[monad]") { - const LinearElasticMaterial3d material(1.0, 0.3); - - // Just using to get density values (does not matter 2D vs. 3D) - Quad4Grid grid({3, 3}, {1.0, 1.0}); - - SECTION("Solid material: reuss=voigt=C") { - const auto C = material.materialTensor(); - - grid.setDensitiesOnes(); - - const auto voigt = material.voigt(grid); - const auto reuss = material.reuss(grid); - - REQUIRE(voigt.trace() == reuss.trace()); - REQUIRE(voigt.trace() == C.trace()); - } - - SECTION("Random material: reuss≤voigt") { - grid.setDensitiesRandom(1234); - - const auto voigt = material.voigt(grid); - const auto reuss = material.reuss(grid); - - REQUIRE(reuss.trace() <= voigt.trace()); - } -} - TEST_CASE("monad::LinearElasticMaterial3d: Test operator==", "[monad]") { LinearElasticMaterial3d material1(1.0, 0.3); LinearElasticMaterial3d material2(1.0, 0.3); diff --git a/tests/material/multiphysics/linear_piezoelectric_material_2d_test.cpp b/tests/material/multiphysics/linear_piezoelectric_material_2d_test.cpp deleted file mode 100644 index 4ca5965..0000000 --- a/tests/material/multiphysics/linear_piezoelectric_material_2d_test.cpp +++ /dev/null @@ -1,166 +0,0 @@ -#include -#include -#include "monad/material/mechanical/linear_elastic_material_2d.hpp" -#include "monad/material/transport/linear_transport_material_aliases.hpp" -#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" -#include "monad/detail/constants.hpp" - -using namespace monad; - -TEST_CASE("monad::LinearPiezoelectricMaterial2d: Test initalization", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial2d::CouplingTensor; - - SECTION("Invalid piezoelectric tensor") { - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d { - {10.0, 0.0, 0.0}, - {0.0, 10.0, 10.0} - }; - - REQUIRE_THROWS_AS(LinearPiezoelectricMaterial2d(elasticMaterial, dielectricMaterial, d), std::invalid_argument); - } -} - -TEST_CASE("monad::LinearPiezoelectricMaterial2d: Test elasticMaterial", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial2d::CouplingTensor; - - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const LinearPiezoelectricMaterial2d material(elasticMaterial, dielectricMaterial, d); - - REQUIRE(material.elasticMaterial() == elasticMaterial); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial2d: Test dielectricMaterial", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial2d::CouplingTensor; - - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const LinearPiezoelectricMaterial2d material(elasticMaterial, dielectricMaterial, d); - - REQUIRE(material.dielectricMaterial() == dielectricMaterial); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial2d: Test couplingTensor", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial2d::CouplingTensor; - - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const LinearPiezoelectricMaterial2d material(elasticMaterial, dielectricMaterial, d); - - REQUIRE(material.couplingTensor().isApprox(d, NUMERICAL_ZERO)); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial2d: Test materialTensor", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial2d::CouplingTensor; - using MaterialTensor = typename LinearPiezoelectricMaterial2d::MaterialTensor; - - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const LinearPiezoelectricMaterial2d material(elasticMaterial, dielectricMaterial, d); - - MaterialTensor expected; - expected << elasticMaterial.materialTensor(), -d.transpose(), - -d, -dielectricMaterial.materialTensor(); - - REQUIRE(material.materialTensor().isApprox(expected, NUMERICAL_ZERO)); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial2d: Test operator==", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial2d::CouplingTensor; - - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const LinearPiezoelectricMaterial2d material1(elasticMaterial, dielectricMaterial, d); - const LinearPiezoelectricMaterial2d material2(elasticMaterial, dielectricMaterial, d); - - REQUIRE(material1 == material2); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial2d: Test operator!=", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial2d::CouplingTensor; - - SECTION("Different elastic materials") { - const LinearElasticMaterial2d elasticMaterial1(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearElasticMaterial2d elasticMaterial2(1.1, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - LinearPiezoelectricMaterial2d material1(elasticMaterial1, dielectricMaterial, d); - LinearPiezoelectricMaterial2d material2(elasticMaterial2, dielectricMaterial, d); - - REQUIRE(material1 != material2); - } - - SECTION("Different electric materials") { - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial1(2.1); - const LinearDielectricMaterial2d dielectricMaterial2(2.2); - - const CouplingTensor d { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const LinearPiezoelectricMaterial2d material1(elasticMaterial, dielectricMaterial1, d); - const LinearPiezoelectricMaterial2d material2(elasticMaterial, dielectricMaterial2, d); - - REQUIRE(material1 != material2); - } - - SECTION("Different piezoelectric tensors") { - const LinearElasticMaterial2d elasticMaterial(1.0, 0.3, monad::LinearElasticMaterial2d::PlaneCondition::PlaneStress); - const LinearDielectricMaterial2d dielectricMaterial(2.1); - - const CouplingTensor d1 { - {0.01, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const CouplingTensor d2 { - {0.02, 0.0, 0.0}, - {0.0, 0.01, 0.01} - }; - - const LinearPiezoelectricMaterial2d material1(elasticMaterial, dielectricMaterial, d1); - const LinearPiezoelectricMaterial2d material2(elasticMaterial, dielectricMaterial, d2); - - REQUIRE(material1 != material2); - } -} diff --git a/tests/material/multiphysics/linear_piezoelectric_material_3d_test.cpp b/tests/material/multiphysics/linear_piezoelectric_material_3d_test.cpp deleted file mode 100644 index c35c629..0000000 --- a/tests/material/multiphysics/linear_piezoelectric_material_3d_test.cpp +++ /dev/null @@ -1,177 +0,0 @@ -#include -#include -#include "monad/material/mechanical/linear_elastic_material_3d.hpp" -#include "monad/material/transport/linear_transport_material_aliases.hpp" -#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" -#include "monad/detail/constants.hpp" - -using namespace monad; - -TEST_CASE("monad::LinearPiezoelectricMaterial3d: Test initalization", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial3d::CouplingTensor; - - SECTION("Invalid piezoelectric tensor") { - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 10.0, 0.0, 0.0}, - {0.0, 0.0, 10.0, 0.0, 0.0, 0.0}, - {10.0, 10.0, 10.0, 0.0, 0.0, 0.0} - }; - - REQUIRE_THROWS_AS(LinearPiezoelectricMaterial3d(elasticMaterial, dielectricMaterial, d), std::invalid_argument); - } -} - -TEST_CASE("monad::LinearPiezoelectricMaterial3d: Test elasticMaterial", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial3d::CouplingTensor; - - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material(elasticMaterial, dielectricMaterial, d); - - REQUIRE(material.elasticMaterial() == elasticMaterial); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial3d: Test dielectricMaterial", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial3d::CouplingTensor; - - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material(elasticMaterial, dielectricMaterial, d); - - REQUIRE(material.dielectricMaterial() == dielectricMaterial); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial3d: Test couplingTensor", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial3d::CouplingTensor; - - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material(elasticMaterial, dielectricMaterial, d); - - REQUIRE(material.couplingTensor().isApprox(d, NUMERICAL_ZERO)); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial3d: Test materialTensor", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial3d::CouplingTensor; - using MaterialTensor = typename LinearPiezoelectricMaterial3d::MaterialTensor; - - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material(elasticMaterial, dielectricMaterial, d); - - MaterialTensor expected; - expected << elasticMaterial.materialTensor(), -d.transpose(), - -d, -dielectricMaterial.materialTensor(); - - REQUIRE(material.materialTensor().isApprox(expected, NUMERICAL_ZERO)); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial3d: Test operator==", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial3d::CouplingTensor; - - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material1(elasticMaterial, dielectricMaterial, d); - const LinearPiezoelectricMaterial3d material2(elasticMaterial, dielectricMaterial, d); - - REQUIRE(material1 == material2); -} - -TEST_CASE("monad::LinearPiezoelectricMaterial3d: Test operator!=", "[monad]") { - using CouplingTensor = typename LinearPiezoelectricMaterial3d::CouplingTensor; - - SECTION("Different elastic materials") { - const LinearElasticMaterial3d elasticMaterial1(1.0, 0.3); - const LinearElasticMaterial3d elasticMaterial2(1.1, 0.3); - - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material1(elasticMaterial1, dielectricMaterial, d); - const LinearPiezoelectricMaterial3d material2(elasticMaterial2, dielectricMaterial, d); - - REQUIRE(material1 != material2); - } - - SECTION("Different electric materials") { - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial1(2.1); - const LinearDielectricMaterial3d dielectricMaterial2(2.2); - - const CouplingTensor d { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material1(elasticMaterial, dielectricMaterial1, d); - const LinearPiezoelectricMaterial3d material2(elasticMaterial, dielectricMaterial2, d); - - REQUIRE(material1 != material2); - } - - SECTION("Different piezoelectric tensors") { - const LinearElasticMaterial3d elasticMaterial(1.0, 0.3); - const LinearDielectricMaterial3d dielectricMaterial(2.1); - - const CouplingTensor d1 { - {0.0, 0.0, 0.0, 0.01, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const CouplingTensor d2 { - {0.0, 0.0, 0.0, 0.02, 0.0, 0.0}, - {0.0, 0.0, 0.01, 0.0, 0.0, 0.0}, - {0.01, 0.01, 0.01, 0.0, 0.0, 0.0} - }; - - const LinearPiezoelectricMaterial3d material1(elasticMaterial, dielectricMaterial, d1); - const LinearPiezoelectricMaterial3d material2(elasticMaterial, dielectricMaterial, d2); - - REQUIRE(material1 != material2); - } -} diff --git a/tests/material/multiphysics/linear_piezoelectric_material_test.cpp b/tests/material/multiphysics/linear_piezoelectric_material_test.cpp new file mode 100644 index 0000000..ff69eea --- /dev/null +++ b/tests/material/multiphysics/linear_piezoelectric_material_test.cpp @@ -0,0 +1,239 @@ +#include +#include +#include "monad/material/mechanical/linear_elastic_material_2d.hpp" +#include "monad/material/material_aliases.hpp" +#include "monad/detail/constants.hpp" + +using namespace monad; + +using Types = std::tuple; + +TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricMaterial: Test initalization", "[monad]", Types) { + using StiffnessTensor = typename TestType::StiffnessTensor; + using PermittivityTensor = typename TestType::PermittivityTensor; + using CouplingTensor = typename TestType::CouplingTensor; + + SECTION("Invalid stiffness tensor") { + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + c(0, 0) = 0.0; + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + REQUIRE_THROWS_AS(TestType(c, epsilon, d), std::invalid_argument); + } + + SECTION("Invalid permittivity tensor") { + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + epsilon(0, 0) = 0.0; + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + REQUIRE_THROWS_AS(TestType(c, epsilon, d), std::invalid_argument); + } + + SECTION("Invalid piezoelectric coupling tensor") { + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(10.0); + + REQUIRE_THROWS_AS(TestType(c, epsilon, d), std::invalid_argument); + } +} + +TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricMaterial: Test stiffnessTensor", "[monad]", Types) { + using StiffnessTensor = typename TestType::StiffnessTensor; + using PermittivityTensor = typename TestType::PermittivityTensor; + using CouplingTensor = typename TestType::CouplingTensor; + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + const TestType material(c, epsilon, d); + + REQUIRE(material.stiffnessTensor().isApprox(c, NUMERICAL_ZERO)); +} + +TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricMaterial: Test permittivityTensor", "[monad]", Types) { + using StiffnessTensor = typename TestType::StiffnessTensor; + using PermittivityTensor = typename TestType::PermittivityTensor; + using CouplingTensor = typename TestType::CouplingTensor; + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + const TestType material(c, epsilon, d); + + REQUIRE(material.permittivityTensor().isApprox(epsilon, NUMERICAL_ZERO)); +} + +TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricMaterial: Test couplingTensor", "[monad]", Types) { + using StiffnessTensor = typename TestType::StiffnessTensor; + using PermittivityTensor = typename TestType::PermittivityTensor; + using CouplingTensor = typename TestType::CouplingTensor; + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + const TestType material(c, epsilon, d); + + REQUIRE(material.couplingTensor().isApprox(d, NUMERICAL_ZERO)); +} + +TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricMaterial: Test materialTensor", "[monad]", Types) { + using StiffnessTensor = typename TestType::StiffnessTensor; + using PermittivityTensor = typename TestType::PermittivityTensor; + using CouplingTensor = typename TestType::CouplingTensor; + using MaterialTensor = typename TestType::MaterialTensor; + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + const TestType material(c, epsilon, d); + + MaterialTensor op; + op << c, -d.transpose(), + -d, -epsilon; + + REQUIRE(material.materialTensor().isApprox(op, NUMERICAL_ZERO)); +} + +TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricMaterial: Test operator==", "[monad]", Types) { + using StiffnessTensor = typename TestType::StiffnessTensor; + using PermittivityTensor = typename TestType::PermittivityTensor; + using CouplingTensor = typename TestType::CouplingTensor; + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); + + const TestType material1(c, epsilon, d); + const TestType material2(c, epsilon, d); + + REQUIRE(material1 == material2); +} + +TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricMaterial: Test operator!=", "[monad]", Types) { + using StiffnessTensor = typename TestType::StiffnessTensor; + using PermittivityTensor = typename TestType::PermittivityTensor; + using CouplingTensor = typename TestType::CouplingTensor; + + StiffnessTensor c = StiffnessTensor::Random(); + // Make PSD + c = c.transpose() * c; + // Make PD + c += StiffnessTensor::Identity(); + + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + CouplingTensor d = CouplingTensor::Constant(0.01); + + const TestType material1(c, epsilon, d); + + SECTION("Different stiffness tensor") { + c(1, 1) += 0.01; + + const TestType material2(c, epsilon, d); + + REQUIRE(material1 != material2); + } + + SECTION("Different permittivity tensor") { + epsilon(1, 1) += 0.01; + + const TestType material2(c, epsilon, d); + + REQUIRE(material1 != material2); + } + + SECTION("Different piezoelectric coupling tensor") { + d(1, 1) += 0.01; + + const TestType material2(c, epsilon, d); + + REQUIRE(material1 != material2); + } +} diff --git a/tests/material/transport/linear_transport_material_test.cpp b/tests/material/transport/linear_transport_material_test.cpp index 971dde3..b11458e 100644 --- a/tests/material/transport/linear_transport_material_test.cpp +++ b/tests/material/transport/linear_transport_material_test.cpp @@ -1,10 +1,10 @@ #include #include #include "monad/material/transport/linear_transport_material.hpp" -#include "monad/grid/quad4_grid.hpp" #include "monad/detail/constants.hpp" using namespace monad; +using namespace monad::material; using Types = std::tuple, LinearTransportMaterial<3>>; @@ -45,34 +45,6 @@ TEMPLATE_LIST_TEST_CASE("monad::LinearTransportMaterial: Test materialTensor", " REQUIRE(material.materialTensor().isApprox(K, NUMERICAL_ZERO)); } -TEMPLATE_LIST_TEST_CASE("monad::LinearTransportMaterial: Test voigt/reuss", "[monad]", Types) { - const TestType material(2.1); - - // Just using to get density values (does not matter 2D vs. 3D) - Quad4Grid grid({3, 3}, {1.0, 1.0}); - - SECTION("Solid material: reuss=voigt=K") { - const auto K = material.materialTensor(); - - grid.setDensitiesOnes(); - - const auto voigt = material.voigt(grid); - const auto reuss = material.reuss(grid); - - REQUIRE(voigt.trace() == reuss.trace()); - REQUIRE(voigt.trace() == K.trace()); - } - - SECTION("Random material: reuss≤voigt") { - grid.setDensitiesRandom(1234); - - const auto voigt = material.voigt(grid); - const auto reuss = material.reuss(grid); - - REQUIRE(reuss.trace() <= voigt.trace()); - } -} - TEMPLATE_LIST_TEST_CASE("monad::LinearTransportMaterial: Test operator==", "[monad]", Types) { const TestType material1(1.0); const TestType material2(1.0); diff --git a/tests/solver/mechanical/linear_elastic_solver_test.cpp b/tests/solver/mechanical/linear_elastic_solver_test.cpp index 9539859..78565f6 100644 --- a/tests/solver/mechanical/linear_elastic_solver_test.cpp +++ b/tests/solver/mechanical/linear_elastic_solver_test.cpp @@ -1,24 +1,41 @@ #include #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" -#include "monad/material/mechanical/linear_elastic_material.hpp" -#include "monad/solver/mechanical/linear_elastic_solver.hpp" +#include "monad/grid/grid_aliases.hpp" +#include "monad/material/mechanical/linear_elastic_material_2d.hpp" +#include "monad/material/mechanical/linear_elastic_material_3d.hpp" +#include "monad/material/bounds.hpp" +#include "monad/field/field_aliases.hpp" +#include "monad/solver/solver_aliases.hpp" #include "monad/detail/eigen_utils.hpp" #include "monad/detail/constants.hpp" using namespace monad; using namespace monad::detail; -using Types = std::tuple; - -TEMPLATE_LIST_TEST_CASE("monad::LinearElasticSolver2d: Test solve", "[monad]", Types) { - using Resolution = typename TestType::Resolution; - using Size = typename TestType::Size; - using Material = LinearElasticMaterial; +template +struct TypePair { + using Grid = GridT; + using Material = MaterialT; + using DensityField = DensityFieldT; + using Solver = SolverT; +}; + +using Types = std::tuple< + TypePair>, + TypePair>, + TypePair>, + TypePair> +>; + +TEMPLATE_LIST_TEST_CASE("monad::LinearElasticSolver: Test solve", "[monad]", Types) { + using Grid = typename TestType::Grid; + using Material = typename TestType::Material; + using DensityField = typename TestType::DensityField; + using Solver = typename TestType::Solver; + + using Resolution = typename Grid::Resolution; + using Size = typename Grid::Size; using StiffnessTensor = typename Material::MaterialTensor; Resolution resolution; @@ -27,7 +44,7 @@ TEMPLATE_LIST_TEST_CASE("monad::LinearElasticSolver2d: Test solve", "[monad]", T Size size; size.fill(0.5); - TestType grid(resolution, size); + Grid grid(resolution, size); StiffnessTensor C = StiffnessTensor::Random(); // Make PSD @@ -37,23 +54,23 @@ TEMPLATE_LIST_TEST_CASE("monad::LinearElasticSolver2d: Test solve", "[monad]", T const Material material(C); - SECTION("Density=1 → CBar=material") { - grid.setDensitiesOnes(); - const LinearElasticSolver solver(grid, material); + DensityField densityField(resolution); - const auto results = solver.solve(); - const auto &CBar = results.CBar; + const Solver solver; - const auto expected = material.materialTensor(); + SECTION("Density=1 → CBar=C") { + densityField.setOnes(); + + const auto results = solver.solve(grid, densityField, material); + const auto &CBar = results.CBar; - REQUIRE(CBar.isApprox(expected, NUMERICAL_ZERO)); + REQUIRE(CBar.isApprox(C, NUMERICAL_ZERO)); } SECTION("Density=0 → CBar=0") { - grid.setDensitiesZeros(); - LinearElasticSolver solver(grid, material); + densityField.setZeros(); - const auto results = solver.solve(); + const auto results = solver.solve(grid, densityField, material); const auto &CBar = results.CBar; // Set zero threshold to one order of magnitude larger @@ -61,18 +78,17 @@ TEMPLATE_LIST_TEST_CASE("monad::LinearElasticSolver2d: Test solve", "[monad]", T } SECTION("Random density") { - grid.setDensitiesRandom(1234); - const LinearElasticSolver solver(grid, material); + densityField.setRandom(1234); - auto results = solver.solve(); + const auto results = solver.solve(grid, densityField, material); const auto &CBar = results.CBar; REQUIRE(isSymmetric(CBar)); REQUIRE(isPD(CBar)); SECTION("Voigt/Reuss bounds") { - const auto voigt = material.voigt(grid); - const auto reuss = material.reuss(grid); + const auto voigt = voigtBound(material, densityField); + const auto reuss = reussBound(material, densityField); REQUIRE(reuss.trace() <= CBar.trace()); REQUIRE(CBar.trace() <= voigt.trace()); @@ -82,24 +98,22 @@ TEMPLATE_LIST_TEST_CASE("monad::LinearElasticSolver2d: Test solve", "[monad]", T Resolution shift; shift.fill(1); - grid.translate(shift); + densityField.translate(shift); - const LinearElasticSolver solver2(grid, material); + const auto resultsShift = solver.solve(grid, densityField, material); - results = solver.solve(); - const auto &CBar2 = results.CBar; + const auto &CBarShift = resultsShift.CBar; - REQUIRE(CBar2.isApprox(CBar, NUMERICAL_ZERO)); + REQUIRE(CBarShift.isApprox(CBar, NUMERICAL_ZERO)); } } SECTION("Bad options") { - grid.setDensitiesRandom(1234); - const LinearElasticSolver solver(grid, material); + densityField.setRandom(1234); SolverOptions options; options.maxIterations = 1; - REQUIRE_THROWS_AS(solver.solve(options), std::runtime_error); + REQUIRE_THROWS_AS(solver.solve(grid, densityField, material, options), std::runtime_error); } } diff --git a/tests/solver/multiphysics/linear_piezoelectric_solver_test.cpp b/tests/solver/multiphysics/linear_piezoelectric_solver_test.cpp index 96d4b07..c7cfdfa 100644 --- a/tests/solver/multiphysics/linear_piezoelectric_solver_test.cpp +++ b/tests/solver/multiphysics/linear_piezoelectric_solver_test.cpp @@ -1,33 +1,43 @@ #include #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" -#include "monad/material/mechanical/linear_elastic_material.hpp" -#include "monad/material/transport/linear_transport_material.hpp" -#include "monad/material/multiphysics/linear_piezoelectric_material.hpp" -#include "monad/solver/multiphysics/linear_piezoelectric_solver.hpp" +#include "monad/grid/grid_aliases.hpp" +#include "monad/material/material_aliases.hpp" +#include "monad/material/bounds.hpp" +#include "monad/field/field_aliases.hpp" +#include "monad/solver/solver_aliases.hpp" #include "monad/detail/eigen_utils.hpp" #include "monad/detail/constants.hpp" using namespace monad; using namespace monad::detail; -// using Types = std::tuple; -using Types = std::tuple; +template +struct TypePair { + using Grid = GridT; + using Material = MaterialT; + using DensityField = DensityFieldT; + using Solver = SolverT; +}; + +using Types = std::tuple< + TypePair>, + TypePair>, + TypePair>, + TypePair> +>; TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricSolver: Test solve", "[monad]", Types) { - using Resolution = typename TestType::Resolution; - using Size = typename TestType::Size; - using Element = typename TestType::Element; - using MechanicalMaterial = LinearElasticMaterial; - using ElectricalMaterial = LinearTransportMaterial; - using Material = LinearPiezoelectricMaterial; - using StiffnessTensor = typename MechanicalMaterial::MaterialTensor; + using Grid = typename TestType::Grid; + using Material = typename TestType::Material; + using DensityField = typename TestType::DensityField; + using Solver = typename TestType::Solver; + + using Resolution = typename Grid::Resolution; + using Size = typename Grid::Size; using CouplingTensor = typename Material::CouplingTensor; - using MaterialTensor = typename Material::MaterialTensor; + using StiffnessTensor = typename Material::StiffnessTensor; + using PermittivityTensor = typename Material::PermittivityTensor; Resolution resolution; resolution.fill(2); @@ -35,7 +45,7 @@ TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricSolver: Test solve", "[monad] Size size; size.fill(0.5); - TestType grid(resolution, size); + Grid grid(resolution, size); StiffnessTensor c = StiffnessTensor::Random(); // Make PSD @@ -43,36 +53,37 @@ TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricSolver: Test solve", "[monad] // Make PD c += StiffnessTensor::Identity(); - const MechanicalMaterial elasticMaterial(c); - const ElectricalMaterial dielectricMaterial(2.1); + PermittivityTensor epsilon = PermittivityTensor::Random(); + // Make PSD + epsilon = epsilon.transpose() * epsilon; + // Make PD + epsilon += PermittivityTensor::Identity(); + + const CouplingTensor d = CouplingTensor::Constant(0.01); - const CouplingTensor d = 0.1 * CouplingTensor::Random(); + const Material material(c, epsilon, d); - const Material material(elasticMaterial, dielectricMaterial, d); + DensityField densityField(resolution); + + const Solver solver; SECTION("Density=1 → homogenized=material") { - grid.setDensitiesOnes(); - const LinearPiezoelectricSolver solver(grid, material); + densityField.setOnes(); - const auto results = solver.solve(); + const auto results = solver.solve(grid, densityField, material); const auto &cBar = results.cBar; const auto &epsilonBar = results.epsilonBar; const auto &dBar = results.dBar; - MaterialTensor op; - op << cBar, -dBar.transpose(), - -dBar, -epsilonBar; - - const MaterialTensor expected = material.materialTensor(); - - REQUIRE(op.isApprox(expected, NUMERICAL_ZERO)); + REQUIRE(cBar.isApprox(c, NUMERICAL_ZERO)); + REQUIRE(epsilonBar.isApprox(epsilon, NUMERICAL_ZERO)); + REQUIRE(dBar.isApprox(d, NUMERICAL_ZERO)); } - SECTION("Density=0 → operator=0") { - grid.setDensitiesZeros(); - const LinearPiezoelectricSolver solver(grid, material); + SECTION("Density=0 → CBar=0") { + densityField.setZeros(); - const auto results = solver.solve(); + const auto results = solver.solve(grid, densityField, material); const auto &cBar = results.cBar; const auto &epsilonBar = results.epsilonBar; const auto &dBar = results.dBar; @@ -84,64 +95,42 @@ TEMPLATE_LIST_TEST_CASE("monad::LinearPiezoelectricSolver: Test solve", "[monad] } SECTION("Random density") { - grid.setDensitiesRandom(1234); - const LinearPiezoelectricSolver solver(grid, material); + densityField.setRandom(1234); - auto results = solver.solve(); - const auto &cBar = results.cBar; - const auto &epsilonBar = results.epsilonBar; - const auto &dBar = results.dBar; + const auto results = solver.solve(grid, densityField, material); + const auto &opBar = results.opBar; - REQUIRE(isSymmetric(cBar)); - REQUIRE(isPD(cBar)); - - REQUIRE(isSymmetric(epsilonBar)); - REQUIRE(isPD(epsilonBar)); + REQUIRE(isSymmetric(opBar)); + REQUIRE(!isPD(opBar)); SECTION("Voigt/Reuss bounds") { - SECTION("cBar") { - const auto voigt = elasticMaterial.voigt(grid); - const auto reuss = elasticMaterial.reuss(grid); - - REQUIRE(reuss.trace() <= cBar.trace()); - REQUIRE(cBar.trace() <= voigt.trace()); - } - - SECTION("epsilonBar") { - const auto voigt = dielectricMaterial.voigt(grid); - const auto reuss = dielectricMaterial.reuss(grid); + const auto voigt = voigtBound(material, densityField); + const auto reuss = reussBound(material, densityField); - REQUIRE(reuss.trace() <= epsilonBar.trace()); - REQUIRE(epsilonBar.trace() <= voigt.trace()); - } + REQUIRE(reuss.trace() <= opBar.trace()); + REQUIRE(opBar.trace() <= voigt.trace()); } SECTION("Translational invariance") { Resolution shift; shift.fill(1); - grid.translate(shift); + densityField.translate(shift); - const LinearPiezoelectricSolver solver2(grid, material); + const auto resultsShift = solver.solve(grid, densityField, material); - results = solver.solve(); - const auto &cBar2 = results.cBar; - const auto &epsilonBar2 = results.epsilonBar; - const auto &dBar2 = results.dBar; + const auto &opBarShift = resultsShift.opBar; - REQUIRE(cBar2.isApprox(cBar, NUMERICAL_ZERO)); - REQUIRE(epsilonBar2.isApprox(epsilonBar, NUMERICAL_ZERO)); - REQUIRE(dBar2.isApprox(dBar, NUMERICAL_ZERO)); + REQUIRE(opBarShift.isApprox(opBar, NUMERICAL_ZERO)); } } SECTION("Bad options") { - grid.setDensitiesRandom(1234); - const LinearPiezoelectricSolver solver(grid, material); + densityField.setRandom(1234); SolverOptions options; options.maxIterations = 1; - REQUIRE_THROWS_AS(solver.solve(options), std::runtime_error); + REQUIRE_THROWS_AS(solver.solve(grid, densityField, material, options), std::runtime_error); } } diff --git a/tests/solver/scalar/linear_scalar_diffusion_solver_test.cpp b/tests/solver/scalar/linear_scalar_diffusion_solver_test.cpp index 7d8d8c8..81f3310 100644 --- a/tests/solver/scalar/linear_scalar_diffusion_solver_test.cpp +++ b/tests/solver/scalar/linear_scalar_diffusion_solver_test.cpp @@ -1,70 +1,81 @@ #include #include #include -#include "monad/grid/quad4_grid.hpp" -#include "monad/grid/quad8_grid.hpp" -#include "monad/grid/hex8_grid.hpp" -#include "monad/grid/hex20_grid.hpp" -#include "monad/material/transport/linear_transport_material.hpp" -#include "monad/solver/scalar/linear_scalar_diffusive_solver.hpp" +#include "monad/grid/grid_aliases.hpp" +#include "monad/material/material_aliases.hpp" +#include "monad/material/bounds.hpp" +#include "monad/field/field_aliases.hpp" +#include "monad/solver/solver_aliases.hpp" #include "monad/detail/eigen_utils.hpp" #include "monad/detail/constants.hpp" using namespace monad; using namespace monad::detail; -using namespace monad::fem::scalar; -template +template struct TypePair { using Grid = GridT; - static constexpr GradientConvention Convention = C; + using Material = MaterialT; + using DensityField = DensityFieldT; + using Solver = SolverT; }; +// Negative sign convention: linear dielectric material +// Positive sign convention: linear mass diffusive material using Types = std::tuple< - TypePair, - TypePair, - TypePair, - TypePair, - TypePair, - TypePair, - TypePair, - TypePair + TypePair>, + TypePair>, + TypePair>, + TypePair>, + TypePair>, + TypePair>, + TypePair>, + TypePair> >; TEMPLATE_LIST_TEST_CASE("monad::Solver: Test solve", "[monad]", Types) { using Grid = typename TestType::Grid; + using Material = typename TestType::Material; + using DensityField = typename TestType::DensityField; + using Solver = typename TestType::Solver; + using Resolution = typename Grid::Resolution; using Size = typename Grid::Size; - using Element = typename Grid::Element; - using Solver = LinearScalarDiffusiveSolver; + using MaterialTensor = typename Material::MaterialTensor; Resolution resolution; - resolution.fill(3); - + resolution.fill(2); + Size size; size.fill(0.5); Grid grid(resolution, size); - const LinearTransportMaterial material(2.1); + MaterialTensor K = MaterialTensor::Random(); + // Make PSD + K = K.transpose() * K; + // Make PD + K += MaterialTensor::Identity(); + + const Material material(K); + + DensityField densityField(resolution); + + const Solver solver; SECTION("Density=1 → KBar=material") { - grid.setDensitiesOnes(); - const Solver solver(grid, material); + densityField.setOnes(); - const auto results = solver.solve(); + const auto results = solver.solve(grid, densityField, material); const auto &KBar = results.KBar; - const auto expected = material.materialTensor(); - - REQUIRE(KBar.isApprox(expected, NUMERICAL_ZERO)); + REQUIRE(KBar.isApprox(K, NUMERICAL_ZERO)); } SECTION("Density=0 → KBar=0") { - grid.setDensitiesZeros(); - const Solver solver(grid, material); + densityField.setZeros(); - const auto results = solver.solve(); + const auto results = solver.solve(grid, densityField, material); const auto &KBar = results.KBar; // Set zero threshold to one order of magnitude larger @@ -72,18 +83,17 @@ TEMPLATE_LIST_TEST_CASE("monad::Solver: Test solve", "[monad]", Types) { } SECTION("Random density") { - grid.setDensitiesRandom(1234); - const Solver solver(grid, material); + densityField.setRandom(1234); - auto results = solver.solve(); + const auto results = solver.solve(grid, densityField, material); const auto &KBar = results.KBar; REQUIRE(isSymmetric(KBar)); REQUIRE(isPD(KBar)); SECTION("Voigt/Reuss bounds") { - const auto voigt = material.voigt(grid); - const auto reuss = material.reuss(grid); + const auto voigt = voigtBound(material, densityField); + const auto reuss = reussBound(material, densityField); REQUIRE(reuss.trace() <= KBar.trace()); REQUIRE(KBar.trace() <= voigt.trace()); @@ -93,24 +103,22 @@ TEMPLATE_LIST_TEST_CASE("monad::Solver: Test solve", "[monad]", Types) { Resolution shift; shift.fill(1); - grid.translate(shift); + densityField.translate(shift); - const Solver solver2(grid, material); + const auto resultsShift = solver.solve(grid, densityField, material); - results = solver.solve(); - const auto &KBar2 = results.KBar; + const auto &KBarShift = resultsShift.KBar; - REQUIRE(KBar2.isApprox(KBar, NUMERICAL_ZERO)); + REQUIRE(KBarShift.isApprox(KBar, NUMERICAL_ZERO)); } } SECTION("Bad options") { - grid.setDensitiesRandom(1234); - const Solver solver(grid, material); + densityField.setRandom(1234); SolverOptions options; options.maxIterations = 1; - REQUIRE_THROWS_AS(solver.solve(options), std::runtime_error); + REQUIRE_THROWS_AS(solver.solve(grid, densityField, material, options), std::runtime_error); } } diff --git a/tests/solver/solver_options_test.cpp b/tests/solver/solver_options_test.cpp index 1a5c3c7..6c32e38 100644 --- a/tests/solver/solver_options_test.cpp +++ b/tests/solver/solver_options_test.cpp @@ -4,41 +4,46 @@ using namespace monad; TEST_CASE("monad::SolverOptions: Test defaults", "[monad]") { - const auto options = SolverOptions::defaults(); + const SolverOptions options; REQUIRE(options.maxIterations == 1000); REQUIRE(options.tolerance == 1e-6); REQUIRE(options.fields == FieldSave::None); + REQUIRE(options.verbose == false); } TEST_CASE("monad::SolverOptions: Test operator==", "[monad]") { - const auto options1 = SolverOptions::defaults(); - const auto options2 = SolverOptions::defaults(); + const SolverOptions options1; + const SolverOptions options2; REQUIRE(options1 == options2); } TEST_CASE("monad::SolverOptions: Test operator!=", "[monad]") { - const auto options1 = SolverOptions::defaults(); + const SolverOptions options1; + SolverOptions options2; SECTION("Different maxIterations") { - auto options2 = SolverOptions::defaults(); options2.maxIterations += 1; REQUIRE(options1 != options2); } SECTION("Different tolerance") { - auto options2 = SolverOptions::defaults(); options2.tolerance += 1e-5; REQUIRE(options1 != options2); } SECTION("Different fields") { - auto options2 = SolverOptions::defaults(); options2.fields = FieldSave::Total; REQUIRE(options1 != options2); } + + SECTION("Different verbose") { + options2.verbose = true; + + REQUIRE(options1 != options2); + } }